jsonrpc

package
v0.0.0-...-3672da2 Latest Latest
Warning

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

Go to latest
Published: Oct 22, 2022 License: Apache-2.0 Imports: 31 Imported by: 0

Documentation

Index

Constants

View Source
const (
	PendingBlockNumber  = BlockNumber(-3)
	LatestBlockNumber   = BlockNumber(-2)
	EarliestBlockNumber = BlockNumber(-1)
)
View Source
const (
	// The index in heap which is indicating the element is not in the heap
	NoIndexInHeap = -1
)

Variables

View Source
var (
	ErrFilterNotFound                   = errors.New("filter not found")
	ErrWSFilterDoesNotSupportGetChanges = errors.New("web socket Filter doesn't support to return a batch of the changes")
	ErrCastingFilterToLogFilter         = errors.New("casting filter object to logFilter error")
	ErrBlockNotFound                    = errors.New("block not found")
	ErrIncorrectBlockRange              = errors.New("incorrect range")
	ErrBlockRangeTooHigh                = errors.New("block range too high")
	ErrPendingBlockNumber               = errors.New("pending block number is not supported")
	ErrNoWSConnection                   = errors.New("no websocket connection")
)
View Source
var (
	ErrInsufficientFunds = errors.New("insufficient funds for execution")
)
View Source
var (
	ErrStateNotFound = errors.New("given root and slot not found in storage")
)

Functions

func GetNumericBlockNumber

func GetNumericBlockNumber(number BlockNumber, e *Eth) (uint64, error)

func NewInternalError

func NewInternalError(msg string) *internalError

func NewInvalidParamsError

func NewInvalidParamsError(msg string) *invalidParamsError

func NewInvalidRequestError

func NewInvalidRequestError(msg string) *invalidRequestError

func NewMethodNotFoundError

func NewMethodNotFoundError(method string) *methodNotFoundError

func NewSubscriptionNotFoundError

func NewSubscriptionNotFoundError(method string) *subscriptionNotFoundError

Types

type BlockNumber

type BlockNumber int64

func (*BlockNumber) UnmarshalJSON

func (b *BlockNumber) UnmarshalJSON(buffer []byte) error

UnmarshalJSON automatically decodes the user input for the block number, when a JSON RPC method is called

type BlockNumberOrHash

type BlockNumberOrHash struct {
	BlockNumber *BlockNumber `json:"blockNumber,omitempty"`
	BlockHash   *types.Hash  `json:"blockHash,omitempty"`
}

func (*BlockNumberOrHash) UnmarshalJSON

func (bnh *BlockNumberOrHash) UnmarshalJSON(data []byte) error

UnmarshalJSON will try to extract the filter's data. Here are the possible input formats :

1 - "latest", "pending" or "earliest" - self-explaining keywords 2 - "0x2" - block number #2 (EIP-1898 backward compatible) 3 - {blockNumber: "0x2"} - EIP-1898 compliant block number #2 4 - {blockHash: "0xe0e..."} - EIP-1898 compliant block hash 0xe0e...

type Config

type Config struct {
	Store                    JSONRPCStore
	Addr                     *net.TCPAddr
	ChainID                  uint64
	ChainName                string
	AccessControlAllowOrigin []string
	PriceLimit               uint64
	BatchLengthLimit         uint64
	BlockRangeLimit          uint64
}

type ContentResponse

type ContentResponse struct {
	Pending map[types.Address]map[uint64]*txpoolTransaction `json:"pending"`
	Queued  map[types.Address]map[uint64]*txpoolTransaction `json:"queued"`
}

type Dispatcher

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

Dispatcher handles all json rpc requests by delegating the execution flow to the corresponding service

func (*Dispatcher) Handle

func (d *Dispatcher) Handle(reqBody []byte) ([]byte, error)

func (*Dispatcher) HandleWs

func (d *Dispatcher) HandleWs(reqBody []byte, conn wsConn) ([]byte, error)

func (*Dispatcher) RemoveFilterByWs

func (d *Dispatcher) RemoveFilterByWs(conn wsConn)

type Error

type Error interface {
	Error() string
	ErrorCode() int
}

type ErrorResponse

type ErrorResponse struct {
	JSONRPC string       `json:"jsonrpc"`
	ID      interface{}  `json:"id,omitempty"`
	Error   *ObjectError `json:"error"`
}

ErrorResponse is a jsonrpc error response

func (*ErrorResponse) Bytes

func (e *ErrorResponse) Bytes() ([]byte, error)

Bytes return the serialized response

func (*ErrorResponse) Data

func (e *ErrorResponse) Data() json.RawMessage

Data returns ObjectError

func (*ErrorResponse) GetID

func (e *ErrorResponse) GetID() interface{}

GetID returns error response id

type Eth

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

Eth is the eth jsonrpc endpoint

func (*Eth) BlockNumber

func (e *Eth) BlockNumber() (interface{}, error)

BlockNumber returns current block number

func (*Eth) Call

func (e *Eth) Call(arg *txnArgs, filter BlockNumberOrHash) (interface{}, error)

Call executes a smart contract call using the transaction object data

func (*Eth) ChainId

func (e *Eth) ChainId() (interface{}, error)

ChainId returns the chain id of the client

func (*Eth) EstimateGas

func (e *Eth) EstimateGas(arg *txnArgs, rawNum *BlockNumber) (interface{}, error)

EstimateGas estimates the gas needed to execute a transaction

func (*Eth) GasPrice

func (e *Eth) GasPrice() (string, error)

GasPrice returns the average gas price based on the last x blocks taking into consideration operator defined price limit

func (*Eth) GetBalance

func (e *Eth) GetBalance(address types.Address, filter BlockNumberOrHash) (interface{}, error)

GetBalance returns the account's balance at the referenced block.

func (*Eth) GetBlockByHash

func (e *Eth) GetBlockByHash(hash types.Hash, fullTx bool) (interface{}, error)

GetBlockByHash returns information about a block by hash

func (*Eth) GetBlockByNumber

func (e *Eth) GetBlockByNumber(number BlockNumber, fullTx bool) (interface{}, error)

GetBlockByNumber returns information about a block by block number

func (*Eth) GetBlockTransactionCountByNumber

func (e *Eth) GetBlockTransactionCountByNumber(number BlockNumber) (interface{}, error)

func (*Eth) GetCode

func (e *Eth) GetCode(address types.Address, filter BlockNumberOrHash) (interface{}, error)

GetCode returns account code at given block number

func (*Eth) GetFilterChanges

func (e *Eth) GetFilterChanges(id string) (interface{}, error)

GetFilterChanges is a polling method for a filter, which returns an array of logs which occurred since last poll.

func (*Eth) GetFilterLogs

func (e *Eth) GetFilterLogs(id string) (interface{}, error)

GetFilterLogs returns an array of logs for the specified filter

func (*Eth) GetLogs

func (e *Eth) GetLogs(query *LogQuery) (interface{}, error)

GetLogs returns an array of logs matching the filter options

func (*Eth) GetStorageAt

func (e *Eth) GetStorageAt(
	address types.Address,
	index types.Hash,
	filter BlockNumberOrHash,
) (interface{}, error)

GetStorageAt returns the contract storage at the index position

func (*Eth) GetTransactionByHash

func (e *Eth) GetTransactionByHash(hash types.Hash) (interface{}, error)

GetTransactionByHash returns a transaction by its hash. If the transaction is still pending -> return the txn with some fields omitted If the transaction is sealed into a block -> return the whole txn with all fields

func (*Eth) GetTransactionCount

func (e *Eth) GetTransactionCount(address types.Address, filter BlockNumberOrHash) (interface{}, error)

GetTransactionCount returns account nonce

func (*Eth) GetTransactionReceipt

func (e *Eth) GetTransactionReceipt(hash types.Hash) (interface{}, error)

GetTransactionReceipt returns a transaction receipt by his hash

func (*Eth) NewBlockFilter

func (e *Eth) NewBlockFilter() (interface{}, error)

NewBlockFilter creates a filter in the node, to notify when a new block arrives

func (*Eth) NewFilter

func (e *Eth) NewFilter(filter *LogQuery) (interface{}, error)

NewFilter creates a filter object, based on filter options, to notify when the state changes (logs).

func (*Eth) SendRawTransaction

func (e *Eth) SendRawTransaction(input string) (interface{}, error)

SendRawTransaction sends a raw transaction

func (*Eth) SendTransaction

func (e *Eth) SendTransaction(_ *txnArgs) (interface{}, error)

SendTransaction rejects eth_sendTransaction json-rpc call as we don't support wallet management

func (*Eth) Syncing

func (e *Eth) Syncing() (interface{}, error)

func (*Eth) UninstallFilter

func (e *Eth) UninstallFilter(id string) (bool, error)

UninstallFilter uninstalls a filter with given ID

func (*Eth) Unsubscribe

func (e *Eth) Unsubscribe(id string) (bool, error)

Unsubscribe uninstalls a filter in a websocket

type FilterManager

type FilterManager struct {
	sync.RWMutex
	// contains filtered or unexported fields
}

FilterManager manages all running filters

func NewFilterManager

func NewFilterManager(logger hclog.Logger, store filterManagerStore, blockRangeLimit uint64) *FilterManager

func (*FilterManager) Close

func (f *FilterManager) Close()

Close closed closeCh so that terminate worker

func (*FilterManager) Exists

func (f *FilterManager) Exists(id string) bool

Exists checks the filter with given ID exists

func (*FilterManager) GetFilterChanges

func (f *FilterManager) GetFilterChanges(id string) (interface{}, error)

GetFilterChanges returns the updates of the filter with given ID in string, and refreshes the timeout on the filter

func (*FilterManager) GetLogFilterFromID

func (f *FilterManager) GetLogFilterFromID(filterID string) (*logFilter, error)

GetLogFilterFromID return log filter for given filterID

func (*FilterManager) GetLogsForQuery

func (f *FilterManager) GetLogsForQuery(query *LogQuery) ([]*Log, error)

GetLogsForQuery return array of logs for given query

func (*FilterManager) NewBlockFilter

func (f *FilterManager) NewBlockFilter(ws wsConn) string

NewBlockFilter adds new BlockFilter

func (*FilterManager) NewLogFilter

func (f *FilterManager) NewLogFilter(logQuery *LogQuery, ws wsConn) string

NewLogFilter adds new LogFilter

func (*FilterManager) RemoveFilterByWs

func (f *FilterManager) RemoveFilterByWs(ws wsConn)

RemoveFilterByWs removes the filter with given WS [Thread safe]

func (*FilterManager) Run

func (f *FilterManager) Run()

Run starts worker process to handle events

func (*FilterManager) Uninstall

func (f *FilterManager) Uninstall(id string) bool

Uninstall removes the filter with given ID from list

type GetResponse

type GetResponse struct {
	Name    string `json:"name"`
	ChainID uint64 `json:"chain_id"`
	Version string `json:"version"`
}

type InspectResponse

type InspectResponse struct {
	Pending         map[string]map[string]string `json:"pending"`
	Queued          map[string]map[string]string `json:"queued"`
	CurrentCapacity uint64                       `json:"currentCapacity"`
	MaxCapacity     uint64                       `json:"maxCapacity"`
}

type JSONRPC

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

JSONRPC is an API consensus

func NewJSONRPC

func NewJSONRPC(logger hclog.Logger, config *Config) (*JSONRPC, error)

NewJSONRPC returns the JSONRPC http server

type JSONRPCStore

type JSONRPCStore interface {
	// contains filtered or unexported methods
}

JSONRPCStore defines all the methods required by all the JSON RPC endpoints

type Log

type Log struct {
	Address     types.Address `json:"address"`
	Topics      []types.Hash  `json:"topics"`
	Data        argBytes      `json:"data"`
	BlockNumber argUint64     `json:"blockNumber"`
	TxHash      types.Hash    `json:"transactionHash"`
	TxIndex     argUint64     `json:"transactionIndex"`
	BlockHash   types.Hash    `json:"blockHash"`
	LogIndex    argUint64     `json:"logIndex"`
	Removed     bool          `json:"removed"`
}

type LogQuery

type LogQuery struct {
	BlockHash *types.Hash

	Addresses []types.Address
	Topics    [][]types.Hash
	// contains filtered or unexported fields
}

LogQuery is a query to filter logs

func (*LogQuery) Match

func (q *LogQuery) Match(log *types.Log) bool

Match returns whether the receipt includes topics for this filter

func (*LogQuery) UnmarshalJSON

func (q *LogQuery) UnmarshalJSON(data []byte) error

UnmarshalJSON decodes a json object

type Net

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

Net is the net jsonrpc endpoint

func (*Net) Listening

func (n *Net) Listening() (interface{}, error)

Listening returns true if client is actively listening for network connections

func (*Net) PeerCount

func (n *Net) PeerCount() (interface{}, error)

PeerCount returns number of peers currently connected to the client

func (*Net) Version

func (n *Net) Version() (interface{}, error)

Version returns the current network id

type ObjectError

type ObjectError struct {
	Code    int         `json:"code"`
	Message string      `json:"message"`
	Data    interface{} `json:"data,omitempty"`
}

ObjectError is a jsonrpc error

func (*ObjectError) Error

func (e *ObjectError) Error() string

Error implements error interface

type Request

type Request struct {
	ID     interface{}     `json:"id"`
	Method string          `json:"method"`
	Params json.RawMessage `json:"params,omitempty"`
}

Request is a jsonrpc request

type Response

type Response interface {
	GetID() interface{}
	Data() json.RawMessage
	Bytes() ([]byte, error)
}

Response is a jsonrpc response interface

func NewRPCErrorResponse

func NewRPCErrorResponse(id interface{}, errCode int, err string, jsonrpcver string) Response

NewRPCErrorResponse is used to create a custom error response

func NewRPCResponse

func NewRPCResponse(id interface{}, jsonrpcver string, reply []byte, err Error) Response

NewRPCResponse returns Success/Error response object

type StatusResponse

type StatusResponse struct {
	Pending uint64 `json:"pending"`
	Queued  uint64 `json:"queued"`
}

type SuccessResponse

type SuccessResponse struct {
	JSONRPC string          `json:"jsonrpc"`
	ID      interface{}     `json:"id"`
	Result  json.RawMessage `json:"result"`
	Error   *ObjectError    `json:"error,omitempty"`
}

SuccessResponse is a jsonrpc success response

func (*SuccessResponse) Bytes

func (s *SuccessResponse) Bytes() ([]byte, error)

Bytes return the serialized response

func (*SuccessResponse) Data

func (s *SuccessResponse) Data() json.RawMessage

Data returns the result

func (*SuccessResponse) GetID

func (s *SuccessResponse) GetID() interface{}

GetID returns success response id

type TxPool

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

TxPool is the txpool jsonrpc endpoint

func (*TxPool) Content

func (t *TxPool) Content() (interface{}, error)

Create response for txpool_content request. See https://geth.ethereum.org/docs/rpc/ns-txpool#txpool_content.

func (*TxPool) Inspect

func (t *TxPool) Inspect() (interface{}, error)

Create response for txpool_inspect request. See https://geth.ethereum.org/docs/rpc/ns-txpool#txpool_inspect.

func (*TxPool) Status

func (t *TxPool) Status() (interface{}, error)

Create response for txpool_status request. See https://geth.ethereum.org/docs/rpc/ns-txpool#txpool_status.

type Web3

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

Web3 is the web3 jsonrpc endpoint

func (*Web3) ClientVersion

func (w *Web3) ClientVersion() (interface{}, error)

ClientVersion returns the version of the web3 client (web3_clientVersion)

func (*Web3) Sha3

func (w *Web3) Sha3(val string) (interface{}, error)

Sha3 returns Keccak-256 (not the standardized SHA3-256) of the given data

Jump to

Keyboard shortcuts

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