Avalanche
Consensus chain
This chain is verified by Axelar validators. Before setting up this node,
set up your Axelar validator.
Once the node is running, connect it to vald as described in Verify consensus
chains.
Check the official documentation
The node setup steps below follow Avalanche's own documentation at the time of
writing and may be out of date. Check the official
documentation before you start. The Axelar-specific steps (connecting
the node to vald or ampd) are maintained here.
Instructions to set up your Avalanche node.
Requirements
- Setup your Axelar validator
- Minimum hardware requirements: 8 AWS vCPU+, 16GB RAM, 500GB+ free storage space.
- MacOS or Ubuntu 20.04 (tested on 20.04)
- Official Documentation
Prerequisites
sudo apt-get install wget jq -yGet Binaries
Check the appropriate version for the network accordingly in their docs or choose the latest release
# This is an example - check their docs and release page to opt for the right version
AVALANCHEGO=v1.9.3 # This is an example - check their docs and release page to opt for the right version
AVALANCHEGO=v1.9.3# verify correct versions
echo $AVALANCHEGO
# create a temp dir for binaries
cd $HOME
mkdir binaries && cd binaries
# get avalanchego binary and rename
wget https://github.com/ava-labs/avalanchego/releases/download/$AVALANCHEGO/avalanchego-linux-amd64-$AVALANCHEGO.tar.gz
tar -xvf avalanchego-linux-amd64-$AVALANCHEGO.tar.gz
rm avalanchego-linux-amd64-$AVALANCHEGO.tar.gz
cd avalanchego-$AVALANCHEGO
# make binaries executable
chmod +x *
# move to usr bin
sudo mv * /usr/bin/
# get out of binaries directory
cd $HOME
# verify version
avalanchego --versionSet environment variables
Note: Update your shell profile in accordance with the shell you are using
echo export NETWORK_ID=mainnet >> $HOME/.profileecho export NETWORK_ID=fuji >> $HOME/.profileApply your changes
source $HOME/.profileCreate services
Use systemctl to set up service for avalanchego.
avalanchego
sudo tee <<EOF >/dev/null /etc/systemd/system/avalanchego.service
[Unit]
Description=Avalanche daemon
After=network-online.target
[Service]
User=root
ExecStart=/usr/bin/avalanchego --http-host= --network-id=$NETWORK_ID
Restart=on-failure
RestartSec=3
LimitNOFILE=32768
[Install]
WantedBy=multi-user.target
EOF
# verify and enable
cat /etc/systemd/system/avalanchego.service
sudo systemctl enable avalanchegoStart the service
sudo systemctl daemon-reload
sudo systemctl restart avalanchegoCheck logs
# change log settings to persistent if not already
sed -i 's/#Storage=auto/Storage=persistent/g' /etc/systemd/journald.conf
sudo systemctl restart systemd-journald
journalctl -u avalanchego.service -f -n 100 -o catLogs should appear like this
[11-28|07:50:59.280] INFO <P Chain> bootstrap/bootstrapper.go:481 fetching blocks {"numFetchedBlocks": 85000, "numTotalBlocks": 3241631, "eta": "1h52m8s"}
[11-28|07:51:13.370] INFO <P Chain> bootstrap/bootstrapper.go:481 fetching blocks {"numFetchedBlocks": 90000, "numTotalBlocks": 3241631, "eta": "1h53m58s"}
[11-28|07:51:29.644] INFO <P Chain> bootstrap/bootstrapper.go:481 fetching blocks {"numFetchedBlocks": 95000, "numTotalBlocks": 3241631, "eta": "1h56m46s"}
[11-28|07:51:43.864] INFO <P Chain> bootstrap/bootstrapper.go:481 fetching blocks {"numFetchedBlocks": 100000, "numTotalBlocks": 3241631, "eta": "1h58m12s"}
[11-28|07:51:52.789] INFO <P Chain> bootstrap/bootstrapper.go:481 fetching blocks {"numFetchedBlocks": 105000, "numTotalBlocks": 3241631, "eta": "1h56m50s"}
[11-28|07:52:06.814] INFO <P Chain> bootstrap/bootstrapper.go:481 fetching blocks {"numFetchedBlocks": 110000, "numTotalBlocks": 3241631, "eta": "1h58m0s"}
[11-28|07:52:17.979] INFO <P Chain> bootstrap/bootstrapper.go:481 fetching blocks {"numFetchedBlocks": 115000, "numTotalBlocks": 3241631, "eta": "1h57m45s"}
[11-28|07:52:31.488] INFO <P Chain> bootstrap/bootstrapper.go:481 fetching blocks {"numFetchedBlocks": 120000, "numTotalBlocks": 3241631, "eta": "1h58m31s"}
[11-28|07:52:40.475] INFO <P Chain> bootstrap/bootstrapper.go:481 fetching blocks {"numFetchedBlocks": 125000, "numTotalBlocks": 3241631, "eta": "1h57m20s"}
[11-28|07:52:53.462] INFO <P Chain> bootstrap/bootstrapper.go:481 fetching blocks {"numFetchedBlocks": 130000, "numTotalBlocks": 3241631, "eta": "1h57m49s"}Verify
YOUR_IP=$(curl -4 ifconfig.co)
curl -X POST --data '{
"jsonrpc":"2.0",
"id" :1,
"method" :"info.isBootstrapped",
"params": {
"chain":"X"
}
}' -H 'content-type:application/json;' $YOUR_IP:9650/ext/info | jqIf you get something like this in response of the above rpc call, your node is setup correctly
Wait for isBootstrapped to become true before using it in vald config
{
"jsonrpc": "2.0",
"result": {
"isBootstrapped": false # wait for it to become true
},
"id": 1
}Endpoint
echo "${YOUR_IP}:9650/ext/bc/C/rpc"Configure vald
In order for vald to connect to your Avalanche node, your rpc_addr should be exposed in
vald's config.toml
start-with-bridge = true start-with-bridge = true