Skip to main content

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

ComponentValueDescription
Chain IDnamada.5f5de2dd1b88cba30586420Current mainnet chain ID
Latest Versionv101.1.1Current mainnet version
Native TokenNAMNative staking token
ConsensusCometBFTTendermint-based consensus

tip

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"
info

Variable Explanation:

  • VALIDATOR_ALIAS: A unique name for your validator (used in commands)
  • IMPLICIT_ALIAS: Your wallet/account alias for signing transactions
  • COMMISSION_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

# 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
warning

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:

  1. Acquire NAM tokens for staking
  2. Transfer tokens to your validator account
  3. 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:


info

This setup creates a production-ready Namada validator. Always test configurations on testnets before deploying to mainnet.

warning

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