Namada 验证者中文教程
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 <验证者名>
给验证者地址领水
每次最多领1000个
查询验证者地址余额
在领水两个epoch(目前测试网至少20分钟+)后查询。
namada client balance --owner <钱包名> --token NAM
给验证者质押
Non-self bonding 非自质押(delegating)
用户可以随时质押任意数量的验证者。当用户质押代币时,质押不会直接计入验证者的权益(这反过来决定了其投票权),直到n + 2
当前epoch的epoch开始n
(2
由 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