Documentation
¶
Overview ¶
Package jsonrpc contains the implementation of the JSONRPC service which is called by Ethereum clients (e.g. Metamask).
The most relevant types in this package are:
- EthService, NetService, DebugService, etc. which contain the implementations for the `eth_*`, `net_*`, `debug_*`, etc., JSONRPC endpoints. Each endpoint corresponds to a public receiver with the same name. For example, `eth_getTransactionCount` corresponds to EthService.GetTransactionCount.
- EVMChain, which provides common functionality to interact with the EVM state.
- ChainBackend, which provides access to the underlying ISC chain, and has two implementations:
- WaspEVMBackend for the production environment.
- [solo.jsonRPCSoloBackend] for Solo tests.
package jsonrpc implements JSON-RPC endpoints according to https://eth.wiki/json-rpc/API
Index ¶
- Variables
- func GetTraceResults(blockTxs []*types.Transaction, traceBlock bool, ...) (json.RawMessage, error)
- func MemoryPtr(m []byte, offset, size int64) []byte
- func NewServer(evmChain *EVMChain, accountManager *AccountManager, ...) (*rpc.Server, error)
- func RPCMarshalBlock(block *types.Block, inclTx, fullTx bool) (map[string]any, error)
- func RPCMarshalHeader(head *types.Header) map[string]any
- func RPCMarshalReceipt(r *types.Receipt, tx *types.Transaction, effectiveGasPrice *big.Int) map[string]any
- func StackBack(st []uint256.Int, n int) *uint256.Int
- type AccountManager
- type CallFrame
- type CallLog
- type CallTraceAction
- type ChainBackend
- type CreateTraceAction
- type CreateTraceResult
- type DebugService
- func (d *DebugService) GetRawBlock(blockNrOrHash rpc.BlockNumberOrHash) (any, error)
- func (d *DebugService) TraceBlockByHash(blockHash common.Hash, config *tracers.TraceConfig) (any, error)
- func (d *DebugService) TraceBlockByNumber(blockNumber hexutil.Uint64, config *tracers.TraceConfig) (any, error)
- func (d *DebugService) TraceTransaction(txHash common.Hash, config *tracers.TraceConfig) (any, error)
- type EVMChain
- func (e *EVMChain) Balance(address common.Address, blockNumberOrHash *rpc.BlockNumberOrHash) (*big.Int, error)
- func (e *EVMChain) BaseToken() *parameters.BaseToken
- func (e *EVMChain) BlockByHash(hash common.Hash) *types.Block
- func (e *EVMChain) BlockByNumber(blockNumber *big.Int) (*types.Block, error)
- func (e *EVMChain) BlockNumber() *big.Int
- func (e *EVMChain) BlockTransactionCountByHash(blockHash common.Hash) uint64
- func (e *EVMChain) BlockTransactionCountByNumber(blockNumber *big.Int) (uint64, error)
- func (e *EVMChain) CallContract(callMsg ethereum.CallMsg, blockNumberOrHash *rpc.BlockNumberOrHash) ([]byte, error)
- func (e *EVMChain) ChainID() uint16
- func (e *EVMChain) Code(address common.Address, blockNumberOrHash *rpc.BlockNumberOrHash) ([]byte, error)
- func (e *EVMChain) EstimateGas(callMsg ethereum.CallMsg, blockNumberOrHash *rpc.BlockNumberOrHash) (uint64, error)
- func (e *EVMChain) GasFeePolicy() *gas.FeePolicy
- func (e *EVMChain) GasPrice() *big.Int
- func (e *EVMChain) GasRatio() util.Ratio32
- func (e *EVMChain) GetBlockReceipts(blockNrOrHash rpc.BlockNumberOrHash) ([]*types.Receipt, []*types.Transaction, error)
- func (e *EVMChain) GetRawBlock(blockNrOrHash rpc.BlockNumberOrHash) (hexutil.Bytes, error)
- func (e *EVMChain) Logs(query *ethereum.FilterQuery, params *LogsLimits) ([]*types.Log, error)
- func (e *EVMChain) SendTransaction(tx *types.Transaction) error
- func (e *EVMChain) Signer() (types.Signer, error)
- func (e *EVMChain) StorageAt(address common.Address, key common.Hash, ...) (common.Hash, error)
- func (e *EVMChain) SubscribeLogs(q *ethereum.FilterQuery, ch chan<- []*types.Log) (unsubscribe func())
- func (e *EVMChain) SubscribeNewHeads(ch chan<- *types.Header) (unsubscribe func())
- func (e *EVMChain) TraceBlock(bn rpc.BlockNumber) (any, error)
- func (e *EVMChain) TraceBlockByHash(blockHash common.Hash, config *tracers.TraceConfig) (any, error)
- func (e *EVMChain) TraceBlockByNumber(blockNumber uint64, config *tracers.TraceConfig) (any, error)
- func (e *EVMChain) TraceTransaction(txHash common.Hash, config *tracers.TraceConfig) (any, error)
- func (e *EVMChain) TransactionByBlockHashAndIndex(hash common.Hash, index uint64) (tx *types.Transaction, blockNumber uint64, err error)
- func (e *EVMChain) TransactionByBlockNumberAndIndex(blockNumber *big.Int, index uint64) (tx *types.Transaction, blockHash common.Hash, blockNumberRet uint64, err error)
- func (e *EVMChain) TransactionByHash(hash common.Hash) (tx *types.Transaction, blockHash common.Hash, blockNumber, txIndex uint64, ...)
- func (e *EVMChain) TransactionCount(address common.Address, blockNumberOrHash *rpc.BlockNumberOrHash) (uint64, error)
- func (e *EVMChain) TransactionReceipt(txHash common.Hash) *types.Receipt
- func (e *EVMChain) ViewCaller(chainState state.State) vmerrors.ViewCaller
- type EVMService
- type EthService
- func (e *EthService) Accounts() []common.Address
- func (e *EthService) BlockNumber() (*hexutil.Big, error)
- func (e *EthService) Call(args *RPCCallArgs, blockNumberOrHash *rpc.BlockNumberOrHash) (hexutil.Bytes, error)
- func (e *EthService) ChainId() (hexutil.Uint, error)
- func (e *EthService) Coinbase() common.Address
- func (e *EthService) EstimateGas(args *RPCCallArgs, blockNumberOrHash *rpc.BlockNumberOrHash) (hexutil.Uint64, error)
- func (e *EthService) GasPrice() (*hexutil.Big, error)
- func (e *EthService) GetBalance(address common.Address, blockNumberOrHash *rpc.BlockNumberOrHash) (*hexutil.Big, error)
- func (e *EthService) GetBlockByHash(hash common.Hash, full bool) (map[string]any, error)
- func (e *EthService) GetBlockByNumber(blockNumber rpc.BlockNumber, full bool) (map[string]any, error)
- func (e *EthService) GetBlockReceipts(blockNumber rpc.BlockNumberOrHash) ([]map[string]any, error)
- func (e *EthService) GetBlockTransactionCountByHash(blockHash common.Hash) (hexutil.Uint, error)
- func (e *EthService) GetBlockTransactionCountByNumber(blockNumber rpc.BlockNumber) (hexutil.Uint, error)
- func (e *EthService) GetCode(address common.Address, blockNumberOrHash *rpc.BlockNumberOrHash) (hexutil.Bytes, error)
- func (e *EthService) GetCompilers() []string
- func (e *EthService) GetLogs(q *RPCFilterQuery) ([]*types.Log, error)
- func (e *EthService) GetStorageAt(address common.Address, key string, blockNumberOrHash *rpc.BlockNumberOrHash) (hexutil.Bytes, error)
- func (e *EthService) GetTransactionByBlockHashAndIndex(blockHash common.Hash, index hexutil.Uint) (*RPCTransaction, error)
- func (e *EthService) GetTransactionByBlockNumberAndIndex(blockNumberOrTag rpc.BlockNumber, index hexutil.Uint) (*RPCTransaction, error)
- func (e *EthService) GetTransactionByHash(hash common.Hash) (*RPCTransaction, error)
- func (e *EthService) GetTransactionCount(address common.Address, blockNumberOrHash *rpc.BlockNumberOrHash) (hexutil.Uint64, error)
- func (e *EthService) GetTransactionReceipt(txHash common.Hash) (map[string]any, error)
- func (e *EthService) GetUncleByBlockHashAndIndex(blockHash common.Hash, index hexutil.Uint) map[string]any
- func (e *EthService) GetUncleByBlockNumberAndIndex(blockNumberOrTag rpc.BlockNumber, index hexutil.Uint) map[string]any
- func (e *EthService) GetUncleCountByBlockHash(blockHash common.Hash) hexutil.Uint
- func (e *EthService) GetUncleCountByBlockNumber(blockNumber rpc.BlockNumber) hexutil.Uint
- func (e *EthService) Hashrate() float64
- func (e *EthService) Logs(ctx context.Context, q *RPCFilterQuery) (*rpc.Subscription, error)
- func (e *EthService) Mining() bool
- func (e *EthService) NewHeads(ctx context.Context) (*rpc.Subscription, error)
- func (e *EthService) ProtocolVersion() hexutil.Uint
- func (e *EthService) SendRawTransaction(txBytes hexutil.Bytes) (common.Hash, error)
- func (e *EthService) SendTransaction(args *SendTxArgs) (common.Hash, error)
- func (e *EthService) Sign(addr common.Address, data hexutil.Bytes) (hexutil.Bytes, error)
- func (e *EthService) SignTransaction(args *SendTxArgs) (hexutil.Bytes, error)
- func (e *EthService) Syncing() bool
- type LogsLimits
- type NetService
- type NewBlockEvent
- type OpCodeJSON
- type Parameters
- type PrestateAccount
- type PrestateAccountMap
- type PrestateDiffResult
- type PrestateTxValue
- type RPCCallArgs
- type RPCFilterQuery
- type RPCTransaction
- type SendTxArgs
- type SuicideTraceAction
- type Trace
- type TraceBlock
- type TraceResult
- type TraceService
- type Tracer
- type TxPoolService
- type TxTraceResult
- type WaspEVMBackend
- func (b *WaspEVMBackend) BaseToken() *parameters.BaseToken
- func (b *WaspEVMBackend) EVMCall(aliasOutput *isc.AliasOutputWithID, callMsg ethereum.CallMsg) ([]byte, error)
- func (b *WaspEVMBackend) EVMEstimateGas(aliasOutput *isc.AliasOutputWithID, callMsg ethereum.CallMsg) (uint64, error)
- func (b *WaspEVMBackend) EVMSendTransaction(tx *types.Transaction) error
- func (b *WaspEVMBackend) EVMTrace(aliasOutput *isc.AliasOutputWithID, blockTime time.Time, ...) error
- func (b *WaspEVMBackend) FeePolicy(blockIndex uint32) (*gas.FeePolicy, error)
- func (b *WaspEVMBackend) ISCCallView(chainState state.State, scName, funName string, args dict.Dict) (dict.Dict, error)
- func (b *WaspEVMBackend) ISCChainID() *isc.ChainID
- func (b *WaspEVMBackend) ISCLatestAliasOutput() (*isc.AliasOutputWithID, error)
- func (b *WaspEVMBackend) ISCLatestState() (state.State, error)
- func (b *WaspEVMBackend) ISCStateByBlockIndex(blockIndex uint32) (state.State, error)
- func (b *WaspEVMBackend) ISCStateByTrieRoot(trieRoot trie.Hash) (state.State, error)
- func (*WaspEVMBackend) RevertToSnapshot(int) error
- func (*WaspEVMBackend) TakeSnapshot() (int, error)
- type Web3Service
Constants ¶
This section is empty.
Variables ¶
var ErrIncorrectTopLevelCalls = errors.New("incorrect number of top-level calls")
Functions ¶
func GetTraceResults ¶
func GetTraceResults( blockTxs []*types.Transaction, traceBlock bool, getFakeTxTrace func(tx *types.Transaction) (json.RawMessage, error), getTxTrace func(tx *types.Transaction) (json.RawMessage, error), getSingleTxTrace func() (json.RawMessage, error), reason error, ) (json.RawMessage, error)
func NewServer ¶
func NewServer( evmChain *EVMChain, accountManager *AccountManager, metrics *metrics.ChainWebAPIMetrics, params *Parameters, ) (*rpc.Server, error)
func RPCMarshalBlock ¶
RPCMarshalBlock converts the given block to the RPC output which depends on fullTx. If inclTx is true transactions are returned. When fullTx is true the returned block contains full transaction details, otherwise it will only contain transaction hashes.
func RPCMarshalHeader ¶
RPCMarshalHeader converts the given header to the RPC output .
func RPCMarshalReceipt ¶
Types ¶
type AccountManager ¶
type AccountManager struct {
// contains filtered or unexported fields
}
func NewAccountManager ¶
func NewAccountManager(accounts []*ecdsa.PrivateKey) *AccountManager
func (*AccountManager) Add ¶
func (a *AccountManager) Add(keyPair *ecdsa.PrivateKey)
func (*AccountManager) Addresses ¶
func (a *AccountManager) Addresses() []common.Address
func (*AccountManager) Get ¶
func (a *AccountManager) Get(addr common.Address) *ecdsa.PrivateKey
type CallFrame ¶
type CallFrame struct { Type OpCodeJSON `json:"type"` From common.Address `json:"from"` Gas hexutil.Uint64 `json:"gas"` GasUsed hexutil.Uint64 `json:"gasUsed"` To *common.Address `json:"to,omitempty" rlp:"optional"` Input hexutil.Bytes `json:"input" rlp:"optional"` Output hexutil.Bytes `json:"output,omitempty" rlp:"optional"` Error string `json:"error,omitempty" rlp:"optional"` RevertReason string `json:"revertReason,omitempty"` Calls []CallFrame `json:"calls,omitempty" rlp:"optional"` Logs []CallLog `json:"logs,omitempty" rlp:"optional"` // Placed at end on purpose. The RLP will be decoded to 0 instead of // nil if there are non-empty elements after in the struct. Value hexutil.Big `json:"value,omitempty" rlp:"optional"` // contains filtered or unexported fields }
func (CallFrame) TypeString ¶
type CallLog ¶
type CallLog struct { Address common.Address `json:"address"` Topics []common.Hash `json:"topics"` Data hexutil.Bytes `json:"data"` // Position of the log relative to subcalls within the same trace // See https://github.com/ethereum/go-ethereum/pull/28389 for details Position hexutil.Uint `json:"position"` }
type CallTraceAction ¶
type ChainBackend ¶
type ChainBackend interface { EVMSendTransaction(tx *types.Transaction) error EVMCall(aliasOutput *isc.AliasOutputWithID, callMsg ethereum.CallMsg) ([]byte, error) EVMEstimateGas(aliasOutput *isc.AliasOutputWithID, callMsg ethereum.CallMsg) (uint64, error) EVMTrace(aliasOutput *isc.AliasOutputWithID, blockTime time.Time, iscRequestsInBlock []isc.Request, txIndex *uint64, blockNumber *uint64, tracer *tracers.Tracer) error FeePolicy(blockIndex uint32) (*gas.FeePolicy, error) ISCChainID() *isc.ChainID ISCCallView(chainState state.State, scName string, funName string, args dict.Dict) (dict.Dict, error) ISCLatestAliasOutput() (*isc.AliasOutputWithID, error) ISCLatestState() (state.State, error) ISCStateByBlockIndex(blockIndex uint32) (state.State, error) ISCStateByTrieRoot(trieRoot trie.Hash) (state.State, error) BaseToken() *parameters.BaseToken TakeSnapshot() (int, error) RevertToSnapshot(int) error }
ChainBackend provides access to the underlying ISC chain.
type CreateTraceAction ¶
type CreateTraceResult ¶
type DebugService ¶
type DebugService struct {
// contains filtered or unexported fields
}
func NewDebugService ¶
func NewDebugService(evmChain *EVMChain, metrics *metrics.ChainWebAPIMetrics) *DebugService
func (*DebugService) GetRawBlock ¶
func (d *DebugService) GetRawBlock(blockNrOrHash rpc.BlockNumberOrHash) (any, error)
func (*DebugService) TraceBlockByHash ¶
func (d *DebugService) TraceBlockByHash(blockHash common.Hash, config *tracers.TraceConfig) (any, error)
func (*DebugService) TraceBlockByNumber ¶
func (d *DebugService) TraceBlockByNumber(blockNumber hexutil.Uint64, config *tracers.TraceConfig) (any, error)
func (*DebugService) TraceTransaction ¶
func (d *DebugService) TraceTransaction(txHash common.Hash, config *tracers.TraceConfig) (any, error)
type EVMChain ¶
type EVMChain struct {
// contains filtered or unexported fields
}
EVMChain provides common functionality to interact with the EVM state.
func NewEVMChain ¶
func (*EVMChain) BaseToken ¶
func (e *EVMChain) BaseToken() *parameters.BaseToken
func (*EVMChain) BlockByNumber ¶
func (*EVMChain) BlockNumber ¶
func (*EVMChain) BlockTransactionCountByHash ¶
func (*EVMChain) BlockTransactionCountByNumber ¶
func (*EVMChain) CallContract ¶
func (e *EVMChain) CallContract(callMsg ethereum.CallMsg, blockNumberOrHash *rpc.BlockNumberOrHash) ([]byte, error)
func (*EVMChain) EstimateGas ¶
func (e *EVMChain) EstimateGas(callMsg ethereum.CallMsg, blockNumberOrHash *rpc.BlockNumberOrHash) (uint64, error)
func (*EVMChain) GasFeePolicy ¶
func (*EVMChain) GetBlockReceipts ¶
func (e *EVMChain) GetBlockReceipts(blockNrOrHash rpc.BlockNumberOrHash) ([]*types.Receipt, []*types.Transaction, error)
func (*EVMChain) GetRawBlock ¶
func (*EVMChain) Logs ¶
func (e *EVMChain) Logs(query *ethereum.FilterQuery, params *LogsLimits) ([]*types.Log, error)
Logs executes a log filter operation, blocking during execution and returning all the results in one batch.
func (*EVMChain) SendTransaction ¶
func (e *EVMChain) SendTransaction(tx *types.Transaction) error
func (*EVMChain) SubscribeLogs ¶
func (*EVMChain) SubscribeNewHeads ¶
func (*EVMChain) TraceBlock ¶
func (e *EVMChain) TraceBlock(bn rpc.BlockNumber) (any, error)
func (*EVMChain) TraceBlockByHash ¶
func (*EVMChain) TraceBlockByNumber ¶
func (*EVMChain) TraceTransaction ¶
func (*EVMChain) TransactionByBlockHashAndIndex ¶
func (*EVMChain) TransactionByBlockNumberAndIndex ¶
func (*EVMChain) TransactionByHash ¶
func (*EVMChain) TransactionCount ¶
func (*EVMChain) TransactionReceipt ¶
func (*EVMChain) ViewCaller ¶
func (e *EVMChain) ViewCaller(chainState state.State) vmerrors.ViewCaller
type EVMService ¶
type EVMService struct {
// contains filtered or unexported fields
}
func NewEVMService ¶
func NewEVMService(evmChain *EVMChain) *EVMService
type EthService ¶
type EthService struct {
// contains filtered or unexported fields
}
EthService contains the implementations for the `eth_*` JSONRPC endpoints.
Each endpoint corresponds to a public receiver with the same name. For example, `eth_getTransactionCount` corresponds to EthService.GetTransactionCount.
func NewEthService ¶
func NewEthService( evmChain *EVMChain, accounts *AccountManager, metrics *metrics.ChainWebAPIMetrics, params *Parameters, ) *EthService
func (*EthService) Accounts ¶
func (e *EthService) Accounts() []common.Address
func (*EthService) BlockNumber ¶
func (e *EthService) BlockNumber() (*hexutil.Big, error)
func (*EthService) Call ¶
func (e *EthService) Call(args *RPCCallArgs, blockNumberOrHash *rpc.BlockNumberOrHash) (hexutil.Bytes, error)
func (*EthService) ChainId ¶
func (e *EthService) ChainId() (hexutil.Uint, error)
ChainID implements the eth_chainId method according to https://eips.ethereum.org/EIPS/eip-695
func (*EthService) Coinbase ¶
func (e *EthService) Coinbase() common.Address
func (*EthService) EstimateGas ¶
func (e *EthService) EstimateGas(args *RPCCallArgs, blockNumberOrHash *rpc.BlockNumberOrHash) (hexutil.Uint64, error)
func (*EthService) GetBalance ¶
func (e *EthService) GetBalance(address common.Address, blockNumberOrHash *rpc.BlockNumberOrHash) (*hexutil.Big, error)
func (*EthService) GetBlockByHash ¶
func (*EthService) GetBlockByNumber ¶
func (e *EthService) GetBlockByNumber(blockNumber rpc.BlockNumber, full bool) (map[string]any, error)
func (*EthService) GetBlockReceipts ¶
func (e *EthService) GetBlockReceipts(blockNumber rpc.BlockNumberOrHash) ([]map[string]any, error)
func (*EthService) GetBlockTransactionCountByHash ¶
func (*EthService) GetBlockTransactionCountByNumber ¶
func (e *EthService) GetBlockTransactionCountByNumber(blockNumber rpc.BlockNumber) (hexutil.Uint, error)
func (*EthService) GetCode ¶
func (e *EthService) GetCode(address common.Address, blockNumberOrHash *rpc.BlockNumberOrHash) (hexutil.Bytes, error)
func (*EthService) GetCompilers ¶
func (e *EthService) GetCompilers() []string
func (*EthService) GetLogs ¶
func (e *EthService) GetLogs(q *RPCFilterQuery) ([]*types.Log, error)
func (*EthService) GetStorageAt ¶
func (e *EthService) GetStorageAt(address common.Address, key string, blockNumberOrHash *rpc.BlockNumberOrHash) (hexutil.Bytes, error)
func (*EthService) GetTransactionByBlockHashAndIndex ¶
func (e *EthService) GetTransactionByBlockHashAndIndex(blockHash common.Hash, index hexutil.Uint) (*RPCTransaction, error)
func (*EthService) GetTransactionByBlockNumberAndIndex ¶
func (e *EthService) GetTransactionByBlockNumberAndIndex(blockNumberOrTag rpc.BlockNumber, index hexutil.Uint) (*RPCTransaction, error)
func (*EthService) GetTransactionByHash ¶
func (e *EthService) GetTransactionByHash(hash common.Hash) (*RPCTransaction, error)
func (*EthService) GetTransactionCount ¶
func (e *EthService) GetTransactionCount(address common.Address, blockNumberOrHash *rpc.BlockNumberOrHash) (hexutil.Uint64, error)
func (*EthService) GetTransactionReceipt ¶
func (*EthService) GetUncleByBlockHashAndIndex ¶
func (*EthService) GetUncleByBlockNumberAndIndex ¶
func (e *EthService) GetUncleByBlockNumberAndIndex(blockNumberOrTag rpc.BlockNumber, index hexutil.Uint) map[string]any
func (*EthService) GetUncleCountByBlockHash ¶
func (e *EthService) GetUncleCountByBlockHash(blockHash common.Hash) hexutil.Uint
func (*EthService) GetUncleCountByBlockNumber ¶
func (e *EthService) GetUncleCountByBlockNumber(blockNumber rpc.BlockNumber) hexutil.Uint
func (*EthService) Hashrate ¶
func (e *EthService) Hashrate() float64
func (*EthService) Logs ¶
func (e *EthService) Logs(ctx context.Context, q *RPCFilterQuery) (*rpc.Subscription, error)
func (*EthService) Mining ¶
func (e *EthService) Mining() bool
func (*EthService) NewHeads ¶
func (e *EthService) NewHeads(ctx context.Context) (*rpc.Subscription, error)
func (*EthService) ProtocolVersion ¶
func (e *EthService) ProtocolVersion() hexutil.Uint
func (*EthService) SendRawTransaction ¶
func (*EthService) SendTransaction ¶
func (e *EthService) SendTransaction(args *SendTxArgs) (common.Hash, error)
func (*EthService) SignTransaction ¶
func (e *EthService) SignTransaction(args *SendTxArgs) (hexutil.Bytes, error)
func (*EthService) Syncing ¶
func (e *EthService) Syncing() bool
type LogsLimits ¶
type NetService ¶
type NetService struct {
// contains filtered or unexported fields
}
func NewNetService ¶
func NewNetService(chainID int) *NetService
func (*NetService) Listening ¶
func (s *NetService) Listening() bool
func (*NetService) PeerCount ¶
func (s *NetService) PeerCount() hexutil.Uint
func (*NetService) Version ¶
func (s *NetService) Version() string
type NewBlockEvent ¶
type NewBlockEvent struct {
// contains filtered or unexported fields
}
type OpCodeJSON ¶
func NewOpCodeJSON ¶
func NewOpCodeJSON(code vm.OpCode) OpCodeJSON
func (OpCodeJSON) MarshalJSON ¶
func (o OpCodeJSON) MarshalJSON() ([]byte, error)
func (*OpCodeJSON) UnmarshalJSON ¶
func (o *OpCodeJSON) UnmarshalJSON(data []byte) error
type Parameters ¶
type Parameters struct { Logs LogsLimits WebsocketRateLimitMessagesPerSecond int WebsocketRateLimitBurst int WebsocketConnectionCleanupDuration time.Duration WebsocketClientBlockDuration time.Duration }
func NewParameters ¶
func ParametersDefault ¶
func ParametersDefault() *Parameters
type PrestateAccount ¶
type PrestateAccountMap ¶
type PrestateAccountMap = map[common.Address]*PrestateAccount
type PrestateDiffResult ¶
type PrestateDiffResult struct { Post PrestateAccountMap `json:"post"` Pre PrestateAccountMap `json:"pre"` }
type PrestateTxValue ¶
type PrestateTxValue struct { Pre PrestateAccountMap `json:"pre"` Post PrestateAccountMap `json:"post"` // contains filtered or unexported fields }
type RPCCallArgs ¶
type RPCCallArgs struct { From common.Address `json:"from"` To *common.Address `json:"to"` Gas *hexutil.Uint64 `json:"gas"` GasPrice *hexutil.Big `json:"gasPrice"` Value *hexutil.Big `json:"value"` // We accept "data" and "input" for backwards-compatibility reasons. "input" is the // newer name and should be preferred by clients. Data *hexutil.Bytes `json:"data"` Input *hexutil.Bytes `json:"input"` }
type RPCFilterQuery ¶
type RPCFilterQuery ethereum.FilterQuery
func (*RPCFilterQuery) UnmarshalJSON ¶
func (q *RPCFilterQuery) UnmarshalJSON(data []byte) error
type RPCTransaction ¶
type RPCTransaction struct { BlockHash *common.Hash `json:"blockHash"` BlockNumber *hexutil.Big `json:"blockNumber"` From common.Address `json:"from"` Gas hexutil.Uint64 `json:"gas"` GasPrice *hexutil.Big `json:"gasPrice"` Hash common.Hash `json:"hash"` Input hexutil.Bytes `json:"input"` Nonce hexutil.Uint64 `json:"nonce"` To *common.Address `json:"to"` TransactionIndex *hexutil.Uint64 `json:"transactionIndex"` Value *hexutil.Big `json:"value"` V *hexutil.Big `json:"v"` R *hexutil.Big `json:"r"` S *hexutil.Big `json:"s"` }
RPCTransaction represents a transaction that will serialize to the RPC representation of a transaction
type SendTxArgs ¶
type SendTxArgs struct { From common.Address `json:"from"` To *common.Address `json:"to"` Gas *hexutil.Uint64 `json:"gas"` GasPrice *hexutil.Big `json:"gasPrice"` Value *hexutil.Big `json:"value"` Nonce *hexutil.Uint64 `json:"nonce"` // We accept "data" and "input" for backwards-compatibility reasons. "input" is the // newer name and should be preferred by clients. Data *hexutil.Bytes `json:"data"` Input *hexutil.Bytes `json:"input"` }
SendTxArgs represents the arguments to submit a new transaction into the transaction pool.
type SuicideTraceAction ¶
type Trace ¶
type Trace struct { Action interface{} `json:"action"` BlockHash *common.Hash `json:"blockHash,omitempty"` BlockNumber uint64 `json:"blockNumber,omitempty"` Error string `json:"error,omitempty"` Result interface{} `json:"result"` // Subtraces is an integer that represents the number of direct nested (child) calls, or "subtraces," within a trace entry. Subtraces int `json:"subtraces"` // TraceAddress is an array of integers that represents the path from the top-level transaction trace down to the current subtrace. // Each integer in the array specifies an index in the sequence of calls, showing how to "navigate" down the call stack to reach this trace. TraceAddress []int `json:"traceAddress"` TransactionHash *common.Hash `json:"transactionHash,omitempty"` TransactionPosition uint64 `json:"transactionPosition"` Type string `json:"type"` }
type TraceBlock ¶
type TraceResult ¶
type TraceService ¶
type TraceService struct {
// contains filtered or unexported fields
}
func NewTraceService ¶
func NewTraceService(evmChain *EVMChain, metrics *metrics.ChainWebAPIMetrics) *TraceService
func (*TraceService) Block ¶
func (d *TraceService) Block(bn rpc.BlockNumber) (any, error)
Block implements the `trace_block` RPC.
type Tracer ¶
type Tracer struct { *tracers.Tracer TraceFakeTx func(tx *types.Transaction) (json.RawMessage, error) }
type TxPoolService ¶
type TxPoolService struct{}
func NewTxPoolService ¶
func NewTxPoolService() *TxPoolService
func (*TxPoolService) Content ¶
func (s *TxPoolService) Content() map[string]map[string]map[string]*RPCTransaction
type TxTraceResult ¶
type TxTraceResult struct { TxHash common.Hash `json:"txHash"` // transaction hash Result json.RawMessage `json:"result,omitempty"` // Trace results produced by the tracer Error string `json:"error,omitempty"` // Trace failure produced by the tracer }
type WaspEVMBackend ¶
type WaspEVMBackend struct {
// contains filtered or unexported fields
}
WaspEVMBackend is the implementation of ChainBackend for the production environment.
func NewWaspEVMBackend ¶
func NewWaspEVMBackend(ch chain.Chain, nodePubKey *cryptolib.PublicKey, baseToken *parameters.BaseToken) *WaspEVMBackend
func (*WaspEVMBackend) BaseToken ¶
func (b *WaspEVMBackend) BaseToken() *parameters.BaseToken
func (*WaspEVMBackend) EVMCall ¶
func (b *WaspEVMBackend) EVMCall(aliasOutput *isc.AliasOutputWithID, callMsg ethereum.CallMsg) ([]byte, error)
func (*WaspEVMBackend) EVMEstimateGas ¶
func (b *WaspEVMBackend) EVMEstimateGas(aliasOutput *isc.AliasOutputWithID, callMsg ethereum.CallMsg) (uint64, error)
func (*WaspEVMBackend) EVMSendTransaction ¶
func (b *WaspEVMBackend) EVMSendTransaction(tx *types.Transaction) error
func (*WaspEVMBackend) FeePolicy ¶
func (b *WaspEVMBackend) FeePolicy(blockIndex uint32) (*gas.FeePolicy, error)
func (*WaspEVMBackend) ISCCallView ¶
func (*WaspEVMBackend) ISCChainID ¶
func (b *WaspEVMBackend) ISCChainID() *isc.ChainID
func (*WaspEVMBackend) ISCLatestAliasOutput ¶
func (b *WaspEVMBackend) ISCLatestAliasOutput() (*isc.AliasOutputWithID, error)
func (*WaspEVMBackend) ISCLatestState ¶
func (b *WaspEVMBackend) ISCLatestState() (state.State, error)
func (*WaspEVMBackend) ISCStateByBlockIndex ¶
func (b *WaspEVMBackend) ISCStateByBlockIndex(blockIndex uint32) (state.State, error)
func (*WaspEVMBackend) ISCStateByTrieRoot ¶
func (*WaspEVMBackend) RevertToSnapshot ¶
func (*WaspEVMBackend) RevertToSnapshot(int) error
func (*WaspEVMBackend) TakeSnapshot ¶
func (*WaspEVMBackend) TakeSnapshot() (int, error)
type Web3Service ¶
type Web3Service struct{}
func NewWeb3Service ¶
func NewWeb3Service() *Web3Service
func (*Web3Service) ClientVersion ¶
func (s *Web3Service) ClientVersion() string