Trait reth::core::rpc::api::servers::TraceApiServer

source ·
pub trait TraceApiServer: Sized + Send + Sync + 'static {
    // Required methods
    fn trace_call<'life0, 'async_trait>(
        &'life0 self,
        call: TransactionRequest,
        trace_types: HashSet<TraceType>,
        block_id: Option<BlockId>,
        state_overrides: Option<HashMap<Address, AccountOverride>>,
        block_overrides: Option<Box<BlockOverrides>>,
    ) -> Pin<Box<dyn Future<Output = Result<TraceResults, ErrorObject<'static>>> + Send + 'async_trait>>
       where 'life0: 'async_trait,
             Self: 'async_trait;
    fn trace_call_many<'life0, 'async_trait>(
        &'life0 self,
        calls: Vec<(TransactionRequest, HashSet<TraceType>)>,
        block_id: Option<BlockId>,
    ) -> Pin<Box<dyn Future<Output = Result<Vec<TraceResults>, ErrorObject<'static>>> + Send + 'async_trait>>
       where 'life0: 'async_trait,
             Self: 'async_trait;
    fn trace_raw_transaction<'life0, 'async_trait>(
        &'life0 self,
        data: Bytes,
        trace_types: HashSet<TraceType>,
        block_id: Option<BlockId>,
    ) -> Pin<Box<dyn Future<Output = Result<TraceResults, ErrorObject<'static>>> + Send + 'async_trait>>
       where 'life0: 'async_trait,
             Self: 'async_trait;
    fn replay_block_transactions<'life0, 'async_trait>(
        &'life0 self,
        block_id: BlockId,
        trace_types: HashSet<TraceType>,
    ) -> Pin<Box<dyn Future<Output = Result<Option<Vec<TraceResultsWithTransactionHash>>, ErrorObject<'static>>> + Send + 'async_trait>>
       where 'life0: 'async_trait,
             Self: 'async_trait;
    fn replay_transaction<'life0, 'async_trait>(
        &'life0 self,
        transaction: FixedBytes<32>,
        trace_types: HashSet<TraceType>,
    ) -> Pin<Box<dyn Future<Output = Result<TraceResults, ErrorObject<'static>>> + Send + 'async_trait>>
       where 'life0: 'async_trait,
             Self: 'async_trait;
    fn trace_block<'life0, 'async_trait>(
        &'life0 self,
        block_id: BlockId,
    ) -> Pin<Box<dyn Future<Output = Result<Option<Vec<LocalizedTransactionTrace>>, ErrorObject<'static>>> + Send + 'async_trait>>
       where 'life0: 'async_trait,
             Self: 'async_trait;
    fn trace_filter<'life0, 'async_trait>(
        &'life0 self,
        filter: TraceFilter,
    ) -> Pin<Box<dyn Future<Output = Result<Vec<LocalizedTransactionTrace>, ErrorObject<'static>>> + Send + 'async_trait>>
       where 'life0: 'async_trait,
             Self: 'async_trait;
    fn trace_get<'life0, 'async_trait>(
        &'life0 self,
        hash: FixedBytes<32>,
        indices: Vec<Index>,
    ) -> Pin<Box<dyn Future<Output = Result<Option<LocalizedTransactionTrace>, ErrorObject<'static>>> + Send + 'async_trait>>
       where 'life0: 'async_trait,
             Self: 'async_trait;
    fn trace_transaction<'life0, 'async_trait>(
        &'life0 self,
        hash: FixedBytes<32>,
    ) -> Pin<Box<dyn Future<Output = Result<Option<Vec<LocalizedTransactionTrace>>, ErrorObject<'static>>> + Send + 'async_trait>>
       where 'life0: 'async_trait,
             Self: 'async_trait;
    fn trace_transaction_opcode_gas<'life0, 'async_trait>(
        &'life0 self,
        tx_hash: FixedBytes<32>,
    ) -> Pin<Box<dyn Future<Output = Result<Option<TransactionOpcodeGas>, ErrorObject<'static>>> + Send + 'async_trait>>
       where 'life0: 'async_trait,
             Self: 'async_trait;
    fn trace_block_opcode_gas<'life0, 'async_trait>(
        &'life0 self,
        block_id: BlockId,
    ) -> Pin<Box<dyn Future<Output = Result<Option<BlockOpcodeGas>, ErrorObject<'static>>> + Send + 'async_trait>>
       where 'life0: 'async_trait,
             Self: 'async_trait;

    // Provided method
    fn into_rpc(self) -> RpcModule<Self> { ... }
}
Expand description

Server trait implementation for the TraceApi RPC API.

Required Methods§

source

fn trace_call<'life0, 'async_trait>( &'life0 self, call: TransactionRequest, trace_types: HashSet<TraceType>, block_id: Option<BlockId>, state_overrides: Option<HashMap<Address, AccountOverride>>, block_overrides: Option<Box<BlockOverrides>>, ) -> Pin<Box<dyn Future<Output = Result<TraceResults, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: 'async_trait,

Executes the given call and returns a number of possible traces for it.

source

fn trace_call_many<'life0, 'async_trait>( &'life0 self, calls: Vec<(TransactionRequest, HashSet<TraceType>)>, block_id: Option<BlockId>, ) -> Pin<Box<dyn Future<Output = Result<Vec<TraceResults>, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: 'async_trait,

Performs multiple call traces on top of the same block. i.e. transaction n will be executed on top of a pending block with all n-1 transactions applied (traced) first. Allows to trace dependent transactions.

source

fn trace_raw_transaction<'life0, 'async_trait>( &'life0 self, data: Bytes, trace_types: HashSet<TraceType>, block_id: Option<BlockId>, ) -> Pin<Box<dyn Future<Output = Result<TraceResults, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: 'async_trait,

Traces a call to eth_sendRawTransaction without making the call, returning the traces.

Expects a raw transaction data

source

fn replay_block_transactions<'life0, 'async_trait>( &'life0 self, block_id: BlockId, trace_types: HashSet<TraceType>, ) -> Pin<Box<dyn Future<Output = Result<Option<Vec<TraceResultsWithTransactionHash>>, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: 'async_trait,

Replays all transactions in a block returning the requested traces for each transaction.

source

fn replay_transaction<'life0, 'async_trait>( &'life0 self, transaction: FixedBytes<32>, trace_types: HashSet<TraceType>, ) -> Pin<Box<dyn Future<Output = Result<TraceResults, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: 'async_trait,

Replays a transaction, returning the traces.

source

fn trace_block<'life0, 'async_trait>( &'life0 self, block_id: BlockId, ) -> Pin<Box<dyn Future<Output = Result<Option<Vec<LocalizedTransactionTrace>>, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: 'async_trait,

Returns traces created at given block.

source

fn trace_filter<'life0, 'async_trait>( &'life0 self, filter: TraceFilter, ) -> Pin<Box<dyn Future<Output = Result<Vec<LocalizedTransactionTrace>, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: 'async_trait,

Returns traces matching given filter.

This is similar to eth_getLogs but for traces.

source

fn trace_get<'life0, 'async_trait>( &'life0 self, hash: FixedBytes<32>, indices: Vec<Index>, ) -> Pin<Box<dyn Future<Output = Result<Option<LocalizedTransactionTrace>, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: 'async_trait,

Returns transaction trace at given index.

indices represent the index positions of the traces.

Note: This expects a list of indices but only one is supported since this function returns a single LocalizedTransactionTrace.

source

fn trace_transaction<'life0, 'async_trait>( &'life0 self, hash: FixedBytes<32>, ) -> Pin<Box<dyn Future<Output = Result<Option<Vec<LocalizedTransactionTrace>>, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: 'async_trait,

Returns all traces of given transaction.

source

fn trace_transaction_opcode_gas<'life0, 'async_trait>( &'life0 self, tx_hash: FixedBytes<32>, ) -> Pin<Box<dyn Future<Output = Result<Option<TransactionOpcodeGas>, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: 'async_trait,

Returns all opcodes with their count and combined gas usage for the given transaction in no particular order.

source

fn trace_block_opcode_gas<'life0, 'async_trait>( &'life0 self, block_id: BlockId, ) -> Pin<Box<dyn Future<Output = Result<Option<BlockOpcodeGas>, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: 'async_trait,

Returns the opcodes of all transactions in the given block.

This is the same as trace_transactionOpcodeGas but for all transactions in a block.

Provided Methods§

source

fn into_rpc(self) -> RpcModule<Self>

Collects all the methods and subscriptions defined in the trait and adds them into a single RpcModule.

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl<Provider, Eth> TraceApiServer for TraceApi<Provider, Eth>
where Provider: BlockReader + StateProviderFactory + EvmEnvProvider + ChainSpecProvider + 'static, Eth: TraceExt + 'static,

source§

fn trace_call<'life0, 'async_trait>( &'life0 self, call: TransactionRequest, trace_types: HashSet<TraceType>, block_id: Option<BlockId>, state_overrides: Option<HashMap<Address, AccountOverride>>, block_overrides: Option<Box<BlockOverrides>>, ) -> Pin<Box<dyn Future<Output = Result<TraceResults, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, TraceApi<Provider, Eth>: 'async_trait,

Executes the given call and returns a number of possible traces for it.

Handler for trace_call

source§

fn trace_call_many<'life0, 'async_trait>( &'life0 self, calls: Vec<(TransactionRequest, HashSet<TraceType>)>, block_id: Option<BlockId>, ) -> Pin<Box<dyn Future<Output = Result<Vec<TraceResults>, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, TraceApi<Provider, Eth>: 'async_trait,

Handler for trace_callMany

source§

fn trace_raw_transaction<'life0, 'async_trait>( &'life0 self, data: Bytes, trace_types: HashSet<TraceType>, block_id: Option<BlockId>, ) -> Pin<Box<dyn Future<Output = Result<TraceResults, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, TraceApi<Provider, Eth>: 'async_trait,

Handler for trace_rawTransaction

source§

fn replay_block_transactions<'life0, 'async_trait>( &'life0 self, block_id: BlockId, trace_types: HashSet<TraceType>, ) -> Pin<Box<dyn Future<Output = Result<Option<Vec<TraceResultsWithTransactionHash>>, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, TraceApi<Provider, Eth>: 'async_trait,

Handler for trace_replayBlockTransactions

source§

fn replay_transaction<'life0, 'async_trait>( &'life0 self, transaction: FixedBytes<32>, trace_types: HashSet<TraceType>, ) -> Pin<Box<dyn Future<Output = Result<TraceResults, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, TraceApi<Provider, Eth>: 'async_trait,

Handler for trace_replayTransaction

source§

fn trace_block<'life0, 'async_trait>( &'life0 self, block_id: BlockId, ) -> Pin<Box<dyn Future<Output = Result<Option<Vec<LocalizedTransactionTrace>>, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, TraceApi<Provider, Eth>: 'async_trait,

Handler for trace_block

source§

fn trace_filter<'life0, 'async_trait>( &'life0 self, filter: TraceFilter, ) -> Pin<Box<dyn Future<Output = Result<Vec<LocalizedTransactionTrace>, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, TraceApi<Provider, Eth>: 'async_trait,

Handler for trace_filter

This is similar to eth_getLogs but for traces.

§Limitations

This currently requires block filter fields, since reth does not have address indices yet.

source§

fn trace_get<'life0, 'async_trait>( &'life0 self, hash: FixedBytes<32>, indices: Vec<Index>, ) -> Pin<Box<dyn Future<Output = Result<Option<LocalizedTransactionTrace>, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, TraceApi<Provider, Eth>: 'async_trait,

Returns transaction trace at given index. Handler for trace_get

source§

fn trace_transaction<'life0, 'async_trait>( &'life0 self, hash: FixedBytes<32>, ) -> Pin<Box<dyn Future<Output = Result<Option<Vec<LocalizedTransactionTrace>>, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, TraceApi<Provider, Eth>: 'async_trait,

Handler for trace_transaction

source§

fn trace_transaction_opcode_gas<'life0, 'async_trait>( &'life0 self, tx_hash: FixedBytes<32>, ) -> Pin<Box<dyn Future<Output = Result<Option<TransactionOpcodeGas>, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, TraceApi<Provider, Eth>: 'async_trait,

Handler for trace_transactionOpcodeGas

source§

fn trace_block_opcode_gas<'life0, 'async_trait>( &'life0 self, block_id: BlockId, ) -> Pin<Box<dyn Future<Output = Result<Option<BlockOpcodeGas>, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, TraceApi<Provider, Eth>: 'async_trait,

Handler for trace_blockOpcodeGas

Implementors§