First release that can actually sync an XRO node.
What this fixes
XRO's chain was produced with proof-of-work below Nano's publish_full thresholds.
Scanning all 592,298 blocks of the pre-fix ledger found 403,985 (68%) below epoch_1 and
454,888 (77%) below epoch_2. Nodes already holding the ledger were unaffected, because
Nano never re-validates stored blocks — but any node re-fetching history rejected it
with insufficient_work.
Two consequences, both confirmed on the live network:
- A node bootstrapping from scratch rejected effectively the entire chain.
- A long-running node was stuck 32,741 blocks and 1,106 accounts behind its peers,
having issued 441,537 bootstrap requests and accepted 32 blocks. This was the
"block gap" that had gone unexplained.
Verified in production: 592,353 → 625,094 blocks and 7,323 → 8,429 accounts in about
four minutes, converging exactly on the height every peer reports.
The change is permissive — it accepts blocks the network already holds rather than
invalidating any — so it cannot partition the chain. The Nano base version stays at
28.0.0; only XRO's own release name changes.
Also included: bootstrap weights populated with real XRO representatives (upstream shipped
an empty list with max_blocks_live at the Nano mainnet height, which XRO's ledger will
never reach), the node built from source rather than wget-ing an unverified binary,
signal forwarding so docker stop no longer SIGKILLs, and config generation that fails
closed instead of binding 0.0.0.0 with control RPC enabled.
Ledger snapshot
Fresh nodes cannot bootstrap from genesis yet — a separate, unresolved defect in
ascending bootstrap stalls them at ~156K blocks with 1,459 of 8,428 accounts. Seed from
the attached snapshot instead, then the node catches up on its own.
docker pull caltru1sm/xro-node:2.0.0
# extract data.ldb into your data dir, e.g. <data>/RaiblocksOne/data.ldb
gunzip -c xro-ledger-625082-2026-08-04.data.ldb.gz > RaiblocksOne/data.ldb
The snapshot is data.ldb only — no wallet, no node identity. Your node generates its
own node_id_private.key on first start; never reuse someone else's, or you share a
network identity with them.
Verify before use:
sha256sum -c xro-ledger-625082-2026-08-04.sha256
Archived images
Earlier iterations are preserved on Docker Hub for auditing. They contain the bug and
are not deployable — a node started from them will stick exactly as described above.
0.9.0 and 0.2.2 are archived copies of work published under the now-deleted
raiblocksone Docker Hub account, not builds by this repo's owner.