Trait EthCall

pub trait EthCall:
    EstimateCall
    + Call
    + LoadPendingBlock
    + LoadBlock
    + FullEthApiTypes {
    // Provided methods
    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 { ... }
    fn simulate_v1(
        &self,
        payload: SimulatePayload,
        block: Option<BlockId>,
    ) -> impl Future<Output = Result<Vec<SimulatedBlock<Block<<Self::NetworkTypes as RpcTypes>::Transaction, <Self::NetworkTypes as RpcTypes>::Header>>>, Self::Error>> + Send { ... }
    fn call(
        &self,
        request: TransactionRequest,
        block_number: Option<BlockId>,
        overrides: EvmOverrides,
    ) -> impl Future<Output = Result<Bytes, Self::Error>> + Send { ... }
    fn call_many(
        &self,
        bundles: Vec<Bundle>,
        state_context: Option<StateContext>,
        state_override: Option<HashMap<Address, AccountOverride, FbBuildHasher<20>>>,
    ) -> impl Future<Output = Result<Vec<Vec<EthCallResponse>>, Self::Error>> + Send { ... }
    fn create_access_list_at(
        &self,
        request: TransactionRequest,
        block_number: Option<BlockId>,
        state_override: Option<HashMap<Address, AccountOverride, FbBuildHasher<20>>>,
    ) -> impl Future<Output = Result<AccessListResult, Self::Error>> + Send
       where Self: Trace { ... }
    fn create_access_list_with(
        &self,
        evm_env: EvmEnv<<<<Self::Evm as ConfigureEvm>::BlockExecutorFactory as BlockExecutorFactory>::EvmFactory as EvmFactory>::Spec>,
        at: BlockId,
        request: TransactionRequest,
        state_override: Option<HashMap<Address, AccountOverride, FbBuildHasher<20>>>,
    ) -> Result<AccessListResult, Self::Error>
       where Self: Trace { ... }
}
Expand description

Execution related functions for the EthApiServer trait in the eth_ namespace.

Provided Methods§

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 simulate_v1( &self, payload: SimulatePayload, block: Option<BlockId>, ) -> impl Future<Output = Result<Vec<SimulatedBlock<Block<<Self::NetworkTypes as RpcTypes>::Transaction, <Self::NetworkTypes as RpcTypes>::Header>>>, Self::Error>> + Send

eth_simulateV1 executes an arbitrary number of transactions on top of the requested state. The transactions are packed into individual blocks. Overrides can be provided.

See also: https://github.com/ethereum/go-ethereum/pull/27720

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

fn call_many( &self, bundles: Vec<Bundle>, state_context: Option<StateContext>, state_override: Option<HashMap<Address, AccountOverride, FbBuildHasher<20>>>, ) -> impl Future<Output = Result<Vec<Vec<EthCallResponse>>, Self::Error>> + Send

Simulate arbitrary number of transactions at an arbitrary blockchain index, with the optionality of state overrides

fn create_access_list_at( &self, request: TransactionRequest, block_number: Option<BlockId>, state_override: Option<HashMap<Address, AccountOverride, FbBuildHasher<20>>>, ) -> impl Future<Output = Result<AccessListResult, Self::Error>> + Send
where Self: Trace,

Creates AccessListResult for the TransactionRequest at the given BlockId, or latest block.

fn create_access_list_with( &self, evm_env: EvmEnv<<<<Self::Evm as ConfigureEvm>::BlockExecutorFactory as BlockExecutorFactory>::EvmFactory as EvmFactory>::Spec>, at: BlockId, request: TransactionRequest, state_override: Option<HashMap<Address, AccountOverride, FbBuildHasher<20>>>, ) -> Result<AccessListResult, Self::Error>
where Self: Trace,

Creates AccessListResult for the TransactionRequest at the given BlockId.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl<Provider, Pool, Network, EvmConfig> EthCall for EthApi<Provider, Pool, Network, EvmConfig>
where EthApi<Provider, Pool, Network, EvmConfig>: EstimateCall + LoadPendingBlock + FullEthApiTypes, Provider: BlockReader,