Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

验证人是一个已同步的全节点,它已经在链上注册并绑定了质押。您首先安装并同步节点,然后通过调用质押预编译 (0x0000000000000000000000000000000000000800) 上的 createValidator 来注册它。本页介绍注册步骤。有关节点本身的信息,请参阅安装节点节点配置

先决条件

  • 主网(链 ID 988)上一个完全同步的全节点。参阅安装节点
  • ~/.stabled/config/config.tomldouble_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% 的每日最大变化。maxRatemaxChangeRate 在创建时固定,以后无法编辑。成功的调用会发出 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)

注册后

保持验证人健康并为网络升级做好准备:

接下来推荐

  • 质押预编译参考:查找完整的 createValidator、delegate 和 editValidator 签名和结构。
  • 节点配置:在注册之前设置 double_sign_check_height 和其他对验证人至关重要的配置。
  • 监控节点:跟踪签名、未出块和资源使用情况,以便在削减之前发现问题。
  • 索引验证人数据:一旦验证人上线,在链上读取其质押、正常运行时间和投票历史。