Architecture geth v1.17.3 Developers Live Compare Downloads Quantum Company About Team Careers Blog Get in touch
Live now · join the running XDC mainnet nodes

XDC Network · Node Installer

Run an XDC node in minutes — one command.

One command to the live chain. Run a full XDC Network node with no build, no scp, no prerequisites but curl. It auto-detects your OS and CPU, pulls the sha256-verified geth binary, restores a recent snapshot, and starts syncing to XDC mainnet (chainId 50) — a fresh machine reaches the tip in minutes. Watch yours appear on the live network status.

bash — install xdc node
curl -fsSL https://xdc.network/install.sh | bash

Prefer erigon, reth, besu or nethermind? Add --client — e.g.

sha256-verified binary ~16 GB snapshot (geth default) Linux · macOS · amd64 · arm64

Quick facts · what this installer does

The XDC Network one-command node installer sets up and starts a geth-based XDC node on Linux or macOS. It auto-detects your OS and CPU, downloads a sha256-verified geth binary from xdc.network, restores a recent chain snapshot, and syncs to the live chain in minutes. Run this single command:

$ curl -fsSL https://xdc.network/install.sh | bash
Prerequisites
curl only — no build, no scp, no toolchain.
Platforms
Linux and macOS, on amd64 (x86-64) or arm64 (aarch64). The build is auto-selected.
Verification
The geth binary is sha256-verified against the artifact published at xdc.network before it runs.
Snapshot
A recent ~16 GB chain snapshot is restored instead of replaying every block.
Setup time
Measured full setup was 5m 32s on a datacenter host: binary 1s, snapshot download 2m 58s, extract 1m 44s, then a short catch-up to the live chain tip.
Networks
XDC mainnet (chainId 50) by default; Apothem testnet (chainId 51), devnet, and the net5050 private multi-client devnet (chainId 5050) also available via --network.
Other clients
Add --client xone|erigon|reth|besu|nethermind to spin up a different client. Default (no flag) is always geth. See the client matrix for modes and readiness.
Step-by-step
Run curl -fsSL https://xdc.network/one.sh -o one.sh, then bash one.sh setupstartstatus.

Why it's fast · minutes, not days

No build, no compile

The installer downloads the matching prebuilt geth node binary for your exact OS and CPU. Nothing to scp, no toolchain to wait on.

binary download · ~1s

Verified, not trusted

Every download is sha256-verified before it runs. You get the exact artifact published at xdc.network — checked, then executed.

sha256 · checked

Snapshot, not replay

Instead of replaying years of blocks, it restores a recent ~16 GB chain snapshot, then catches up the last stretch to tip.

16 GB restore · 2m 58s

What happens · measured on a datacenter host

  1. 01

    Detect host

    Reads your OS and CPU — Linux or macOS, amd64 or arm64 — and picks the matching build.

    instant
  2. 02

    Download binary

    Fetches the geth node binary from xdc.network and verifies its sha256. No compiling.

    1s
  3. 03

    Restore snapshot

    Pulls a recent ~16 GB chain snapshot, integrity-checks it, then extracts the state.

    2m 58s + 1m 44s
  4. 04

    Sync to tip

    Node boots near the head and runs a short catch-up to the live chain. Every stage prints its own timing.

    minutes, not days

Full setup 5m 32s  ·  binary 1s  ·  snapshot 2m 58s  ·  extract 1m 44s  →  then a short catch-up to tip.

Platform support · the right build, auto-selected

OS × architecture
OS \ CPU amd64 (x86-64) arm64 (aarch64)
Linux Supported Supported
macOS Supported Supported

Detection is automatic — the installer resolves uname -s / uname -m and pulls the matching geth build. XDC mainnet by default; apothem testnet also available.

Choose your client · five ways to run XDC

Client Default mode Supported modes Networks Snapshot Status
geth fast fast · full · snap · archive mainnet · apothem · devnet · net5050 ✓ published Stable
xone snap snap · full · archive · validator mainnet · apothem · devnet · net5050 not yet Experimental
erigon minimal minimal · full · archive mainnet · apothem · net5050 · devnet not yet Beta
reth full full apothem · net5050 · mainnet​* not yet Experimental
besu full full apothem · mainnet · net5050​ not yet Experimental
nethermind fast fast · full · archive mainnet · apothem · net5050 · devnet not needed (SnapSync) Beta

* reth on mainnet requires XDC_EXPERIMENTAL=1 or an interactive confirm — M20 consensus fixes are in progress. · erigon and reth have no published snapshot; first sync from genesis may take days — the installer prints an explicit time estimate and build-from-source pointer if the binary is not yet published. · besu requires Java 21+ (the installer prints a clear install hint if missing). · nethermind fast mode uses FastSync + SnapSync and reaches the tip without a published snapshot (hours, not days). · net5050 (chainId 5050) is a private multi-client devnet: the installer forces full-sync from genesis (small chain, ~15–40 min) and wires the net5050 validator peers. geth, xone and nethermind also report to stats.xdcindia.com; besu installs but cannot peer yet (XDPoS2 handshake port pending).

One-liner per client

Default curl | bash is unchanged — geth, fast, mainnet. Add --client for anything else.

$ curl -fsSL https://xdc.network/install.sh | bash
$ curl -fsSL https://xdc.network/install.sh | bash -s -- --client erigon --mode minimal
$ curl -fsSL https://xdc.network/install.sh | bash -s -- --client nethermind
$ curl -fsSL https://xdc.network/install.sh | bash -s -- --client nethermind --network net5050
$ curl -fsSL https://xdc.network/install.sh | bash -s -- setup --client besu --network apothem
$ CLIENT=reth NETWORK=apothem ./one.sh start
$ curl -fsSL https://xdc.network/install.sh | bash -s -- --client all

Passing --client all sets up and starts every supported client side-by-side. Each uses its own directory ($HOME/xdc-node for geth, $HOME/xdc-node-<client> for others) and non-colliding port blocks. Clients whose binaries are not yet published degrade gracefully — the fleet continues with the remaining clients. Use ./one.sh --client all status to print a fleet table showing running state, block height, and peer count for each client.

Manual control · same binary, step by step

Drive it yourself

Prefer to see each stage? Download one.sh and run the phases by hand.

# 1 · download the manager
$ curl -fsSL https://xdc.network/one.sh -o one.sh

# 2 · run the phases
$ bash one.sh setup
$ bash one.sh start
$ bash one.sh status

Node manager

One script runs the whole lifecycle — bash one.sh [--client <c>] <command>.

setupFetch the verified binary and restore the snapshot (geth); or prepare datadir for genesis sync (other clients).
startStart the node; auto-fetches binary if missing.
stopStop the node safely.
restartStop, then start again.
statusSync %, current block, peers, stage timings.
logsTail the live node log.
attachOpen the geth console (advanced, geth only).
clientsPrint the per-client capability matrix (modes, networks, snapshot, status).

Select client via env or flag — flags take precedence:

# env-style (existing pattern)
$ CLIENT=reth NETWORK=apothem ./one.sh start
$ NODETYPE=archive ./one.sh setup   # geth archive

# flag-style (new)
$ ./one.sh --client erigon status
$ ./one.sh --client besu --network apothem setup
$ ./one.sh clients   # print matrix

Node operator FAQ

How do I run an XDC node?

Run one command on Linux or macOS: curl -fsSL https://xdc.network/install.sh | bash. It auto-detects your OS and CPU, downloads a sha256-verified geth binary from xdc.network, restores a recent chain snapshot, and starts syncing to the live XDC chain. No build or scp is required.

Which networks are supported?

The installer sets up an XDC mainnet node (chainId 50) by default, and also supports the Apothem testnet (chainId 51).

What are the system requirements?

Linux or macOS on an amd64 (x86-64) or arm64 (aarch64) CPU. The only software prerequisite is curl — the installer downloads a prebuilt binary, so there is no build toolchain. Allow roughly 16 GB or more of free disk for the chain snapshot plus headroom for ongoing chain growth.

Full node or fast node?

A snapshot-restored fast node. Instead of replaying every block from genesis, the installer restores a recent ~16 GB chain snapshot and then catches up the last stretch to tip.

How long does it take, and is the binary safe?

Measured full setup was 5m 32s on a datacenter host (binary 1s · snapshot 2m 58s · extract 1m 44s) plus a short catch-up to tip — minutes, not days, because it restores a snapshot instead of replaying every block. Every download is sha256-verified against the artifact published at xdc.network before it runs.

Can I run the installer step by step instead?

Yes. Download the manager script: curl -fsSL https://xdc.network/one.sh -o one.sh, then run bash one.sh setup, bash one.sh start, and bash one.sh status. Other commands include stop, restart, logs, attach, and clients.

Can I run a client other than geth?

Yes — pass --client erigon|reth|besu|nethermind after bash -s --: curl -fsSL https://xdc.network/install.sh | bash -s -- --client erigon --mode minimal. The default (no flag) is always geth. erigon and nethermind are Beta; reth and besu are Experimental. Non-geth clients degrade gracefully if their binary is not yet published — the installer prints the exact URL it looked for, a build-from-source pointer, and a local-binary override hint, then exits without creating a half-populated data directory. Run ./one.sh clients to print the full capability matrix.

What sync modes are supported per client?

Pass --mode to choose: geth supports fast (default), full, snap (experimental), and archive. erigon supports minimal (default, --prune.mode=minimal), full, and archive. reth supports full only. besu supports full only (XDPoS port validates from genesis). nethermind supports fast (default, FastSync+SnapSync — reaches tip without a snapshot), full, and archive. Clients without a published snapshot sync from genesis; the setup banner prints an honest time estimate up front.

Live network