Run a Mainnet Node on DOS Chain
Introduction
This article describes how to run a Mainnet node on DOS Chain. The following necessary steps are needed to run your node on the DOS Chain:
Install AvalancheGo using the Install Script
Download the plugin binary for the DOS Subnet-EVM
Track the DOS Subnet
Connect to the DOS Subnet!
This install script assumes:
AvalancheGo is not running and not already installed as a service
User running the script has superuser privileges (can run sudo)
Official documents from Avalanche:
Install AvalancheGo using the Install Script
First, you need to download and install AvalancheGo (handles the orchestration of running Custom VMs). You can follow this comprehensive guide to complete this step. For this tutorial, we recommend using the AvalancheGo Installer.
Notes: Some configurations you should notice:
Enter your connection type [1,2]: 2
RPC port should be public (this is a public API node) or private (this is a validator)? [public, private]: private
Detected 'x.x.x.x' as your public IP. Is this correct? [y,n]: y
Done
Notes:
Your node should now be bootstrapping. Node configuration file is /home/DOS/.avalanchego/configs/node.json
C-Chain configuration file is /home/DOS/.avalanchego/configs/chains/C/config.json
Plugin directory, for storing subnet VM binaries, is /home/DOS/.avalanchego/plugins
To check that the service is running use the following command (q to exit):
sudo systemctl status avalanchego
To follow the log use (ctrl-c to stop):
sudo journalctl -u avalanchego -f
Get the ID, the BLS key, and the proof of possession(BLS signature) of this node
nodeID
Node ID is the unique identifier of the node that you set to act as a validator on the Primary Network.nodePOP
is this node's BLS key and proof of possession. Nodes must register a BLS key to act as a validator on the Primary Network. Your node's POP is logged on startup and is accessible over this endpoint.publicKey
is the 48 byte hex representation of the BLS key.proofOfPossession
is the 96 byte hex representation of the BLS signature.
To get these info:
Install Avalanche CLI
https://docs.avax.network/tooling/cli-guides/install-avalanche-cli
Run a Subnet Node
https://docs.avax.network/nodes/run/subnet-node
Option1: Build Subnet Binaries
After building AvalancheGo successfully,
1. Clone Subnet-EVM
2. Build the Binary and Save as a Plugin
In the Subnet-EVM directory, run the build script, and save it in the “plugins” folder of your .avalanchego
data directory. Name the plugin after the VMID
of the Subnet you wish to track. The VMID
of the DOS Chain is the value beginning with “X5tF...”.
Option 2: Download subnet-evm Binary
For the steps below, we will assume that you completed first step successfully and are now in your AvalancheGo directory (within your $GOPATH).
Next, you will download the DOS-EVM binary (please notice that we use the same Binary file with the Ava Labs repo):
Download and unzip the latest subnet evm at: https://github.com/ava-labs/subnet-evm/releases
The long string X5tFvg9JwoXgaYPQbceSzhGoCF6dhwrDm5BnAav6meFp3xxmg
is the CB58 encoded VMID of the DOS Subnet-EVM. AvalancheGo will use the name of this file to determine what VMs are available to run from the plugins directory.
Tracking DOS Chain and Restarting the Node
Joining DOS Subnet
For a node to join a Subnet, there are two prerequisites:
Primary Network validation
Subnet tracking
Primary Network validation means that a node cannot join a Subnet as a validator before becoming a validator on the Primary Network itself. So, after you add the node to the validator set on the Primary Network, node can join a Subnet.
To have a node start syncing the Subnet, you need to add the --track-subnets
command line option, or track-subnets
key to the node config file (found at .avalanchego/configs/node.json
for installer-script created nodes). A single node can sync multiple Subnets, so you can add them as a comma-separated list of Subnet IDs.
An example of a node config syncing two Subnets:
But that is not all. Besides tracking the SubnetID, the node also needs to have the plugin that contains the VM instance the blockchain in the Subnet will run.
If you want to inspect the process of Subnet syncing, you can use the RPC call to check for the blockchain status.
Example Call:
Example Response:
Running the Node
First, make sure to shut down your node in case it is still running. Then, you will navigate back into the AvalancheGo directory:
If you went through the steps to set up a config file, then you can launch your node by specifying the config file on the command line:
If you want to track the Subnets through the command-line flag. You can append the other flags or even the --config-file flag as well, according to your need.
Import DOS Chain Subnet
You firstly import DOS Chain using subnet import public since DOS Chain is already live.
To see the Subnet Config:
avalanche subnet describe "DOS Chain"
Config Chain
DOS Chain allows the node operator to provide some custom configurations. The config file for DOS Chain is located at ~/.avalanchego/configs/chains/22v7AG7h6qaVxd4bLvAsSsg2LZ4RCn5iVYgFn7a2Fj1LCuYwjv/config.json
The content of config.json file should be like:
{ "feeRecipient": "0x50B65C1e3206621b6f9A5Ab2950Ae69f20634b82",//input your wallet }
Just Want the Commands? We Got You
And finally, share us your nodeID.
Run Another Node
You can reduce the node boostraping time by copying the database.
Database Copy
Good way to cut down on bootstrap times on multiple nodes is database copy. Database is identical across nodes, and as such can safely be copied from one node to another. Just make sure to that the node is not running during the copy process, as that can result in a corrupted database. Database copy procedure is explained in detail here.
Please make sure you don't reuse any node's NodeID by accident, especially don't restore another node's ID, see here for details. Each node must has its own unique NodeID, otherwise, the nodes sharing the same ID will not behave correctly, which will impact your validator's uptime, thus staking rewards, and the stability of your Subnet.
Last updated