DebugApiClient

Trait DebugApiClient 

pub trait DebugApiClient<TxReq>: ClientT
where TxReq: RpcObject + Send + Sync + 'static + Serialize,
{
Show 60 methods // Provided methods fn raw_header( &self, block_id: BlockId, ) -> impl Future<Output = Result<Bytes, Error>> + Send { ... } fn raw_block( &self, block_id: BlockId, ) -> impl Future<Output = Result<Bytes, Error>> + Send { ... } fn raw_transaction( &self, hash: FixedBytes<32>, ) -> impl Future<Output = Result<Option<Bytes>, Error>> + Send { ... } fn raw_transactions( &self, block_id: BlockId, ) -> impl Future<Output = Result<Vec<Bytes>, Error>> + Send { ... } fn raw_receipts( &self, block_id: BlockId, ) -> impl Future<Output = Result<Vec<Bytes>, Error>> + Send { ... } fn bad_blocks( &self, ) -> impl Future<Output = Result<Vec<Block>, Error>> + Send { ... } fn debug_trace_chain( &self, start_exclusive: BlockNumberOrTag, end_inclusive: BlockNumberOrTag, ) -> impl Future<Output = Result<Vec<BlockTraceResult>, Error>> + Send { ... } fn debug_trace_block( &self, rlp_block: Bytes, opts: Option<GethDebugTracingOptions>, ) -> impl Future<Output = Result<Vec<TraceResult<GethTrace, String>>, Error>> + Send { ... } fn debug_trace_block_by_hash( &self, block: FixedBytes<32>, opts: Option<GethDebugTracingOptions>, ) -> impl Future<Output = Result<Vec<TraceResult<GethTrace, String>>, Error>> + Send { ... } fn debug_trace_block_by_number( &self, block: BlockNumberOrTag, opts: Option<GethDebugTracingOptions>, ) -> impl Future<Output = Result<Vec<TraceResult<GethTrace, String>>, Error>> + Send { ... } fn debug_trace_transaction( &self, tx_hash: FixedBytes<32>, opts: Option<GethDebugTracingOptions>, ) -> impl Future<Output = Result<GethTrace, Error>> + Send { ... } fn debug_trace_call( &self, request: TxReq, block_id: Option<BlockId>, opts: Option<GethDebugTracingCallOptions>, ) -> impl Future<Output = Result<GethTrace, Error>> + Send { ... } fn debug_trace_call_many( &self, bundles: Vec<Bundle<TxReq>>, state_context: Option<StateContext>, opts: Option<GethDebugTracingCallOptions>, ) -> impl Future<Output = Result<Vec<Vec<GethTrace>>, Error>> + Send { ... } fn debug_execution_witness( &self, block: BlockNumberOrTag, ) -> impl Future<Output = Result<ExecutionWitness, Error>> + Send { ... } fn debug_execution_witness_by_block_hash( &self, hash: FixedBytes<32>, ) -> impl Future<Output = Result<ExecutionWitness, Error>> + Send { ... } fn debug_backtrace_at( &self, location: &str, ) -> impl Future<Output = Result<(), Error>> + Send { ... } fn debug_account_range( &self, block_number: BlockNumberOrTag, start: Bytes, max_results: u64, nocode: bool, nostorage: bool, incompletes: bool, ) -> impl Future<Output = Result<(), Error>> + Send { ... } fn debug_block_profile( &self, file: String, seconds: u64, ) -> impl Future<Output = Result<(), Error>> + Send { ... } fn debug_chaindb_compact( &self, ) -> impl Future<Output = Result<(), Error>> + Send { ... } fn debug_chain_config( &self, ) -> impl Future<Output = Result<ChainConfig, Error>> + Send { ... } fn debug_chaindb_property( &self, property: String, ) -> impl Future<Output = Result<(), Error>> + Send { ... } fn debug_code_by_hash( &self, hash: FixedBytes<32>, block_id: Option<BlockId>, ) -> impl Future<Output = Result<Option<Bytes>, Error>> + Send { ... } fn debug_cpu_profile( &self, file: String, seconds: u64, ) -> impl Future<Output = Result<(), Error>> + Send { ... } fn debug_db_ancient( &self, kind: String, number: u64, ) -> impl Future<Output = Result<(), Error>> + Send { ... } fn debug_db_ancients( &self, ) -> impl Future<Output = Result<(), Error>> + Send { ... } fn debug_db_get( &self, key: String, ) -> impl Future<Output = Result<(), Error>> + Send { ... } fn debug_dump_block( &self, number: BlockId, ) -> impl Future<Output = Result<(), Error>> + Send { ... } fn debug_free_os_memory( &self, ) -> impl Future<Output = Result<(), Error>> + Send { ... } fn debug_freeze_client( &self, node: String, ) -> impl Future<Output = Result<(), Error>> + Send { ... } fn debug_gc_stats(&self) -> impl Future<Output = Result<(), Error>> + Send { ... } fn debug_get_accessible_state( &self, from: BlockNumberOrTag, to: BlockNumberOrTag, ) -> impl Future<Output = Result<(), Error>> + Send { ... } fn debug_get_modified_accounts_by_hash( &self, start_hash: FixedBytes<32>, end_hash: FixedBytes<32>, ) -> impl Future<Output = Result<(), Error>> + Send { ... } fn debug_get_modified_accounts_by_number( &self, start_number: u64, end_number: u64, ) -> impl Future<Output = Result<(), Error>> + Send { ... } fn debug_go_trace( &self, file: String, seconds: u64, ) -> impl Future<Output = Result<(), Error>> + Send { ... } fn debug_intermediate_roots( &self, block_hash: FixedBytes<32>, opts: Option<GethDebugTracingCallOptions>, ) -> impl Future<Output = Result<(), Error>> + Send { ... } fn debug_mem_stats(&self) -> impl Future<Output = Result<(), Error>> + Send { ... } fn debug_mutex_profile( &self, file: String, nsec: u64, ) -> impl Future<Output = Result<(), Error>> + Send { ... } fn debug_preimage( &self, hash: FixedBytes<32>, ) -> impl Future<Output = Result<(), Error>> + Send { ... } fn debug_print_block( &self, number: u64, ) -> impl Future<Output = Result<(), Error>> + Send { ... } fn debug_seed_hash( &self, number: u64, ) -> impl Future<Output = Result<FixedBytes<32>, Error>> + Send { ... } fn debug_set_block_profile_rate( &self, rate: u64, ) -> impl Future<Output = Result<(), Error>> + Send { ... } fn debug_set_gc_percent( &self, v: i32, ) -> impl Future<Output = Result<(), Error>> + Send { ... } fn debug_set_head( &self, number: u64, ) -> impl Future<Output = Result<(), Error>> + Send { ... } fn debug_set_mutex_profile_fraction( &self, rate: i32, ) -> impl Future<Output = Result<(), Error>> + Send { ... } fn debug_set_trie_flush_interval( &self, interval: String, ) -> impl Future<Output = Result<(), Error>> + Send { ... } fn debug_stacks(&self) -> impl Future<Output = Result<(), Error>> + Send { ... } fn debug_standard_trace_bad_block_to_file( &self, block: BlockNumberOrTag, opts: Option<GethDebugTracingCallOptions>, ) -> impl Future<Output = Result<(), Error>> + Send { ... } fn debug_standard_trace_block_to_file( &self, block: BlockNumberOrTag, opts: Option<GethDebugTracingCallOptions>, ) -> impl Future<Output = Result<(), Error>> + Send { ... } fn debug_start_cpu_profile( &self, file: String, ) -> impl Future<Output = Result<(), Error>> + Send { ... } fn debug_start_go_trace( &self, file: String, ) -> impl Future<Output = Result<(), Error>> + Send { ... } fn debug_state_root_with_updates( &self, hashed_state: HashedPostState, block_id: Option<BlockId>, ) -> impl Future<Output = Result<(FixedBytes<32>, TrieUpdates), Error>> + Send { ... } fn debug_stop_cpu_profile( &self, ) -> impl Future<Output = Result<(), Error>> + Send { ... } fn debug_stop_go_trace( &self, ) -> impl Future<Output = Result<(), Error>> + Send { ... } fn debug_storage_range_at( &self, block_hash: FixedBytes<32>, tx_idx: usize, contract_address: Address, key_start: FixedBytes<32>, max_result: u64, ) -> impl Future<Output = Result<(), Error>> + Send { ... } fn debug_trace_bad_block( &self, block_hash: FixedBytes<32>, opts: Option<GethDebugTracingCallOptions>, ) -> impl Future<Output = Result<(), Error>> + Send { ... } fn debug_verbosity( &self, level: usize, ) -> impl Future<Output = Result<(), Error>> + Send { ... } fn debug_vmodule( &self, pattern: String, ) -> impl Future<Output = Result<(), Error>> + Send { ... } fn debug_write_block_profile( &self, file: String, ) -> impl Future<Output = Result<(), Error>> + Send { ... } fn debug_write_mem_profile( &self, file: String, ) -> impl Future<Output = Result<(), Error>> + Send { ... } fn debug_write_mutex_profile( &self, file: String, ) -> impl Future<Output = Result<(), Error>> + Send { ... }
}
Expand description

Client implementation for the DebugApi RPC API.

Provided Methods§

fn raw_header( &self, block_id: BlockId, ) -> impl Future<Output = Result<Bytes, Error>> + Send

Returns an RLP-encoded header.

fn raw_block( &self, block_id: BlockId, ) -> impl Future<Output = Result<Bytes, Error>> + Send

Returns an RLP-encoded block.

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

Returns a EIP-2718 binary-encoded transaction.

If this is a pooled EIP-4844 transaction, the blob sidecar is included.

fn raw_transactions( &self, block_id: BlockId, ) -> impl Future<Output = Result<Vec<Bytes>, Error>> + Send

Returns an array of EIP-2718 binary-encoded transactions for the given BlockId.

fn raw_receipts( &self, block_id: BlockId, ) -> impl Future<Output = Result<Vec<Bytes>, Error>> + Send

Returns an array of EIP-2718 binary-encoded receipts.

fn bad_blocks(&self) -> impl Future<Output = Result<Vec<Block>, Error>> + Send

Returns an array of recent bad blocks that the client has seen on the network.

fn debug_trace_chain( &self, start_exclusive: BlockNumberOrTag, end_inclusive: BlockNumberOrTag, ) -> impl Future<Output = Result<Vec<BlockTraceResult>, Error>> + Send

Returns the structured logs created during the execution of EVM between two blocks (excluding start) as a JSON object.

fn debug_trace_block( &self, rlp_block: Bytes, opts: Option<GethDebugTracingOptions>, ) -> impl Future<Output = Result<Vec<TraceResult<GethTrace, String>>, Error>> + Send

The debug_traceBlock method will return a full stack trace of all invoked opcodes of all transaction that were included in this block.

This expects an rlp encoded block

Note, the parent of this block must be present, or it will fail. For the second parameter see [GethDebugTracingOptions] reference.

fn debug_trace_block_by_hash( &self, block: FixedBytes<32>, opts: Option<GethDebugTracingOptions>, ) -> impl Future<Output = Result<Vec<TraceResult<GethTrace, String>>, Error>> + Send

Similar to debug_traceBlock, debug_traceBlockByHash accepts a block hash and will replay the block that is already present in the database. For the second parameter see [GethDebugTracingOptions].

fn debug_trace_block_by_number( &self, block: BlockNumberOrTag, opts: Option<GethDebugTracingOptions>, ) -> impl Future<Output = Result<Vec<TraceResult<GethTrace, String>>, Error>> + Send

Similar to debug_traceBlockByHash, debug_traceBlockByNumber accepts a block number BlockNumberOrTag and will replay the block that is already present in the database. For the second parameter see [GethDebugTracingOptions].

fn debug_trace_transaction( &self, tx_hash: FixedBytes<32>, opts: Option<GethDebugTracingOptions>, ) -> impl Future<Output = Result<GethTrace, Error>> + Send

The debug_traceTransaction debugging method will attempt to run the transaction in the exact same manner as it was executed on the network. It will replay any transaction that may have been executed prior to this one before it will finally attempt to execute the transaction that corresponds to the given hash.

fn debug_trace_call( &self, request: TxReq, block_id: Option<BlockId>, opts: Option<GethDebugTracingCallOptions>, ) -> impl Future<Output = Result<GethTrace, Error>> + Send

The debug_traceCall method lets you run an eth_call within the context of the given block execution using the final state of parent block as the base.

The first argument (just as in eth_call) is a transaction request. The block can optionally be specified either by hash or by number as the second argument. The trace can be configured similar to debug_traceTransaction, see [GethDebugTracingOptions]. The method returns the same output as debug_traceTransaction.

fn debug_trace_call_many( &self, bundles: Vec<Bundle<TxReq>>, state_context: Option<StateContext>, opts: Option<GethDebugTracingCallOptions>, ) -> impl Future<Output = Result<Vec<Vec<GethTrace>>, Error>> + Send

The debug_traceCallMany method lets you run an eth_callMany within the context of the given block execution using the final state of parent block as the base followed by n transactions.

The first argument is a list of bundles. Each bundle can overwrite the block headers. This will affect all transaction in that bundle. BlockNumber and transaction_index are optional. Transaction_index specifies the number of tx in the block to replay and -1 means all transactions should be replayed. The trace can be configured similar to debug_traceTransaction. State override apply to all bundles.

This methods is similar to many eth_callMany, hence this returns nested lists of traces. Where the length of the outer list is the number of bundles and the length of the inner list (Vec<GethTrace>) is the number of transactions in the bundle.

fn debug_execution_witness( &self, block: BlockNumberOrTag, ) -> impl Future<Output = Result<ExecutionWitness, Error>> + Send

The debug_executionWitness method allows for re-execution of a block with the purpose of generating an execution witness. The witness comprises of a map of all hashed trie nodes to their preimages that were required during the execution of the block, including during state root recomputation.

The first argument is the block number or tag.

fn debug_execution_witness_by_block_hash( &self, hash: FixedBytes<32>, ) -> impl Future<Output = Result<ExecutionWitness, Error>> + Send

The debug_executionWitnessByBlockHash method allows for re-execution of a block with the purpose of generating an execution witness. The witness comprises of a map of all hashed trie nodes to their preimages that were required during the execution of the block, including during state root recomputation.

The first argument is the block hash.

fn debug_backtrace_at( &self, location: &str, ) -> impl Future<Output = Result<(), Error>> + Send

Sets the logging backtrace location. When a backtrace location is set and a log message is emitted at that location, the stack of the goroutine executing the log statement will be printed to stderr.

fn debug_account_range( &self, block_number: BlockNumberOrTag, start: Bytes, max_results: u64, nocode: bool, nostorage: bool, incompletes: bool, ) -> impl Future<Output = Result<(), Error>> + Send

Enumerates all accounts at a given block with paging capability. maxResults are returned in the page and the items have keys that come after the start key (hashed address).

If incompletes is false, then accounts for which the key preimage (i.e: the address) doesn’t exist in db are skipped. NB: geth by default does not store preimages.

fn debug_block_profile( &self, file: String, seconds: u64, ) -> impl Future<Output = Result<(), Error>> + Send

Turns on block profiling for the given duration and writes profile data to disk. It uses a profile rate of 1 for most accurate information. If a different rate is desired, set the rate and write the profile manually using debug_writeBlockProfile.

fn debug_chaindb_compact( &self, ) -> impl Future<Output = Result<(), Error>> + Send

Flattens the entire key-value database into a single level, removing all unused slots and merging all keys.

fn debug_chain_config( &self, ) -> impl Future<Output = Result<ChainConfig, Error>> + Send

Returns the current chain config.

fn debug_chaindb_property( &self, property: String, ) -> impl Future<Output = Result<(), Error>> + Send

Returns leveldb properties of the key-value database.

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

Returns the code associated with a given hash at the specified block ID. If no block ID is provided, it defaults to the latest block.

fn debug_cpu_profile( &self, file: String, seconds: u64, ) -> impl Future<Output = Result<(), Error>> + Send

Turns on CPU profiling for the given duration and writes profile data to disk.

fn debug_db_ancient( &self, kind: String, number: u64, ) -> impl Future<Output = Result<(), Error>> + Send

Retrieves an ancient binary blob from the freezer. The freezer is a collection of append-only immutable files. The first argument kind specifies which table to look up data from. The list of all table kinds are as follows:

fn debug_db_ancients(&self) -> impl Future<Output = Result<(), Error>> + Send

Returns the number of ancient items in the ancient store.

fn debug_db_get( &self, key: String, ) -> impl Future<Output = Result<(), Error>> + Send

Returns the raw value of a key stored in the database.

fn debug_dump_block( &self, number: BlockId, ) -> impl Future<Output = Result<(), Error>> + Send

Retrieves the state that corresponds to the block number and returns a list of accounts (including storage and code).

fn debug_free_os_memory(&self) -> impl Future<Output = Result<(), Error>> + Send

Forces garbage collection.

fn debug_freeze_client( &self, node: String, ) -> impl Future<Output = Result<(), Error>> + Send

Forces a temporary client freeze, normally when the server is overloaded.

fn debug_gc_stats(&self) -> impl Future<Output = Result<(), Error>> + Send

Returns garbage collection statistics.

fn debug_get_accessible_state( &self, from: BlockNumberOrTag, to: BlockNumberOrTag, ) -> impl Future<Output = Result<(), Error>> + Send

Returns the first number where the node has accessible state on disk. This is the post-state of that block and the pre-state of the next block. The (from, to) parameters are the sequence of blocks to search, which can go either forwards or backwards.

Note: to get the last state pass in the range of blocks in reverse, i.e. (last, first).

fn debug_get_modified_accounts_by_hash( &self, start_hash: FixedBytes<32>, end_hash: FixedBytes<32>, ) -> impl Future<Output = Result<(), Error>> + Send

Returns all accounts that have changed between the two blocks specified. A change is defined as a difference in nonce, balance, code hash, or storage hash. With one parameter, returns the list of accounts modified in the specified block.

fn debug_get_modified_accounts_by_number( &self, start_number: u64, end_number: u64, ) -> impl Future<Output = Result<(), Error>> + Send

Returns all accounts that have changed between the two blocks specified. A change is defined as a difference in nonce, balance, code hash or storage hash.

fn debug_go_trace( &self, file: String, seconds: u64, ) -> impl Future<Output = Result<(), Error>> + Send

Turns on Go runtime tracing for the given duration and writes trace data to disk.

fn debug_intermediate_roots( &self, block_hash: FixedBytes<32>, opts: Option<GethDebugTracingCallOptions>, ) -> impl Future<Output = Result<(), Error>> + Send

Executes a block (bad- or canon- or side-), and returns a list of intermediate roots: the stateroot after each transaction.

fn debug_mem_stats(&self) -> impl Future<Output = Result<(), Error>> + Send

Returns detailed runtime memory statistics.

fn debug_mutex_profile( &self, file: String, nsec: u64, ) -> impl Future<Output = Result<(), Error>> + Send

Turns on mutex profiling for nsec seconds and writes profile data to file. It uses a profile rate of 1 for most accurate information. If a different rate is desired, set the rate and write the profile manually.

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

Returns the preimage for a sha3 hash, if known.

fn debug_print_block( &self, number: u64, ) -> impl Future<Output = Result<(), Error>> + Send

Retrieves a block and returns its pretty printed form.

fn debug_seed_hash( &self, number: u64, ) -> impl Future<Output = Result<FixedBytes<32>, Error>> + Send

Fetches and retrieves the seed hash of the block by number.

fn debug_set_block_profile_rate( &self, rate: u64, ) -> impl Future<Output = Result<(), Error>> + Send

Sets the rate (in samples/sec) of goroutine block profile data collection. A non-zero rate enables block profiling, setting it to zero stops the profile. Collected profile data can be written using debug_writeBlockProfile.

fn debug_set_gc_percent( &self, v: i32, ) -> impl Future<Output = Result<(), Error>> + Send

Sets the garbage collection target percentage. A negative value disables garbage collection.

fn debug_set_head( &self, number: u64, ) -> impl Future<Output = Result<(), Error>> + Send

Sets the current head of the local chain by block number. Note, this is a destructive action and may severely damage your chain. Use with extreme caution.

fn debug_set_mutex_profile_fraction( &self, rate: i32, ) -> impl Future<Output = Result<(), Error>> + Send

Sets the rate of mutex profiling.

fn debug_set_trie_flush_interval( &self, interval: String, ) -> impl Future<Output = Result<(), Error>> + Send

Configures how often in-memory state tries are persisted to disk. The interval needs to be in a format parsable by a time.Duration. Note that the interval is not wall-clock time. Rather it is accumulated block processing time after which the state should be flushed.

fn debug_stacks(&self) -> impl Future<Output = Result<(), Error>> + Send

Returns a printed representation of the stacks of all goroutines.

fn debug_standard_trace_bad_block_to_file( &self, block: BlockNumberOrTag, opts: Option<GethDebugTracingCallOptions>, ) -> impl Future<Output = Result<(), Error>> + Send

Used to obtain info about a block.

fn debug_standard_trace_block_to_file( &self, block: BlockNumberOrTag, opts: Option<GethDebugTracingCallOptions>, ) -> impl Future<Output = Result<(), Error>> + Send

This method is similar to debug_standardTraceBlockToFile, but can be used to obtain info about a block which has been rejected as invalid (for some reason).

fn debug_start_cpu_profile( &self, file: String, ) -> impl Future<Output = Result<(), Error>> + Send

Turns on CPU profiling indefinitely, writing to the given file.

fn debug_start_go_trace( &self, file: String, ) -> impl Future<Output = Result<(), Error>> + Send

Starts writing a Go runtime trace to the given file.

fn debug_state_root_with_updates( &self, hashed_state: HashedPostState, block_id: Option<BlockId>, ) -> impl Future<Output = Result<(FixedBytes<32>, TrieUpdates), Error>> + Send

Returns the state root of the HashedPostState on top of the state for the given block with trie updates.

fn debug_stop_cpu_profile( &self, ) -> impl Future<Output = Result<(), Error>> + Send

Stops an ongoing CPU profile.

fn debug_stop_go_trace(&self) -> impl Future<Output = Result<(), Error>> + Send

Stops writing the Go runtime trace.

fn debug_storage_range_at( &self, block_hash: FixedBytes<32>, tx_idx: usize, contract_address: Address, key_start: FixedBytes<32>, max_result: u64, ) -> impl Future<Output = Result<(), Error>> + Send

Returns the storage at the given block height and transaction index. The result can be paged by providing a maxResult to cap the number of storage slots returned as well as specifying the offset via keyStart (hash of storage key).

fn debug_trace_bad_block( &self, block_hash: FixedBytes<32>, opts: Option<GethDebugTracingCallOptions>, ) -> impl Future<Output = Result<(), Error>> + Send

Returns the structured logs created during the execution of EVM against a block pulled from the pool of bad ones and returns them as a JSON object. For the second parameter see TraceConfig reference.

fn debug_verbosity( &self, level: usize, ) -> impl Future<Output = Result<(), Error>> + Send

Sets the logging verbosity ceiling. Log messages with level up to and including the given level will be printed.

fn debug_vmodule( &self, pattern: String, ) -> impl Future<Output = Result<(), Error>> + Send

Sets the logging verbosity pattern.

fn debug_write_block_profile( &self, file: String, ) -> impl Future<Output = Result<(), Error>> + Send

Writes a goroutine blocking profile to the given file.

fn debug_write_mem_profile( &self, file: String, ) -> impl Future<Output = Result<(), Error>> + Send

Writes an allocation profile to the given file.

fn debug_write_mutex_profile( &self, file: String, ) -> impl Future<Output = Result<(), Error>> + Send

Writes a goroutine blocking profile to the given file.

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§

§

impl<TypeJsonRpseeInternal, TxReq> DebugApiClient<TxReq> for TypeJsonRpseeInternal
where TxReq: RpcObject + Send + Sync + 'static + Serialize, TypeJsonRpseeInternal: ClientT,