backend

package
v0.14.1 Latest Latest
Warning

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

Go to latest
Published: Jul 13, 2022 License: LGPL-3.0 Imports: 34 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AllTxLogsFromEvents added in v0.10.0

func AllTxLogsFromEvents(events []abci.Event) ([][]*ethtypes.Log, error)

AllTxLogsFromEvents parses all ethereum logs from cosmos events

func ParseTxLogsFromEvent added in v0.10.0

func ParseTxLogsFromEvent(event abci.Event) ([]*ethtypes.Log, error)

ParseTxLogsFromEvent parse tx logs from one event

func TxLogsFromEvents

func TxLogsFromEvents(events []abci.Event, msgIndex int) ([]*ethtypes.Log, error)

TxLogsFromEvents parses ethereum logs from cosmos events for specific msg index

Types

type Backend

type Backend interface {
	// Fee API
	FeeHistory(blockCount rpc.DecimalOrHex, lastBlock rpc.BlockNumber, rewardPercentiles []float64) (*types.FeeHistoryResult, error)

	// General Ethereum API
	RPCGasCap() uint64            // global gas cap for eth_call over rpc: DoS protection
	RPCEVMTimeout() time.Duration // global timeout for eth_call over rpc: DoS protection
	RPCTxFeeCap() float64         // RPCTxFeeCap is the global transaction fee(price * gaslimit) cap for send-transaction variants. The unit is ether.

	RPCMinGasPrice() int64
	SuggestGasTipCap(baseFee *big.Int) (*big.Int, error)

	// Blockchain API
	BlockNumber() (hexutil.Uint64, error)
	GetTendermintBlockByNumber(blockNum types.BlockNumber) (*tmrpctypes.ResultBlock, error)
	GetTendermintBlockByHash(blockHash common.Hash) (*tmrpctypes.ResultBlock, error)
	GetBlockByNumber(blockNum types.BlockNumber, fullTx bool) (map[string]interface{}, error)
	GetBlockByHash(hash common.Hash, fullTx bool) (map[string]interface{}, error)
	BlockByNumber(blockNum types.BlockNumber) (*ethtypes.Block, error)
	BlockByHash(blockHash common.Hash) (*ethtypes.Block, error)
	CurrentHeader() *ethtypes.Header
	HeaderByNumber(blockNum types.BlockNumber) (*ethtypes.Header, error)
	GetBlockNumberByHash(blockHash common.Hash) (*big.Int, error)
	HeaderByHash(blockHash common.Hash) (*ethtypes.Header, error)
	PendingTransactions() ([]*sdk.Tx, error)
	GetTransactionCount(address common.Address, blockNum types.BlockNumber) (*hexutil.Uint64, error)
	SendTransaction(args evmtypes.TransactionArgs) (common.Hash, error)
	GetCoinbase() (sdk.AccAddress, error)
	GetTransactionByHash(txHash common.Hash) (*types.RPCTransaction, error)
	GetTxByEthHash(txHash common.Hash) (*tmrpctypes.ResultTx, error)
	GetTxByTxIndex(height int64, txIndex uint) (*tmrpctypes.ResultTx, error)
	EstimateGas(args evmtypes.TransactionArgs, blockNrOptional *types.BlockNumber) (hexutil.Uint64, error)
	BaseFee(height int64) (*big.Int, error)

	// Filter API
	BloomStatus() (uint64, uint64)
	GetLogs(hash common.Hash) ([][]*ethtypes.Log, error)
	GetLogsByHeight(height *int64) ([][]*ethtypes.Log, error)
	ChainConfig() *params.ChainConfig
	SetTxDefaults(args evmtypes.TransactionArgs) (evmtypes.TransactionArgs, error)
	GetEthereumMsgsFromTendermintBlock(block *tmrpctypes.ResultBlock, blockRes *tmrpctypes.ResultBlockResults) []*evmtypes.MsgEthereumTx
}

Backend implements the functionality shared within namespaces. Implemented by EVMBackend.

type EVMBackend

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

EVMBackend implements the Backend interface

func NewEVMBackend

func NewEVMBackend(ctx *server.Context, logger log.Logger, clientCtx client.Context) *EVMBackend

NewEVMBackend creates a new EVMBackend instance

func (*EVMBackend) BaseFee added in v0.8.0

func (e *EVMBackend) BaseFee(height int64) (*big.Int, error)

BaseFee returns the base fee tracked by the Fee Market module. If the base fee is not enabled, it returns the initial base fee amount. Return nil if London is not activated.

func (*EVMBackend) BlockBloom

func (e *EVMBackend) BlockBloom(height *int64) (ethtypes.Bloom, error)

BlockBloom query block bloom filter from block results

func (*EVMBackend) BlockByHash added in v0.8.0

func (e *EVMBackend) BlockByHash(hash common.Hash) (*ethtypes.Block, error)

BlockByHash returns the block identified by hash.

func (*EVMBackend) BlockByNumber added in v0.8.0

func (e *EVMBackend) BlockByNumber(blockNum types.BlockNumber) (*ethtypes.Block, error)

BlockByNumber returns the block identified by number.

func (*EVMBackend) BlockNumber

func (e *EVMBackend) BlockNumber() (hexutil.Uint64, error)

BlockNumber returns the current block number in abci app state. Because abci app state could lag behind from tendermint latest block, it's more stable for the client to use the latest block number in abci app state than tendermint rpc.

func (*EVMBackend) BloomStatus

func (e *EVMBackend) BloomStatus() (uint64, uint64)

BloomStatus returns the BloomBitsBlocks and the number of processed sections maintained by the chain indexer.

func (*EVMBackend) ChainConfig

func (e *EVMBackend) ChainConfig() *params.ChainConfig

ChainConfig return the ethereum chain configuration

func (*EVMBackend) CurrentHeader

func (e *EVMBackend) CurrentHeader() *ethtypes.Header

CurrentHeader returns the latest block header

func (*EVMBackend) EstimateGas

func (e *EVMBackend) EstimateGas(args evmtypes.TransactionArgs, blockNrOptional *types.BlockNumber) (hexutil.Uint64, error)

EstimateGas returns an estimate of gas usage for the given smart contract call.

func (*EVMBackend) EthBlockFromTendermint

func (e *EVMBackend) EthBlockFromTendermint(
	block *tmtypes.Block,
	fullTx bool,
) (map[string]interface{}, error)

EthBlockFromTendermint returns a JSON-RPC compatible Ethereum block from a given Tendermint block and its block result.

func (*EVMBackend) EthBlockFromTm added in v0.8.0

func (e *EVMBackend) EthBlockFromTm(block *tmtypes.Block) (*ethtypes.Block, error)

func (*EVMBackend) FeeHistory added in v0.8.0

func (e *EVMBackend) FeeHistory(
	userBlockCount rpc.DecimalOrHex,
	lastBlock rpc.BlockNumber,
	rewardPercentiles []float64,
) (*rpctypes.FeeHistoryResult, error)

FeeHistory returns data relevant for fee estimation based on the specified range of blocks.

func (*EVMBackend) GetBlockByHash

func (e *EVMBackend) GetBlockByHash(hash common.Hash, fullTx bool) (map[string]interface{}, error)

GetBlockByHash returns the block identified by hash.

func (*EVMBackend) GetBlockByNumber

func (e *EVMBackend) GetBlockByNumber(blockNum types.BlockNumber, fullTx bool) (map[string]interface{}, error)

GetBlockByNumber returns the block identified by number.

func (*EVMBackend) GetBlockNumberByHash added in v0.10.3

func (e *EVMBackend) GetBlockNumberByHash(blockHash common.Hash) (*big.Int, error)

GetBlockNumberByHash returns the block height of given block hash

func (*EVMBackend) GetCoinbase

func (e *EVMBackend) GetCoinbase() (sdk.AccAddress, error)

GetCoinbase is the address that staking rewards will be send to (alias for Etherbase).

func (*EVMBackend) GetEthereumMsgsFromTendermintBlock added in v0.8.0

func (e *EVMBackend) GetEthereumMsgsFromTendermintBlock(block *tmrpctypes.ResultBlock, blockRes *tmrpctypes.ResultBlockResults) []*evmtypes.MsgEthereumTx

GetEthereumMsgsFromTendermintBlock returns all real MsgEthereumTxs from a Tendermint block. It also ensures consistency over the correct txs indexes across RPC endpoints

func (*EVMBackend) GetLogs

func (e *EVMBackend) GetLogs(hash common.Hash) ([][]*ethtypes.Log, error)

GetLogs returns all the logs from all the ethereum transactions in a block.

func (*EVMBackend) GetLogsByHeight

func (e *EVMBackend) GetLogsByHeight(height *int64) ([][]*ethtypes.Log, error)

GetLogsByHeight returns all the logs from all the ethereum transactions in a block.

func (*EVMBackend) GetLogsByNumber

func (e *EVMBackend) GetLogsByNumber(blockNum types.BlockNumber) ([][]*ethtypes.Log, error)

func (*EVMBackend) GetTendermintBlockByHash added in v0.8.0

func (e *EVMBackend) GetTendermintBlockByHash(blockHash common.Hash) (*tmrpctypes.ResultBlock, error)

GetTendermintBlockByHash returns a Tendermint format block by block number

func (*EVMBackend) GetTendermintBlockByNumber

func (e *EVMBackend) GetTendermintBlockByNumber(blockNum types.BlockNumber) (*tmrpctypes.ResultBlock, error)

GetTendermintBlockByNumber returns a Tendermint format block by block number

func (*EVMBackend) GetTransactionByHash

func (e *EVMBackend) GetTransactionByHash(txHash common.Hash) (*types.RPCTransaction, error)

GetTransactionByHash returns the Ethereum format transaction identified by Ethereum transaction hash

func (*EVMBackend) GetTransactionCount

func (e *EVMBackend) GetTransactionCount(address common.Address, blockNum types.BlockNumber) (*hexutil.Uint64, error)

GetTransactionCount returns the number of transactions at the given address up to the given block number.

func (*EVMBackend) GetTxByEthHash

func (e *EVMBackend) GetTxByEthHash(hash common.Hash) (*tmrpctypes.ResultTx, error)

GetTxByEthHash uses `/tx_query` to find transaction by ethereum tx hash TODO: Don't need to convert once hashing is fixed on Tendermint https://github.com/tendermint/tendermint/issues/6539

func (*EVMBackend) GetTxByTxIndex added in v0.10.0

func (e *EVMBackend) GetTxByTxIndex(height int64, index uint) (*tmrpctypes.ResultTx, error)

GetTxByTxIndex uses `/tx_query` to find transaction by tx index of valid ethereum txs

func (*EVMBackend) HeaderByHash

func (e *EVMBackend) HeaderByHash(blockHash common.Hash) (*ethtypes.Header, error)

HeaderByHash returns the block header identified by hash.

func (*EVMBackend) HeaderByNumber

func (e *EVMBackend) HeaderByNumber(blockNum types.BlockNumber) (*ethtypes.Header, error)

HeaderByNumber returns the block header identified by height.

func (*EVMBackend) PendingTransactions

func (e *EVMBackend) PendingTransactions() ([]*sdk.Tx, error)

PendingTransactions returns the transactions that are in the transaction pool and have a from address that is one of the accounts this node manages.

func (*EVMBackend) RPCBlockRangeCap added in v0.10.0

func (e *EVMBackend) RPCBlockRangeCap() int32

RPCBlockRangeCap defines the max block range allowed for `eth_getLogs` query.

func (*EVMBackend) RPCEVMTimeout added in v0.8.0

func (e *EVMBackend) RPCEVMTimeout() time.Duration

RPCEVMTimeout is the global evm timeout for eth-call variants.

func (*EVMBackend) RPCFeeHistoryCap added in v0.8.0

func (e *EVMBackend) RPCFeeHistoryCap() int32

RPCFeeHistoryCap is the limit for total number of blocks that can be fetched

func (*EVMBackend) RPCFilterCap added in v0.8.0

func (e *EVMBackend) RPCFilterCap() int32

RPCFilterCap is the limit for total number of filters that can be created

func (*EVMBackend) RPCGasCap

func (e *EVMBackend) RPCGasCap() uint64

RPCGasCap is the global gas cap for eth-call variants.

func (*EVMBackend) RPCLogsCap added in v0.10.0

func (e *EVMBackend) RPCLogsCap() int32

RPCLogsCap defines the max number of results can be returned from single `eth_getLogs` query.

func (*EVMBackend) RPCMinGasPrice

func (e *EVMBackend) RPCMinGasPrice() int64

func (*EVMBackend) RPCTxFeeCap added in v0.8.0

func (e *EVMBackend) RPCTxFeeCap() float64

RPCGasCap is the global gas cap for eth-call variants.

func (*EVMBackend) SendTransaction

func (e *EVMBackend) SendTransaction(args evmtypes.TransactionArgs) (common.Hash, error)

func (*EVMBackend) SetTxDefaults added in v0.8.0

SetTxDefaults populates tx message with default values in case they are not provided on the args

func (*EVMBackend) SuggestGasTipCap

func (e *EVMBackend) SuggestGasTipCap(baseFee *big.Int) (*big.Int, error)

SuggestGasTipCap returns the suggested tip cap Although we don't support tx prioritization yet, but we return a positive value to help client to mitigate the base fee changes.

Jump to

Keyboard shortcuts

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