The xOneRS RPC parity sweep runs from a checkout of the repository with one command and needs no node: it replays recorded geth-XDC answers against the xOne RPC handlers in-process. It does not take the URL of a live node. To compare your own running node with geth-XDC, send the same read-only calls to both and compare the JSON; this post shows the method the team uses for its fleet samples.
What the four row statuses mean is in RPC parity in numbers.
How do I run the sweep?
From a checkout of XDCIndia/xOneRS:
cargo run -p xone-rpc-parity -- --network apothem
cargo run -p xone-rpc-parity -- --network all --out <dir>
The full usage is rpc-parity [--network apothem|net2040|all] [--out DIR] [--tip N]. The report goes to conformance/rpc-parity/report/<network>.json by default. The command exits 1 if any row is differ (main.rs, vectors README).
What does the sweep compare?
Every request recorded in conformance/vectors/rpc/<network>/, one .jsonl file per method. Each line holds the network, the block, the request and the geth-XDC archive's answer verbatim, errors included. The recorded blocks are 50 per network, spread over the fork rows, the V1 to V2 switch and epoch switches.
The sweep sends each request to the xone-rpc handlers over a chain backed by the blocks the harness has replayed, and diffs the JSON. Hex case is the only normalisation. A request whose data the harness does not hold is not-backed, with the reason; a request whose answer belongs to the live oracle node (head, peers, clock, client version) is allowlisted, with the reason.
Can I record new vectors from my own archive?
Not with the committed recorder as it is. build.py reads one fixed archive endpoint of the team, at 4 HTTP requests per second and at most 5 calls per request, and its docstring says never to edit a vector by hand: record again. To use another archive, the endpoint in the script would have to change.
How do I compare my own running node?
Send the same read-only calls to your xOne node and to a geth-XDC node of the same network, and compare the answers. The team's fleet samples use this method (fleet snapshot):
- Read the head of your node with
eth_blockNumber. - For 30 blocks from head-130 to head-101, call
eth_getBlockByNumber(n, false)on both nodes; for the last 10 of them,eth_getBlockTransactionCountByNumber; for the first 10 hashes,eth_getBlockByHash(hash, false). - Compare the JSON of each pair after lower-casing strings. Then compare the core fields alone: hash, parentHash, stateRoot, receiptsRoot, transactionsRoot, number, miner, gasUsed, timestamp.
A whole-JSON difference with equal core fields is a shape difference (which XDC fields are present). A core-field difference is a real disagreement. Before the comparison, xone rpc check --rpc <url> --require <methods> confirms that your endpoint serves the methods at all; see the xOne CLI.
What does the sweep not cover?
- A node at the chain tip: the replayed tips are 1,800 on Apothem and 747,006 on net2040.
- State reads on net2040: the harness holds raw blocks only there.
- Subscriptions: there is no replay of subscription events.
The collected competitor articles state no claim about an RPC parity sweep, so this post has no comparison table.
Frequently asked questions
Does the xOne RPC parity sweep need a running node?
No. It runs in-process against the xone-rpc handlers with recorded geth-XDC answers. Run cargo run -p xone-rpc-parity -- --network apothem from a checkout.
Can I point the sweep at my node's URL?
No. To compare a live node, call the same methods on it and on a geth-XDC node of the same network, and compare the JSON yourself.
What exit code means a difference?
Exit 1 means at least one row is differ. The report names each differing JSON pointer.
Why are many rows not backed?
The harness holds only the blocks it replayed. Data above the replayed tip, and state on net2040, are not available to it.
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/run-rpc-parity-sweep/index.md). GitHub may ask you to sign in. Report a correction opens a prefilled GitHub issue for this page.