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?

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

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