xOneRS registers 30 methods in the debug namespace on main, most of them with geth's names. They fall into four groups: raw chain data, tracing, state inspection, and node control. The namespace is off unless you list it in --http.api or --ws.api, and you should list it only on a private listener: debug_setHead rewinds the chain, and the tracers can use a lot of CPU. Most of these methods came in pull requests merged on 2026-11-15, so none of the new ones is in the v0.1.0 release, and several PRs list checks against geth-XDC that are still open.
The list below is from the method registry in crates/xone-rpc/src/debug.rs. The generated table in docs/rpc/methods.md showed 26 of them when we read it; the four newest (debug_chainConfig, debug_traceSequence, debug_traceCallMany, debug_accountAt) were not in it yet.
How do I turn the debug namespace on?
Add it to the API list of a listener: --http.api eth,net,web3,debug (the default is eth,net,web3). Keep that listener on 127.0.0.1 or a private address. With --rpc.acl (PR #1099), you can also give each JWT principal its own method patterns, for example eth_* for a dapp and debug_* only for an operator. See exposing RPC safely.
Every method has a cost class in the RPC quota. The tracers are class C3 (100 units, 30 s deadline); state walks are C2; raw reads C1; debug_setHead, debug_verbosity, debug_vmodule and debug_chainConfig are C0.
Which methods read raw chain data?
| Method | Returns |
|---|---|
debug_getRawHeader |
The RLP of a header |
debug_getRawBlock |
The RLP of a block |
debug_getRawReceipts |
The raw encodings of a block's receipts |
debug_getRawTransaction |
The EIP-2718 bytes of one transaction |
debug_getRawTransactions |
The EIP-2718 bytes of a block's transactions |
debug_codeByHash |
Contract bytecode from the code store, by code hash |
debug_chainConfig |
The effective chain id, genesis hashes, every fork row, the derived predicates, the quiet window and the XDPoS settings (#1129) |
debug_chainConfig is the quickest way to see which fork rows a node uses. See transaction types and Eip1559Block.
Which methods trace execution?
| Method | Use | Limits |
|---|---|---|
debug_traceTransaction |
One mined transaction | Tracers: callTracer, prestateTracer, 4byteTracer, noopTracer, flatCallTracer, muxTracer, consoleTracer, opcodeSummaryTracer, or the struct logger |
debug_traceBlockByNumber, debug_traceBlockByHash |
Every transaction of a canonical block | |
debug_traceBlock |
A block given as raw RLP | Does not import the block |
debug_traceCall |
One call at a block, with state and block overrides | |
debug_traceSequence, debug_traceCallMany |
Calls or signed raw transactions in order, on a throw-away overlay (#1131) | muxTracer refused; the chain is not written |
debug_traceChain |
A canonical range | At most 32 blocks |
debug_traceBadBlock |
A refused block, from its invalid/ evidence dump, by hash |
|
debug_standardTraceBlockToFile |
Struct-logger output written under <datadir>/traces/ |
|
debug_intermediateRoots |
Registered | Refused until a trie view can compute roots after each transaction |
For how to read a trace, see tracing XDC transactions. For refused blocks, see invalid-block evidence.
Which methods inspect state?
| Method | Returns | Limits and open checks |
|---|---|---|
debug_accountRange |
Accounts in hashed-key order, with code and storage if asked | 256 per page |
debug_dumpBlock |
The state at a block, the same walk | 256 per page |
debug_storageRangeAt |
One account's slots after the block | The txIndex argument is accepted and ignored for now |
debug_getModifiedAccountsByNumber, ByHash |
Addresses changed in a range of blocks | Bound by the retained state window |
debug_accountAt |
Nonce, balance, code hash, storage root and code of an address after transaction txIndex of a block (#1132) |
Replays on a throw-away overlay |
debug_stateRootWithUpdates |
The state root and hashed trie updates for a given change set on a block's state (#1066) | Errors when the view cannot compute a root |
debug_chaindbProperty |
Database table statistics: name, entries, bytes |
PR #1023 lists a byte-compare of the state walks against a geth-XDC archive for 50 inputs each as still open.
Which methods control the node?
| Method | Effect | Guard |
|---|---|---|
debug_setHead |
Rewinds the chain head to a block, through the node's set-head and unwind path | Refused below the committed-block floor, above the head, or when the node runs with --mine |
debug_getBadBlocks |
The in-memory ring of refused blocks: hash, number, reason, and the block while its header is retained | Up to 1,024 entries |
debug_verbosity |
Sets the log level, 0 to 5 | |
debug_vmodule |
Sets per-module levels, as target=level,... |
This node's form, not geth's file patterns |
debug_setHead changes the chain. A validator refuses it while --mine is on, but a follower behind a load balancer does not, so keep the namespace off public listeners. A stopped node can be rewound with xone db unwind (PR #1060).
How does this compare with other clients?
| Method | Also announced by | xOneRS |
|---|---|---|
debug_traceBadBlock |
reth 2.0 | served |
debug_intermediateRoots |
reth 2.0 | registered, refused |
debug_getBadBlocks, debug_setHead, debug_chaindbProperty, debug_accountRange, debug_storageRangeAt |
geth (same names) | served |
The reth entries are from its v2.0.0 release notes. We did not compare the answers of each method with geth's; the open checks above are the project's own list.
Frequently asked questions
Is the debug namespace on by default in xOne?
No. The default --http.api is eth,net,web3. Add debug to a private listener only.
Can debug_setHead damage a validator?
It refuses while the node runs with --mine. On a follower it rewinds the head, so keep debug off any listener that others can reach.
Does xOne serve debug_traceBadBlock?
Yes, on main since PR #1047. It re-traces a refused block from the evidence the node wrote when it refused it.
Which tracers does debug_traceTransaction support?
callTracer, prestateTracer, 4byteTracer, noopTracer, flatCallTracer, muxTracer, consoleTracer, opcodeSummaryTracer and the default struct logger.
Sources
This article describes the source and evidence at its review date. Check the linked repository for current implementation and qualification status.
Explore the engineering evidenceEdit this page on GitHub opens the Markdown source (content/blog/xone-debug-namespace/index.md). GitHub may ask you to sign in. Report a correction opens a prefilled GitHub issue for this page.