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