Install

Manual Installation

Official DocumentationRecommended Hardware: CPU: x86_64 or arm64, 8GB DDR4, 1TB of storage

Update packages and Install dependencies select 1

sudo apt update && sudo apt upgrade -y
sudo apt-get install -y make git-core libssl-dev pkg-config libclang-12-dev build-essential protobuf-compiler

Install:

cd $HOME
! [ -x "$(command -v go)" ] && {
VER="1.20.3"
wget "https://golang.org/dl/go$VER.linux-amd64.tar.gz"
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf "go$VER.linux-amd64.tar.gz"
rm "go$VER.linux-amd64.tar.gz"
[ ! -f ~/.bash_profile ] && touch ~/.bash_profile
echo "export PATH=$PATH:/usr/local/go/bin:~/go/bin" >> ~/.bash_profile
source $HOME/.bash_profile
}
[ ! -d ~/go/bin ] && mkdir -p ~/go/bin

Replace your Validator and Wallet name, save and import variables into system. Change default port if needed.

NAMADA_PORT=26
echo "export NAMADA_PORT="$NAMADA_PORT"" >> $HOME/.bash_profile
echo "export ALIAS="CHOOSE_A_NAME_FOR_YOUR_VALIDATOR"" >> $HOME/.bash_profile
echo "export MEMO="CHOOSE_YOUR_tpknam_ADDRESS"" >> $HOME/.bash_profile
echo "export WALLET="wallet"" >> $HOME/.bash_profile
echo "export PUBLIC_IP=$(wget -qO- eth0.me)" >> $HOME/.bash_profile
echo "export TM_HASH="v0.1.4-abciplus"" >> $HOME/.bash_profile
echo "export CHAIN_ID="shielded-expedition.88f17d1d14"" >> $HOME/.bash_profile
echo "export BASE_DIR="$HOME/.local/share/namada"" >> $HOME/.bash_profile
source $HOME/.bash_profile

Install Rust:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
source $HOME/.cargo/env

Install CometBFT:

cd $HOME
rm -rf cometbft
git clone https://github.com/cometbft/cometbft.git
cd cometbft
git checkout v0.37.2
make build
sudo cp $HOME/cometbft/build/cometbft /usr/local/bin/
cometbft version

Download and build Namada binaries:

cd $HOME
rm -rf namada
git clone https://github.com/anoma/namada
cd namada
wget https://github.com/anoma/namada/releases/download/v0.31.6/namada-v0.31.6-Linux-x86_64.tar.gz
tar -xvf namada-v0.31.6-Linux-x86_64.tar.gz
rm namada-v0.31.6-Linux-x86_64.tar.gz
cd namada-v0.31.6-Linux-x86_64
sudo mv namad* /usr/local/bin/
if [ ! -d "$BASE_DIR" ]; then
    mkdir -p "$BASE_DIR"
fi

Check Namada version:

namada --version

🔗 Join-network as Pre-Genesis Validator

📁 Move your pre-genesis folder to $BASE_DIR and join the network:

cd $HOME
cp -r ~/.namada/pre-genesis $BASE_DIR/
namada client utils join-network --chain-id $CHAIN_ID --genesis-validator $ALIAS

Join-network as Full Nodes or Post-Genesis Validator:

namada client utils join-network --chain-id $CHAIN_ID

Create Service file:

sudo tee /etc/systemd/system/namadad.service > /dev/null <<EOF
[Unit]
Description=namada
After=network-online.target

[Service]
User=$USER
WorkingDirectory=$BASE_DIR
Environment=TM_LOG_LEVEL=p2p:none,pex:error
Environment=NAMADA_CMT_STDOUT=true
ExecStart=$(which namada) node ledger run
StandardOutput=syslog
StandardError=syslog
Restart=always
RestartSec=10
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF

Set custom ports in config.toml:

sed -i.bak -e "s%:26658%:${NAMADA_PORT}658%g;
s%:26657%:${NAMADA_PORT}657%g;
s%:26656%:${NAMADA_PORT}656%g;
s%:26545%:${NAMADA_PORT}545%g;
s%:8545%:${NAMADA_PORT}545%g;
s%:26660%:${NAMADA_PORT}660%g" $HOME/.local/share/namada/shielded-expedition.88f17d1d14/config.toml

Enable and start service:

sudo systemctl daemon-reload
sudo systemctl enable namadad
sudo systemctl restart namadad && sudo journalctl -u namadad -f

🔎 Create and fund walletCreate wallet:

namadaw gen --alias $WALLET

Restore existing wallet:

namadaw derive --alias $WALLET

Find your wallet address:

namadaw find --alias $WALLET

Copy the implicit address (starts with tnam...) for the next stepFund your wallet from faucetAfter a couple of minutes, check the balance

namadac balance --owner $WALLET

List known keys and addresses in the wallet

namadaw list

Delete wallet

namadaw remove --alias $WALLET --do-it

Check Sync status, once your node is fully synced, the output from above will sayfalse

curl http://127.0.0.1:26657/status | jq 

🧑‍🎓 Turn your full node into a validatorInitiate a validator

namadac init-validator \
		--commission-rate 0.07 \
		--max-commission-rate-change 1 \
		--signing-keys $WALLET \
		--alias $ALIAS \
		--email <EMAIL_ADDRESS> \
		--website <WEBSITE> \ 
		--discord-handle <DISCORD> \
		--account-keys $WALLET \
		--memo $MEMO

Find your establishedvalidator address

namadaw list | grep -A 1 ""$ALIAS"" | grep "Established"

Replace your Validator address, save and import variables into system

VALIDATOR_ADDRESS=$(namadaw list | grep -A 1 "\"$ALIAS\"" | grep "Established" | awk '{print $3}') 
echo "export VALIDATOR_ADDRESS="$VALIDATOR_ADDRESS"" >> $HOME/.bash_profile 
source $HOME/.bash_profile

Restart the node and wait for 2 epochs

sudo systemctl restart namadad && sudo journalctl -u namadad -f

Check epoch

namada client epoch

Delegate tokens

namadac bond --validator $ALIAS --source $WALLET --amount 1000 --memo $MEMO

Wait for 3 epochs and check validator is in the consensus set

namadac validator-state --validator $ALIAS

Check your validator bond status

namada client bonds --owner $WALLET

Find your validator status

namada client validator-state --validator $VALIDATOR_ADDRESS

Add stake

namadac bond --source $WALLET --validator $VALIDATOR_ADDRESS --amount 1000

Query the set of validators

namadac bonded-stake

Unbond the tokens

namadac unbond --source $WALLET --validator $VALIDATOR_ADDRESS --amount 1000

Wait for 6 epochs, then check when the unbonded tokens can be withdrawed

namadac bonds --owner $WALLET

Withdraw the unbonded tokens

namadac withdraw --source $WALLET --validator $VALIDATOR_ADDRESS

Security

To protect you keys please don`t share your privkey, mnemonic and follow a basic security rules

Set up ssh keys for authentication

You can use this guide to configure ssh authentication and disable password authentication on your server

Firewall security

Set the default to allow outgoing connections, deny all incoming, allow ssh and node p2p port

sudo ufw default allow outgoing 
sudo ufw default deny incoming 
sudo ufw allow ssh/tcp 
sudo ufw allow ${NAMADA_PORT}656/tcp
sudo ufw enable

Delete node

sudo systemctl stop namadad
sudo systemctl disable namadad
sudo rm -rf /etc/systemd/system/namadad.service
sudo systemctl daemon-reload
sudo rm $(which namada)
sudo rm -rf $HOME/.local/share/namada/public-testnet-15.0dacadb8d663

Last updated