Architecture geth v1.17.3 Live Compare Downloads Quantum Nodes Stable releases Modern preview Networks Sync modes System requirements Multi-client Build from source Snapshots Verify downloads Production deployment All releases Get in touch
XDC Innovation Labs Operator's Manual Issue 01 · MMXXVI
Downloads — Vol. I

Run the
XDC network.

v2.7.0
Latest stable · canonical
XDPoSChain — maintenance release
Released 2026-05-20 · Docker tag xinfinorg/xdposchain:v2.7.0

Canonical XDPoSChain for production. The modern Geth v1.17.3 re-baseline for the next chapter. The multi-client family — Erigon, Nethermind, Reth — in early development. Distributed as signed Docker images and reproducible source builds. No pre-built binary grid; pin a digest, or build from a tagged commit.

Mainnet height
Apothem height
Latest tag v2.7.0
↗ full RPC compare
01
Production · canonical client

The production node.

The official XDPoSChain client maintained by XinFinOrg. Runs every masternode, validator and the public RPC. Hard-forked from go-ethereum ~1.8.3, hardened through seven years of mainnet uptime. This is what you run today.

Released 2026-05-20

XDPoSChain v2.7.0

Maintenance release — test-logging compatibility fix plus version bump. Drop-in upgrade from v2.6.8. Verified syncing XDC mainnet (chain 50) and Apothem testnet (chain 51).

Quickstart — Docker
$docker pull xinfinorg/xdposchain:v2.7.0
$docker run -d --name xdc -p 8545:8545 -p 30303:30303 -v xdc-data:/work xinfinorg/xdposchain:v2.7.0
Why no pre-built binary grid? Upstream geth.ethereum.org/downloads ships an OS×arch matrix because the EF runs a build store. XDC distributes through Docker Hub digests and reproducible source builds — same content, different convention, no PGP .asc sidecars.
02
Modern re-baseline · preview

The modern re-baseline.

XDPoS re-platformed onto go-ethereum v1.17.3 — seven years of upstream engineering (PBSS, snap sync, modern wire protocol). Synced to head on XDC mainnet today; bit-exact consensus with canonical XDPoSChain. Not yet the production client — verify it yourself at /geth-compare.

Seven years of go-ethereum engineering rebuilt the parts XDC's legacy client never adopted — and consensus stays bit-for-bit unchanged.
Released 2026-05-07

XDCGeth v334

First release of the modern Geth re-baseline; closes the Apothem fork-config alignment gap and the devnet (chain 5551) gas-used divergence. Driving the live new.xdcrpc.com endpoint that powers the Live Compare page.

Build from source
# clone, check out the tag, build
$ git clone https://github.com/XDCIndia/go-ethereum.git
$ cd go-ethereum
$ git checkout v334       # or: reset/integration-1.17.3
$ make geth
$ ./build/bin/geth --xdc --datadir ~/.xdc --syncmode snap

Preview — not yet for production masternodes

The modern re-baseline is in parity verification: bit-exact state roots, receipts roots and block hashes confirmed against canonical XDPoSChain on mainnet. Until a tagged production release ships, run the legacy XDPoSChain v2.7.0 for any validator or revenue-bearing workload.

03
Networks & chain IDs

Mainnet, Apothem, devnet.

Every XDC client supports all three networks. Pick by chain ID at launch (--networkid <N>) or by Docker tag (:v2.7.0 for mainnet, :v2.7.0-testnet for Apothem).

NetworkChain IDRPC endpointGenesis hashStatus
Mainnet 50 · 0x32 rpc.xinfin.network
new.xdcrpc.com (modern)
0x4a9d…d6b1 ● production
Apothem 51 · 0x33 erpc.apothem.network
faucet: faucet.apothem.network
0xbdea…0075 ● testnet
Devnet 5551 · 0x15AF Client-team integration testing — modern-geth re-baseline parity work. Internal · request access ● dev only

Connecting via web3.js / ethers

Provider URL is the only difference between networks. Mainnet: https://rpc.xinfin.network (chain 50). Apothem: https://erpc.apothem.network (chain 51). All XDC RPC endpoints expose standard JSON-RPC 2.0 — drop-in replacement for any Ethereum RPC URL in your tooling.

04
Sync modes · how to catch up

Snap, full, archive.

Pick the sync mode that matches your workload. Snap sync is only available on the modern Geth v1.17.3 re-baseline — it cuts mainnet bring-up from days to hours. The legacy XDPoSChain client supports full and archive only.

02 / 03

Full

Both clients · XDPoSChain default
Initial sync~5–8 days (legacy)
Disk (mainnet)~919 GB & growing
RPC readsTrie walks
Historical stateRecent only
Bandwidth~890 GB
Best for — production masternodes today. Required for block production until the modern re-baseline ships for production.
03 / 03

Archive

Both clients · explorers & analytics
Initial sync~7–14 days
Disk (mainnet)~2.5 TB · 1.6 TB PBSS
RPC readsAll state, all blocks
Historical stateFull
Bandwidth~1.1 TB
Best for — block explorers (XDCScan), full-history indexers, on-chain analytics, audit / forensics.

Light mode is deprecated

The legacy --syncmode light path (eth/63 LES) was removed in upstream Geth and is not supported on the modern re-baseline. For light-client use cases, query a hosted RPC (rpc.xinfin.network) instead of running a local light node.

05
System requirements · by role

What hardware do I need?

Minimums for stable operation on XDC mainnet. SSD or NVMe is mandatory for any role — spinning disks cannot keep up with state-trie I/O. Disk numbers below are free space at install; grow buffer 30% beyond steady state.

Masternode
Block-producing role
CPU4 cores
RAM8 GB
Disk200 GB SSD
Network100 Mbps · static IP
Sync modefull (XDPoSChain)
Validators stake 10M XDC and earn rewards. Uptime is critical — penalty applies after missed rounds. Run behind UFW on standard ports (30303/8545).
Public RPC
Read-only node
CPU8 cores
RAM32 GB
Disk1 TB NVMe
Network500 Mbps
Sync modesnap (modern)
Serves eth_* JSON-RPC to dApps and wallets. PBSS + Pebble bring resource footprint down vs the legacy stack. Front with Cloudflare or nginx + rate-limit.
Archive
Full historical state
CPU16 cores
RAM64 GB
Disk4 TB NVMe
Network1 Gbps
Sync modearchive
For block explorers and on-chain analytics. PBSS archive cuts disk ~36% vs legacy hash scheme. Plan re-builds when migrating between client implementations.
Local dev
Build & debug
CPU4 cores
RAM8 GB
Disk50 GB
Networkany
Sync modeApothem · snap
Sync Apothem testnet for local dApp testing. Apothem is ~50× smaller than mainnet and has a faucet. Wire Hardhat / Foundry / Remix to erpc.apothem.network.
06
The multi-client family

One chain, several implementations.

The multi-client effort hardens XDC against client-monoculture risk — see /network-architecture for the rationale. Four implementations in active development; only XDPoSChain is production-ready today.

GP5 · go-ethereum

● preview
Go · upstream geth 1.17.3

XDPoS re-platformed onto modern go-ethereum. PBSS storage, snap sync, eth/68 wire protocol. The convergence target.

Erigon-XDC

● in development
Go · Erigon v3

Erigon's flat-key state model plus MDBX for high-throughput RPC and archive workloads. eth/62–63 protocol layer adapted to XDPoS.

Nethermind-XDC

● in development
.NET 8 · C#

Independent C# implementation. Adds runtime diversity (CLR vs Go) — the single most important hedge against a compiler-level mainnet halt.

Reth-XDC

● in development
Rust · 2021 edition

Paradigm's Reth fork. Tokio async runtime, zero-copy MDBX reads, lowest RPC density at peak concurrency. The performance frontier.

Listed for completeness — XDPoSChain is the production guidance until the modern re-baseline is tagged for production. Maintained by XinFinOrg at github.com/XinFinOrg/XDPoSChain.
07
Build from source

Reproducible builds, every tag.

Both clients are pure Go — clone the repo, check out a release tag, run make. Requires Go ≥ 1.21, git, GNU make, and ~4 GB free RAM for the build.

XDPoSChain · canonical · production
$ git clone https://github.com/XinFinOrg/XDPoSChain.git
$ cd XDPoSChain
$ git checkout v2.7.0
$ make XDC
$ ./build/bin/XDC version
  XDC
  Version: 2.7.0-stable
  Architecture: amd64
  Go Version: go1.21.x
XDCGeth · v1.17.3 re-baseline · preview
$ git clone https://github.com/XDCIndia/go-ethereum.git
$ cd go-ethereum
$ git checkout v334               # or: reset/integration-1.17.3 (tip)
$ make geth
$ ./build/bin/geth version | head -3
  Geth
  Version: 1.17.3-stable
  Architecture: amd64

Build reproducibility

The Go toolchain produces deterministic binaries given identical inputs (Go version, dependency lockfile, source tag, build flags). Compare your local sha256sum ./build/bin/<name> against the published Docker image digest (docker inspect xinfinorg/xdposchain:v2.7.0 --format='{{.Id}}') for cross-verification.

08
Snapshots · skip the long initial sync

Bootstrap from a recent snapshot.

XDC Innovation Labs publishes regular chaindata snapshots — pre-synced state at a recent block, ready to drop into your --datadir. Cuts mainnet bring-up from 6+ hours to ~30 minutes.

Live snapshot index

↗ xdc.network/snapshots/

Filename convention: <host>-<net>-<mode>-<client-ver>-block<N>-<timestamp>.tar.zst

Quickstart · modern Geth + mainnet snap snapshot
$curl -O https://xdc.network/snapshots/xdc01-mainnet-snapfull2-pbss-1.17.3-stable-b12f4cad-block103103457-20260528-105256.tar.zst
$tar --use-compress-program=unzstd -xf xdc01-mainnet-*.tar.zst -C ~/.xdc/
$geth --datadir ~/.xdc --xdc --syncmode snap

Trust model

Snapshots are a convenience — your node still verifies every block header back to genesis after import. The snapshot only seeds the state-trie / chaindata; consensus integrity is independently checked. Pin to the snapshot's source server (TLS) and verify the post-import block hash against the canonical RPC's eth_getBlockByNumber(<block>).

09
Verify your download

Integrity checks for every artifact.

XDC source is published from public GitHub repos with signed commits; container images are published to Docker Hub with content-addressable digests. Use the steps below before any production install.

ArtifactMethodCommand
Docker imagePin by content-addressable sha256: digestdocker pull xinfinorg/xdposchain@sha256:<digest>
Image digestRead from Docker Hub manifestdocker manifest inspect xinfinorg/xdposchain:v2.7.0
Source tagVerify the git tag belongs to a known maintainergit tag -v v2.7.0
Source commitInspect signed-commits trail on the releasegit log --show-signature v2.7.0~3..v2.7.0
Local build vs imageDiff your locally-built binary against the image's binarydocker run --rm xinfinorg/xdposchain:v2.7.0 sha256sum /usr/local/bin/XDC
Live RPC parityCompare your fresh node against the canonical RPC/geth-compare.html
Upstream go-ethereum publishes detached PGP signatures (.asc) for each tarball alongside the build store. XDC currently relies on Docker Hub content-addressable digests plus git tag signatures rather than per-artifact PGP. If your operations require .asc equivalents, raise an issue at XinFinOrg/XDPoSChain/issues — tracked, not yet shipped.
10
Production deployment

Run XDC as a hardened service.

Patterns for running an XDC node 24/7. Pick Docker Compose if you're already on Docker; pick systemd if you've built from source. Both restart on failure, persist data across restarts, and survive host reboots.

Option A — Docker Compose · XDPoSChain production
# docker-compose.yml
services:
  xdc:
    image: xinfinorg/xdposchain:v2.7.0
    container_name: xdc
    restart: unless-stopped
    ports:
      - "8545:8545"   # JSON-RPC
      - "30303:30303" # p2p TCP/UDP
      - "30303:30303/udp"
    volumes:
      - xdc-data:/work
    healthcheck:
      test: ["CMD", "curl", "-sf", "http://localhost:8545", "-X", "POST", "-H", "content-type: application/json", "-d", '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}']
      interval: 30s
      timeout: 10s
      retries: 3
volumes:
  xdc-data:
$docker compose up -d && docker compose logs -f xdc
Option B — systemd · modern Geth from source
# /etc/systemd/system/xdc.service
[Unit]
Description=XDC node (geth v1.17.3 re-baseline)
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=xdc
Group=xdc
WorkingDirectory=/var/lib/xdc
ExecStart=/usr/local/bin/geth \
  --xdc \
  --datadir /var/lib/xdc \
  --syncmode snap \
  --http --http.addr 127.0.0.1 --http.port 8545 \
  --http.api eth,net,web3,txpool,XDPoS \
  --metrics --metrics.expensive --pprof
Restart=on-failure
RestartSec=10s
LimitNOFILE=65535
# hardening
NoNewPrivileges=true
ProtectSystem=strict
ProtectHome=true
PrivateTmp=true
ReadWritePaths=/var/lib/xdc

[Install]
WantedBy=multi-user.target
$sudo systemctl daemon-reload && sudo systemctl enable --now xdc
$journalctl -u xdc -f --since '5 minutes ago'
Health check after start
$curl -sX POST -H 'content-type:application/json' -d '{"jsonrpc":"2.0","method":"eth_blockNumber","id":1}' http://localhost:8545 | jq

Confirm parity with canonical mainnet

After your node syncs to head, run the same RPC calls against https://rpc.xinfin.network and your local http://localhost:8545 — block hash, state root and balance for a known address must match. The browser-based /geth-compare.html tool does this 16-method check across both sides in one click.

11
All releases · version history

A chronology of tagged releases.

Tagged releases of the canonical XDPoSChain client. Older versions remain pullable from Docker Hub indefinitely. Pin a specific version with the v{X.Y.Z} tag.

May 20, 2026
v2.7.0
xinfinorg/xdposchain:v2.7.0
Notes →
— latest stable
Apr 30, 2026
v2.7.0-testnet
xinfinorg/xdposchain:v2.7.0-testnet
Apothem
testnet
Jan 7, 2026
v2.6.8
xinfinorg/xdposchain:v2.6.8
Notes →
previous stable
Jan 6, 2026
v2.6.7
xinfinorg/xdposchain:v2.6.7
pre-v2.6.8
historical
Dec 26, 2025
v2.4.2-hotfix
xinfinorg/xdposchain:v2.4.2-hotfix
Notes →
hotfix
Sep 3, 2025
v2.3.1
xinfinorg/xdposchain:v2.3.1
2025 maintenance line
historical

Full tag list: Docker Hub · GitHub releases