NAMADA SHIELDED EXPEDITION
Link | Discord | Twitter | Docs | Dashboard | Task | Explorer1 | Explorer2 | Faucet
https://namada.catsmile.tech
crew
https://rpc-namada.catsmile.tech
crew
https://namada-indexer.catsmile.tech/block/last
wget -O $HOME/.local/share/namada/shielded-expedition.88f17d1d14/cometbft/config/addrbook.json https://files-namada.catsmile.tech/testnet/addrbook.json
wget -O $HOME/.local/share/namada/shielded-expedition.88f17d1d14/cometbft/config/genesis.json https://files-namada.catsmile.tech/testnet/genesis.json
tcp://37.60.236.83:26657
tcp://37.60.236.83:26657
PEERS="tcp://37.60.236.83:26657" sed -i 's|^persistent_peers *=.*|persistent_peers = "'$PEERS'"|' $HOME/.local/share/namada/shielded-expedition.88f17d1d14/config.toml
https://files-namada.catsmile.tech/testnet/namada-snapshot.tar.lz4
VALIDATOR_ADDRESS="tnam1q8g740srs0s29vqus9elppzaadey3yhung6xakul" # catsmile
address of validator you want to stake to tnam1q8g740srs0s29vqus9elppzaadey3yhung6xakul
catsmile
OS | CPU | RAM | SSD |
---|---|---|---|
Ubuntu 20.04 | 4 | 16 GB | 1 TB |
OS | CPU | RAM | SSD |
---|---|---|---|
Ubuntu 20.04 | 4 | 8 GB | 1 TB |
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 jq
Install Go
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
NAMADA_PORT=30
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 & Cargo
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
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.4/namada-v0.31.4-Linux-x86_64.tar.gz
tar -xvf namada-v0.31.4-Linux-x86_64.tar.gz
rm namada-v0.31.4-Linux-x86_64.tar.gz
cd namada-v0.31.4-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 Full node
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=YOUR_LINUX_USER
WorkingDirectory=$BASE_DIR
Environment="CMT_LOG_LEVEL=p2p:none,pex:error"
Environment="NAMADA_CMT_STDOUT=true"
ExecStart=$(which namada) node ledger run
StandardOutput=syslog
StandardError=syslog
Restart=always
RestartSec=5
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
Enable and start service
sudo systemctl daemon-reload
sudo systemctl enable namadad
sudo systemctl restart namadad && sudo journalctl -u namadad -f
Set Port
sudo ufw default allow outgoing
sudo ufw default deny incoming
sudo ufw allow ssh/tcp
sudo ufw allow 26656/tcp
sudo ufw enable
namadaw gen --alias $WALLET
Restore existing wallet
namadaw derive --alias $WALLET
Find your wallet address
namadaw find --alias $WALLET
Request Faucet
Check Balance
namadac balance --owner $WALLET
List wallet
namadaw list
Delete wallet
namadaw remove --alias $WALLET --do-it
send payment from one address to another
namadac transfer --source $WALLET --target ${WALLET}1 --token NAAN --amount 1 --signing-keys $WALLET --memo $MEMO
Check Sync status
curl http://127.0.0.1:26657/status | jq
Initiate 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 validator 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 a variable with the validator address:
VALIDATOR_ADDRESS="tnam1q8g740srs0s29vqus9elppzaadey3yhung6xakul" # catsmile
export the variable:
echo "export VALIDATOR_ADDRESS="$VALIDATOR_ADDRESS"" >> $HOME/.bash_profile \
source $HOME/.bash_profile
delegate tokens
namadac bond --source $WALLET --validator VALIDATOR_ADDRESS --amount 500 --memo $MEMO
check your user bonds
namadac bonds --owner $WALLET
check all bonded nodes
namadac bonded-stake
Add stake crew
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 --memo $MEMO
redelegate
namadac redelegate --owner $WALLET --source-validator $VAL_ADDRESS --destination-validator <destination-validator-address> --amount 10 --memo $MEMO
claim rewards crew
namadac claim-rewards --source $WALLET --validator $VAL_ADDRESS --memo $MEMO
query the pending reward tokens without claiming
namadac rewards --source $WALLET --validator $VAL_ADDRESS
generate key_1
namadaw gen --alias $WALLET
generate key_2
namadaw gen --alias ${WALLET}1
chech your public key
namadaw find --alias $WALLET | awk '/Public key:/ {print $3}'
init non-multisig account (single signer)
namadac init-account --alias ${WALLET}-multisig --public-keys $WALLET --signing-keys $WALLET --memo $MEMO
init multisig account (at least 2 signers)
namadac init-account --alias ${WALLET}1-multisig --public-keys $WALLET,${WALLET}1 --signing-keys $WALLET,${WALLET}1 --threshold 2 --memo $MEMO
create a folder for a transaction
mkdir tx_dumps
create transaction
namadac transfer --source ${WALLET}1-multisig --target ${WALLET}1 --token NAAN --amount 10 --signing-keys $WALLET,${WALLET}1 --dump-tx --output-folder-path tx_dumps --memo $MEMO
sign the transaction
namadac sign-tx --tx-path "<path-to-.tx-file>" --signing-keys $WALLET,${WALLET}1 --owner ${WALLET}1-multisig --memo $MEMO
save as a variable offline_signature 1
export SIGNATURE_ONE="<signature-file-name>"
save as a variable offline_signature 2:
export SIGNATURE_TWO="<signature-2-file-name>"
submit transaction
namadac tx --tx-path "<path-to-.tx-file>" --signatures $SIGNATURE_ONE,$SIGNATURE_TWO --owner ${WALLET}1-multisig --gas-payer $WALLET --memo $MEMO
changing the multisig threshold
namadac update-account --address ${WALLET}1-multisig --threshold 1 --signing-keys $WALLET,${WALLET}1 --memo $MEMO
check that the threshold has been updated correctly by running
namadac query-account --owner ${WALLET}1-multisig
changing the public keys of a multisig account
namadac update-account --address ${WALLET}1-multisig --public-keys ${WALLET}2,${WALLET}3,${WALLET}4 --signing-keys $WALLET,${WALLET}1 --memo $MEMO
initialize an established account
namadac init-account --alias ${WALLET}1-multisig --public-keys ${WALLET}2,${WALLET}3,${WALLET}4 --signing-keys $WALLET,${WALLET}1 --threshold 1 --memo $MEMO
randomly generate a new spending key
namadaw gen --shielded --alias ${WALLET}-shielded
create a new payment address
namadaw gen-payment-addr --key ${WALLET}-shielded --alias ${WALLET}-shielded-addr
send a shielding transfer crew
namadac transfer --source $WALLET --target ${WALLET}-shielded-addr --token NAAN --amount 10 --memo $MEMO
view balance
namadac balance --owner ${WALLET}-shielded
generate another spending key
namadaw gen --shielded --alias ${WALLET}1-shielded
create a payment address
namadaw gen-payment-addr --key ${WALLET}1-shielded --alias ${WALLET}1-shielded-addr
shielded transfers (once the user has a shielded balance, it can be transferred to another shielded address) crew
namadac transfer --source ${WALLET}-shielded --target ${WALLET}1-shielded-addr --token NAAN --amount 4 --signing-keys <your-implicit-account-alias> --memo $MEMO
unshielding transfers (from a shielded to a transparent account) crew
namadac transfer --source ${WALLET}-shielded --target $WALLET --token NAAN --amount 4 --signing-keys <your-implicit-account-alias> --memo $MEMO
IBC shielded transfers crew
namadac ibc-transfer --amount xxxx --source $WALLET --receiver <Wallet Chain IBC> --token naan --channel-id <channel-ChainIBC> --memo $MEMO
check sync status and node info
curl http://127.0.0.1:26657/status | jq
check balance
namadac balance --owner $ALIAS
check keys
namadaw list
find your validator address
namadac find-validator --tm-address=$(curl -s localhost:26657/status | jq -r .result.validator_info.address) --node localhost:26657
stake funds
namadac bond --source $WALLET --validator $VALIDATOR_ADDRESS --amount 10 --memo $MEMO
self-bonding
namadac bond --validator $VALIDATOR_ADDRESS --amount 10 --memo $MEMO
check your validator bond status
namadac bonds --owner $ALIAS
check your user bonds
namadac bonds --owner $WALLET
check all bonded nodes
namadac bonded-stake
find all the slashes
namadac slashes
non-self unbonding (validator alias can be used instead of address)
namadac unbond --source $WALLET --validator $VALIDATOR_ADDRESS --amount 1.5 --memo $MEMO
self-unbonding
namadac unbond --validator $VALIDATOR_ADDRESS --amount 1.5 --memo $MEMO
withdrawing unbonded tokens (available 6 epochs after unbonding)
namadac withdraw --source $WALLET --validator $VALIDATOR_ADDRESS --memo $MEMO
find your validator status
namadac validator-state --validator $VALIDATOR_ADDRESS
check epoch
namada client epoch
unjail, you need to wait 2 epochs
namada client unjail-validator --validator $VALIDATOR_ADDRESS --node tcp://127.0.0.1:26657 --memo $MEMO
change validator commission rate
namadac change-commission-rate --validator $VALIDATOR_ADDRESS --commission-rate <commission-rate> --memo $MEMO
change validator metadata
namadac change-metadata --validator $VALIDATOR_ADDRESS --memo $MEMO
deactivate validator
namadac deactivate-validator --validator $VALIDATOR_ADDRESS --memo $MEMO
reactivate validator
namadac reactivate-validator --validator $VALIDATOR_ADDRESS --memo $MEMO
all proposals list
namadac query-proposal
edit proposal
namadac query-proposal --proposal-id <PROPOSAL_ID>
save wallet address
WALLET_ADDRESS=$(namadaw find --alias $WALLET | grep "Implicit" | awk '{print $3}')
import the variable into system
echo "export WALLET_ADDRESS="$WALLET_ADDRESS"" >> $HOME/.bash_profile source $HOME/.bash_profile
vote
namadac vote-proposal --proposal-id <proposal-id> --vote yay --address $WALLET_ADDRESS --memo $MEMO
vote for PGF proposal
namadac vote-proposal --proposal-id <proposal-id-of-steward-proposal> --vote yay --signing-keys $WALLET --memo $MEMO
check logs
sudo journalctl -u namadad -f
check sync status and node info
curl http://127.0.0.1:26657/status | jq
check consensus state
curl -s localhost:26657/consensus_state | jq .result.round_state.height_vote_set[0].prevotes_bit_array
full consensus state
curl -s localhost:12657/dump_consensus_state
your validator votes (prevote)
curl -s http://localhost:26657/dump_consensus_state | jq '.result.round_state.votes[0].prevotes' | grep $(curl -s http://localhost:26657/status | jq -r '.result.validator_info.address[:12]')
updates every 4h
Download snapshot
cd $HOME
wget -O namada-snapshot.tar https://files-namada.catsmile.tech/testnet/namada-snapshot.tar.lz4
Stop node and unpack snapshot
sudo systemctl stop namadad
cp $HOME/.local/share/namada/shielded-expedition.88f17d1d14/cometbft/data/priv_validator_state.json $HOME/.local/share/namada/shielded-expedition.88f17d1d14/cometbft/priv_validator_state.json.backup
rm -rf $HOME/.local/share/namada/shielded-expedition.88f17d1d14/db $HOME/.local/share/namada/shielded-expedition.88f17d1d14/cometbft/data
tar -xvf $HOME/snap_namada.tar -C $HOME/.local/share/namada/shielded-expedition.88f17d1d14
mv $HOME/.local/share/namada/shielded-expedition.88f17d1d14/cometbft/priv_validator_state.json.backup $HOME/.local/share/namada/shielded-expedition.88f17d1d14/cometbft/data/priv_validator_state.json
Restart node
sudo systemctl restart namadad && sudo journalctl -u namadad -f
Delete snap file
rm -rf $HOME/namada-snapshot.tar
~~~ cd $HOME rm -rf namada git clone https://github.com/anoma/namada cd namada wget https://github.com/anoma/namada/releases/download/v0.31.4/namada-v0.31.4-Linux-x86_64.tar.gz tar -xvf namada-v0.31.4-Linux-x86_64.tar.gz rm namada-v0.31.4-Linux-x86_64.tar.gz cd namada-v0.31.4-Linux-x86_64 sudo mv namad* /usr/local/bin/ sudo systemctl restart namadad && sudo journalctl -u namadad -f
### Grafana
Download the Grafana installation
curl -o grafana.sh https://raw.githubusercontent.com/catsmile100/Validator-Testnet/main/Namada%20Shielded%20Epedition/grafana.sh
Grant execute permission to the script:
chmod +x grafana.sh
Run the Grafana
./grafana.sh
Install the necessary packages:
sudo apt-get install -y apt-transport-https software-properties-common wget
Create a directory for the apt keys
sudo mkdir -p /etc/apt/keyrings/
Download the Grafana public key and place it in the apt key directory
wget -q -O - https://apt.grafana.com/gpg.key | gpg --dearmor | sudo tee /etc/apt/keyrings/grafana.gpg > /dev/null
Add the Grafana repository to the package source list
echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
Update the package list
sudo apt-get update
Install the Grafana package
sudo apt-get install grafana
Reload the Systemd daemon
sudo systemctl daemon-reload
Start the Grafana service
sudo systemctl start grafana-server
Check the status of the Grafana service
sudo systemctl status grafana-server
- `Your Grafana should be working now`
- `Log to your grafana dashboard on port 3000*`
Link in Browser
http://SERVER_IP:3000/
- go to grafana [dashboard](https://grafana.com/grafana/dashboards)
- `search for namada , or chose ID 19014 then import it to your grafana dashboard`
- [Here](https://grafana.com/grafana/dashboards/19014-namada-blockchains)
### Cheat-Sheet
Reload services
sudo systemctl daemon-reload
Enable Service
sudo systemctl enable namadad
Disable Service
sudo systemctl disable namadad
Start service
sudo systemctl start namadad
Stop service
sudo systemctl stop namadad
Restart service
sudo systemctl restart namadad
Check service status
sudo systemctl status namadad
Check logs
sudo journalctl -u namadad -f
Sync info
curl http://127.0.0.1:26657/status | jq
Check Balance
namadac balance --owner $WALLET
find validator status
namadac validator-state --validator $VALIDATOR_ADDRESS
check epoch
namada client epoch
### 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/root/.local/share/namada/shielded-expedition.88f17d1d14 ~~~
RPC
status: completed
implementation public ✅Snapshoot
status: completed
implementation public ✅Indexer
status: completed
implementation public ✅Services
status: completed
implementation public ✅Interface-SDK
status: completed
implementation public 🛠Relayler
status: completed
implementation public 🛠Interface Osmo
status: completed
implementation public 🛠Explorer
status: Build & Setup
implementation public 🛠Tool
status: completed
implementation public 🛠