rpc

package
v0.24.1 Latest Latest
Warning

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

Go to latest
Published: Feb 28, 2019 License: Apache-2.0 Imports: 34 Imported by: 0

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 MaxBlockLookback = 1000

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

Variables

View Source
var (
	ErrInvalidLengthRpc = fmt.Errorf("proto: negative length found during unmarshaling")
	ErrIntOverflowRpc   = fmt.Errorf("proto: integer overflow")
)

Functions

func NewAminoCodec added in v0.20.1

func NewAminoCodec() *amino.Codec

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
	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 ProfilerConfig added in v0.18.0

type ProfilerConfig struct {
	Enabled       bool
	ListenAddress string
}

type RPCConfig added in v0.18.0

type RPCConfig struct {
	Info     *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 added in v0.16.0

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 added in v0.16.0

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 added in v0.16.0

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 added in v0.16.0

func (rpcResultResponse *RPCResultResponse) AssertIsRPCResponse() bool

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

type ResultAccount added in v0.20.1

type ResultAccount struct {
	Account *acm.Account
}

type ResultAccountHumanReadable added in v0.20.1

type ResultAccountHumanReadable struct {
	Account *AccountHumanReadable
}

type ResultAccountStats added in v0.24.0

type ResultAccountStats struct {
	AccountsWithCode    uint64
	AccountsWithoutCode uint64
}

type ResultAccounts added in v0.20.1

type ResultAccounts struct {
	BlockHeight uint64
	Accounts    []*acm.Account
}

type ResultBlock added in v0.20.1

type ResultBlock struct {
	BlockMeta *BlockMeta
	Block     *Block
}

type ResultBlocks added in v0.20.1

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

type ResultChainId added in v0.18.0

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

type ResultConsensusState added in v0.20.1

type ResultConsensusState struct {
	*core_types.ResultDumpConsensusState
}

type ResultDumpStorage added in v0.18.0

type ResultDumpStorage struct {
	StorageItems []StorageItem
}

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 ResultName added in v0.20.1

type ResultName struct {
	Entry *names.Entry
}

type ResultNames added in v0.20.1

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

type ResultNetwork added in v0.20.1

type ResultNetwork struct {
	ThisNode *tendermint.NodeInfo
	*core_types.ResultNetInfo
}

type ResultPeers added in v0.18.0

type ResultPeers struct {
	Peers []core_types.Peer
}

type ResultSignTx added in v0.18.0

type ResultSignTx struct {
	Tx *txs.Envelope
}

type ResultStatus added in v0.18.0

type ResultStatus struct {
	ChainID              string                                        `protobuf:"bytes,1,opt,name=ChainID,proto3" json:"ChainID,omitempty"`
	RunID                string                                        `protobuf:"bytes,2,opt,name=RunID,proto3" json:"RunID,omitempty"`
	BurrowVersion        string                                        `protobuf:"bytes,3,opt,name=BurrowVersion,proto3" json:"BurrowVersion,omitempty"`
	GenesisHash          github_com_hyperledger_burrow_binary.HexBytes `protobuf:"bytes,4,opt,name=GenesisHash,proto3,customtype=github.com/hyperledger/burrow/binary.HexBytes" json:"GenesisHash"`
	NodeInfo             *tendermint.NodeInfo                          `protobuf:"bytes,5,opt,name=NodeInfo" json:"NodeInfo,omitempty"`
	SyncInfo             *SyncInfo                                     `protobuf:"bytes,6,opt,name=SyncInfo" json:"SyncInfo,omitempty"`
	ValidatorInfo        *validator.Validator                          `protobuf:"bytes,7,opt,name=ValidatorInfo" json:"ValidatorInfo,omitempty"`
	XXX_NoUnkeyedLiteral struct{}                                      `json:"-"`
	XXX_unrecognized     []byte                                        `json:"-"`
	XXX_sizecache        int32                                         `json:"-"`
}

func Status added in v0.20.0

func Status(blockchain bcm.BlockchainInfo, validators validator.History, nodeView *tendermint.NodeView, blockTimeWithin,
	blockSeenTimeWithin string) (*ResultStatus, error)

func (*ResultStatus) Descriptor added in v0.20.0

func (*ResultStatus) Descriptor() ([]byte, []int)

func (*ResultStatus) GetBurrowVersion added in v0.20.1

func (m *ResultStatus) GetBurrowVersion() string

func (*ResultStatus) GetChainID added in v0.20.0

func (m *ResultStatus) GetChainID() string

func (*ResultStatus) GetNodeInfo added in v0.20.0

func (m *ResultStatus) GetNodeInfo() *tendermint.NodeInfo

func (*ResultStatus) GetRunID added in v0.20.1

func (m *ResultStatus) GetRunID() string

func (*ResultStatus) GetSyncInfo added in v0.20.1

func (m *ResultStatus) GetSyncInfo() *SyncInfo

func (*ResultStatus) GetValidatorInfo added in v0.20.1

func (m *ResultStatus) GetValidatorInfo() *validator.Validator

func (*ResultStatus) Marshal added in v0.20.0

func (m *ResultStatus) Marshal() (dAtA []byte, err error)

func (*ResultStatus) MarshalTo added in v0.20.0

func (m *ResultStatus) MarshalTo(dAtA []byte) (int, error)

func (*ResultStatus) ProtoMessage added in v0.20.0

func (*ResultStatus) ProtoMessage()

func (*ResultStatus) Reset added in v0.20.0

func (m *ResultStatus) Reset()

func (*ResultStatus) Size added in v0.20.0

func (m *ResultStatus) Size() (n int)

func (*ResultStatus) String added in v0.20.0

func (m *ResultStatus) String() string

func (*ResultStatus) Unmarshal added in v0.20.0

func (m *ResultStatus) Unmarshal(dAtA []byte) error

func (*ResultStatus) XXX_DiscardUnknown added in v0.23.0

func (m *ResultStatus) XXX_DiscardUnknown()

func (*ResultStatus) XXX_Marshal added in v0.23.0

func (m *ResultStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*ResultStatus) XXX_Merge added in v0.23.0

func (dst *ResultStatus) XXX_Merge(src proto.Message)

func (*ResultStatus) XXX_MessageName added in v0.20.0

func (*ResultStatus) XXX_MessageName() string

func (*ResultStatus) XXX_Size added in v0.23.0

func (m *ResultStatus) XXX_Size() int

func (*ResultStatus) XXX_Unmarshal added in v0.23.0

func (m *ResultStatus) XXX_Unmarshal(b []byte) error

type ResultStorage added in v0.20.1

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

type ResultSubscribe added in v0.18.0

type ResultSubscribe struct {
	EventID        string
	SubscriptionID string
}

type ResultUnconfirmedTxs added in v0.20.1

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

type ResultUnsubscribe added in v0.18.0

type ResultUnsubscribe struct {
	SubscriptionID string
}

type ResultValidators added in v0.20.1

type ResultValidators struct {
	BlockHeight         uint64
	BondedValidators    []*validator.Validator
	UnbondingValidators []*validator.Validator
}

type RoundState added in v0.20.1

type RoundState struct {
	*ctypes.RoundState
}

TODO use round state in ResultConsensusState - currently there are some part of RoundState have no Unmarshal

func (RoundState) MarshalJSON added in v0.20.1

func (rs RoundState) MarshalJSON() ([]byte, error)

func (*RoundState) UnmarshalJSON added in v0.20.1

func (rs *RoundState) UnmarshalJSON(data []byte) (err error)

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 DefaultInfoConfig added in v0.21.0

func DefaultInfoConfig() *ServerConfig

func DefaultProfilerConfig added in v0.18.0

func DefaultProfilerConfig() *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(state acmstate.IterableStatsReader, nameReg names.IterableReader, blockchain bcm.BlockchainInfo,
	validators validator.History, nodeView *tendermint.NodeView, logger *logging.Logger) *Service

Service provides an internal query and information service with serialisable return types on which can accomodate a number of transport front ends

func (*Service) Account added in v0.20.1

func (s *Service) Account(address crypto.Address) (*ResultAccount, error)

Accounts

func (*Service) AccountHumanReadable added in v0.20.1

func (s *Service) AccountHumanReadable(address crypto.Address) (*ResultAccountHumanReadable, error)

func (*Service) AccountStats added in v0.24.0

func (s *Service) AccountStats() (*ResultAccountStats, error)

func (*Service) Accounts added in v0.20.1

func (s *Service) Accounts(predicate func(*acm.Account) bool) (*ResultAccounts, error)

func (*Service) Block added in v0.20.1

func (s *Service) Block(height uint64) (*ResultBlock, error)

func (*Service) BlockchainInfo added in v0.19.0

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

func (*Service) Blocks added in v0.20.1

func (s *Service) Blocks(minHeight, maxHeight int64) (*ResultBlocks, 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) ChainID added in v0.20.0

func (s *Service) ChainID() string

func (*Service) ChainIdentifiers added in v0.19.0

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

func (*Service) ConsensusState added in v0.20.1

func (s *Service) ConsensusState() (*ResultConsensusState, 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) Name added in v0.20.1

func (s *Service) Name(name string) (*ResultName, error)

Name registry

func (*Service) Names added in v0.20.1

func (s *Service) Names(predicate func(*names.Entry) bool) (*ResultNames, error)

func (*Service) Network added in v0.20.1

func (s *Service) Network() (*ResultNetwork, error)

func (*Service) Peers added in v0.18.0

func (s *Service) Peers() []core_types.Peer

func (*Service) State added in v0.18.0

func (*Service) Status added in v0.18.0

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

func (*Service) StatusWithin added in v0.20.1

func (s *Service) StatusWithin(blockTimeWithin, blockSeenTimeWithin string) (*ResultStatus, error)

func (*Service) Storage added in v0.20.1

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

func (*Service) UnconfirmedTxs added in v0.20.1

func (s *Service) UnconfirmedTxs(maxTxs int64) (*ResultUnconfirmedTxs, error)

func (*Service) Validators added in v0.20.1

func (s *Service) Validators() (*ResultValidators, error)

type StorageItem added in v0.18.0

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

type SyncInfo added in v0.20.1

type SyncInfo struct {
	LatestBlockHeight uint64                                        `protobuf:"varint,1,opt,name=LatestBlockHeight,proto3" json:""`
	LatestBlockHash   github_com_hyperledger_burrow_binary.HexBytes `` /* 130-byte string literal not displayed */
	LatestAppHash     github_com_hyperledger_burrow_binary.HexBytes `` /* 126-byte string literal not displayed */
	// Timestamp of block as set by the block proposer
	LatestBlockTime time.Time `protobuf:"bytes,4,opt,name=LatestBlockTime,stdtime" json:"LatestBlockTime"`
	// Time at which we committed the last block
	LatestBlockSeenTime time.Time `protobuf:"bytes,5,opt,name=LatestBlockSeenTime,stdtime" json:"LatestBlockSeenTime"`
	// When catching up in fast sync
	CatchingUp           bool     `protobuf:"varint,6,opt,name=CatchingUp,proto3" json:""`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (*SyncInfo) Descriptor added in v0.20.1

func (*SyncInfo) Descriptor() ([]byte, []int)

func (*SyncInfo) GetCatchingUp added in v0.20.1

func (m *SyncInfo) GetCatchingUp() bool

func (*SyncInfo) GetLatestBlockHeight added in v0.20.1

func (m *SyncInfo) GetLatestBlockHeight() uint64

func (*SyncInfo) GetLatestBlockSeenTime added in v0.20.1

func (m *SyncInfo) GetLatestBlockSeenTime() time.Time

func (*SyncInfo) GetLatestBlockTime added in v0.20.1

func (m *SyncInfo) GetLatestBlockTime() time.Time

func (*SyncInfo) Marshal added in v0.20.1

func (m *SyncInfo) Marshal() (dAtA []byte, err error)

func (*SyncInfo) MarshalTo added in v0.20.1

func (m *SyncInfo) MarshalTo(dAtA []byte) (int, error)

func (*SyncInfo) ProtoMessage added in v0.20.1

func (*SyncInfo) ProtoMessage()

func (*SyncInfo) Reset added in v0.20.1

func (m *SyncInfo) Reset()

func (*SyncInfo) Size added in v0.20.1

func (m *SyncInfo) Size() (n int)

func (*SyncInfo) String added in v0.20.1

func (m *SyncInfo) String() string

func (*SyncInfo) Unmarshal added in v0.20.1

func (m *SyncInfo) Unmarshal(dAtA []byte) error

func (*SyncInfo) XXX_DiscardUnknown added in v0.23.0

func (m *SyncInfo) XXX_DiscardUnknown()

func (*SyncInfo) XXX_Marshal added in v0.23.0

func (m *SyncInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*SyncInfo) XXX_Merge added in v0.23.0

func (dst *SyncInfo) XXX_Merge(src proto.Message)

func (*SyncInfo) XXX_MessageName added in v0.20.1

func (*SyncInfo) XXX_MessageName() string

func (*SyncInfo) XXX_Size added in v0.23.0

func (m *SyncInfo) XXX_Size() int

func (*SyncInfo) XXX_Unmarshal added in v0.23.0

func (m *SyncInfo) XXX_Unmarshal(b []byte) error

Directories

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

Jump to

Keyboard shortcuts

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