handler

package
v1.4.5-testnet Latest Latest
Warning

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

Go to latest
Published: Oct 18, 2024 License: MIT Imports: 41 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func MustInitFromViper

func MustInitFromViper()

func ToHexBigSlice

func ToHexBigSlice(arr []*big.Int) []*hexutil.Big

ToHexBigSlice converts a slice of `*big.Int` to a slice of `*hexutil.Big`.

Types

type BlockPriorityFee

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

BlockPriorityFee holds the gas fees of transactions within a single block.

func (*BlockPriorityFee) Append

func (b *BlockPriorityFee) Append(txnTips ...*TxnPriorityFee)

Append appends transaction priority fees to the block and sorts them in ascending order.

func (*BlockPriorityFee) Percentile

func (b *BlockPriorityFee) Percentile(p float64) *big.Int

Percentile calculates the percentile of transaction priority fees

func (*BlockPriorityFee) TipRange

func (b *BlockPriorityFee) TipRange() []*big.Int

TipRange returns the range of transaction priority fees in the block.

type CfxGasStationHandler

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

CfxGasStationHandler handles RPC requests for gas price estimation.

func MustNewCfxGasStationHandlerFromViper

func MustNewCfxGasStationHandlerFromViper(cp *node.CfxClientProvider) *CfxGasStationHandler

func (*CfxGasStationHandler) Suggest

type CfxLogsApiHandler

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

CfxLogsApiHandler RPC handler to get core space event logs from store or fullnode.

func NewCfxLogsApiHandler

func NewCfxLogsApiHandler(ms *mysql.MysqlStore, prunedHandler *CfxPrunedLogsHandler) *CfxLogsApiHandler

func (*CfxLogsApiHandler) GetLogs

func (handler *CfxLogsApiHandler) GetLogs(
	ctx context.Context,
	cfx sdk.ClientOperator,
	filter *types.LogFilter,
	delegatedRpcMethod string,
) ([]types.Log, bool, error)

type CfxPrunedLogsHandler

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

CfxPrunedLogsHandler RPC handler to get pruned event logs from some archive fullnodes in rate limited way or vip mode with dedicated fullnode.

func NewCfxPrunedLogsHandler

func NewCfxPrunedLogsHandler(
	pool *node.CfxClientProvider, store *mysql.UserStore, client *redis.Client) *CfxPrunedLogsHandler

func (*CfxPrunedLogsHandler) GetLogs

func (h *CfxPrunedLogsHandler) GetLogs(ctx context.Context, filter types.LogFilter) ([]types.Log, error)

type CfxStateHandler

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

CfxStateHandler handles core space state RPC method by redirecting requests to another full state node if state is not available on normal full node.

func NewCfxStateHandler

func NewCfxStateHandler(cp *node.CfxClientProvider) *CfxStateHandler

func (*CfxStateHandler) Call

func (*CfxStateHandler) CheckBalanceAgainstTransaction

func (h *CfxStateHandler) CheckBalanceAgainstTransaction(
	ctx context.Context,
	cfx sdk.ClientOperator,
	accountAddress types.Address,
	contractAddress types.Address,
	gasLimit *hexutil.Big,
	gasPrice *hexutil.Big,
	storageLimit *hexutil.Big,
	epoch ...*types.Epoch,
) (types.CheckBalanceAgainstTransactionResponse, error)

func (*CfxStateHandler) EstimateGasAndCollateral

func (h *CfxStateHandler) EstimateGasAndCollateral(
	ctx context.Context,
	cfx sdk.ClientOperator,
	request types.CallRequest,
	epoch ...*types.Epoch,
) (types.Estimate, error)

func (*CfxStateHandler) GetAccountInfo

func (h *CfxStateHandler) GetAccountInfo(
	ctx context.Context,
	cfx sdk.ClientOperator,
	account types.Address,
	epoch ...*types.Epoch,
) (types.AccountInfo, error)

func (*CfxStateHandler) GetAccumulateInterestRate

func (h *CfxStateHandler) GetAccumulateInterestRate(
	ctx context.Context,
	cfx sdk.ClientOperator,
	epoch ...*types.Epoch,
) (*hexutil.Big, error)

func (*CfxStateHandler) GetAdmin

func (h *CfxStateHandler) GetAdmin(
	ctx context.Context,
	cfx sdk.ClientOperator,
	contractAddress types.Address,
	epoch ...*types.Epoch,
) (*types.Address, error)

func (*CfxStateHandler) GetBalance

func (h *CfxStateHandler) GetBalance(
	ctx context.Context,
	cfx sdk.ClientOperator,
	address types.Address,
	epoch ...*types.EpochOrBlockHash,
) (*hexutil.Big, error)

func (*CfxStateHandler) GetCode

func (h *CfxStateHandler) GetCode(
	ctx context.Context,
	cfx sdk.ClientOperator,
	address types.Address,
	epoch ...*types.EpochOrBlockHash,
) (hexutil.Bytes, error)

func (*CfxStateHandler) GetCollateralForStorage

func (h *CfxStateHandler) GetCollateralForStorage(
	ctx context.Context,
	cfx sdk.ClientOperator,
	account types.Address,
	epoch ...*types.Epoch,
) (*hexutil.Big, error)

func (*CfxStateHandler) GetCollateralInfo

func (h *CfxStateHandler) GetCollateralInfo(
	ctx context.Context,
	cfx sdk.ClientOperator,
	epoch ...*types.Epoch,
) (types.StorageCollateralInfo, error)

func (*CfxStateHandler) GetDepositList

func (h *CfxStateHandler) GetDepositList(
	ctx context.Context,
	cfx sdk.ClientOperator,
	address types.Address,
	epoch ...*types.Epoch,
) ([]types.DepositInfo, error)

func (*CfxStateHandler) GetInterestRate

func (h *CfxStateHandler) GetInterestRate(
	ctx context.Context,
	cfx sdk.ClientOperator,
	epoch ...*types.Epoch,
) (*hexutil.Big, error)

func (*CfxStateHandler) GetNextNonce

func (h *CfxStateHandler) GetNextNonce(
	ctx context.Context,
	cfx sdk.ClientOperator,
	address types.Address,
	epoch ...*types.EpochOrBlockHash,
) (*hexutil.Big, error)

func (*CfxStateHandler) GetParamsFromVote

func (h *CfxStateHandler) GetParamsFromVote(
	ctx context.Context,
	cfx sdk.ClientOperator,
	epoch ...*types.Epoch,
) (postypes.VoteParamsInfo, error)

func (*CfxStateHandler) GetPoSEconomics

func (h *CfxStateHandler) GetPoSEconomics(
	ctx context.Context,
	cfx sdk.ClientOperator,
	epoch ...*types.Epoch,
) (types.PoSEconomics, error)

func (*CfxStateHandler) GetSponsorInfo

func (h *CfxStateHandler) GetSponsorInfo(
	ctx context.Context,
	cfx sdk.ClientOperator,
	contractAddress types.Address,
	epoch ...*types.Epoch,
) (sponsor types.SponsorInfo, err error)

func (*CfxStateHandler) GetStakingBalance

func (h *CfxStateHandler) GetStakingBalance(
	ctx context.Context,
	cfx sdk.ClientOperator,
	account types.Address,
	epoch ...*types.Epoch,
) (*hexutil.Big, error)

func (*CfxStateHandler) GetStorageAt

func (h *CfxStateHandler) GetStorageAt(
	ctx context.Context,
	cfx sdk.ClientOperator,
	address types.Address,
	position *hexutil.Big,
	epoch ...*types.EpochOrBlockHash,
) (hexutil.Bytes, error)

func (*CfxStateHandler) GetStorageRoot

func (h *CfxStateHandler) GetStorageRoot(
	ctx context.Context,
	cfx sdk.ClientOperator,
	address types.Address,
	epoch ...*types.Epoch,
) (*types.StorageRoot, error)

func (*CfxStateHandler) GetSupplyInfo

func (h *CfxStateHandler) GetSupplyInfo(
	ctx context.Context,
	cfx sdk.ClientOperator,
	epoch ...*types.Epoch,
) (types.TokenSupplyInfo, error)

func (*CfxStateHandler) GetVoteList

func (h *CfxStateHandler) GetVoteList(
	ctx context.Context,
	cfx sdk.ClientOperator,
	address types.Address,
	epoch ...*types.Epoch,
) ([]types.VoteStakeInfo, error)

type CfxStoreHandler

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

CfxStoreHandler RPC handler to get block/txn/receipt data from store.

func NewCfxCommonStoreHandler

func NewCfxCommonStoreHandler(sname string, store store.Readable, next *CfxStoreHandler) *CfxStoreHandler

func (*CfxStoreHandler) GetBlockByBlockNumber

func (h *CfxStoreHandler) GetBlockByBlockNumber(
	ctx context.Context, blockNumer hexutil.Uint64, includeTxs bool,
) (block interface{}, err error)

func (*CfxStoreHandler) GetBlockByEpochNumber

func (h *CfxStoreHandler) GetBlockByEpochNumber(
	ctx context.Context, epoch *types.Epoch, includeTxs bool,
) (block interface{}, err error)

func (*CfxStoreHandler) GetBlockByHash

func (h *CfxStoreHandler) GetBlockByHash(
	ctx context.Context, blockHash types.Hash, includeTxs bool) (block interface{}, err error)

func (*CfxStoreHandler) GetBlocksByEpoch

func (h *CfxStoreHandler) GetBlocksByEpoch(
	ctx context.Context, epoch *types.Epoch,
) (blockHashes []types.Hash, err error)

func (*CfxStoreHandler) GetTransactionByHash

func (h *CfxStoreHandler) GetTransactionByHash(ctx context.Context, txHash types.Hash) (txn *types.Transaction, err error)

func (*CfxStoreHandler) GetTransactionReceipt

func (h *CfxStoreHandler) GetTransactionReceipt(
	ctx context.Context, txHash types.Hash,
) (rcpt *types.TransactionReceipt, err error)

type CfxTxnHandler

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

CfxTxnHandler RPC handler to optimize sending transaction by relaying txn broadcasting asynchronously and replicating txn sending synchronously to all full nodes of some node group to improve consistency and availability once consistent hashing LB repartitioned.

func MustNewCfxTxnHandler

func MustNewCfxTxnHandler(relayer relay.TxnRelayer) *CfxTxnHandler

func (*CfxTxnHandler) SendRawTxn

func (h *CfxTxnHandler) SendRawTxn(cfx sdk.ClientOperator, group node.Group, signedTx hexutil.Bytes) (types.Hash, error)

type EthGasStationHandler

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

EthGasStationHandler handles RPC requests for gas price estimation.

func MustNewEthGasStationHandlerFromViper

func MustNewEthGasStationHandlerFromViper(cp *node.EthClientProvider) *EthGasStationHandler

func (*EthGasStationHandler) Suggest

type EthLogsApiHandler

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

EthLogsApiHandler RPC handler to get evm space event logs from store or fullnode.

func NewEthLogsApiHandler

func NewEthLogsApiHandler(ms *mysql.MysqlStore) *EthLogsApiHandler

func (*EthLogsApiHandler) GetLogs

func (handler *EthLogsApiHandler) GetLogs(
	ctx context.Context,
	eth *client.RpcEthClient,
	filter *types.FilterQuery,
	delegatedRpcMethod string,
) ([]types.Log, bool, error)

func (*EthLogsApiHandler) GetNetworkId

func (handler *EthLogsApiHandler) GetNetworkId(eth *client.RpcEthClient) (uint32, error)

type EthStateHandler

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

EthStateHandler handles evm space state RPC method by redirecting requests to another full state node if state is not available on normal full node.

func NewEthStateHandler

func NewEthStateHandler(cp *node.EthClientProvider) *EthStateHandler

func (*EthStateHandler) Balance

func (h *EthStateHandler) Balance(
	ctx context.Context,
	w3c *node.Web3goClient,
	addr common.Address,
	block *types.BlockNumberOrHash,
) (*big.Int, error)

func (*EthStateHandler) Call

func (h *EthStateHandler) Call(
	ctx context.Context,
	w3c *node.Web3goClient,
	callRequest types.CallRequest,
	blockNum *types.BlockNumberOrHash,
) ([]byte, error)

func (*EthStateHandler) CodeAt

func (h *EthStateHandler) CodeAt(
	ctx context.Context,
	w3c *node.Web3goClient,
	addr common.Address,
	blockNum *types.BlockNumberOrHash,
) ([]byte, error)

func (*EthStateHandler) EstimateGas

func (h *EthStateHandler) EstimateGas(
	ctx context.Context,
	w3c *node.Web3goClient,
	callRequest types.CallRequest,
	blockNum *types.BlockNumberOrHash,
) (*big.Int, error)

func (*EthStateHandler) StorageAt

func (h *EthStateHandler) StorageAt(
	ctx context.Context,
	w3c *node.Web3goClient,
	addr common.Address,
	location *big.Int,
	block *types.BlockNumberOrHash,
) (common.Hash, error)

func (*EthStateHandler) TransactionCount

func (h *EthStateHandler) TransactionCount(
	ctx context.Context,
	w3c *node.Web3goClient,
	addr common.Address,
	blockNum *types.BlockNumberOrHash,
) (*big.Int, error)

type EthStoreHandler

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

EthStoreHandler RPC handler to get block/txn/receipt data from store.

func NewEthStoreHandler

func NewEthStoreHandler(store store.Readable, next *EthStoreHandler) *EthStoreHandler

func (*EthStoreHandler) GetBlockByHash

func (h *EthStoreHandler) GetBlockByHash(ctx context.Context, blockHash common.Hash, includeTxs bool) (
	block *web3Types.Block, err error,
)

func (*EthStoreHandler) GetBlockByNumber

func (h *EthStoreHandler) GetBlockByNumber(ctx context.Context, blockNum *web3Types.BlockNumber, includeTxs bool) (
	block *web3Types.Block, err error,
)

func (*EthStoreHandler) GetLogs

func (h *EthStoreHandler) GetLogs(ctx context.Context, filter store.LogFilter) (logs []web3Types.Log, err error)

func (*EthStoreHandler) GetTransactionByHash

func (h *EthStoreHandler) GetTransactionByHash(ctx context.Context, txHash common.Hash) (*web3Types.TransactionDetail, error)

func (*EthStoreHandler) GetTransactionReceipt

func (h *EthStoreHandler) GetTransactionReceipt(ctx context.Context, txHash common.Hash) (*web3Types.Receipt, error)

type EthTxnHandler

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

EthTxnHandler evm space RPC handler to optimize sending transaction by relay and replication.

func MustNewEthTxnHandler

func MustNewEthTxnHandler(relayer relay.TxnRelayer) *EthTxnHandler

func (*EthTxnHandler) SendRawTxn

func (h *EthTxnHandler) SendRawTxn(w3c *node.Web3goClient, group node.Group, signedTx hexutil.Bytes) (common.Hash, error)

type GasStationConfig

type GasStationConfig struct {
	// Whether to enable gas station.
	Enabled bool
	// Number of blocks/epochs to peek for gas price estimation.
	HistoricalPeekCount int `default:"100"`
	// Percentiles for average txn gas price mapped to three levels of urgency (`low`, `medium` and `high`).
	Percentiles [3]float64 `default:"[1, 50, 99]"`
}

type GasStationStatus

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

GasStationStatus represents the status of gas station.

var (
	StationStatusOk                GasStationStatus = GasStationStatus{}
	StationStatusClientUnavailable GasStationStatus = GasStationStatus{node.ErrClientUnavailable}
)

type GasStats

type GasStats struct {
	NetworkCongestion          float64           // Current congestion on the network (0 to 1)
	LatestPriorityFeeRange     []*big.Int        // Range of priority fees for recent transactions
	HistoricalPriorityFeeRange []*big.Int        // Range of priority fees over a historical period
	HistoricalBaseFeeRange     []*big.Int        // Range of base fees over a historical period
	AvgPercentiledPriorityFee  []*big.Int        // Average priority fee per gas by given percentiles
	PriorityFeeTrend           types.GasFeeTrend // Current trend in priority fees
	BaseFeeTrend               types.GasFeeTrend // Current trend in base fees
}

type PriorityFeeWindow

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

PriorityFeeWindow holds priority fees of the latest blocks using a sliding window mechanism.

func NewPriorityFeeWindow

func NewPriorityFeeWindow(capacity int) *PriorityFeeWindow

NewPriorityFeeWindow creates a new `PriorityFeeWindow` with the specified capacity.

func (*PriorityFeeWindow) Calculate

func (w *PriorityFeeWindow) Calculate(percentiles []float64) (stats GasStats)

Calculate calculates the gas fee statistics from the data within the window.

func (*PriorityFeeWindow) Push

func (w *PriorityFeeWindow) Push(blockFee *BlockPriorityFee)

Push adds a new block to the window.

func (*PriorityFeeWindow) Remove

func (w *PriorityFeeWindow) Remove(blockHashes ...string)

Remove removes blocks from the window.

func (*PriorityFeeWindow) Size

func (w *PriorityFeeWindow) Size() int

Size returns the number of blocks in the window.

type TxnPriorityFee

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

TxnPriorityFee holds the priority fee information of a single transaction.

Jump to

Keyboard shortcuts

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