rpc

package
v0.19.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 26, 2018 License: Apache-2.0 Imports: 34 Imported by: 22

Documentation

Index

Constants

View Source
const (
	INVALID_REQUEST  = -32600
	METHOD_NOT_FOUND = -32601
	INVALID_PARAMS   = -32602
	INTERNAL_ERROR   = -32603
	PARSE_ERROR      = -32700
)

JSON-RPC 2.0 error codes.

View Source
const AccountsRingMutexCount = 100
View Source
const MaxBlockLookback = 1000

Magic! Should probably be configurable, but not shouldn't be so huge we end up DoSing ourselves.

Variables

This section is empty.

Functions

func NewGRPCServer added in v0.19.0

func NewGRPCServer(logger *logging.Logger) *grpc.Server

Types

type AccountHumanReadable added in v0.18.0

type AccountHumanReadable struct {
	Address     crypto.Address
	PublicKey   crypto.PublicKey
	Sequence    uint64
	Balance     uint64
	Code        []string
	StorageRoot string
	Permissions []string
	Roles       []string
}

type Block added in v0.19.0

type Block struct {
	*tmTypes.Block
}

Needed for go-amino handling of interface types

func (Block) MarshalJSON added in v0.19.0

func (b Block) MarshalJSON() ([]byte, error)

func (*Block) UnmarshalJSON added in v0.19.0

func (b *Block) UnmarshalJSON(data []byte) (err error)

type BlockMeta added in v0.19.0

type BlockMeta struct {
	*tmTypes.BlockMeta
}

func (BlockMeta) MarshalJSON added in v0.19.0

func (bm BlockMeta) MarshalJSON() ([]byte, error)

func (*BlockMeta) UnmarshalJSON added in v0.19.0

func (bm *BlockMeta) UnmarshalJSON(data []byte) (err error)

type Codec

type Codec interface {
	EncodeBytes(interface{}) ([]byte, error)
	Encode(interface{}, io.Writer) error
	DecodeBytes(interface{}, []byte) error
	Decode(interface{}, io.Reader) error
}

Used for rpc request and response data.

type GRPCConfig added in v0.19.0

type GRPCConfig struct {
	Enabled       bool
	ListenAddress string
}

type MetricsConfig added in v0.19.0

type MetricsConfig struct {
	Enabled         bool
	ListenAddress   string
	MetricsPath     string
	BlockSampleSize uint64
}

func DefaultMetricsConfig added in v0.19.0

func DefaultMetricsConfig() *MetricsConfig

type Peer added in v0.18.0

type Peer struct {
	NodeInfo   p2p.NodeInfo
	IsOutbound bool
}

type ProfilerConfig added in v0.18.0

type ProfilerConfig struct {
	Enabled       bool
	ListenAddress string
}

type RPCConfig added in v0.18.0

type RPCConfig struct {
	V0       *V0Config      `json:",omitempty" toml:",omitempty"`
	TM       *ServerConfig  `json:",omitempty" toml:",omitempty"`
	Profiler *ServerConfig  `json:",omitempty" toml:",omitempty"`
	GRPC     *ServerConfig  `json:",omitempty" toml:",omitempty"`
	Metrics  *MetricsConfig `json:",omitempty" toml:",omitempty"`
}

func DefaultRPCConfig added in v0.18.0

func DefaultRPCConfig() *RPCConfig

type RPCError

type RPCError struct {
	Code    int    `json:"code"`
	Message string `json:"message"`
}

RPCError MUST be included in the Response object if an error occured

func (RPCError) Error added in v0.18.0

func (err RPCError) Error() string

type RPCErrorResponse

type RPCErrorResponse struct {
	Error   *RPCError `json:"error"`
	Id      string    `json:"id"`
	JSONRPC string    `json:"jsonrpc"`
}

RPCErrorResponse MUST NOT contain the result member if an error occured

func (*RPCErrorResponse) AssertIsRPCResponse

func (rpcErrorResponse *RPCErrorResponse) AssertIsRPCResponse() bool

AssertIsRPCResponse implements a marker method for RPCErrorResponse to implement the interface RPCResponse

type RPCRequest

type RPCRequest struct {
	JSONRPC string          `json:"jsonrpc"`
	Method  string          `json:"method"`
	Params  json.RawMessage `json:"params"`
	Id      string          `json:"id"`
}

Request and Response objects. Id is a string. Error data not used. Refer to JSON-RPC specification http://www.jsonrpc.org/specification

func NewRPCRequest added in v0.16.2

func NewRPCRequest(id string, method string, params json.RawMessage) *RPCRequest

Create a new RPC request. This is the generic struct that is passed to RPC methods

type RPCResponse

type RPCResponse interface {
	AssertIsRPCResponse() bool
}

RPCResponse MUST follow the JSON-RPC specification for Response object reference: http://www.jsonrpc.org/specification#response_object

func NewRPCErrorResponse

func NewRPCErrorResponse(id string, code int, message string) RPCResponse

NewRPCErrorResponse creates a new error-response object from the error code and message

func NewRPCResponse

func NewRPCResponse(id string, res interface{}) RPCResponse

NewRPCResponse creates a new response object from a result

type RPCResultResponse

type RPCResultResponse struct {
	Result  interface{} `json:"result"`
	Id      string      `json:"id"`
	JSONRPC string      `json:"jsonrpc"`
}

RPCResultResponse MUST NOT contain the error member if no error occurred

func (*RPCResultResponse) AssertIsRPCResponse

func (rpcResultResponse *RPCResultResponse) AssertIsRPCResponse() bool

AssertIsRPCResponse implements a marker method for RPCResultResponse to implement the interface RPCResponse

type ResultBroadcastTx added in v0.18.0

type ResultBroadcastTx struct {
	txs.Receipt
}

func (ResultBroadcastTx) MarshalJSON added in v0.18.0

func (rbt ResultBroadcastTx) MarshalJSON() ([]byte, error)

func (ResultBroadcastTx) UnmarshalJSON added in v0.18.0

func (rbt ResultBroadcastTx) UnmarshalJSON(data []byte) (err error)

type ResultCall added in v0.18.0

type ResultCall struct {
	execution.Call
}

func (ResultCall) MarshalJSON added in v0.18.0

func (rc ResultCall) MarshalJSON() ([]byte, error)

func (*ResultCall) UnmarshalJSON added in v0.18.0

func (rc *ResultCall) UnmarshalJSON(data []byte) (err error)

type ResultChainId added in v0.18.0

type ResultChainId struct {
	ChainName   string
	ChainId     string
	GenesisHash binary.HexBytes
}

type ResultDumpConsensusState added in v0.18.0

type ResultDumpConsensusState struct {
	RoundState      consensusTypes.RoundStateSimple
	PeerRoundStates []*consensusTypes.PeerRoundState
}

type ResultDumpStorage added in v0.18.0

type ResultDumpStorage struct {
	StorageRoot  binary.HexBytes
	StorageItems []StorageItem
}

type ResultEvent added in v0.18.0

type ResultEvent struct {
	Event      string
	Tendermint *TendermintEvent `json:",omitempty"`
	Execution  *events.Event    `json:",omitempty"`
}

func NewResultEvent added in v0.18.0

func NewResultEvent(event string, eventData interface{}) (*ResultEvent, error)

Map any supported event data element to our ResultEvent sum type

func (*ResultEvent) GetEvent added in v0.19.0

func (re *ResultEvent) GetEvent() (*pbevents.Event, error)

type ResultGeneratePrivateAccount added in v0.18.0

type ResultGeneratePrivateAccount struct {
	PrivateAccount *acm.ConcretePrivateAccount
}

type ResultGenesis added in v0.18.0

type ResultGenesis struct {
	Genesis genesis.GenesisDoc
}

type ResultGetAccount added in v0.18.0

type ResultGetAccount struct {
	Account *acm.ConcreteAccount
}

type ResultGetAccountHumanReadable added in v0.18.0

type ResultGetAccountHumanReadable struct {
	Account *AccountHumanReadable
}

type ResultGetBlock added in v0.18.0

type ResultGetBlock struct {
	BlockMeta *BlockMeta
	Block     *Block
}

type ResultGetName added in v0.18.0

type ResultGetName struct {
	Entry *names.Entry
}

type ResultGetStorage added in v0.18.0

type ResultGetStorage struct {
	Key   binary.HexBytes
	Value binary.HexBytes
}

type ResultLastBlockInfo added in v0.19.0

type ResultLastBlockInfo struct {
	LastBlockHeight uint64
	LastBlockTime   time.Time
	LastBlockHash   binary.HexBytes
}

type ResultListAccounts added in v0.18.0

type ResultListAccounts struct {
	BlockHeight uint64
	Accounts    []*acm.ConcreteAccount
}

type ResultListBlocks added in v0.18.0

type ResultListBlocks struct {
	LastHeight uint64
	BlockMetas []*tmTypes.BlockMeta
}

type ResultListNames added in v0.18.0

type ResultListNames struct {
	BlockHeight uint64
	Names       []*names.Entry
}

type ResultListUnconfirmedTxs added in v0.18.0

type ResultListUnconfirmedTxs struct {
	NumTxs int
	Txs    []*txs.Envelope
}

type ResultListValidators added in v0.18.0

type ResultListValidators struct {
	BlockHeight         uint64
	BondedValidators    []*acm.ConcreteValidator
	UnbondingValidators []*acm.ConcreteValidator
}

type ResultNetInfo added in v0.18.0

type ResultNetInfo struct {
	Listening bool
	Listeners []string
	Peers     []*Peer
}

type ResultPeers added in v0.18.0

type ResultPeers struct {
	Peers []*Peer
}

type ResultSignTx added in v0.18.0

type ResultSignTx struct {
	Tx *txs.Envelope
}

type ResultStatus added in v0.18.0

type ResultStatus struct {
	NodeInfo          p2p.NodeInfo
	GenesisHash       binary.HexBytes
	PubKey            crypto.PublicKey
	LatestBlockHash   binary.HexBytes
	LatestBlockHeight uint64
	LatestBlockTime   int64
	NodeVersion       string
}

type ResultSubscribe added in v0.18.0

type ResultSubscribe struct {
	EventID        string
	SubscriptionID string
}

type ResultUnsubscribe added in v0.18.0

type ResultUnsubscribe struct {
	SubscriptionID string
}

type ServerConfig added in v0.19.0

type ServerConfig struct {
	Enabled       bool
	ListenAddress string
}

func DefaultGRPCConfig added in v0.19.0

func DefaultGRPCConfig() *ServerConfig

func DefaultProfilerConfig added in v0.18.0

func DefaultProfilerConfig() *ServerConfig

func DefaultTMConfig added in v0.18.0

func DefaultTMConfig() *ServerConfig

type Service added in v0.18.0

type Service struct {
	// contains filtered or unexported fields
}

Base service that provides implementation for all underlying RPC methods

func NewService added in v0.18.0

func NewService(ctx context.Context, state state.IterableReader, nameReg names.IterableReader,
	checker state.Reader, subscribable event.Subscribable, blockchain bcm.BlockchainInfo, keyClient keys.KeyClient,
	transactor *execution.Transactor, nodeView *query.NodeView, logger *logging.Logger) *Service

func NewSubscribableService added in v0.18.0

func NewSubscribableService(subscribable event.Subscribable, logger *logging.Logger) *Service

Provides a sub-service with only the subscriptions methods

func (*Service) BlockchainInfo added in v0.19.0

func (s *Service) BlockchainInfo() bcm.BlockchainInfo

func (*Service) ChainIdentifiers added in v0.19.0

func (s *Service) ChainIdentifiers() (*ResultChainId, error)

func (*Service) DumpConsensusState added in v0.18.0

func (s *Service) DumpConsensusState() (*ResultDumpConsensusState, error)

func (*Service) DumpStorage added in v0.18.0

func (s *Service) DumpStorage(address crypto.Address) (*ResultDumpStorage, error)

func (*Service) GeneratePrivateAccount added in v0.18.0

func (s *Service) GeneratePrivateAccount() (*ResultGeneratePrivateAccount, error)

func (*Service) Genesis added in v0.18.0

func (s *Service) Genesis() (*ResultGenesis, error)

func (*Service) GetAccount added in v0.18.0

func (s *Service) GetAccount(address crypto.Address) (*ResultGetAccount, error)

Accounts

func (*Service) GetAccountHumanReadable added in v0.18.0

func (s *Service) GetAccountHumanReadable(address crypto.Address) (*ResultGetAccountHumanReadable, error)

func (*Service) GetBlock added in v0.18.0

func (s *Service) GetBlock(height uint64) (*ResultGetBlock, error)

func (*Service) GetName added in v0.18.0

func (s *Service) GetName(name string) (*ResultGetName, error)

Name registry

func (*Service) GetStorage added in v0.18.0

func (s *Service) GetStorage(address crypto.Address, key []byte) (*ResultGetStorage, error)

func (*Service) LastBlockInfo added in v0.19.0

func (s *Service) LastBlockInfo(blockWithin string) (*ResultLastBlockInfo, error)

func (*Service) ListAccounts added in v0.18.0

func (s *Service) ListAccounts(predicate func(acm.Account) bool) (*ResultListAccounts, error)

func (*Service) ListBlocks added in v0.18.0

func (s *Service) ListBlocks(minHeight, maxHeight uint64) (*ResultListBlocks, error)

Returns the current blockchain height and metadata for a range of blocks between minHeight and maxHeight. Only returns maxBlockLookback block metadata from the top of the range of blocks. Passing 0 for maxHeight sets the upper height of the range to the current blockchain height.

func (*Service) ListNames added in v0.18.0

func (s *Service) ListNames(predicate func(*names.Entry) bool) (*ResultListNames, error)

func (*Service) ListUnconfirmedTxs added in v0.18.0

func (s *Service) ListUnconfirmedTxs(maxTxs int) (*ResultListUnconfirmedTxs, error)

func (*Service) ListValidators added in v0.18.0

func (s *Service) ListValidators() (*ResultListValidators, error)

func (*Service) MempoolAccounts added in v0.18.0

func (s *Service) MempoolAccounts() *execution.Accounts

Get pending account state residing in the mempool

func (*Service) NetInfo added in v0.18.0

func (s *Service) NetInfo() (*ResultNetInfo, error)

func (*Service) Peers added in v0.18.0

func (s *Service) Peers() (*ResultPeers, error)

func (*Service) State added in v0.18.0

func (s *Service) State() state.Reader

func (*Service) Status added in v0.18.0

func (s *Service) Status() (*ResultStatus, error)

func (*Service) Subscribe added in v0.18.0

func (s *Service) Subscribe(ctx context.Context, subscriptionID string, eventID string,
	callback func(resultEvent *ResultEvent) (stop bool)) error

func (*Service) Transactor added in v0.18.0

func (s *Service) Transactor() *execution.Transactor

Get a Transactor providing methods for delegating signing and the core BroadcastTx function for publishing transactions to the network

func (*Service) Unsubscribe added in v0.18.0

func (s *Service) Unsubscribe(ctx context.Context, subscriptionID string) error

type StorageItem added in v0.18.0

type StorageItem struct {
	Key   binary.HexBytes
	Value binary.HexBytes
}

type Subscriptions added in v0.19.0

type Subscriptions struct {
	// contains filtered or unexported fields
}

Catches events that callers subscribe to and adds them to an array ready to be polled.

func NewSubscriptions added in v0.19.0

func NewSubscriptions(service *Service) *Subscriptions

func (*Subscriptions) Add added in v0.19.0

func (subs *Subscriptions) Add(eventId string) (string, error)

Add a subscription and return the generated id. Note event dispatcher has to call func which involves acquiring a mutex lock, so might be a delay - though a conflict is practically impossible, and if it does happen it's for an insignificant amount of time (the time it takes to carry out SubscriptionsCache.poll() ).

func (*Subscriptions) Poll added in v0.19.0

func (subs *Subscriptions) Poll(subId string) ([]interface{}, error)

func (*Subscriptions) Remove added in v0.19.0

func (subs *Subscriptions) Remove(subId string) error

type SubscriptionsCache added in v0.19.0

type SubscriptionsCache struct {
	// contains filtered or unexported fields
}

type TendermintEvent added in v0.19.0

type TendermintEvent struct {
	tmTypes.TMEventData
}

func (*TendermintEvent) EventDataNewBlock added in v0.19.0

func (te *TendermintEvent) EventDataNewBlock() *tmTypes.EventDataNewBlock

func (TendermintEvent) MarshalJSON added in v0.19.0

func (te TendermintEvent) MarshalJSON() ([]byte, error)

func (*TendermintEvent) UnmarshalJSON added in v0.19.0

func (te *TendermintEvent) UnmarshalJSON(data []byte) (err error)

type V0Config added in v0.18.0

type V0Config struct {
	Enabled bool
	Server  *server.ServerConfig
}

func DefaultV0Config added in v0.18.0

func DefaultV0Config() *V0Config

Directories

Path Synopsis
lib
server
Commons for HTTP handling
Commons for HTTP handling
tm
v0

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL