Skip to content
ChainNodeHow to run a validator node

How to run a validator node

Beam Nodes are expected to become operational by the end of January 2025, coinciding with the completion of the Horizon upgrade. To run your own Beam Validator Node, you have to install AvalancheGo. The easiest method is using the installer which you can find here. Please note that this guide is compatible with AvalancheGo version 1.11.5.

Once you have a running AvalancheGo installation, you need to add the Beam Subnet-EVM to track the Beam Subnet in your node.

Installing the Beam Subnet-EVM

Downloading the Subnet-EVM

First we have to download the Subnet-EVM binary from Ava-Labs Github and copy it into the AvalancheGo plugin directory. The plugin folder is the default folder when using the AvalancheGo Installer.

mkdir subnetevm
cd subnetevm
wget https://github.com/ava-labs/subnet-evm/releases/download/v0.6.12/subnet-evm_0.6.12_linux_amd64.tar.gz
tar -xvzf subnet-evm_0.6.12_linux_amd64.tar.gz
cp subnet-evm ~/.avalanchego/plugins/kLPs8zGsTVZ28DhP1VefPCFbCgS7o5bDNez8JUxPVw9E6Ubbz

Please check if you download the latest Subnet-EVM release.

The long string kLPs8zGsTVZ28DhP1VefPCFbCgS7o5bDNez8JUxPVw9E6Ubbz is the CB58 encoded VMID of the Beam Subnet-EVM. AvalancheGo will use the name of this file to determine what VMs are available to run from the plugins directory.

Tracking the Beam Subnet

To start tracking the Beam Subnet update your node config in your favorite editor.

The installation script creates the node configuration file at ~/.avalanchego/configs/node.json. If AvalancheGo is built from source, no default file is created; you would need to create it manually if needed.

nano ~/.avalanchego/configs/node.json

Add the “track-subnets” option to node config.

{
  // .. other configuration
  "track-subnets": "eYwmVU67LmSfZb1RwqCMhBYkFyG8ftxn6jAwqzFmxC9STBWLC"
}

If you want to track more than one subnet, you can add them as comma separated list.

As an alternative to the config file you can pass the subnet ID as parameter during the node start-up with --track-subnets eYwmVU67LmSfZb1RwqCMhBYkFyG8ftxn6jAwqzFmxC9STBWLC.

Apply Network Upgrades

Download the latest upgrade.json file and place it in the appropriate directory.

Create the config directory for Beam and download the upgrade.json file from GitHub:

mkdir ~/.avalanchego/configs/chains/2tmrrBo1Lgt1mzzvPSFt73kkQKFas5d1AP88tv9cicwoFp8BSn
wget https://raw.githubusercontent.com/Merit-Circle/beam-subnet/main/subnets/beam-mainnet/upgrade.json

If you haven’t used the installer, your config directory may be located elsewhere. In that case, place the file in {chain-config-dir}/2tmrrBo1Lgt1mzzvPSFt73kkQKFas5d1AP88tv9cicwoFp8BSn/, where 2tmrrBo1Lgt1mzzvPSFt73kkQKFas5d1AP88tv9cicwoFp8BSn is the {blockchainID}.

Restarting the Node

After you have updated your config, you have to restart your node to start tracking the Beam subnet.

Commands for Node Management:

Restart your node:

sudo systemctl restart avalanchego

Stop your node:

sudo systemctl stop avalanchego

Start your node:

sudo systemctl start avalanchego

Check node status:

sudo systemctl status avalanchego

To follow the log use (ctrl-c to stop):

sudo journalctl -u avalanchego -f

Monitoring Your Node

If you want to inspect the process of Subnet syncing, you can use the RPC call platform.getBlockchainStatus:

curl -X POST --data '{
"jsonrpc": "2.0",
"method": "platform.getBlockchainStatus",
"params":{
"blockchainID":"2tmrrBo1Lgt1mzzvPSFt73kkQKFas5d1AP88tv9cicwoFp8BSn"
},
"id": 1
}' -H 'content-type:application/json;' 127.0.0.1:9650/ext/bc/P

For an explanation of the response, check the API docs.

If you want to understand your Subnet better, take a look at the blockchain log. Normally, you can find this log in ~/.avalanchego/logs/ChainID.log. Just replace “ChainID” with the real ID of your blockchain in your Subnet.

Beam Mainnet example logfile location: ~/.avalanchego/logs/2tmrrBo1Lgt1mzzvPSFt73kkQKFas5d1AP88tv9cicwoFp8BSn.log

To better understand how your Node and Subnet are working, you can set up a tool called Prometheus+Grafana. This tool helps you monitor their performance and comes with easy-to-read charts for regular operations and specific Subnet data. There’s a step-by-step guide available to help you get it all set up.

Next Steps

Now that you’ve launched your Beam node, what should you do next?

Your Beam node will perform consensus on its own, but it is not yet a validator on the network. This means that the rest of the network will not query your node when sampling the network during consensus. If you want to add your node as a validator, follow the instructions on how to join the network as a validator.

Take a look at the AVAX Maintenance section to understand how to maintain your node.

Network Upgrades

To keep your node up-to-date with a network upgrade you need to keep the latest upgrade.json in the config directory. It should be placed in {chain-config-dir}/{blockchainID}/upgrade.json, when using the installer the folder for Beam is:

  • Mainnet ~/.avalanchego/configs/chains/2tmrrBo1Lgt1mzzvPSFt73kkQKFas5d1AP88tv9cicwoFp8BSn/
  • Testnet ~/.avalanchego/configs/chains/y97omoP2cSyEVfdSztQHXD9EnfnVP9YKjZwAxhUfGbLAPYT9t/

Download latest upgrade.json

cd ~/.avalanchego/configs/chains/2tmrrBo1Lgt1mzzvPSFt73kkQKFas5d1AP88tv9cicwoFp8BSn/
curl -o upgrade.json https://raw.githubusercontent.com/Merit-Circle/beam-subnet/main/subnets/beam-mainnet/upgrade.json

Restart your Node

sudo systemctl restart avalanchego

Commands for Beam Testnet Node

Here are the commands for a Beam Testnet node:

mkdir subnetevm
cd subnetevm
wget https://github.com/ava-labs/subnet-evm/releases/download/v0.6.12/subnet-evm_0.6.12_linux_amd64.tar.gz
tar -xvzf subnet-evm_0.6.12_linux_amd64.tar.gz
cp subnet-evm ~/.avalanchego/plugins/kLPs8zGsTVZ28DhP1VefPCFbCgS7o5bDNez8JUxPVw9E6Ubbz
nano ~/.avalanchego/configs/node.json
{
  // .. other configuration
  "track-subnets": "yie1wUBR2bQDPkGCRf2CBVzmP55eSiyJsFYqeGXnTYt2r33aKW"
}
mkdir ~/.avalanchego/configs/chains/y97omoP2cSyEVfdSztQHXD9EnfnVP9YKjZwAxhUfGbLAPYT9t
wget https://raw.githubusercontent.com/Merit-Circle/beam-subnet/main/subnets/beam-testnet/upgrade.json
sudo systemctl restart avalanchego
curl -X POST --data '{
"jsonrpc": "2.0",
"method": "platform.getBlockchainStatus",
"params":{
"blockchainID":"y97omoP2cSyEVfdSztQHXD9EnfnVP9YKjZwAxhUfGbLAPYT9t"
},
"id": 1
}' -H 'content-type:application/json;' 127.0.0.1:9650/ext/bc/P

Testnet Network Upgrade

cd ~/.avalanchego/configs/chains/y97omoP2cSyEVfdSztQHXD9EnfnVP9YKjZwAxhUfGbLAPYT9t/
curl -o upgrade.json https://raw.githubusercontent.com/Merit-Circle/beam-subnet/main/subnets/beam-testnet/upgrade.json
sudo systemctl restart avalanchego