Testnet facts
Confirm the version before installing anything:
v29.0.0-rc0 and provider. The testnet upgrades one or two weeks ahead of mainnet, so the answer changes often.
Install the release candidate
Release candidates ship as bare signed binaries (gaiad-v29.0.0-rc0-linux-amd64 with an .asc signature and SHA256SUMS-v29.0.0-rc0.txt) and as the container tag ghcr.io/cosmos/gaia:v29.0.0-rc0. There is no tarball. Verification is the same as on Install gaiad: import the release key, run gpg --verify, then run sha256sum --check. For a source build, run git checkout v29.0.0-rc0 and make install with the Go version from that tag’s go.mod. Install the testnet binary to a separate path, for example /usr/local/bin/gaiad-testnet, if the machine also runs mainnet.
v29.0.0-rc0 (or whatever the README names today) before you go on.
1
Initialize and install the genesis
--home ~/.gaia-testnet. The checksum must be 91870bfb8671f5d60c303f9da8e44b620a5403f913359cc6b212150bfc3e631d.2
Configure gas price, seeds, and client defaults
client.toml, minimum-gas-prices in app.toml, and [p2p] seeds in config.toml. The seeds are the ones in the testnet README on 2026-10-15. The -s flag is required for config.toml keys on this gaia version.3
State sync
The testnet publishes two state sync remote procedure call (RPC) servers. Fetch a trust height and hash. Then write the A snapshot archive from snapshots.polypore.xyz is the alternative. Restore it as on Sync a node.
[statesync] keys exactly as on Sync a node, with these servers:4
Start the node
join-provider.sh (plain systemd) and join-provider-cv.sh (Cosmovisor) under provider/, which do the steps above on a fresh Ubuntu machine. Read a script before running it. The Cosmovisor variant enables binary auto download, which this site does not recommend for mainnet.
Get test ATOM
A validator needs a self delegation. Every transaction needs fees. Create a key in the test keyring and fund it:cosmos1... address and a mnemonic. The test keyring stores the key unencrypted on disk, which is fine for test ATOM and never for mainnet. Paste the address into faucet.polypore.xyz or post it in the Discord faucet channel. Then confirm the balance once the node is synced:
Create a testnet validator
The transaction is the same as on mainnet. Writevalidator.json with the consensus public key from your node. Then submit it:
--gas auto --gas-adjustment 3. The simulation under estimates this transaction. After it is included, gaiad query staking validator $(gaiad keys show testnet-operator --bech val -a --keyring-backend test --home ~/.gaia-testnet) --home ~/.gaia-testnet shows the new validator. Whether it enters the active set depends on the stake of the current set. The testnet validator guide has the current advice. The key facts from Validator setup apply here too. The cosmosvaloper operator address you just created can never be changed, and the consensus key in priv_validator_key.json has no rotation path on this gaia version.
Rehearse an upgrade
Testnet upgrades are announced in the README and in the testnet channel on Discord. They follow the same two patterns as mainnet: a governance proposal with a plan height, or a coordinated halt height. The Upgrade a node runbook applies unchanged. Runninggaiad query upgrade plan --home ~/.gaia-testnet shows the pending plan once a proposal has passed.
Verify
network field is provider. The catching_up field becomes false when the node reaches the height the explorer shows.