LATEST | BLOCK HEIGHT | SIZE | TIMESTAMP | DOWNLOAD |
---|---|---|---|---|
14862110 | 224GB | 7 hours ago | aioz_14862110.tar.lz4 |
Run below scripts to have everything setup automatically:
sudo apt install curl -y
curl -SL https://snapshot-data.aioz.network/one-click.sh | bash
After executing above script, you will have a cosmovisor running AIOZ node as a background service named aioz.service
. Cosmovisor is a process manager developed to relieve node operators of having to manually intervene every time there is an upgrade. Cosmovisor monitors the governance module for upgrade proposals: it will take care of downloading the new binary, stopping and backing up the old one, switching to the new one, and restarting node.
Below are some commands to monitor service:
# to log running service
sudo journalctl -u aioz.service -f
# stop service
sudo systemctl stop aioz.service
# restart service
sudo systemctl restart aioz.service
In order to remove aioz.service
completely:
sudo systemctl stop aioz.service
sudo rm /etc/systemd/system/aioz.service
sudo systemctl daemon-reload
Install software utilities:
sudo apt update
sudo apt install snapd curl wget lz4 gzip -y
Make sure you have the correct binary version. You can download the latest version (now is v1.5.0
)
from here or simply run this script:
sudo curl -SL https://archive.aioz.network/aiozd-v1.5.0-linux-amd64?checksum=sha256:637b4d8d6946e3dc660f3314338e52415cb8c060b45eff77e5b393033c04430b -o /usr/local/bin/aiozd
sudo chmod +x /usr/local/bin/aiozd
Choose a custom moniker for the node and initialize. By default, the init command creates the $HOME/.aioz
directory with
subfolders config
and data
. In the /config
directory, the most important files for configuration are app.toml
and config.toml
.
aiozd init <moniker> --chain-id aioz_168-1
in which aioz_168-1
is the chain ID of AIOZ Network Mainnet.
The command above creates all the configuration files needed for your node to run, as well as a default genesis file,
which defines the initial state of the network. All these configuration files are in $HOME/.aioz
by default, but you can
overwrite the location of this folder by passing the --home
flag.
The moniker is a unique identifier for your node within the network. The moniker can be edited in the
$HOME/.aioz/config/config.toml
file. You can execute the below script to set default moniker for your node:
sed -i 's/moniker = ".*"/moniker = "NODE"/g' $HOME/.aioz/config/config.toml
The $HOME/.aioz
folder has the following structure:
│ data
│ config
└─── app.toml
└─── client.toml
└─── config.toml
└─── genesis.json
└─── node_key.json
└─── priv_validator_key.json
Once the node is initialized, download the genesis file and move to the config/
directory of the $HOME/.aioz
home
directory.
wget https://raw.githubusercontent.com/AIOZNetwork/mainnet/main/genesis.aioz_168-1.json.gz
gzip -d genesis.aioz_168-1.json.gz
mv genesis.aioz_168-1.json $HOME/.aioz/config/genesis.json
Upon startup the node will need to connect to peers. If there are specific nodes a node operator is interested in
setting as seeds or as persistent peers, this can be configured in $HOME/.aioz/config/config.toml
. Run this script to
update default seeds for AIOZ Mainnet:
sed -i 's/seeds = ".*"/seeds = "[email protected]:26656"/g' $HOME/.aioz/config/config.toml
Node operators can optionally download here the Quicksync address book. Make sure to move this
to $HOME/.aioz/config/addrbook.json
.
For mainnet, the recommended gas-prices is 7000000000attoaioz
A full-node keeps unconfirmed transactions in its mempool. In order to protect it from spam, it is better to set a
minimum-gas-prices that the transaction must meet in order to be accepted in the node's mempool. This parameter can be
set in $HOME/.aioz/config/app.toml
. Run this script to set default minimum gas price on AIOZ Mainnet:
sed -i 's/minimum-gas-prices = ".*"/minimum-gas-prices = "7000000000attoaioz"/g' $HOME/.aioz/config/app.toml
Download the latest snapshot:
wget -O aioz_14862110.tar.lz4 https://snapshot-data.aioz.network/aioz_14862110.tar.lz4
Stop any running node. If you run a node as background service:
sudo service aioz stop
Reset your node. This will erase your node database. If you are already running validator, be sure you backed up your priv_validator_key.json
prior to running the the command. The command does not wipe the file. However, you should have a backup of it already in a safe location.
cp $HOME/.aioz/data/priv_validator_key.json $HOME/.aioz/priv_validator_key.json
WARNING: If you use this snapshot on a validator node during a chain halt, make sure you back
up priv_validator_state.json
and then replace it after the snapshot is extracted but before you start the node
process. This is very important in order to avoid double-sign. When in doubt, reach out to the project team.
aiozd tendermint unsafe-reset-all --home $HOME/.aioz --keep-addr-book
Decompress the snapshot to your database location. You database location will be something to the effect of $HOME/.aioz
depending on your node implemention.
lz4 -c -d aioz_14862110.tar.lz4 | tar -x -C $HOME/.aioz
IMPORTANT: If you run a validator node and the chain is in halt, it is time to replace
the priv_validator_state.json
file that you have backed up.
cp $HOME/.aioz/priv_validator_state.json $HOME/.aioz/data/priv_validator_state.json
Remove downloaded snapshot to free up space:
rm aioz_14862110.tar.lz4
ADVANCED ROUTE: The above solution requires you to download the compressed file, uncompressed it and then delete the original file. This requires extra storage space on your server. You can run the following combo command to stream the snapshot into your database location. For advanced users only:
curl -o - -L https://snapshot-data.aioz.network/aioz_14862110.tar.lz4 | lz4 -c -d - | tar -x -C $HOME/.aioz
Running node with command:
aiozd start
If you define home directory to be another path, add flag --home <path-to-directory>
To run the node in a background process with automatic restarts, it's recommended to use a service manager
like systemd
. To set this up run the following:
First, export the service name:
export SERVICE_NAME="aioz"
Then, set up the service with the following commands:
sudo tee /etc/systemd/system/$SERVICE_NAME.service > /dev/null <<EOF
[Unit]
Description=AIOZ Daemon
After=network-online.target
[Service]
User=$USER
ExecStart=$(which aiozd) start
Restart=always
RestartSec=3
LimitNOFILE=4096
[Install]
WantedBy=multi-user.target
EOF
If using Cosmovisor then make sure to add the following after the LimitNOFILE
line and replace $(which aiozd)
with $(which cosmovisor)
.
Environment="DAEMON_HOME=$HOME/.aioz"
Environment="DAEMON_NAME=aiozd"
Environment="DAEMON_ALLOW_DOWNLOAD_BINARIES=true"
Environment="DAEMON_RESTART_AFTER_UPGRADE=true"
Run the following to setup the daemon:
sudo -S systemctl daemon-reload
sudo -S systemctl restart systemd-journald
sudo -S systemctl enable $SERVICE_NAME
Then start the process and confirm that it's running.
sudo -S systemctl start $SERVICE_NAME
sudo service $SERVICE_NAME status
Cosmovisor is a process manager developed to relieve node operators of having to manually intervene every time there is an upgrade. Cosmovisor monitors the governance module for upgrade proposals; it will take care of downloading the new binary, stopping the old one, switching to the new one, and restarting.
For more information on how to run a node via Cosmovisor, check out the docs.