Trait reth::core::rpc::api::OtterscanServer

source ·
pub trait OtterscanServer: Sized + Send + Sync + 'static {
Show 14 methods // Required methods fn get_header_by_number<'life0, 'async_trait>( &'life0 self, block_number: u64, ) -> Pin<Box<dyn Future<Output = Result<Option<Header>, ErrorObject<'static>>> + Send + 'async_trait>> where 'life0: 'async_trait, Self: 'async_trait; fn has_code<'life0, 'async_trait>( &'life0 self, address: Address, block_number: Option<BlockId>, ) -> Pin<Box<dyn Future<Output = Result<bool, ErrorObject<'static>>> + Send + 'async_trait>> where 'life0: 'async_trait, Self: 'async_trait; fn get_api_level<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<u64, ErrorObject<'static>>> + Send + 'async_trait>> where 'life0: 'async_trait, Self: 'async_trait; fn get_internal_operations<'life0, 'async_trait>( &'life0 self, tx_hash: FixedBytes<32>, ) -> Pin<Box<dyn Future<Output = Result<Vec<InternalOperation>, ErrorObject<'static>>> + Send + 'async_trait>> where 'life0: 'async_trait, Self: 'async_trait; fn get_transaction_error<'life0, 'async_trait>( &'life0 self, tx_hash: FixedBytes<32>, ) -> Pin<Box<dyn Future<Output = Result<Option<Bytes>, ErrorObject<'static>>> + Send + 'async_trait>> where 'life0: 'async_trait, Self: 'async_trait; fn trace_transaction<'life0, 'async_trait>( &'life0 self, tx_hash: FixedBytes<32>, ) -> Pin<Box<dyn Future<Output = Result<Option<Vec<TraceEntry>>, ErrorObject<'static>>> + Send + 'async_trait>> where 'life0: 'async_trait, Self: 'async_trait; fn get_block_details<'life0, 'async_trait>( &'life0 self, block_number: u64, ) -> Pin<Box<dyn Future<Output = Result<Option<BlockDetails>, ErrorObject<'static>>> + Send + 'async_trait>> where 'life0: 'async_trait, Self: 'async_trait; fn get_block_details_by_hash<'life0, 'async_trait>( &'life0 self, block_hash: FixedBytes<32>, ) -> Pin<Box<dyn Future<Output = Result<Option<BlockDetails>, ErrorObject<'static>>> + Send + 'async_trait>> where 'life0: 'async_trait, Self: 'async_trait; fn get_block_transactions<'life0, 'async_trait>( &'life0 self, block_number: u64, page_number: usize, page_size: usize, ) -> Pin<Box<dyn Future<Output = Result<OtsBlockTransactions, ErrorObject<'static>>> + Send + 'async_trait>> where 'life0: 'async_trait, Self: 'async_trait; fn search_transactions_before<'life0, 'async_trait>( &'life0 self, address: Address, block_number: u64, page_size: usize, ) -> Pin<Box<dyn Future<Output = Result<TransactionsWithReceipts, ErrorObject<'static>>> + Send + 'async_trait>> where 'life0: 'async_trait, Self: 'async_trait; fn search_transactions_after<'life0, 'async_trait>( &'life0 self, address: Address, block_number: u64, page_size: usize, ) -> Pin<Box<dyn Future<Output = Result<TransactionsWithReceipts, ErrorObject<'static>>> + Send + 'async_trait>> where 'life0: 'async_trait, Self: 'async_trait; fn get_transaction_by_sender_and_nonce<'life0, 'async_trait>( &'life0 self, sender: Address, nonce: u64, ) -> Pin<Box<dyn Future<Output = Result<Option<FixedBytes<32>>, ErrorObject<'static>>> + Send + 'async_trait>> where 'life0: 'async_trait, Self: 'async_trait; fn get_contract_creator<'life0, 'async_trait>( &'life0 self, address: Address, ) -> Pin<Box<dyn Future<Output = Result<Option<ContractCreator>, 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 Otterscan RPC API.

Required Methods§

source

fn get_header_by_number<'life0, 'async_trait>( &'life0 self, block_number: u64, ) -> Pin<Box<dyn Future<Output = Result<Option<Header>, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: 'async_trait,

Get the block header by block number, required by otterscan. Otterscan currently requires this endpoint, used as:

  1. check if the node is Erigon or not
  2. get block header instead of the full block

Ref: https://github.com/otterscan/otterscan/blob/071d8c55202badf01804f6f8d53ef9311d4a9e47/src/useProvider.ts#L71

source

fn has_code<'life0, 'async_trait>( &'life0 self, address: Address, block_number: Option<BlockId>, ) -> Pin<Box<dyn Future<Output = Result<bool, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: 'async_trait,

Check if a certain address contains a deployed code.

source

fn get_api_level<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<u64, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: 'async_trait,

Very simple API versioning scheme. Every time we add a new capability, the number is incremented. This allows for Otterscan to check if the node contains all API it needs.

source

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

Return the internal ETH transfers inside a transaction.

source

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

Given a transaction hash, returns its raw revert reason.

source

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

Extract all variations of calls, contract creation and self-destructs and returns a call tree.

source

fn get_block_details<'life0, 'async_trait>( &'life0 self, block_number: u64, ) -> Pin<Box<dyn Future<Output = Result<Option<BlockDetails>, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: 'async_trait,

Tailor-made and expanded version of eth_getBlockByNumber for block details page in Otterscan.

source

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

Tailor-made and expanded version of eth_getBlockByHash for block details page in Otterscan.

source

fn get_block_transactions<'life0, 'async_trait>( &'life0 self, block_number: u64, page_number: usize, page_size: usize, ) -> Pin<Box<dyn Future<Output = Result<OtsBlockTransactions, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: 'async_trait,

Get paginated transactions for a certain block. Also remove some verbose fields like logs.

source

fn search_transactions_before<'life0, 'async_trait>( &'life0 self, address: Address, block_number: u64, page_size: usize, ) -> Pin<Box<dyn Future<Output = Result<TransactionsWithReceipts, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: 'async_trait,

Gets paginated inbound/outbound transaction calls for a certain address.

source

fn search_transactions_after<'life0, 'async_trait>( &'life0 self, address: Address, block_number: u64, page_size: usize, ) -> Pin<Box<dyn Future<Output = Result<TransactionsWithReceipts, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: 'async_trait,

Gets paginated inbound/outbound transaction calls for a certain address.

source

fn get_transaction_by_sender_and_nonce<'life0, 'async_trait>( &'life0 self, sender: Address, nonce: u64, ) -> Pin<Box<dyn Future<Output = Result<Option<FixedBytes<32>>, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: 'async_trait,

Gets the transaction hash for a certain sender address, given its nonce.

source

fn get_contract_creator<'life0, 'async_trait>( &'life0 self, address: Address, ) -> Pin<Box<dyn Future<Output = Result<Option<ContractCreator>, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: 'async_trait,

Gets the transaction hash and the address who created a contract.

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<Eth> OtterscanServer for OtterscanApi<Eth>
where Eth: EthApiServer + TraceExt + 'static,

source§

fn get_header_by_number<'life0, 'async_trait>( &'life0 self, block_number: u64, ) -> Pin<Box<dyn Future<Output = Result<Option<Header>, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, OtterscanApi<Eth>: 'async_trait,

Handler for {ots,erigon}_getHeaderByNumber

source§

fn has_code<'life0, 'async_trait>( &'life0 self, address: Address, block_number: Option<BlockId>, ) -> Pin<Box<dyn Future<Output = Result<bool, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, OtterscanApi<Eth>: 'async_trait,

Handler for ots_hasCode

source§

fn get_api_level<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<u64, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, OtterscanApi<Eth>: 'async_trait,

Handler for ots_getApiLevel

source§

fn get_internal_operations<'life0, 'async_trait>( &'life0 self, tx_hash: FixedBytes<32>, ) -> Pin<Box<dyn Future<Output = Result<Vec<InternalOperation>, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, OtterscanApi<Eth>: 'async_trait,

Handler for ots_getInternalOperations

source§

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

Handler for ots_getTransactionError

source§

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

Handler for ots_traceTransaction

source§

fn get_block_details<'life0, 'async_trait>( &'life0 self, block_number: u64, ) -> Pin<Box<dyn Future<Output = Result<Option<BlockDetails>, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, OtterscanApi<Eth>: 'async_trait,

Handler for ots_getBlockDetails

source§

fn get_block_details_by_hash<'life0, 'async_trait>( &'life0 self, block_hash: FixedBytes<32>, ) -> Pin<Box<dyn Future<Output = Result<Option<BlockDetails>, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, OtterscanApi<Eth>: 'async_trait,

Handler for getBlockDetailsByHash

source§

fn get_block_transactions<'life0, 'async_trait>( &'life0 self, block_number: u64, page_number: usize, page_size: usize, ) -> Pin<Box<dyn Future<Output = Result<OtsBlockTransactions, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, OtterscanApi<Eth>: 'async_trait,

Handler for getBlockTransactions

source§

fn search_transactions_before<'life0, 'async_trait>( &'life0 self, _address: Address, _block_number: u64, _page_size: usize, ) -> Pin<Box<dyn Future<Output = Result<TransactionsWithReceipts, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, OtterscanApi<Eth>: 'async_trait,

Handler for searchTransactionsBefore

source§

fn search_transactions_after<'life0, 'async_trait>( &'life0 self, _address: Address, _block_number: u64, _page_size: usize, ) -> Pin<Box<dyn Future<Output = Result<TransactionsWithReceipts, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, OtterscanApi<Eth>: 'async_trait,

Handler for searchTransactionsAfter

source§

fn get_transaction_by_sender_and_nonce<'life0, 'async_trait>( &'life0 self, sender: Address, nonce: u64, ) -> Pin<Box<dyn Future<Output = Result<Option<FixedBytes<32>>, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, OtterscanApi<Eth>: 'async_trait,

Handler for getTransactionBySenderAndNonce

source§

fn get_contract_creator<'life0, 'async_trait>( &'life0 self, address: Address, ) -> Pin<Box<dyn Future<Output = Result<Option<ContractCreator>, ErrorObject<'static>>> + Send + 'async_trait>>
where 'life0: 'async_trait, OtterscanApi<Eth>: 'async_trait,

Handler for getContractCreator

Implementors§