Run a node
A full node of aeva-testnet-1, joined by state sync from the public
sentries: it downloads a recent snapshot instead of replaying every block, and
is caught up in minutes.
You need: Linux (Ubuntu 24.04 is what the network runs), 2 vCPU, 4 GB RAM,
80 GB SSD, inbound TCP 26656 if you want peers to reach you; curl, jq,
sha256sum.
Download and verify
The release is v0.12.0-testnet — the genesis binary of testnet-0.
RELEASES_URL=https://releases.aevachain.com/v0.12.0-testnet
ARCH=amd64 # or arm64
curl -fsSLO "$RELEASES_URL/aevad-v0.12.0-testnet-linux-$ARCH"
curl -fsSLO "$RELEASES_URL/SHA256SUMS"
grep " aevad-v0.12.0-testnet-linux-$ARCH\$" SHA256SUMS | sha256sum -c -
install -m 0755 "aevad-v0.12.0-testnet-linux-$ARCH" /usr/local/bin/aevad
aevad versionsha256sum -c must print OK. The release folder also carries a signature
of SHA256SUMS — see Releases for how to check it.
Initialise, and fetch the genesis
export AEVA_HOME=$HOME/.aeva
aevad init <your-moniker> --chain-id aeva-testnet-1 --home "$AEVA_HOME"
curl -fsSL "$RELEASES_URL/genesis.json" -o "$AEVA_HOME/config/genesis.json"
echo "2b7f470881b2242296b70034bc3e3f5126ef4314fa98bad34b73ae14fe9c8e85 $AEVA_HOME/config/genesis.json" | sha256sum -c -Use the published genesis.json file. The RPC’s /genesis endpoint returns
the same content re-serialised, which does not hash to the published value.
Configure
SEEDS=3b13474fde6883c966f862c85e60873ec006537b@209.74.79.125:26656,2bd44b29d6ede925c26367816b3e8386687b6d6e@209.74.79.125:26666
sed -i -E "s|^seeds = .*|seeds = \"$SEEDS\"|; s|^timeout_commit = .*|timeout_commit = \"1s\"|" "$AEVA_HOME/config/config.toml"
sed -i -E 's|^minimum-gas-prices = .*|minimum-gas-prices = "25000000000aaeva"|' "$AEVA_HOME/config/app.toml"minimum-gas-prices: 25·10⁹aaevaper gas — every node of the network runs this; AEVA is the only fee denom on testnet-0.timeout_commit1 s matches the network’s block time.
State sync
RPC=https://rpc.aevachain.com
LATEST=$(curl -fsS "$RPC/block" | jq -r .result.block.header.height)
TRUST=$((LATEST - 2000))
HASH=$(curl -fsS "$RPC/block?height=$TRUST" | jq -r .result.block_id.hash)
sed -i -E "s|^enable = false|enable = true|; s|^rpc_servers = .*|rpc_servers = \"$RPC:443,$RPC:443\"|; s|^trust_height = .*|trust_height = $TRUST|; s|^trust_hash = .*|trust_hash = \"$HASH\"|; s|^trust_period = .*|trust_period = \"168h0m0s\"|" "$AEVA_HOME/config/config.toml"The sentries take a snapshot every 1 000 blocks and keep the last two.
Start
aevad start --home "$AEVA_HOME"In another terminal:
curl -s localhost:26657/status | jq '.result.sync_info | {latest_block_height, earliest_block_height, catching_up}'The node is synced when catching_up is false. An earliest_block_height
above 1 shows it joined by state sync.
Upgrades
Upgrades are governance proposals (voting period 24 h, expedited 6 h). To
switch binaries at the upgrade height without being there, run the node under
cosmovisor and
place the released binary at
$AEVA_HOME/cosmovisor/upgrades/<name>/bin/aevad before the height (verify it
against the release’s SHA256SUMS). Releases and their notes are listed
under Releases.
Ports
| Port | What | Expose |
|---|---|---|
| 26656 | P2P | yes, to be a peer |
| 26657 | CometBFT RPC | localhost, or behind a proxy |
| 1317 | REST | optional |
| 9090 | gRPC | optional |
| 8545 / 8546 | EVM JSON-RPC (http / ws) | optional |
| 26660 | Prometheus metrics | private network only |
Next: Become a validator.