Validator Quickstart
Five steps from an empty machine to a validator that is staked, connected, and working. Nobody has to approve you: you stake, and the network starts counting you automatically.
This is the testnet path, and on testnet everything is free: the XCHAIN you stake is minted from a faucet token, and the coins that pay fees come from test faucets.
You need: a machine that runs Docker, a public IP or DNS name, TCP port 10002 open inbound, Node 22, and git.
Pick what you want to support
Your stake is what qualifies you. One number to remember: a single stake of 25,000 XCHAIN qualifies you for everything at once, and the setup below stakes exactly that. But each level has its own bar, so you can also start small:
| To support… | Stake (XCHAIN) | You also need |
|---|---|---|
| Anchoring and price publishing | 500 | A little testnet DOGE (step 3 covers it) |
| Price rounds | 1,000 | Nothing extra |
| Attestations (verifying facts for contracts) | 1,000 | Nothing extra |
| Full-node proof | 2,000 | The Bitcoin stack (step 5 installs it) |
| Cross-chain matching | 5,000 | The Bitcoin stack (step 5 installs it) |
Web attestations (http_get provider) |
10,000 | Nothing extra |
AI attestations (llm provider, Claude) |
25,000 | The Claude CLI installed and signed in |
There is no application and no registration: any stake that clears a bar qualifies for that level automatically.
Step 1: install the CLI
git clone https://github.com/XChain-Platform/xchain-node.git ~/xchain-node
cd ~/xchain-node
npm install
npm link
The clone lands on the latest release. From then on xchain-node update all
keeps both the CLI and your validator current.
Run all the commands below from ~/xchain-node.
Step 2: create your validator identity
xchain-node validator init --network testnet --p2p-addr YOUR_PUBLIC_HOST:10002
One second, fully offline. It generates your keys and prints two addresses to fund: a Bitcoin testnet address (pays transaction fees) and a Dogecoin testnet address (pays for publishing).
Back up config/validator/signing.key and config/validator/wallets.env
somewhere off this machine now. There is no recovery if they are lost.
Step 3: fund the two addresses
- Send 50,000 sats of testnet bitcoin to the first address, from any testnet4 faucet. Setting up costs about 27,000 sats; the rest is headroom.
- Send 0.02 testnet DOGE to the second address, from any Dogecoin testnet faucet.
Step 4: stake
xchain-node validator stake # dry run: shows the plan, sends nothing
xchain-node validator stake --broadcast # do it
That one command mints the 25,000 XCHAIN from the testnet faucet token and stakes it to your key. Everything goes out back to back and confirms within a block or two. The dry run doubles as your “have I funded it yet” check, and re-running is always safe: it only sends what is still missing.
Your stake goes live 6 blocks after it confirms. Watch it at
https://explorer.xchain.io/TBTC/validator/YOUR_PUBKEY (the init command
printed your pubkey; xchain-node validator status re-prints it).
Step 5: start your validator
xchain-node install all bitcoin testnet # your own view of the chain
xchain-node install xchain-hub # the validator itself
The first command installs a self-contained Bitcoin testnet stack (a bootstrap restore does the heavy lifting). The second boots the validator with your keys and capabilities wired in. On a fresh machine it asks once for a database root password.
That’s it. Peers admit your validator within about 30 seconds of your stake going live. You do not need to tell anyone.
Check your work
xchain-node validator status # what this node is configured as
xchain-node logs xchain-hub # what it is doing
https://explorer.xchain.io/TBTC/validator/YOUR_PUBKEYshows your stake asvalid. This appears once the stake confirms, even before your hub runs.https://explorer.xchain.io/TBTC/validator_capabilitieslists your pubkey once your hub is running and talking to its peers.
Two things worth knowing
- Stake only when you intend to run. A staked validator that is not running still counts toward the network’s voting thresholds while contributing nothing, which makes life harder for everyone else. Stake when you are ready to start the hub, and stand down if you stop.
- Keep a little DOGE in the publisher wallet. Publishing prices and
anchors spends it.
validator statusshows your remaining runway, and the hub warns you when it runs low.
Upgrading
cd ~/xchain-node
xchain-node update all
That moves the CLI and the validator to the latest release, hub first, and
keeps your keys, stake and capability config. Run it whenever a command
prints that a newer release is available; a validator on an old release can
slow the attestation rounds it is drawn into, and one absent from enough
roll calls is evicted. If your CLI predates v0.16.0, bring it forward once by
hand first: git fetch --tags origin && git checkout v0.16.0 && npm install.
Do that before any update from the old CLI: one older than v0.15.0 kills a
coin node instead of stopping it, and a killed mainnet daemon re-validates for
hours when it comes back.
Standing down
xchain-node validator unstake # dry run
xchain-node validator unstake --broadcast # withdraw your stake
Your stake stops counting toward the active set 6 blocks later. The XCHAIN
itself stays locked for a further cooldown of 1000 blocks (roughly 7 days on
Bitcoin) before the sweep credits it back, so do not plan on spending it
sooner. Stop the hub any time after you leave the active set with
xchain-node stop xchain-hub.
Going deeper
- Running a Validator: the two validator tiers, how rewards work, and what lightweight validators are (never) penalised for
- Hub configuration: every setting, including the attestation providers
Copyright © 2025–2026 Dankest, LLC
Based on XChain Platform by Dankest, LLC – https://dankest.llc
Licensed under the GNU Affero General Public License v3.0 (AGPL-3.0-or-later) with a commercial license available for proprietary use.
You may use, modify, and distribute this material under the terms of the License. See LICENSE and NOTICE for full terms. See the licensing overview.