This post lists numbers only. For each xOne client it gives the replayed block ranges, block and transaction counts, epoch switches and the wall-clock time that the run record states. It also counts the vector files in xOneRS. Every number comes from a file on origin/main. Sums are mine, and the arithmetic is shown.

The method is in How xOne proves parity with geth-XDC. The status report is State of parity, week of 2026-11-15. This post does not repeat their text. xOneTS, xOnePy and xOneC are private repositories.

How many vector files does the gate have?

The xOneRS tree conformance/vectors/ holds 430 files and 242,089 lines. A line is one newline character. Three .gz replay windows are files but have no line count.

I counted at xOneRS origin/main, head 5f12c61. git ls-tree -r --name-only origin/main conformance/vectors lists the files. For each file that is not .gz, git show origin/main:<file> | wc -l gives the lines. The count includes JSON, JSONL, Markdown, Python, Go and shell files.

REFERENCE TABLEScroll to explore all columns →
Folder Files Lines
consensus 77 3,353
evm 20 17,508
headers 3 2,597
net 5 196
penalty 4 17
producer 1 5,530
replay (3 .gz) 3 not counted
reward 18 708
rpc 162 7,416
special 96 534
t8n 21 259
txpool 4 110
v2 16 203,861
Total 430 242,089

Files: 77 + 20 + 3 + 5 + 4 + 1 + 3 + 18 + 162 + 96 + 21 + 4 + 16 = 430. Lines: 3,353 + 17,508 + 2,597 + 196 + 17 + 5,530 + 708 + 7,416 + 534 + 259 + 110 + 203,861 = 242,089.

Three files in v2 hold most of the lines: bft-forensics.json (57,631), bft-rule.json (52,632) and commit.json (37,957). Lines are not test cases. The v2 README gives case counts, for example 1,600 cases in commit.json.

The earlier status post counted only consensus and rpc at head 4f20e93: 227 files and 9,867 lines. At 5f12c61 the same two folders hold 77 + 162 = 239 files and 3,353 + 7,416 = 10,769 lines.

Which ranges did xOneRS replay, and how long did they take?

The xOneRS RUNS.md states wall time in seconds, and in minutes for one row. It gives no transaction count. All rows below show 0 mismatches. Runs started from genesis, except the three pivot windows and the resumed net2040 chunks. The host was the shared build host, release build, one thread. For the Apothem rows the source states a load average of 20 to 25.

REFERENCE TABLEScroll to explore all columns →
Network Range Blocks Epoch switches Wall time
Apothem 0..=432,000 432,000 not stated 894.3 s
Apothem 56,826,901..=57,099,999 (pivot) 273,099 302 V2 2,225 s
Apothem 83,596,001..=83,602,999 (pivot) 6,999 9 V2 51 s
Apothem 84,729,001..=84,735,500 (pivot) 6,500 7 V2 130.6 s
net2040 0..=21,599 21,599 13 V2 1,851.6 s
net2040 30,001..=754,336 (9 resumed chunks) 724,336 809 V2 52 min

The Apothem 0..=432,000 row has 4,320 archive hash checks and 480 checkpoint lists. The xOneTS record states 0 V2 switches for the same range.

Sums of the six rows:

  • Blocks: 432,000 + 273,099 + 6,999 + 6,500 + 21,599 + 724,336 = 1,464,533.
  • V2 switches: 302 + 9 + 7 + 13 + 809 = 1,140 (the first row states none).
  • Time: 894.3 + 2,225 + 51 + 130.6 + 1,851.6 + (52 × 60 = 3,120) = 8,272.5 s. In hours: 8,272.5 ÷ 3,600 = 2.30 h. The 52 minutes are the source's own figure, so the sum is not exact to the second.

The net2040 chunk row alone: 52 ÷ 60 = 0.87 h for 724,336 blocks. The pivot windows start from the archive's state, so they prove execution rules, not bootstrap.

RUNS.md also states rates. The block cache fetch runs at about 125 blocks per second. To reach TIPSigning at block 3,000,000, the source estimates about 6.7 hours of fetching: 3,000,000 ÷ 125 = 24,000 s = 6.67 h. A quiet host replays 0..=20,000 in 23.2 s and 0..=50,000 in 57.4 s (1.16 and 1.15 ms per block).

What do xOneTS and xOnePy record?

Both xOneTS and xOnePy record blocks per second, not seconds. Their records have no duration column. I do not derive one, because the rates are rounded.

REFERENCE TABLEScroll to explore all columns →
Client Network Range Blocks Transactions V2 switches Blocks/s
xOneTS net2040 1..899 899 5,769 0 90
xOneTS Apothem 1..1800 1,800 406 0 207
xOneTS net2040 1..21600 21,600 4,205,493 13 13
xOneTS Apothem 1..432000 432,000 118,983 0 345
xOnePy net2040 1..900 900 5,769 0 249
xOnePy Apothem 1..1800 1,800 406 0 611
xOnePy net2040 1..21600 21,600 4,205,493 13 14
xOnePy Apothem 1801..432000 430,200 118,577 0 447
xOnePy net2040 1..21600 21,600 4,205,493 13 19
xOnePy net2040 21601..60000 38,400 18,427,339 42 9

xOneTS ran on 20 shared cores at load average 17 to 25. xOnePy used a process pool of cores minus 2.

Sums of the table rows (ranges overlap, so a block can count twice):

  • xOneTS blocks: 899 + 1,800 + 21,600 + 432,000 = 456,299. Transactions: 5,769 + 406 + 4,205,493 + 118,983 = 4,330,651.
  • xOnePy blocks: 900 + 1,800 + 21,600 + 430,200 + 21,600 + 38,400 = 514,500. Transactions: 5,769 + 406 + 4,205,493 + 118,577 + 4,205,493 + 18,427,339 = 26,963,077.

Distinct xOnePy blocks, counting each range once: Apothem 1..1800 and 1801..432000 give 432,000. net2040 1..21600 and 21601..60000 give 60,000. Distinct transactions on net2040: 4,205,493 + 18,427,339 = 22,632,832. On Apothem: 406 + 118,577 = 118,983, the same count as xOneTS.

What does xOneC record?

The xOneC Gate B record in docs/process/gates.md gives seconds and rates. The host was the shared 20-core build host at load average about 33, release preset.

REFERENCE TABLEScroll to explore all columns →
Network Range Blocks Transactions V2 switches Seconds Blocks/s Mgas/s
net2040 1..21,600 21,600 4,205,493 13 233 92.7 378.3
Apothem 1..432,000 432,000 118,983 0 237 1,825 42.0

Sums: 21,600 + 432,000 = 453,600 blocks. 4,205,493 + 118,983 = 4,324,476 transactions. 233 + 237 = 470 s, or 470 ÷ 60 = 7.8 min, or 470 ÷ 3,600 = 0.13 h.

How do the clients compare on the shared ranges?

Two ranges appear in every record: net2040 up to block 21,600 and Apothem up to block 432,000. The runs used different hosts, loads and thread counts, so the table is a list and not a ranking.

REFERENCE TABLEScroll to explore all columns →
Client net2040 1..21,600 Apothem 1..432,000
xOneRS 1,851.6 s (0..=21,599) 894.3 s
xOneTS 13 blocks/s 345 blocks/s
xOnePy 14 and 19 blocks/s (two runs) 447 blocks/s (1801..432000)
xOneC 233 s, 92.7 blocks/s 237 s, 1,825 blocks/s

All four records give 13 V2 switches for net2040 up to block 21,600. xOneTS, xOnePy and xOneC give 4,205,493 transactions for it. For Apothem up to block 432,000, xOneTS and xOneC give 118,983 transactions. xOneRS states no transaction count.

How do other projects describe their testing?

The networks differ, so the table compares no number.

REFERENCE TABLEScroll to explore all columns →
Source What it says about testing xOne
ethrex EF spec tests and Hive run in CI. As stated in ethrex completes its first external security audit, 2026-06-18. The numbers above come from vectors and replay of recorded XDC history.
Sigma Prime guide (a security firm, not a client) Differential fuzzing across clients. As stated in Core node security, 2025-06-06. Each replayed block is compared with one pinned geth-XDC.

See also the roadmap gates and performance.

Frequently asked questions

How many vector files does xOneRS have?

At 5f12c61, conformance/vectors/ has 430 files and 242,089 newline-counted lines. Three .gz files have no line count.

How many blocks did xOneRS replay at 0 mismatches?

The six rows in the xOneRS RUNS.md add up to 1,464,533 blocks: 432,000 + 273,099 + 6,999 + 6,500 + 21,599 + 724,336. Three of them are pivot windows.

How long did the xOneRS runs take?

The six rows add up to 8,272.5 s, which is 2.30 h. One row states 52 minutes, so the sum is not exact to the second.

Which clients record seconds, and which record blocks per second?

xOneRS and xOneC record seconds. xOneTS and xOnePy record blocks per second. xOneC records both.

Sources