Namada 验证者中文教程

Silent Validator ⚛
Namada-Chinese
Published in
12 min readNov 3, 2023

Namada专为当今的 Cosmos 用户设计,是一个基于 IBC 的 PoS L1区块链,在多资产、跨链时代重新定义了隐私。同时也兼容以太坊。

目前Namada在公共测试网阶段,即将开启激励测试网并上线主网。

本文更新于2023年12月10日,namada 版本为v0.28.0

本教程仅供参考,请以官方教程为准。

硬件要求

CPU: 4核+

Ram:8G

SSD: 1T

系统:建议使用Ubuntu 22.04

编译二进制文件

安装基础环境

sudo apt-get update -y && apt-get upgrade -y
sudo apt-get install curl tar wget clang unzip pkg-config libssl-dev libclang-dev jq build-essential bsdmainutils git make ncdu gcc git jq chrony liblz4-tool -y

安装rust

 sudo curl https://sh.rustup.rs -sSf | sh -s -- -y
source $HOME/.cargo/env

安装protoc

cd
PROTOC_ZIP=protoc-23.3-linux-x86_64.zip
curl -OL https://github.com/protocolbuffers/protobuf/releases/download/v23.3/$PROTOC_ZIP
sudo unzip -o $PROTOC_ZIP -d /usr/local bin/protoc
sudo unzip -o $PROTOC_ZIP -d /usr/local 'include/*'
rm -f $PROTOC_ZIP

编译namada的二进制文件(可选,需要16G以上RAM)

NAMADA_TAG=<当前的namada release 版本,例如v0.28.0>
cd && git clone https://github.com/anoma/namada && cd namada && git checkout $NAMADA_TAG
NAMADA_DEV=false cargo build --release --package namada_apps --manifest-path Cargo.toml
sudo rm -rf /usr/local/bin/namada*
sudo cp $HOME/namada/target/release/namada* /usr/local/bin/
sudo chmod +x /usr/local/bin/namada*

直接下载编译好的二进制文件

如果你不想自己编译二进制文件,可以选择使用官方编译好的。

有的版本官方可能没有放出编译好的文件,只能自己编译。

https://github.com/anoma/namada/releases

NAMADA_TAG=<当前的namada release 版本,例如v0.28.0>
wget https://github.com/anoma/namada/releases/download/$NAMADA_TAG/namada-$NAMADA_TAG-Linux-x86_64.tar.gz
tar -xzvf namada-$NAMADA_TAG-Linux-x86_64.tar.gz
sudo rm -rf /usr/local/bin/namada*
cp namada-$NAMADA_TAG-Linux-x86_64/namada* /usr/local/bin/
sudo chmod +x /usr/local/bin/namada*

安装CometBFT

cd && wget https://github.com/cometbft/cometbft/releases/download/v0.37.2/cometbft_0.37.2_linux_amd64.tar.gz
tar -xzvf cometbft_0.37.2_linux_amd64.tar.gz
sudo cp cometbft /usr/local/bin/

设置服务文件

sudo tee /etc/systemd/system/namadad.service > /dev/null <<EOF
[Unit]
Description=namada
After=network-online.target
[Service]
User=$USER
WorkingDirectory=$HOME/.local/share/namada
Environment=NAMADA_LOG=debug
Environment=NAMADA_TM_STDOUT=true
ExecStart=$(which namada) --base-dir=$HOME/.local/share/namada node ledger run
StandardOutput=syslog
StandardError=syslog
Restart=always
RestartSec=10
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF


sudo systemctl daemon-reload
sudo systemctl enable namadad

作为Pre genesis validator

创建账户

ALIAS=<你验证者的名称>
BASE_DIR=$HOME/.local/share/namada
namadaw --pre-genesis key gen --alias $ALIAS

你可以运行

cat $BASE_DIR/pre-genesis/wallet.toml

看到你刚刚创建的钱包

生成交易

生成 established account

TX_FILE_PATH="$BASE_DIR/pre-genesis/transactions.toml"
namadac utils init-genesis-established-account --path $TX_FILE_PATH --aliases $ALIAS

创建pre genesis validator帐户

ESTABLISHED_ACCOUNT_ADDRESS=<你刚刚创建的established account地址>
EMAIL=<你的邮箱>
SELF_BOND_AMOUNT=1000000 # Set this to the amount of NAM you want to self-bond
VALIDATOR_ALIAS=$ALIAS
namadac utils init-genesis-validator \
--address $ESTABLISHED_ACCOUNT_ADDRESS \
--alias $VALIDATOR_ALIAS \
--net-address "<你验证者节点的IP>:26656" \
--commission-rate 0.05 \
--max-commission-rate-change 0.01 \
--self-bond-amount $SELF_BOND_AMOUNT \
--email $EMAIL \
--path $TX_FILE_PATH

签名

namadac utils sign-genesis-txs --path $TX_FILE_PATH --output $HOME/.local/share/namada/pre-genesis/signed-transactions.toml --alias $ALIAS

签名得到的toml文件在 $HOME/.local/share/namada/pre-genesis/signed-transactions.toml ,我们用这个文件提交PR,示例如下

下方的内容请等待更新。

得到chain-id后加入网络

export CHAIN_ID=<Chain-id,一般公告中有>
export ALIAS=<你验证者的名称>
namada client utils join-network \
--chain-id $CHAIN_ID --genesis-validator $ALIAS

开启节点并查看日志

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

作为Post genesis validator运行全节点

得到chain-id后加入网络

export CHAIN_ID=<Chain-id,一般公告中有,例如public-testnet-14.5d79b6958580>
namada client utils join-network \
--chain-id $CHAIN_ID

开启节点并查看日志

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

检查同步状态

curl -s localhost:26657/status | jq .result.sync_info

如果”catching_up”: false 则成功同步。

节点同步后,可以进行下面的操作。

Post genesis validator创建钱包和验证者

创建钱包

namada wallet address gen --alias <钱包名>

查看地址

namada wallet address find --alias <钱包名>

领水

每次最多领1000个

查询余额

在领水两个epoch(目前测试网至少20分钟+)后查询。

namada client balance --owner <钱包名> --token NAM 

初始化验证者

namada client init-validator \
--alias <验证者名> \
--account-keys <钱包名>\
--signing-keys <钱包名> \
--commission-rate 0.05 \
--max-commission-rate-change 0.01

查询你的验证者钱包地址

需要在初始化两个epoch(目前测试网至少20分钟+)后查询。

namada wallet address find --alias <验证者名> 

给验证者地址领水

https://faucet.heliax.click/

每次最多领1000个

查询验证者地址余额

在领水两个epoch(目前测试网至少20分钟+)后查询。

namada client balance --owner <钱包名> --token NAM 

给验证者质押

Non-self bonding 非自质押(delegating)

用户可以随时质押任意数量的验证者。当用户质押代币时,质押不会直接计入验证者的权益(这反过来决定了其投票权),直到n + 2当前epoch的epoch开始n2由 PoS 参数pipeline_len决定)。质押的代币将立即从质押者的账户中扣除,并存入 PoS 系统的账户。

这里指用普通地址给验证者质押。

namada client bond \
— source <钱包名> \
— validator <验证者名>\
— amount 12.34

验证者自质押 Self-bonding

这里指用验证者钱包地址给自己验证者质押。

namada client bond \
--validator <验证者名>\
--amount 3.3

查询验证者质押

在质押两个epoch(目前测试网至少20分钟+)后查询。

namada client bonded-stake --validator <验证者名>

查询验证者是否活跃

活跃验证者名额有限,当前测试网只有257个活跃验证者,即你的验证者需要质押排名前257才能活跃。

 namadac validator-state --validator <验证者名> 

如果活跃会显示如下

Validator atest1v4xxxxxxxxxxxx is in the consensus set

也可以用

curl localhost:26657/status

如果voting power大于0 即活跃。

其他命令

查看节点日志

sudo journalctl -u namadad -f

验证者自解押(Self-unbonding)

namada client unbond \
--validator <验证者名>\
--amount 0.3

非自解押(Non-self unbonding)

namada client unbond \
--source <钱包名>\
--validator <验证者名> \
--amount 1.2

提取解除质押后的代币

当用户解除质押代币时,用户将无法立即提取代币。相反,在该epoch内解除质押的代币n将在该纪元后6个epoch可以提取(6由 PoS 参数unbonding_len决定)。

代币解除质押后,用户将能够通过bonds查询查看何时可以提取代币:

namada client bonds --owner <钱包名>

当6个epoch后,可以将解除质押完毕后的代币提取到账户

namada client withdraw \
--source <钱包名>\
--validator <验证者名>

本教程还会持续更新。欢迎关注Namada。如有意见和建议,请联系我。

官方网站:https://namada.net/

官方推特:https://twitter.com/namada

中文推特:https://twitter.com/Namada_Chinese

中文tg: https://t.me/Namada_china

--

--