Complete guide to deploying and managing a high-performance Axone validator node on mainnet
Component | Minimum | Recommended |
---|---|---|
OS | Ubuntu 20.04 | Ubuntu 22.04 LTS |
CPU | 4 vCPU | 8+ Cores |
RAM | 8GB | 16GB+ |
Storage | 200GB SSD | 500GB SSD/NVMe |
Network | 10Mbps | 100Mbps+ |
sudo apt update && sudo apt upgrade -y
sudo apt install curl git jq lz4 build-essential -y
cd $HOME
curl -Ls https://go.dev/dl/go1.21.6.linux-amd64.tar.gz -o go.tar.gz
rm -rf /usr/local/go && tar -C /usr/local -xzf go.tar.gz
echo 'export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin' >> ~/.bash_profile
source ~/.bash_profile
go version
cd $HOME
git clone https://github.com/axone-protocol/axone.git
cd axone
git checkout v12.0.0
make install
# Verify installation
axoned version # Output should be: 12.0.0
axoned init Your_Node_Name --chain-id axone-1
curl -Ls https://raw.githubusercontent.com/OneNov0209/networks/refs/heads/main/chains/1/genesis.json > $HOME/.axoned/config/genesis.json
# Download addrbook
curl -Ls https://cumulo.pro/services/axone/addrbook.json > $HOME/.axoned/config/addrbook.json
# Set minimum gas price
sed -i 's|minimum-gas-prices = ""|minimum-gas-prices = "0.025uaxone"|g' $HOME/.axoned/config/app.toml
# Enable public RPC
sed -i 's|laddr = "tcp://127.0.0.1:26657"|laddr = "tcp://0.0.0.0:26657"|g' $HOME/.axoned/config/config.toml
# Create new wallet
axoned keys add wallet --keyring-backend test
# Recover existing wallet
axoned keys add wallet --recover --keyring-backend test
⚠️ Securely backup your mnemonic phrase!
axoned tx staking create-validator \
--amount 1500000uaxone \
--pubkey $(axoned tendermint show-validator) \
--moniker "Your_Moniker" \
--identity "your identity" \
--website "https://onenov.xyz" \
--details "stake with me" \
--commission-rate 0.05 \
--commission-max-rate 0.20 \
--commission-max-change-rate 0.01 \
--min-self-delegation 1 \
--from wallet \
--chain-id axone-1 \
--keyring-backend test \
--gas auto --gas-adjustment 1.3 \
--fees 5000uaxone \
-y
sudo tee /etc/systemd/system/axone.service > /dev/null <<EOF
[Unit]
Description=Axone Node
After=network-online.target
[Service]
User=$USER
ExecStart=$(which axoned) start
Restart=on-failure
RestartSec=5
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable axone
sudo systemctl start axone
# Check status
sudo systemctl status axone
# View logs (Ctrl+C to exit)
sudo journalctl -u axone -f -o cat
Coming Soon
Upgrade instructions will be provided here when a new version is released.
Check back later or join our Telegram channel for updates.
# Stop the node
sudo systemctl stop axone
# Backup priv_validator_state.json if exists
[ -f $HOME/.axoned/data/priv_validator_state.json ] && cp $HOME/.axoned/data/priv_validator_state.json $HOME/.axoned/priv_validator_state.json.backup
# Remove old data
rm -rf $HOME/.axoned/data
# Download and extract snapshot
curl -L https://snap.cumulo.pro/axone/axoned.tar.lz4 | lz4 -d | tar -xf - -C $HOME/.axoned
# Restore priv_validator_state.json if backed up
[ -f $HOME/.axoned/priv_validator_state.json.backup ] && mv $HOME/.axoned/priv_validator_state.json.backup $HOME/.axoned/data/priv_validator_state.json
# Restart the node
sudo systemctl restart axone
# Monitor logs
sudo journalctl -u axone -f --no-pager
# Stop the node
sudo systemctl stop axone
# Reset the node
axoned tendermint unsafe-reset-all --home $HOME/.axoned
# Configure state sync
SNAP_RPC="https://rpc-axone-mainnet.onenov.xyz:443"
LATEST_HEIGHT=$(curl -s $SNAP_RPC/block | jq -r .result.block.header.height); \
BLOCK_HEIGHT=$((LATEST_HEIGHT - 2000)); \
TRUST_HASH=$(curl -s "$SNAP_RPC/block?height=$BLOCK_HEIGHT" | jq -r .result.block_id.hash)
sed -i \
-e "s|^enable *=.*|enable = true|" \
-e "s|^rpc_servers *=.*|rpc_servers = \"$SNAP_RPC,$SNAP_RPC\"|" \
-e "s|^trust_height *=.*|trust_height = $BLOCK_HEIGHT|" \
-e "s|^trust_hash *=.*|trust_hash = \"$TRUST_HASH\"|" \
$HOME/.axoned/config/config.toml
# Restart the node
sudo systemctl restart axone
# Monitor logs
sudo journalctl -u axone -f -o cat
axoned status | jq .SyncInfo
https://rpc-axone-mainnet.onenov.xyz
https://api-axone-mainnet.onenov.xyz
http://localhost:26657
# List all wallets
axoned keys list --keyring-backend test
# Check balance
axoned query bank balances $(axoned keys show wallet -a --keyring-backend test) --node tcp://localhost:26657
# Send tokens
axoned tx bank send wallet [to-address] [amount]uaxone --from wallet --chain-id axone-1 --keyring-backend test --gas auto --gas-adjustment 1.3 --fees 5000uaxone -y
# Start node
sudo systemctl start axone
# Stop node
sudo systemctl stop axone
# Restart node
sudo systemctl restart axone
# Check logs
journalctl -u axone -f --no-pager
# Check sync status
axoned status | jq .SyncInfo
# Check validator status
axoned query staking validator $(axoned keys show wallet --bech val -a --keyring-backend test)
# Delegate to validator
axoned tx staking delegate [validator-address] [amount]uaxone --from wallet --chain-id axone-1 --keyring-backend test --gas auto --gas-adjustment 1.3 --fees 5000uaxone -y
# Withdraw rewards
axoned tx distribution withdraw-all-rewards --from wallet --chain-id axone-1 --keyring-backend test --gas auto --gas-adjustment 1.3 --fees 5000uaxone -y
# Unbond from validator
axoned tx staking unbond [validator-address] [amount]uaxone --from wallet --chain-id axone-1 --keyring-backend test --gas auto --gas-adjustment 1.3 --fees 5000uaxone -y
# List proposals
axoned query gov proposals
# View proposal details
axoned query gov proposal [proposal-id]
# Vote on proposal
axoned tx gov vote [proposal-id] [yes/no/no_with_veto/abstain] --from wallet --chain-id axone-1 --keyring-backend test --gas auto --gas-adjustment 1.3 --fees 5000uaxone -y