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?

REFERENCE TABLEScroll to explore all columns →
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?

REFERENCE TABLEScroll to explore all columns →
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?

REFERENCE TABLEScroll to explore all columns →
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?

REFERENCE TABLEScroll to explore all columns →
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?

REFERENCE TABLEScroll to explore all columns →
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