rpc

package
v0.24.6 Latest Latest
Warning

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

Go to latest
Published: Mar 19, 2019 License: Apache-2.0 Imports: 32 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 int
}

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

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 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,proto3" json:"NodeInfo,omitempty"`
	SyncInfo      *bcm.SyncInfo                                 `protobuf:"bytes,6,opt,name=SyncInfo,proto3" json:"SyncInfo,omitempty"`
	// When catching up in fast sync
	CatchingUp           bool                 `protobuf:"varint,8,opt,name=CatchingUp,proto3" json:""`
	ValidatorInfo        *validator.Validator `protobuf:"bytes,7,opt,name=ValidatorInfo,proto3" 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) GetCatchingUp added in v0.24.3

func (m *ResultStatus) GetCatchingUp() bool

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() *bcm.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 (m *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) Stats added in v0.24.6

func (s *Service) Stats() acmstate.AccountStatsGetter

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
}

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