Namada Protocol Mainnet Validator Setup Guide
This guide will help you set up a Namada Protocol validator on the mainnet. Follow these steps carefully to ensure a successful deployment.
Prerequisites
System Requirements
- Operating System: Ubuntu 22.04/24.04 LTS x64
- CPU: 4 cores minimum (8+ recommended)
- Memory: 16GB RAM minimum (32GB recommended)
- Storage: 1TB NVMe/SSD Storage minimum
- Network: Stable internet connection with good bandwidth
- Access: Root or sudo privileges
Network Information
Component | Value | Description |
---|---|---|
Chain ID | namada.5f5de2dd1b88cba30586420 | Current mainnet chain ID |
Latest Version | v101.1.1 | Current mainnet version |
Native Token | NAM | Native staking token |
Consensus | CometBFT | Tendermint-based consensus |
The following commands are executed as root by default. If you are not a root user, please prepend the commands with sudo
.
sudo -i
Initial Setup
Define Environment Variables
First, let's set up all the variables we'll need throughout the setup process:
# Node configuration
export CHAIN_ID="namada.5f5de2dd1b88cba30586420" # Current mainnet chain ID
export NODE_NAME="your-validator-name" # Your validator's display name
export NAMADA_DIR="/data/namada" # Node data directory
export MONIKER="your-moniker" # Node moniker
# Validator configuration
export VALIDATOR_ALIAS="your-validator-alias" # Validator alias name
export IMPLICIT_ALIAS="your-wallet-alias" # Wallet alias name
export EMAIL="[email protected]" # Your contact email
export WEBSITE="https://your-website.com" # Your website
export DESCRIPTION="Your validator description" # Validator description
export DISCORD_HANDLE="your-discord" # Your Discord handle
# Commission rates (adjust as needed)
export COMMISSION_RATE="0.05" # 5% commission rate
export MAX_COMMISSION_CHANGE="0.01" # 1% max commission change per epoch
# Create symbolic link for easier access
export HOME_DIR="$HOME/.local/share/namada"
Variable Explanation:
VALIDATOR_ALIAS
: A unique name for your validator (used in commands)IMPLICIT_ALIAS
: Your wallet/account alias for signing transactionsCOMMISSION_RATE
: Percentage of rewards you'll keep (0.05 = 5%)MAX_COMMISSION_CHANGE
: Maximum commission change per epoch
Step 1: System Preparation
Update System Packages
# Update package list and install required tools
apt update
apt install -y make git-core libssl-dev pkg-config build-essential protobuf-compiler libudev-dev curl jq wget aria2
# For Ubuntu 22.x, install clang-12
apt install -y libclang-12-dev
# For Ubuntu 24.x, install clang-19
apt install -y libclang-19-dev
Install Rust
# Install Rust via rustup
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
source $HOME/.cargo/env
# Update Rust to latest version
rustup update
# Verify installation
rustc --version
cargo --version
Check GLIBC Version
# Check GLIBC version (should be v2.33 or higher)
ldd --version
# For Ubuntu 22.04+, GLIBC v2.33+ is included by default
# For older versions, consider upgrading Ubuntu or installing from source
Install CometBFT
# Download and install CometBFT
COMETBFT_VERSION="0.37.15" # Check Namada docs for compatible version
wget https://github.com/cometbft/cometbft/releases/download/v${COMETBFT_VERSION}/cometbft_${COMETBFT_VERSION}_linux_amd64.tar.gz
# Extract and install
tar -xzf cometbft_${COMETBFT_VERSION}_linux_amd64.tar.gz
cp cometbft /usr/local/bin/
# Verify installation
cometbft version
Step 2: Install Namada
Option 1: Install from Pre-built Binary (Recommended)
# Create data directory and symbolic link
mkdir -pv $NAMADA_DIR
ln -sfv $NAMADA_DIR $HOME/.local/share/namada
# Download latest Namada release
NAMADA_VERSION="v101.1.1" # Check for latest version
cd /tmp
wget https://github.com/anoma/namada/releases/download/${NAMADA_VERSION}/namada-${NAMADA_VERSION}-Linux-x86_64.tar.gz
# Extract and install
tar -xzf namada-${NAMADA_VERSION}-Linux-x86_64.tar.gz
cp namada-${NAMADA_VERSION}-Linux-x86_64/namada* /usr/local/bin/
# if need
# cp namada-${NAMADA_VERSION}-Linux-x86_64/wasm /usr/local/bin/
# Verify installation
namada --version
Option 2: Build from Source
# Create data directory and symbolic link
mkdir -pv $NAMADA_DIR
ln -sfv $NAMADA_DIR $HOME/.local/share/namada
# Clone Namada repository
cd /opt
git clone https://github.com/anoma/namada.git namada_src
cd namada_src
# Checkout latest stable version
git fetch --all
git checkout v101.1.1
# Build and install
make install
# Verify installation
namada --version
Step 3: Initialize Node
Join the Network
# Join the Namada mainnet
namada client utils join-network --chain-id $CHAIN_ID
# This downloads the necessary configuration files and chain data
Configure Node
# Update node configuration if needed
cd $HOME_DIR
# Optional: Edit config.toml for custom settings
# By default, whenever the namada ledger is started, it will apply the configuration found in the ledger configuration file
cat $BASE_DIR/$CHAIN_ID/config.toml
Step 4: Create Systemd Service
Create Service File
# Create systemd service file
cat > /etc/systemd/system/namadad.service << EOF
[Unit]
Description=Namada Node
After=network-online.target
[Service]
User=root
WorkingDirectory=$HOME_DIR
Environment=CMT_LOG_LEVEL=p2p:none,pex:error
Environment=NAMADA_CMT_STDOUT=true
Environment=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/local/go/bin:/root/go/bin
ExecStart=/usr/local/bin/namada node ledger run
Restart=always
RestartSec=10
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
Start Node Service
# Reload systemd and start the service
systemctl daemon-reload
systemctl enable namadad
systemctl start namadad
# Check service status
systemctl status namadad
# Monitor logs
journalctl -u namadad -f
Step 5: Create Wallet and Keys
Wait for Node Synchronization
# Wait for your node to sync with the network
# Check sync status
namada client epoch
# You can also check the logs to see sync progress
journalctl -u namadad -f | grep -i sync
Generate Wallet
# Generate a new wallet
namadaw gen --alias $IMPLICIT_ALIAS
# List your addresses
namadaw list --addr
# Find your wallet details
namadaw find --alias $IMPLICIT_ALIAS
Important: Save your wallet seed phrase and private keys securely. Store them in multiple secure locations and never share them with anyone.
Step 6: Initialize Validator
Create Validator Account
# Initialize validator with your configuration
namadac init-validator \
--commission-rate $COMMISSION_RATE \
--max-commission-rate-change $MAX_COMMISSION_CHANGE \
--email $EMAIL \
--alias $VALIDATOR_ALIAS \
--account-keys $IMPLICIT_ALIAS \
--signing-keys $IMPLICIT_ALIAS \
--threshold 1
# This creates your validator account and generates necessary keys
Fund Your Validator
Before your validator can start validating, you need to:
- Acquire NAM tokens for staking
- Transfer tokens to your validator account
- Bond tokens to activate your validator
# Check your wallet balance
namadac balance --owner $IMPLICIT_ALIAS
# Once you have NAM tokens, bond them to your validator
# Replace AMOUNT with the number of NAM tokens to stake
namadac bond \
--source $IMPLICIT_ALIAS \
--validator $VALIDATOR_ALIAS \
--amount AMOUNT
Step 7: Update Validator Metadata
Set Validator Information
# Get your validator address
VALIDATOR_ADDRESS=$(namadac find-validator --alias $VALIDATOR_ALIAS)
# Update validator metadata
namadac change-metadata \
--validator $VALIDATOR_ADDRESS \
--description "$DESCRIPTION" \
--email $EMAIL \
--discord-handle $DISCORD_HANDLE \
--website $WEBSITE \
--name "$NODE_NAME"
Step 8: Monitor Your Validator
Check Validator Status
# Check validator state
namadac validator-state --validator $VALIDATOR_ADDRESS
# Check bonds
namadac bonds --validator $VALIDATOR_ALIAS
# Check current epoch
namadac epoch
# Monitor node logs
journalctl -u namadad -f
Important Monitoring Commands
# Check if your validator is in the active set
namadac validator-state --validator $VALIDATOR_ADDRESS
# Monitor consensus participation
namadac consensus-state
# Check rewards
namadac rewards --validator $VALIDATOR_ADDRESS
Troubleshooting
Common Issues
Node not syncing:
# Check peers and connectivity
namadac status | jq .sync_info
# Check logs for errors
journalctl -u namadad --since "1 hour ago" | grep -i error
Validator not active:
# Ensure you have enough bonded stake
namadac validator-state --validator $VALIDATOR_ADDRESS
# Check if you're in the consensus set
namadac consensus-state | grep $VALIDATOR_ADDRESS
Service fails to start:
# Check service logs
journalctl -u namadad -n 50
# Check file permissions
ls -la $HOME_DIR/
# Verify binary installation
which namada
namada --version
Support Resources
For help and support:
- Namada Documentation: docs.namada.net
- Validator Documentation: docs.namada.net/operators/validators
- GitHub: github.com/anoma/namada
- Discord: discord.gg/namada
- Community Forum: forum.namada.net
This setup creates a production-ready Namada validator. Always test configurations on testnets before deploying to mainnet.
Important Notes:
- Keep your validator keys secure and backed up
- Monitor your validator's performance and uptime regularly
- Stay updated with network upgrades and governance proposals
- Maintain adequate stake to remain in the active validator set