xOne runs on Apothem (chain 51) and on net2040 (chain 2040) with the same binary and the same --network flag. The differences for an operator are the size of the chain, the peers you pass, the state size, which sync modes have a recorded run, and who may mine. This post lists them side by side. The xOneTS, xOnePy and xOneC repositories are private, so their links need access.

For the steps on each network, see How to join net2040 with xOne and How to run an XDC Apothem follower with xOne. This post does not repeat them.

What differs at a glance?

Apothem is the public XDC testnet. net2040 is the public end-to-end devnet. Both use a 900-block epoch.

REFERENCE TABLEScroll to explore all columns →
Apothem net2040
Chain id 51 2040
Flag --network apothem --network net2040
Purpose Public testnet (guide) Public end-to-end devnet, every fork live within its first 21,600 blocks (chain spec)
Size of the chain About 85 million blocks (head 85,396,805 on 2026-11-15) Head 846,739 on 2026-11-15
Epoch, gap, period 900, 450, 2 900, 450, 2
V2 switch block 56,828,700 10,800
Bootnodes 28 enode URLs in the repository None committed
Quiet window 120 s 120 s
--mine Allowed, owner approval first Allowed, owner approval first

Sources: forks.json, net2040 guide, and the measurement under the last heading.

Which fork rows differ?

Most fork rows differ. net2040 reaches every fork within 21,600 blocks. Apothem reaches them over 85 million blocks, so a full sync from genesis passes them late.

REFERENCE TABLEScroll to explore all columns →
Row Apothem net2040
V2 switch block 56,828,700 10,800
Berlin, London 61,290,000 9,000
EIP-1559 71,550,000 12,600
Cancun 71,551,800 14,400
Prague 84,333,000 18,000
Osaka not set 19,800
Amsterdam 99,999,999,999 (unscheduled) 21,600

Source: forks.json. The value 99,999,999,999 is the UNSCHEDULED_BLOCK constant in the chain spec crate. For what an epoch switch does, see epoch switches on XDC.

How do the peers differ?

Apothem has a committed bootnode list. net2040 has none, so you pass the enode URL of a peer you trust.

The repository file ops/bootnodes/apothem.txt has 28 enode URLs. The node embeds it. It uses the list only when you give no --bootnodes, discovery is on and peers are allowed (bootnodes module). A chain with another genesis never inherits the public lists. The Apothem guide still says the node has no built-in boot list. The code on main embeds one.

ops/bootnodes/net2040.txt says: "no public bootnode list is committed".

xone --network apothem --datadir <datadir>
xone --network net2040 --datadir <datadir> --bootnodes <enode-url>

How big is the state?

Apothem state is large. net2040 state is small. By default xOne holds the head state in memory.

  • Apothem: 327,356 accounts and about 158 M slots, "over 40 GB" in memory (disk-state). The Apothem guide gives 325,043 accounts and 8.6 million slots at block 83.6 million. The two documents disagree on slots.
  • net2040: 5,000 accounts at block 754,000 (net2040 guide). The snap test in the sync-modes page downloaded 9,532 accounts in under a second.

--state.disk keeps the state rows and trie nodes in MDBX. The disk-state page has the parts and the limits.

Which sync modes are recorded on each network?

net2040 has a recorded run for every mode. Apothem has a recorded follow and RPC run only. The support matrix uses working only when an evidence page records a run.

REFERENCE TABLEScroll to explore all columns →
Role Apothem net2040
follow working working
sync modes not-qualified working
archive not-qualified working
rpc working working
signing owner-approval owner-approval

not-qualified means nothing on main proves it yet. It does not mean the mode fails. The xOne snap followers on Apothem below reached the head. That sample is not the qualification. For the modes, see how sync works in xOne.

What are the --mine rules?

--mine is allowed on Apothem and on net2040. It is refused on chain id 50 (mainnet). The producer checks the chain id first, then asks for --keystore and --password (producer.rs, flags).

The matrix marks signing owner-approval on both networks: the node allows it, and a public run needs the owner's approval first. The net2040 validator guide covers the net2040 side.

What is the quiet window?

The quiet window is 120 seconds on mainnet, Apothem and net2040, and 20 on the devnets. You may raise it with --miner.quietwindow. A lower value is refused (flags, chain spec test). The value is the same on both networks, so it does not change your setup.

What did the xOne team measure on followers?

Source for this section: xOne team measurement, 2026-11-15 01:50 UTC. It was one read-only sample. The reference heads were 846,739 on net2040 and 85,396,805 on Apothem. Every xOne node below answered 50 of 50 whole-JSON RPC compares equal to the reference and matched 40 of 40 core block fields.

REFERENCE TABLEScroll to explore all columns →
Network Node Lag Datadir GB VmRSS kB
net2040 xOneRS full 0 20.65 277,104
net2040 xOneRS archive 0 22.79 592,888
net2040 xOneRS fast 0 0.16 209,856
net2040 xOneRS minimal 0 0.16 228,256
net2040 xOneTS full 0 19.58 327,716
net2040 xOnePy snap 2 0.11 129,636
net2040 xOnePy minimal 0 0.11 130,904
net2040 xOneC full 0 18.00 243,284
net2040 xOneC archive 0 22.23 695,552
net2040 xOneC snap 0 0.15 100,020
net2040 xOneC minimal 0 0.15 93,168
Apothem xOneRS snap 0 75.21 640,668
Apothem xOnePy snap 0 31.22 166,928
Apothem xOneC snap 0 52.62 14,054,512

The modes differ between rows, so read this as context and not as a ranking. Apothem has only snap rows for xOne. The xOnePy Apothem build has no git data in its version string, so it is a follower and not a release. The xOneC VmRSS is mostly the mapped MDBX file, as the Apothem follower post shows for the 2026-11-14 samples.

Frequently asked questions

Do I need --bootnodes on Apothem?

No. If you give none, the node uses the 28 URLs embedded from ops/bootnodes/apothem.txt. On net2040 you must pass a peer, because no list is committed.

Where is the V2 switch on each network?

Block 56,828,700 on Apothem and block 10,800 on net2040. Both use a 900-block epoch.

Can I mine on Apothem and net2040?

The node allows --mine on both and refuses it on chain id 50. It needs --keystore and --password. A public run needs the owner's approval first.

Is the quiet window different on the two networks?

No. It is 120 seconds on both. You can raise it with --miner.quietwindow, not lower it.

Sources