Skip to content
All services

Testnet

Gno.land

Chain ID
Version
Go

For Ubuntu 22.04 or later, following the network's VALIDATOR.md in the gno repo: the version the network runs now, its required config and its genesis checksum. Syncing from genesis stops at every past upgrade height; restart the node and it continues. After registering, a GovDAO proposal adds you to the validator set.

  1. 01Install tools

    sudo apt update && sudo apt upgrade -y
    sudo apt install -y curl git wget jq make gcc build-essential zstd tmux htop
  2. 02Install Go

    cd $HOME
    VER="<go-version>"
    wget "https://golang.org/dl/go$VER.linux-amd64.tar.gz"
    sudo rm -rf /usr/local/go
    sudo tar -C /usr/local -xzf "go$VER.linux-amd64.tar.gz"
    rm "go$VER.linux-amd64.tar.gz"
    [ ! -f $HOME/.bash_profile ] && touch $HOME/.bash_profile
    echo 'export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin' >> $HOME/.bash_profile
    source $HOME/.bash_profile
    mkdir -p $HOME/go/bin
    go version
  3. 03Build the binary

    cd $HOME
    rm -rf gno
    git clone https://github.com/gnolang/gno.git gno
    cd gno
    git checkout <version>
    make -C gno.land VERSION=<version> install.gnoland install.gnokey
    gnoland version
  4. 04Set variables

    echo 'export GNOROOT=$HOME/gno' >> $HOME/.bash_profile
    echo 'export WALLET="wallet"' >> $HOME/.bash_profile
    echo 'export MONIKER="Your-Moniker"' >> $HOME/.bash_profile
    echo 'export GNO_CHAIN_ID="<chain-id>"' >> $HOME/.bash_profile
    source $HOME/.bash_profile
  5. 05Initialize the node

    gnoland config init --config-path $HOME/gnoland-data/config/config.toml
    gnoland secrets init --data-dir $HOME/gnoland-data/secrets
  6. 06Chain-wide config

    # See misc/deployments/onyx.gno.land/VALIDATOR.md in gnolang/gno
  7. 07Your node's config

    gnoland config set --config-path $HOME/gnoland-data/config/config.toml moniker "$MONIKER"
    gnoland config set --config-path $HOME/gnoland-data/config/config.toml p2p.external_address "$(wget -qO- eth0.me):26656"
    gnoland config set --config-path $HOME/gnoland-data/config/config.toml p2p.pex true
  8. 08Download and verify the genesis

    wget -O $HOME/gnoland-data/genesis.json https://github.com/gnolang/gno/releases/download/chain/onyx/genesis.json
    echo "<sha256>  $HOME/gnoland-data/genesis.json" | sha256sum -c -
  9. 09Create the service

    sudo tee /etc/systemd/system/gnoland.service > /dev/null << EOF
    [Unit]
    Description=Gno.land node
    After=network-online.target
    
    [Service]
    User=$USER
    WorkingDirectory=$HOME
    Environment="GNOROOT=$HOME/gno"
    ExecStart=$(which gnoland) start --chainid $GNO_CHAIN_ID --genesis $HOME/gnoland-data/genesis.json --data-dir $HOME/gnoland-data --skip-genesis-sig-verification
    Restart=on-failure
    RestartSec=10
    LimitNOFILE=65535
    
    [Install]
    WantedBy=multi-user.target
    EOF
    sudo systemctl daemon-reload
    sudo systemctl enable gnoland
  10. 10Start the node

    sudo systemctl restart gnoland && sudo journalctl -fu gnoland -o cat
  11. 11Check sync

    curl -s localhost:26657/status | jq .result.sync_info
  12. 12Check the validator key

    gnoland secrets get validator_key --data-dir $HOME/gnoland-data/secrets
  13. 13Add a new key

    gnokey add $WALLET
  14. 14Register as a validator candidate

    gnokey maketx call \
      --pkgpath gno.land/r/gnops/valopers \
      --func Register \
      --args "$MONIKER" \
      --args "<description>" \
      --args "<cloud|on-prem|data-center>" \
      --args "<operator g1... address of $WALLET>" \
      --args "<gpub1... validator public key>" \
      --gas-fee 1000000ugnot --gas-wanted 50000000 \
      --chainid $GNO_CHAIN_ID \
      --remote https://rpc.onyx.testnets.gno.land \
      --broadcast \
      $WALLET
Original guide (GitBook)