Skip to Content
Run a node

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 version

sha256sum -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⁹ aaeva per gas — every node of the network runs this; AEVA is the only fee denom on testnet-0.
  • timeout_commit 1 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

PortWhatExpose
26656P2Pyes, to be a peer
26657CometBFT RPClocalhost, or behind a proxy
1317RESToptional
9090gRPCoptional
8545 / 8546EVM JSON-RPC (http / ws)optional
26660Prometheus metricsprivate network only

Next: Become a validator.

Last updated