验证人是一个已同步的全节点,它已经在链上注册并绑定了质押。您首先安装并同步节点,然后通过调用质押预编译 (0x0000000000000000000000000000000000000800) 上的 createValidator 来注册它。本页介绍注册步骤。有关节点本身的信息,请参阅安装节点和节点配置。
先决条件
- 主网(链 ID
988)上一个完全同步的全节点。参阅安装节点。 ~/.stabled/config/config.toml中double_sign_check_height设置为2或更高。- 已安装 Foundry 以使用
cast调用预编译。 - 您的验证人的 EVM 地址上已存入质押金额,以 USDT0 计。
在继续之前,请确认节点已赶上。catching_up 必须为 false。
curl -s localhost:26657/status | jq '.result.sync_info.catching_up'false步骤 1:准备验证人密钥
创建操作员账户,然后读取 createValidator 所需的两个值:共识公钥(base64)和验证人的 EVM 地址。
# 创建验证人操作员账户
stabled keys add validator
# 共识公钥 (base64) — 保存此值
stabled comet show-validator | jq .key
# 派生验证人的 EVM 地址 (0x 形式)
stabled keys parse $(stabled keys show validator -a)"AbCd...base64PubKey...=="
# ...
# 然后,evm 地址是 0xCAEA59C7476C87D0FF6BE6F04DA207601D5BE7D0步骤 2:设置环境
# 质押预编译合约地址
export STAKING_ADDRESS="0x0000000000000000000000000000000000000800"
# 主网 EVM RPC
export RPC_URL="https://rpc.stable.xyz"
# 您的操作员私钥和验证人 EVM 地址
export PRIVATE_KEY="your_private_key_here"
export VALIDATOR_ADDRESS="0xYourValidatorAddress"
# 步骤 1 中的共识公钥
export PUBKEY="AbCd...base64PubKey...=="
# 自委托金额,以 wei 为单位(18 位小数)。1000000000000000000 = 1 token
export AMOUNT="1000000000000000000"步骤 3:创建验证人
调用质押预编译上的 createValidator。该函数接受一个 description 元组,一个 commissionRates 元组,最小自委托,验证人地址,共识公钥和绑定金额。使用 cast 对其进行编码和发送。
# createValidator(
# (moniker, identity, website, securityContact, details),
# (rate, maxRate, maxChangeRate),
# minSelfDelegation, validatorAddress, pubkey, value
# )
cast send "$STAKING_ADDRESS" \
"createValidator((string,string,string,string,string),(uint256,uint256,uint256),uint256,address,string,uint256)" \
"(\"My Validator\",\"keybase-id\",\"https://example.com\",\"security@example.com\",\"My validator description\")" \
"(100000000000000000,200000000000000000,10000000000000000)" \
"1000000000000000000" \
"$VALIDATOR_ADDRESS" \
"$PUBKEY" \
"$AMOUNT" \
--rpc-url "$RPC_URL" \
--private-key "$PRIVATE_KEY"transactionHash 0x4f...c2
status 1 (success)佣金元组是 (rate, maxRate, maxChangeRate),每个都按 18 位小数缩放。示例设置 10% 的费率 (100000000000000000),20% 的上限和 1% 的每日最大变化。maxRate 和 maxChangeRate 在创建时固定,以后无法编辑。成功的调用会发出 CreateValidator 事件。有关每个字段的详细信息,请参阅质押预编译参考。
步骤 4:验证
通过从质押预编译中读取您的验证人,然后检查它是否正在签名区块,来确认验证人已注册并绑定。
# 读取您的验证人链上记录
cast call "$STAKING_ADDRESS" \
"validator(address)" "$VALIDATOR_ADDRESS" \
--rpc-url "$RPC_URL"
# 确认节点报告验证人信息
curl -s localhost:26657/status | jq '.result.validator_info'# validator() 返回标识、代币、佣金和绑定状态 (3)
# validator_info 显示您的共识地址和非零投票权添加自委托
要在创建后向您自己的验证人绑定更多质押,请在相同的预编译上调用 delegate。
cast send "$STAKING_ADDRESS" \
"delegate(address,address,uint256)" \
"$VALIDATOR_ADDRESS" "$VALIDATOR_ADDRESS" "$AMOUNT" \
--rpc-url "$RPC_URL" \
--private-key "$PRIVATE_KEY"status 1 (success)注册后
保持验证人健康并为网络升级做好准备:
- 使用 监控节点 中的 Prometheus 和 Grafana 堆栈监控签名和未出块。
- 自动化升级,以免错过升级高度。请参阅 安装节点 中的 Cosmovisor 设置和 升级节点。
- 使用 故障排除节点 诊断问题(未同步,未签名)。

