Block explorers need more than the eth_ methods. Blockscout reads internal transactions through the Parity-style trace_ namespace, and Otterscan reads the ots_ namespace that Erigon created. An xOneRS node on main serves 7 trace_ and 12 ots_ methods. Both namespaces are off unless you list them. Neither has been checked end to end with the explorer it is for: the pull requests list a Blockscout run and an Otterscan run on net2040 as open work. None of this is in v0.1.0.
For the other tracing methods see the debug namespace and tracing XDC transactions.
How do I turn them on?
Add the namespaces to a private listener, for example --http.api eth,net,web3,trace,ots (crates/xone-rpc/src/policy.rs). Every trace_ method re-executes blocks and is class C3 in the RPC quota (100 units, 30 s deadline), so keep these off public endpoints. See exposing RPC safely.
Which trace_ methods does xOne serve?
| Method | Returns | Notes |
|---|---|---|
trace_block |
The flat call traces of a block | Parity format, from the flat call tracer |
trace_transaction |
The flat call traces of one transaction | |
trace_get |
One trace of a transaction by index | |
trace_filter |
Traces filtered by fromAddress, toAddress, mode, after, count over a block range |
The range uses the eth_getLogs limit (--rpc.rangelimit, default 5,000 blocks), because each block re-executes (PR #983) |
trace_replayTransaction |
{output, trace, stateDiff, vmTrace} for traceType trace and stateDiff |
vmTrace is accepted and returned as null (PR #1028) |
trace_replayBlockTransactions |
The same for every transaction of a block | PR #1028 |
trace_call |
The same for a call at a block, default latest |
PR #1028 |
stateDiff comes from the prestate tracer in diff mode. There is no recorded archive answer to compare with: the Apothem and net2040 archive nodes do not serve trace_. PR #1028 lists a format check against an Erigon or Nethermind node, a content check against geth-XDC's flatCallTracer, and a Blockscout run on net2040 as still to do. (The served-methods list in spec/rpc/scope-adr-008.md still describes the earlier trace_call, which refused stateDiff.)
Which ots_ methods does xOne serve?
| Method | Returns |
|---|---|
ots_getApiLevel |
The Otterscan API level the node reports |
ots_hasCode |
Whether an address has code at a block |
ots_getBlockDetails, ots_getBlockDetailsByHash |
A block with Otterscan's extra fields |
ots_getBlockTransactions |
A page of a block's transactions with receipts |
ots_getInternalOperations |
Value transfers and creates inside a transaction, from the call tracer |
ots_traceTransaction |
The call tree of a transaction |
ots_getTransactionError |
null on success, the revert output on failure |
ots_getTransactionBySenderAndNonce |
The hash of a sender's transaction with a nonce, or null |
ots_getContractCreator |
The creator of a contract, for top-level creates |
ots_searchTransactionsBefore, After |
An address's transactions as sender, receiver or log address, page size 1 to 1,000 |
From PR #1029 and crates/xone-rpc/src/ots.rs.
Limits. Address search, contract creator and sender-and-nonce walk the node's retained window; an optional --ots.index table is not in this slice and is off, so the search scans. ots_getContractCreator finds top-level creates only, by sender.create(nonce); a contract created inside another contract's call is not found that way. PR #1029 lists an Otterscan run against a net2040 xOne node as still to do.
Which node do the explorers expect?
Otterscan's README says it is "designed to be run locally with an archive node companion, Erigon" and "requires only a mainline Erigon execution node" (Otterscan README). For XDC, erigon-xdc is a fork (private repository); xOneRS serves the same method names. For full address history, run xOne as an archive node so the window covers the chain; see xOne archive mode.
Frequently asked questions
Can I run Blockscout on an xOne node?
The trace_ methods Blockscout uses for internal transactions are served on main. A Blockscout run against an xOne node has not been reported yet.
Can I run Otterscan on an xOne node?
The ots_ methods are served on main. An Otterscan run against an xOne node has not been reported yet, and the address search scans the retained window without an index.
Does trace_replayTransaction support vmTrace?
No. vmTrace is accepted and returned as null. trace and stateDiff are served.
How large a range can trace_filter cover?
The same as eth_getLogs: 5,000 blocks by default, set with --rpc.rangelimit.
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/xdc-explorer-trace-ots/index.md). GitHub may ask you to sign in. Report a correction opens a prefilled GitHub issue for this page.