reth_rpc::eth::core

Struct EthApi

source
pub struct EthApi<Provider, Pool, Network, EvmConfig> { /* private fields */ }
Expand description

Eth API implementation.

This type provides the functionality for handling eth_ related requests. These are implemented two-fold: Core functionality is implemented as EthApiSpec trait. Additionally, the required server implementations (e.g. EthApiServer) are implemented separately in submodules. The rpc handler implementation can then delegate to the main impls. This way EthApi is not limited to [jsonrpsee] and can be used standalone or in other network handlers (for example ipc).

Implementations§

source§

impl<Provider, Pool, Network, EvmConfig> EthApi<Provider, Pool, Network, EvmConfig>
where Provider: BlockReaderIdExt,

source

pub fn new( provider: Provider, pool: Pool, network: Network, eth_cache: EthStateCache, gas_oracle: GasPriceOracle<Provider>, gas_cap: impl Into<GasCap>, max_simulate_blocks: u64, eth_proof_window: u64, blocking_task_pool: BlockingTaskPool, fee_history_cache: FeeHistoryCache, evm_config: EvmConfig, proof_permits: usize, ) -> Self

Creates a new, shareable instance using the default tokio task spawner.

source§

impl<Provider, Pool, EvmConfig, Network> EthApi<Provider, Pool, Network, EvmConfig>
where Provider: ChainSpecProvider + BlockReaderIdExt + Clone + 'static, Pool: Clone, EvmConfig: Clone, Network: Clone,

source

pub fn with_spawner<Tasks, Events>( ctx: &EthApiBuilderCtx<Provider, Pool, EvmConfig, Network, Tasks, Events, Self>, ) -> Self
where Tasks: TaskSpawner + Clone + 'static, Events: CanonStateSubscriptions,

Creates a new, shareable instance.

Trait Implementations§

source§

impl<Provider, Pool, Network, EvmConfig> AddDevSigners for EthApi<Provider, Pool, Network, EvmConfig>

source§

fn with_dev_accounts(&self)

Generates 20 random developer accounts. Used in DEV mode.
source§

impl<N> BuilderProvider<N> for EthApi<N::Provider, N::Pool, N::Network, N::Evm>

source§

type Ctx<'a> = &'a EthApiBuilderCtx<<N as FullNodeTypes>::Provider, <N as FullNodeComponents>::Pool, <N as FullNodeComponents>::Evm, <N as FullNodeComponents>::Network, TaskExecutor, <N as FullNodeTypes>::Provider, EthApi<<N as FullNodeTypes>::Provider, <N as FullNodeComponents>::Pool, <N as FullNodeComponents>::Network, <N as FullNodeComponents>::Evm>>

Context required to build type.
source§

fn builder() -> Box<dyn for<'a> Fn(Self::Ctx<'a>) -> Self + Send>

Returns builder for type.
source§

impl<Provider, Pool, Network, EvmConfig> Call for EthApi<Provider, Pool, Network, EvmConfig>
where Self: LoadState + SpawnBlocking, EvmConfig: ConfigureEvm<Header = Header>,

source§

fn call_gas_limit(&self) -> u64

Returns default gas limit to use for eth_call and tracing RPC methods. Read more
source§

fn max_simulate_blocks(&self) -> u64

Returns the maximum number of blocks accepted for eth_simulateV1.
source§

fn evm_config(&self) -> &impl ConfigureEvm<Header = Header>

Returns a handle for reading evm config. Read more
§

fn with_state_at_block<F, R>(&self, at: BlockId, f: F) -> Result<R, Self::Error>
where F: FnOnce(StateProviderTraitObjWrapper<'_>) -> Result<R, Self::Error>,

Executes the closure with the state that corresponds to the given [BlockId].
§

fn transact<DB>( &self, db: DB, env: EnvWithHandlerCfg, ) -> Result<(ResultAndState, EnvWithHandlerCfg), Self::Error>
where DB: Database, EthApiError: From<<DB as Database>::Error>,

Executes the [EnvWithHandlerCfg] against the given [Database] without committing state changes.
§

fn transact_with_inspector<DB>( &self, db: DB, env: EnvWithHandlerCfg, inspector: impl GetInspector<DB>, ) -> Result<(ResultAndState, EnvWithHandlerCfg), Self::Error>
where DB: Database, EthApiError: From<<DB as Database>::Error>,

Executes the [EnvWithHandlerCfg] against the given [Database] without committing state changes.
§

fn spawn_with_state_at_block<F, R>( &self, at: BlockId, f: F, ) -> impl Future<Output = Result<R, Self::Error>> + Send
where F: FnOnce(StateProviderTraitObjWrapper<'_>) -> Result<R, Self::Error> + Send + 'static, R: Send + 'static,

Executes the closure with the state that corresponds to the given [BlockId] on a new task
§

fn replay_transactions_until<DB>( &self, db: &mut CacheDB<DB>, cfg: CfgEnvWithHandlerCfg, block_env: BlockEnv, transactions: impl IntoIterator<Item = TransactionSignedEcRecovered>, target_tx_hash: FixedBytes<32>, ) -> Result<usize, Self::Error>
where DB: DatabaseRef, EthApiError: From<<DB as DatabaseRef>::Error>,

Replays all the transactions until the target transaction is found. Read more
§

fn estimate_gas_with<S>( &self, cfg: CfgEnvWithHandlerCfg, block: BlockEnv, request: TransactionRequest, state: S, state_override: Option<HashMap<Address, AccountOverride, FbBuildHasher<20>>>, ) -> Result<Uint<256, 4>, Self::Error>
where S: StateProvider,

Estimates the gas usage of the request with the state. Read more
§

fn update_estimated_gas_range( &self, result: ExecutionResult, tx_gas_limit: u64, highest_gas_limit: &mut u64, lowest_gas_limit: &mut u64, ) -> Result<(), Self::Error>

Updates the highest and lowest gas limits for binary search based on the execution result. Read more
§

fn map_out_of_gas_err<S>( &self, env_gas_limit: Uint<256, 4>, env: EnvWithHandlerCfg, db: &mut CacheDB<StateProviderDatabase<S>>, ) -> Self::Error
where S: StateProvider,

Executes the requests again after an out of gas error to check if the error is gas related or not
§

fn create_txn_env( &self, block_env: &BlockEnv, request: TransactionRequest, ) -> Result<TxEnv, Self::Error>

Configures a new [TxEnv] for the [TransactionRequest] Read more
§

fn build_call_evm_env( &self, cfg: CfgEnvWithHandlerCfg, block: BlockEnv, request: TransactionRequest, ) -> Result<EnvWithHandlerCfg, Self::Error>

Creates a new [EnvWithHandlerCfg] to be used for executing the [TransactionRequest] in eth_call. Read more
§

fn prepare_call_env<DB>( &self, cfg: CfgEnvWithHandlerCfg, block: BlockEnv, request: TransactionRequest, db: &mut CacheDB<DB>, overrides: EvmOverrides, ) -> Result<EnvWithHandlerCfg, Self::Error>
where DB: DatabaseRef, EthApiError: From<<DB as DatabaseRef>::Error>,

Prepares the [EnvWithHandlerCfg] for execution. Read more
source§

impl<Provider, Pool, Network, EvmConfig> Clone for EthApi<Provider, Pool, Network, EvmConfig>

source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<Provider, Pool, Network, EvmConfig> Debug for EthApi<Provider, Pool, Network, EvmConfig>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<Provider, Pool, Network, EvmConfig> Deref for EthApi<Provider, Pool, Network, EvmConfig>

source§

type Target = Arc<EthApiInner<Provider, Pool, Network, EvmConfig>>

The resulting type after dereferencing.
source§

fn deref(&self) -> &Self::Target

Dereferences the value.
source§

impl<Provider, Pool, Network, EvmConfig> EthApiSpec for EthApi<Provider, Pool, Network, EvmConfig>
where Pool: TransactionPool + 'static, Provider: ChainSpecProvider<ChainSpec: EthereumHardforks> + BlockNumReader + StageCheckpointReader + 'static, Network: NetworkInfo + 'static, EvmConfig: Send + Sync,

source§

fn provider( &self, ) -> impl ChainSpecProvider<ChainSpec: EthereumHardforks> + BlockNumReader + StageCheckpointReader

Returns a handle for reading data from disk.
source§

fn network(&self) -> impl NetworkInfo

Returns a handle for reading network data summary.
source§

fn starting_block(&self) -> U256

Returns the block node is started on.
source§

fn signers(&self) -> &RwLock<Vec<Box<dyn EthSigner>>>

Returns a handle to the signers owned by provider.
§

fn protocol_version( &self, ) -> impl Future<Output = Result<Uint<64, 1>, RethError>> + Send

Returns the current ethereum protocol version.
§

fn chain_id(&self) -> Uint<64, 1>

Returns the chain id
§

fn chain_info(&self) -> Result<ChainInfo, RethError>

Returns provider chain info
§

fn accounts(&self) -> Vec<Address>

Returns a list of addresses owned by provider.
§

fn is_syncing(&self) -> bool

Returns true if the network is undergoing sync.
§

fn sync_status(&self) -> Result<SyncStatus, RethError>

Returns the [SyncStatus] of the network
source§

impl<Provider, Pool, Network, EvmConfig> EthApiTypes for EthApi<Provider, Pool, Network, EvmConfig>
where Self: Send + Sync,

source§

type Error = EthApiError

Extension of [EthApiError], with network specific errors.
source§

type NetworkTypes = AnyNetwork

Blockchain primitive types, specific to network, e.g. block and transaction.
source§

type TransactionCompat = EthTxBuilder

Conversion methods for transaction RPC type.
source§

impl<Provider, Pool, Network, EvmConfig> EthBlocks for EthApi<Provider, Pool, Network, EvmConfig>
where Self: LoadBlock<Error = EthApiError, NetworkTypes: Network<ReceiptResponse = AnyTransactionReceipt>>, Provider: HeaderProvider,

source§

fn provider(&self) -> impl HeaderProvider

Returns a handle for reading data from disk. Read more
source§

async fn block_receipts( &self, block_id: BlockId, ) -> Result<Option<Vec<RpcReceipt<Self::NetworkTypes>>>, Self::Error>
where Self: LoadReceipt,

Helper function for eth_getBlockReceipts. Read more
§

fn block_transaction_count( &self, block_id: BlockId, ) -> impl Future<Output = Result<Option<usize>, Self::Error>> + Send

Returns the number transactions in the given block. Read more
§

fn load_block_and_receipts( &self, block_id: BlockId, ) -> impl Future<Output = Result<Option<(SealedBlock, Arc<Vec<Receipt>>)>, Self::Error>> + Send
where Self: LoadReceipt,

Helper method that loads a bock and all its receipts.
§

fn ommers(&self, block_id: BlockId) -> Result<Option<Vec<Header>>, Self::Error>

Returns uncle headers of given block. Read more
§

fn ommer_by_block_and_index( &self, block_id: BlockId, index: Index, ) -> impl Future<Output = Result<Option<Block<<Self::NetworkTypes as Network>::TransactionResponse, <Self::NetworkTypes as Network>::HeaderResponse>>, Self::Error>> + Send

Returns uncle block at given index in given block. Read more
source§

impl<Provider, Pool, Network, EvmConfig> EthCall for EthApi<Provider, Pool, Network, EvmConfig>
where Self: Call + LoadPendingBlock,

§

fn estimate_gas_at( &self, request: TransactionRequest, at: BlockId, state_override: Option<HashMap<Address, AccountOverride, FbBuildHasher<20>>>, ) -> impl Future<Output = Result<Uint<256, 4>, Self::Error>> + Send

Estimate gas needed for execution of the request at the [BlockId].
§

fn call( &self, request: TransactionRequest, block_number: Option<BlockId>, overrides: EvmOverrides, ) -> impl Future<Output = Result<Bytes, Self::Error>> + Send

Executes the call request (eth_call) and returns the output
source§

impl<Provider, Pool, Network, EvmConfig> EthFees for EthApi<Provider, Pool, Network, EvmConfig>
where Self: LoadFee,

§

fn gas_price( &self, ) -> impl Future<Output = Result<Uint<256, 4>, Self::Error>> + Send
where Self: LoadBlock,

Returns a suggestion for a gas price for legacy transactions. Read more
§

fn blob_base_fee( &self, ) -> impl Future<Output = Result<Uint<256, 4>, Self::Error>> + Send
where Self: LoadBlock,

Returns a suggestion for a base fee for blob transactions.
§

fn suggested_priority_fee( &self, ) -> impl Future<Output = Result<Uint<256, 4>, Self::Error>> + Send
where Self: 'static,

Returns a suggestion for the priority fee (the tip)
§

fn fee_history( &self, block_count: u64, newest_block: BlockNumberOrTag, reward_percentiles: Option<Vec<f64>>, ) -> impl Future<Output = Result<FeeHistory, Self::Error>> + Send

Reports the fee history, for the given amount of blocks, up until the given newest block. Read more
§

fn approximate_percentile( &self, entry: &FeeHistoryEntry, requested_percentile: f64, ) -> u128

Approximates reward at a given percentile for a specific block Based on the configured resolution
source§

impl<Provider, Pool, Network, EvmConfig> EthState for EthApi<Provider, Pool, Network, EvmConfig>
where Self: LoadState + SpawnBlocking,

source§

fn max_proof_window(&self) -> u64

Returns the maximum number of blocks into the past for generating state proofs.
§

fn transaction_count( &self, address: Address, block_id: Option<BlockId>, ) -> impl Future<Output = Result<Uint<256, 4>, Self::Error>> + Send

Returns the number of transactions sent from an address at the given block identifier. Read more
§

fn get_code( &self, address: Address, block_id: Option<BlockId>, ) -> impl Future<Output = Result<Bytes, Self::Error>> + Send

Returns code of given account, at given blocknumber.
§

fn balance( &self, address: Address, block_id: Option<BlockId>, ) -> impl Future<Output = Result<Uint<256, 4>, Self::Error>> + Send

Returns balance of given account, at given blocknumber.
§

fn storage_at( &self, address: Address, index: JsonStorageKey, block_id: Option<BlockId>, ) -> impl Future<Output = Result<FixedBytes<32>, Self::Error>> + Send

Returns values stored of given account, at given blocknumber.
§

fn get_account( &self, address: Address, block_id: BlockId, ) -> impl Future<Output = Result<Option<Account>, Self::Error>> + Send

Returns the account at the given address for the provided block identifier.
source§

impl<Provider, Pool, Network, EvmConfig> EthTransactions for EthApi<Provider, Pool, Network, EvmConfig>
where Self: LoadTransaction, Pool: TransactionPool + 'static, Provider: BlockReaderIdExt,

source§

fn provider(&self) -> impl BlockReaderIdExt

Returns a handle for reading data from disk. Read more
source§

fn signers(&self) -> &RwLock<Vec<Box<dyn EthSigner>>>

Returns a handle for signing data. Read more
§

fn transaction_by_hash( &self, hash: FixedBytes<32>, ) -> impl Future<Output = Result<Option<TransactionSource>, Self::Error>> + Send

Returns the transaction by hash. Read more
§

fn transactions_by_block( &self, block: FixedBytes<32>, ) -> impl Future<Output = Result<Option<Vec<TransactionSigned>>, Self::Error>> + Send

Get all transactions in the block with the given hash. Read more
§

fn raw_transaction_by_hash( &self, hash: FixedBytes<32>, ) -> impl Future<Output = Result<Option<Bytes>, Self::Error>> + Send

Returns the EIP-2718 encoded transaction by hash. Read more
§

fn historical_transaction_by_hash_at( &self, hash: FixedBytes<32>, ) -> impl Future<Output = Result<Option<(TransactionSource, FixedBytes<32>)>, Self::Error>> + Send

Returns the historical transaction and the block it was mined in
§

fn transaction_receipt( &self, hash: FixedBytes<32>, ) -> impl Future<Output = Result<Option<<Self::NetworkTypes as Network>::ReceiptResponse>, Self::Error>> + Send
where Self: LoadReceipt + 'static,

Returns the transaction receipt for the given hash. Read more
§

fn load_transaction_and_receipt( &self, hash: FixedBytes<32>, ) -> impl Future<Output = Result<Option<(TransactionSigned, TransactionMeta, Receipt)>, Self::Error>> + Send
where Self: 'static,

Helper method that loads a transaction and its receipt.
§

fn send_raw_transaction( &self, tx: Bytes, ) -> impl Future<Output = Result<FixedBytes<32>, Self::Error>> + Send

Decodes and recovers the transaction and submits it to the pool. Read more
§

fn sign_request( &self, from: &Address, txn: TransactionRequest, ) -> impl Future<Output = Result<TransactionSigned, Self::Error>> + Send

Signs a transaction, with configured signers.
§

fn sign( &self, account: Address, message: Bytes, ) -> impl Future<Output = Result<Bytes, Self::Error>> + Send

Signs given message. Returns the signature.
§

fn sign_typed_data( &self, data: &TypedData, account: Address, ) -> Result<Bytes, Self::Error>

Encodes and signs the typed data according EIP-712. Payload must implement Eip712 trait.
§

fn find_signer( &self, account: &Address, ) -> Result<Box<dyn EthSigner>, Self::Error>

Returns the signer for the given account, if found in configured signers.
source§

impl<Provider, Pool, Network, EvmConfig> LoadBlock for EthApi<Provider, Pool, Network, EvmConfig>
where Self: LoadPendingBlock + SpawnBlocking, Provider: BlockReaderIdExt,

source§

fn provider(&self) -> impl BlockReaderIdExt

Data access in default (L1) trait method implementations.
source§

fn cache(&self) -> &EthStateCache

Returns a handle for reading data from memory. Read more
§

fn block( &self, block_id: BlockId, ) -> impl Future<Output = Result<Option<SealedBlock>, Self::Error>> + Send

Returns the block object for the given block id.
§

fn block_with_senders( &self, block_id: BlockId, ) -> impl Future<Output = Result<Option<SealedBlockWithSenders>, Self::Error>> + Send

Returns the block object for the given block id.
source§

impl<Provider, Pool, Network, EvmConfig> LoadFee for EthApi<Provider, Pool, Network, EvmConfig>
where Self: LoadBlock, Provider: BlockReaderIdExt + HeaderProvider + ChainSpecProvider<ChainSpec: EthereumHardforks>,

source§

fn provider( &self, ) -> impl BlockIdReader + HeaderProvider + ChainSpecProvider<ChainSpec: EthereumHardforks>

Data access in default (L1) trait method implementations.
source§

fn cache(&self) -> &EthStateCache

Returns a handle for reading data from memory. Read more
source§

fn gas_oracle(&self) -> &GasPriceOracle<impl BlockReaderIdExt>

Returns a handle for reading gas price. Read more
source§

fn fee_history_cache(&self) -> &FeeHistoryCache

Returns a handle for reading fee history data from memory. Read more
§

fn legacy_gas_price( &self, gas_price: Option<Uint<256, 4>>, ) -> impl Future<Output = Result<Uint<256, 4>, Self::Error>> + Send

Returns the gas price if it is set, otherwise fetches a suggested gas price for legacy transactions.
§

fn eip1559_fees( &self, max_fee_per_gas: Option<Uint<256, 4>>, max_priority_fee_per_gas: Option<Uint<256, 4>>, ) -> impl Future<Output = Result<(Uint<256, 4>, Uint<256, 4>), Self::Error>> + Send

Returns the EIP-1559 fees if they are set, otherwise fetches a suggested gas price for EIP-1559 transactions. Read more
§

fn eip4844_blob_fee( &self, blob_fee: Option<Uint<256, 4>>, ) -> impl Future<Output = Result<Uint<256, 4>, Self::Error>> + Send

Returns the EIP-4844 blob fee if it is set, otherwise fetches a blob fee.
§

fn gas_price( &self, ) -> impl Future<Output = Result<Uint<256, 4>, Self::Error>> + Send

Returns a suggestion for a gas price for legacy transactions. Read more
§

fn blob_base_fee( &self, ) -> impl Future<Output = Result<Uint<256, 4>, Self::Error>> + Send

Returns a suggestion for a base fee for blob transactions.
§

fn suggested_priority_fee( &self, ) -> impl Future<Output = Result<Uint<256, 4>, Self::Error>> + Send
where Self: 'static,

Returns a suggestion for the priority fee (the tip)
source§

impl<Provider, Pool, Network, EvmConfig> LoadPendingBlock for EthApi<Provider, Pool, Network, EvmConfig>
where Self: SpawnBlocking, Provider: BlockReaderIdExt + EvmEnvProvider + ChainSpecProvider<ChainSpec: EthereumHardforks> + StateProviderFactory, Pool: TransactionPool, EvmConfig: ConfigureEvm<Header = Header>,

source§

fn provider( &self, ) -> impl BlockReaderIdExt + EvmEnvProvider + ChainSpecProvider<ChainSpec: EthereumHardforks> + StateProviderFactory

Returns a handle for reading data from disk. Read more
source§

fn pool(&self) -> impl TransactionPool

Returns a handle for reading data from transaction pool. Read more
source§

fn pending_block(&self) -> &Mutex<Option<PendingBlock>>

Returns a handle to the pending block. Read more
source§

fn evm_config(&self) -> &impl ConfigureEvm<Header = Header>

Returns a handle for reading evm config. Read more
§

fn pending_block_env_and_cfg(&self) -> Result<PendingBlockEnv, Self::Error>

Configures the [CfgEnvWithHandlerCfg] and [BlockEnv] for the pending block Read more
§

fn local_pending_block( &self, ) -> impl Future<Output = Result<Option<(SealedBlockWithSenders, Vec<Receipt>)>, Self::Error>> + Send
where Self: SpawnBlocking,

Returns the locally built pending block
§

fn assemble_receipt( &self, tx: &TransactionSignedEcRecovered, result: ExecutionResult, cumulative_gas_used: u64, ) -> Receipt

Assembles a [Receipt] for a transaction, based on its [ExecutionResult].
§

fn receipts_root( &self, _block_env: &BlockEnv, execution_outcome: &ExecutionOutcome, block_number: u64, ) -> FixedBytes<32>

Calculates receipts root in block building. Read more
§

fn build_block( &self, env: PendingBlockEnv, ) -> Result<(SealedBlockWithSenders, Vec<Receipt>), Self::Error>
where EthApiError: From<ProviderError>,

Builds a pending block using the configured provider and pool. Read more
source§

impl<Provider, Pool, Network, EvmConfig> LoadReceipt for EthApi<Provider, Pool, Network, EvmConfig>
where Self: Send + Sync,

source§

fn cache(&self) -> &EthStateCache

Returns a handle for reading data from memory. Read more
source§

async fn build_transaction_receipt( &self, tx: TransactionSigned, meta: TransactionMeta, receipt: Receipt, ) -> Result<RpcReceipt<Self::NetworkTypes>, Self::Error>

Helper method for eth_getBlockReceipts and eth_getTransactionReceipt.
source§

impl<Provider, Pool, Network, EvmConfig> LoadState for EthApi<Provider, Pool, Network, EvmConfig>
where Self: Send + Sync, Provider: StateProviderFactory + ChainSpecProvider<ChainSpec: EthereumHardforks>, Pool: TransactionPool,

source§

fn provider( &self, ) -> impl StateProviderFactory + ChainSpecProvider<ChainSpec: EthereumHardforks>

Returns a handle for reading state from database. Read more
source§

fn cache(&self) -> &EthStateCache

Returns a handle for reading data from memory. Read more
source§

fn pool(&self) -> impl TransactionPool

Returns a handle for reading data from transaction pool. Read more
§

fn state_at_hash( &self, block_hash: FixedBytes<32>, ) -> Result<Box<dyn StateProvider>, Self::Error>

Returns the state at the given block number
§

fn state_at_block_id( &self, at: BlockId, ) -> Result<Box<dyn StateProvider>, Self::Error>

Returns the state at the given [BlockId] enum. Read more
§

fn latest_state(&self) -> Result<Box<dyn StateProvider>, Self::Error>

Returns the latest state
§

fn state_at_block_id_or_latest( &self, block_id: Option<BlockId>, ) -> Result<Box<dyn StateProvider>, Self::Error>

Returns the state at the given [BlockId] enum or the latest. Read more
§

fn transaction_count( &self, address: Address, block_id: Option<BlockId>, ) -> impl Future<Output = Result<Uint<256, 4>, Self::Error>> + Send
where Self: SpawnBlocking,

Returns the number of transactions sent from an address at the given block identifier. Read more
§

fn get_code( &self, address: Address, block_id: Option<BlockId>, ) -> impl Future<Output = Result<Bytes, Self::Error>> + Send
where Self: SpawnBlocking,

Returns code of given account, at the given identifier.
source§

impl<Provider, Pool, Network, EvmConfig> LoadTransaction for EthApi<Provider, Pool, Network, EvmConfig>
where Self: SpawnBlocking + FullEthApiTypes, Provider: TransactionsProvider, Pool: TransactionPool,

source§

type Pool = Pool

Transaction pool with pending transactions. [TransactionPool::Transaction] is the supported transaction type.
source§

fn provider(&self) -> impl TransactionsProvider

Returns a handle for reading data from disk. Read more
source§

fn cache(&self) -> &EthStateCache

Returns a handle for reading data from memory. Read more
source§

fn pool(&self) -> &Self::Pool

Returns a handle for reading data from pool. Read more
§

fn transaction_by_hash( &self, hash: FixedBytes<32>, ) -> impl Future<Output = Result<Option<TransactionSource>, Self::Error>> + Send

Returns the transaction by hash. Read more
§

fn transaction_by_hash_at( &self, transaction_hash: FixedBytes<32>, ) -> impl Future<Output = Result<Option<(TransactionSource, BlockId)>, Self::Error>> + Send

Returns the transaction by including its corresponding [BlockId]. Read more
§

fn transaction_and_block( &self, hash: FixedBytes<32>, ) -> impl Future<Output = Result<Option<(TransactionSource, SealedBlockWithSenders)>, Self::Error>> + Send

Fetches the transaction and the transaction’s block
source§

impl<Provider, Pool, Network, EvmConfig> SpawnBlocking for EthApi<Provider, Pool, Network, EvmConfig>
where Self: Clone + Send + Sync + 'static,

source§

fn io_task_spawner(&self) -> impl TaskSpawner

Returns a handle for spawning IO heavy blocking tasks. Read more
source§

fn tracing_task_pool(&self) -> &BlockingTaskPool

Returns a handle for spawning CPU heavy blocking tasks. Read more
source§

fn tracing_task_guard(&self) -> &BlockingTaskGuard

Returns handle to semaphore for pool of CPU heavy blocking tasks.
§

fn acquire_owned( &self, ) -> impl Future<Output = Result<OwnedSemaphorePermit, AcquireError>> + Send

§

fn acquire_many_owned( &self, n: u32, ) -> impl Future<Output = Result<OwnedSemaphorePermit, AcquireError>> + Send

§

fn spawn_blocking_io<F, R>( &self, f: F, ) -> impl Future<Output = Result<R, Self::Error>> + Send
where F: FnOnce(Self) -> Result<R, Self::Error> + Send + 'static, R: Send + 'static,

Executes the future on a new blocking task. Read more
§

fn spawn_tracing<F, R>( &self, f: F, ) -> impl Future<Output = Result<R, Self::Error>> + Send
where F: FnOnce(Self) -> Result<R, Self::Error> + Send + 'static, R: Send + 'static,

Executes a blocking task on the tracing pool. Read more
source§

impl<Provider, Pool, Network, EvmConfig> Trace for EthApi<Provider, Pool, Network, EvmConfig>
where Self: LoadState, EvmConfig: ConfigureEvm<Header = Header>,

source§

fn evm_config(&self) -> &impl ConfigureEvm<Header = Header>

Returns a handle for reading evm config. Read more
§

fn inspect<DB, I>( &self, db: DB, env: EnvWithHandlerCfg, inspector: I, ) -> Result<(ResultAndState, EnvWithHandlerCfg), Self::Error>
where DB: Database, EthApiError: From<<DB as Database>::Error>, I: GetInspector<DB>,

Executes the [EnvWithHandlerCfg] against the given [Database] without committing state changes.
§

fn inspect_and_return_db<DB, I>( &self, db: DB, env: EnvWithHandlerCfg, inspector: I, ) -> Result<(ResultAndState, EnvWithHandlerCfg, DB), Self::Error>
where DB: Database, EthApiError: From<<DB as Database>::Error>, I: GetInspector<DB>,

Same as inspect but also returns the database again. Read more
§

fn trace_at<F, R>( &self, env: EnvWithHandlerCfg, config: TracingInspectorConfig, at: BlockId, f: F, ) -> Result<R, Self::Error>
where Self: Call, F: FnOnce(TracingInspector, ResultAndState) -> Result<R, Self::Error>,

Executes the transaction on top of the given [BlockId] with a tracer configured by the config. Read more

Auto Trait Implementations§

§

impl<Provider, Pool, Network, EvmConfig> Freeze for EthApi<Provider, Pool, Network, EvmConfig>

§

impl<Provider, Pool, Network, EvmConfig> !RefUnwindSafe for EthApi<Provider, Pool, Network, EvmConfig>

§

impl<Provider, Pool, Network, EvmConfig> Send for EthApi<Provider, Pool, Network, EvmConfig>
where Pool: Sync + Send, Provider: Sync + Send, Network: Sync + Send, EvmConfig: Sync + Send,

§

impl<Provider, Pool, Network, EvmConfig> Sync for EthApi<Provider, Pool, Network, EvmConfig>
where Pool: Sync + Send, Provider: Sync + Send, Network: Sync + Send, EvmConfig: Sync + Send,

§

impl<Provider, Pool, Network, EvmConfig> Unpin for EthApi<Provider, Pool, Network, EvmConfig>

§

impl<Provider, Pool, Network, EvmConfig> !UnwindSafe for EthApi<Provider, Pool, Network, EvmConfig>

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit #126799)
Performs copy-assignment from self to dst. Read more
§

impl<T> Conv for T

§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
source§

impl<T> DynClone for T
where T: Clone,

source§

fn __clone_box(&self, _: Private) -> *mut ()

§

impl<T> FmtForward for T

§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<T> Pipe for T
where T: ?Sized,

§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe function.
§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same for T

source§

type Output = T

Should always be Self
§

impl<T> Tap for T

§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release builds.
§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release builds.
§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
source§

impl<T> ToOwned for T
where T: Clone,

source§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> FullEthApi for T
where T: FullEthApiTypes + EthApiSpec + EthTransactions + EthBlocks + EthState + EthCall + EthFees + Trace + LoadReceipt,

§

impl<T> MaybeDebug for T
where T: Debug,

§

impl<T> MaybeSend for T
where T: Send,

§

impl<T> MaybeSendSync for T

§

impl<T> TraceExt for T
where T: LoadTransaction + LoadBlock + LoadPendingBlock + Trace + Call,

Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.

Size: 8 bytes