Skip navigation
XChain Docs

9 · Run a Node

Last updated: 08/06/20261 min read

XChain is a public good, and running it is meant to be public. Once the public repository is published, a node builds and starts in about a minute and then produces a block every 3 seconds (Go 1.23+, git, bash; GOTOOLCHAIN=go1.25.7 fetches the toolchain):

# public repository not yet published — see Status for the current source situation
git clone <xchain-repo-url> && cd xchain
GOTOOLCHAIN=go1.25.7 go build -o build/xchaind ./cmd/xchaind
bash devnet/run-single-node.sh      # a block every ~3s

The full acceptance gauntlet — bash devnet/mvc-all.sh — brings up a 3-chain devnet with a real relayer and runs the MVC acceptance from a clean state. XChain holds itself to three gates:

GateWhat it runs
1GOTOOLCHAIN=go1.25.7 go test ./... (CI)
2Real devnet end-to-end — bash devnet/mvc-all.sh
3Explorer — typecheck + tests + docker build (CI)

The acceptance criteria (MVC): MVC-1 anchors a "like" into the Data Layer and verifies inclusion cross-chain via ICA; MVC-2 enforces UAC security-class + the total-supply invariant; MVC-3 proves XMP anti-replay + pessimistic containment under a simulated faulty chain; MVC-4 aggregates 3 chains → 1 Cell → Root and settles at the Settlement Layer.

Rule number one: verify before you claim done — paste the output, don't assert "looks correct." (Which build matches the running network, and where the source lives today, are status questions — see Status & Live Network.)