Arbitrum provides debug_* methods for tracing and inspecting post-Nitro blocks (>= 22,207,815) and arbtrace_* methods for tracing pre-Nitro blocks. The trace_* namespace is not supported.
Developers can access the debug and trace tools on the Arbitrum blockchain with the following methods:
debug_accountRange
debug_dumpBlock
debug_getAccessibleState
debug_getModifiedAccountsByHash
debug_getModifiedAccountsByNumber
debug_getRawBlock
debug_getRawHeader
debug_getRawReceipts
debug_getRawTransaction
debug_intermediateRoots
debug_preimage
debug_printBlock
debug_traceBadBlock
debug_traceBlockByHash
debug_traceBlockByNumber
debug_traceCall
debug_traceTransaction
Arbitrum uses the Nitro client (a Geth fork) and does not support the trace_* namespace. Instead, use the arbtrace_* methods for pre-Nitro blocks and debug_* methods for post-Nitro blocks.
Blocks older than 22,207,815 were added to the chain before the Nitro migration and cannot be queried with Geth debug_* methods. Starting from block 22,207,815, Arbitrum migrated to Nitro which made Geth debug_* methods available for newer blocks.
Use the following arbtrace_* methods for calling on blocks prior to 22,207,815:
Start for free and get your app to production levels immediately. No credit card required.You can sign up with your GitHub, X, Google, or Microsoft account.
Custom tracers are available on customized dedicated nodes only
Custom JavaScript tracers outside of the ones listed below are available as customized solutions on the Enterprise plan on dedicated nodes.
Developers can customize the type of tracing using various debug and trace methods, and there are numerous pre-built tracers available to choose from. Here is a list of the pre-built tracers that can be utilized:
This tracer looks for function signatures that are 4 bytes long during contract execution and gathers information about the method identifiers and the size of the provided data. This information can be helpful in matching a signature against the data size.
This tracer returns sufficient information about an account to create a local execution of the transaction. This procedure runs the given transaction again and monitors every aspect of the state that is modified or accessed during execution.
This tracer is for debugging Stylus contracts by tracing calls between the WasmVM and EVM, allowing developers to fully understand their Stylus transactions.