Skip navigation
XChain Docs

9 · Run a Node

Last updated: 08/06/20262 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) each pin one claim of this whitepaper to something a machine can check:

CriterionWhat it provesPrimitives exercised
MVC-1Anchors a "like" into the Data Layer and verifies inclusion cross-chain via ICAVLC · DA · XMP
MVC-2Enforces the UAC security-class and the total-supply invariantUAC
MVC-3XMP anti-replay + pessimistic containment under a simulated faulty chainXMP
MVC-4Aggregates 3 chains → 1 Cell → Root and settles at the Settlement LayerPAI · SC

Figure 9 — From a clean checkout to the four acceptance criteria — the same path anyone can run.

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.) Anyone can run the machine; the harder question is who decides what it becomes — governance, next.