X PrimeFlow

Gno.land Onyx Testnet

Gno.land Onyx Testnet
Chain ID: onyx-1
Block Height:
Network Status: Connecting
Explorer
Gno.land Onyx Testnet

Node guide

Manual setup for a fresh Linux node. Requires curl, git, jq and sha256sum. Commands are source-reviewed, not tested as a complete installation on a fresh host.

Source review: 2026-10-05 ยท recheck the upgrade ledger before installation

1. Download & verify binaries

(
export PATH="$PATH:/usr/local/go/bin:$HOME/go/bin"

set -euo pipefail
GNO_WORK="$HOME/gno-testnet"
test "$(uname -s)" = Linux
test "$(uname -m)" = x86_64
test ! -e "$GNO_WORK"
umask 077
mkdir -p "$GNO_WORK/bin"
cd "$GNO_WORK/bin"
curl --fail --location --output gnoland 'https://github.com/gnolang/gno/releases/download/v1.5.0/gnoland_linux_amd64'
curl --fail --location --output gnokey 'https://github.com/gnolang/gno/releases/download/v1.5.0/gnokey_linux_amd64'
printf '%s  gnoland\n%s  gnokey\n' '8dcff48228a881e398d238e3e14760c175c872fb164e85f21e5b4ee94a8b076d' '878eb6599161f491a37fdcbd4214477ad28d5d6208f8428f0bffcd3115cd35b4' | sha256sum --check
chmod 700 gnoland gnokey
./gnoland version
)

2. Pin the Gno source / GNOROOT

(
export PATH="$PATH:/usr/local/go/bin:$HOME/go/bin"

set -euo pipefail
GNO_WORK="$HOME/gno-testnet"
test -x "$GNO_WORK/bin/gnoland"
test ! -e "$GNO_WORK/source"
git clone --branch 'v1.5.0' --depth 1 https://github.com/gnolang/gno.git "$GNO_WORK/source"
test "$(git -C "$GNO_WORK/source" rev-parse HEAD)" = e75fef82c02876a4df92ad6e325c5479b9532168
test -d "$GNO_WORK/source/gnovm/stdlibs"
)

3. Genesis & SHA-256

(
export PATH="$PATH:/usr/local/go/bin:$HOME/go/bin"

set -euo pipefail
GNO_WORK="$HOME/gno-testnet"
test -d "$GNO_WORK/source/gnovm/stdlibs"
test ! -e "$GNO_WORK/genesis.json"
curl --fail --location --output "$GNO_WORK/genesis.json" 'https://github.com/gnolang/gno/releases/download/chain/onyx/genesis.json'
printf '%s  %s\n' '4b006fd7ccdec052865accc84dd29b2b76f8b57b2560789a15eedaa88f0e26c5' "$GNO_WORK/genesis.json" | sha256sum --check
jq -e '.chain_id == "onyx-1"' "$GNO_WORK/genesis.json"
)

4. Initialize fresh configuration and keys

(
export PATH="$PATH:/usr/local/go/bin:$HOME/go/bin"

set -euo pipefail
GNO_WORK="$HOME/gno-testnet"
test -s "$GNO_WORK/genesis.json"
test ! -e "$GNO_WORK/node"
umask 077
"$GNO_WORK/bin/gnoland" config init --config-path "$GNO_WORK/node/config/config.toml"
"$GNO_WORK/bin/gnoland" secrets init --data-dir "$GNO_WORK/node/secrets"
)

5. Configure the network

Set your moniker and public P2P host in config.toml. The example keeps RPC on loopback. See the official sentry architecture for validator deployments.

(
export PATH="$PATH:/usr/local/go/bin:$HOME/go/bin"

set -euo pipefail
GNO_WORK="$HOME/gno-testnet"
test -s "$GNO_WORK/node/config/config.toml"
"$GNO_WORK/bin/gnoland" config set --config-path "$GNO_WORK/node/config/config.toml" moniker 'my-gno-testnet'
"$GNO_WORK/bin/gnoland" config set --config-path "$GNO_WORK/node/config/config.toml" p2p.persistent_peers 'g1x5mlj5ava0dw9vkf4j6admjlzswm6f06p44krn@seed-1.onyx.testnets.gno.land:26656,g1grq5zswt0dlwwe7clr4359w70k2ewgse0gcwck@seed-2.onyx.testnets.gno.land:26656'
"$GNO_WORK/bin/gnoland" config set --config-path "$GNO_WORK/node/config/config.toml" application.prune_strategy syncable
"$GNO_WORK/bin/gnoland" config set --config-path "$GNO_WORK/node/config/config.toml" consensus.timeout_commit 3s
"$GNO_WORK/bin/gnoland" config set --config-path "$GNO_WORK/node/config/config.toml" consensus.peer_gossip_sleep_duration 10ms
"$GNO_WORK/bin/gnoland" config set --config-path "$GNO_WORK/node/config/config.toml" p2p.flush_throttle_timeout 10ms
"$GNO_WORK/bin/gnoland" config set --config-path "$GNO_WORK/node/config/config.toml" p2p.pex true
"$GNO_WORK/bin/gnoland" config set --config-path "$GNO_WORK/node/config/config.toml" rpc.laddr tcp://127.0.0.1:26657
"$GNO_WORK/bin/gnoland" config set --config-path "$GNO_WORK/node/config/config.toml" mempool.size 10000
"$GNO_WORK/bin/gnoland" config set --config-path "$GNO_WORK/node/config/config.toml" p2p.max_num_outbound_peers 40
)

6. Start and synchronize

(
export PATH="$PATH:/usr/local/go/bin:$HOME/go/bin"

set -euo pipefail
GNO_WORK="$HOME/gno-testnet"
export GNOROOT="$GNO_WORK/source"
printf '%s  %s\n' '4b006fd7ccdec052865accc84dd29b2b76f8b57b2560789a15eedaa88f0e26c5' "$GNO_WORK/genesis.json" | sha256sum --check
"$GNO_WORK/bin/gnoland" start --data-dir "$GNO_WORK/node" --chainid 'onyx-1' --genesis "$GNO_WORK/genesis.json" --skip-genesis-sig-verification
)

7. Verify synchronization in another terminal

# Run in a second terminal while the node is running.
curl --fail --silent --show-error 'http://127.0.0.1:26657/status' | jq -e '.result | select(.node_info.network == "onyx-1") | {chain: .node_info.network, height: .sync_info.latest_block_height, block_time: .sync_info.latest_block_time, catching_up: .sync_info.catching_up}'

Wallet & validator candidate

A synced node is not an active validator. Register a valoper profile with a funded operator account; GovDAO admission is a separate vote. Follow the official registration procedure.

Keep the recovery phrase offline. Wallet commands run on your machine; never paste keys or a recovery phrase into this page.

Create wallet locally

"$HOME/gno-testnet/bin/gnokey" add --home "$HOME/gno-testnet/wallets" operator

Restore wallet locally

"$HOME/gno-testnet/bin/gnokey" add --home "$HOME/gno-testnet/wallets" --recover operator

Registered operators

"$HOME/gno-testnet/bin/gnoland" secrets get --data-dir "$HOME/gno-testnet/node/secrets" validator_key
Wallet & validator candidate ยท Official documentation โ†—