Skip to main content

TraceApiServer

Trait TraceApiServer 

Source
pub trait TraceApiServer<TxReq>:
    Sized
    + Send
    + Sync
    + 'static {
    // Required methods
    fn trace_call<'life0, 'async_trait>(
        &'life0 self,
        call: TxReq,
        trace_types: HashSet<TraceType, DefaultHashBuilder>,
        block_id: Option<BlockId>,
        state_overrides: Option<HashMap<Address, AccountOverride, FbBuildHasher<20>>>,
        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<(TxReq, HashSet<TraceType, DefaultHashBuilder>)>,
        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, DefaultHashBuilder>,
        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, DefaultHashBuilder>,
    ) -> 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, DefaultHashBuilder>,
    ) -> Pin<Box<dyn Future<Output = Result<Option<TraceResultsWithTransactionHash>, 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>
       where TxReq: Send + Sync + 'static + DeserializeOwned { ... }
}
Expand description

re-export of all server traits Server trait implementation for the TraceApi RPC API.

Required Methods§

Source

fn trace_call<'life0, 'async_trait>( &'life0 self, call: TxReq, trace_types: HashSet<TraceType, DefaultHashBuilder>, block_id: Option<BlockId>, state_overrides: Option<HashMap<Address, AccountOverride, FbBuildHasher<20>>>, 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<(TxReq, HashSet<TraceType, DefaultHashBuilder>)>, 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, defaulting to latest when no block is specified. Each call is executed with the preceding calls applied first, allowing dependent transactions to be traced.

Source

fn trace_raw_transaction<'life0, 'async_trait>( &'life0 self, data: Bytes, trace_types: HashSet<TraceType, DefaultHashBuilder>, 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, DefaultHashBuilder>, ) -> 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, DefaultHashBuilder>, ) -> Pin<Box<dyn Future<Output = Result<Option<TraceResultsWithTransactionHash>, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: 'async_trait,

Replays a transaction, returning the traces or None if the transaction does not exist.

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. Omitted range bounds default to latest.

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 the transaction trace at the given traceAddress path.

An empty path selects the root, [0] selects its first child, and [0, 1] selects that child’s second child. Returns None if the transaction or path does not exist. Callers requiring a flat index can index the result of trace_transaction instead.

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>
where TxReq: Send + Sync + 'static + DeserializeOwned,

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

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl<Eth> TraceApiServer<<<Eth as EthApiTypes>::NetworkTypes as RpcTypes>::TransactionRequest> for TraceApi<Eth>
where Eth: TraceExt + 'static,

Source§

fn trace_call<'life0, 'async_trait>( &'life0 self, call: <<Eth as EthApiTypes>::NetworkTypes as RpcTypes>::TransactionRequest, trace_types: HashSet<TraceType, DefaultHashBuilder>, block_id: Option<BlockId>, state_overrides: Option<HashMap<Address, AccountOverride, FbBuildHasher<20>>>, block_overrides: Option<Box<BlockOverrides>>, ) -> Pin<Box<dyn Future<Output = Result<TraceResults, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, TraceApi<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<(<<Eth as EthApiTypes>::NetworkTypes as RpcTypes>::TransactionRequest, HashSet<TraceType, DefaultHashBuilder>)>, block_id: Option<BlockId>, ) -> Pin<Box<dyn Future<Output = Result<Vec<TraceResults>, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, TraceApi<Eth>: 'async_trait,

Handler for trace_callMany

Source§

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

Handler for trace_rawTransaction

Source§

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

Handler for trace_replayBlockTransactions

Source§

fn replay_transaction<'life0, 'async_trait>( &'life0 self, transaction: FixedBytes<32>, trace_types: HashSet<TraceType, DefaultHashBuilder>, ) -> Pin<Box<dyn Future<Output = Result<Option<TraceResultsWithTransactionHash>, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, TraceApi<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<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<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<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<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<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<Eth>: 'async_trait,

Handler for trace_blockOpcodeGas

Implementors§