管理驗證器
瞭解如何創建、修改、查看、解禁驗證器。
先決條件
創建你的驗證器
您的節點共識公鑰 (dstvalconspub...
) 可用於通過抵押 NXN 代幣來創建新的驗證器。您可以通過運行以下命令找到您的驗證器公鑰:
stcd tendermint show-validator
🚨 危險:切勿使用 test
鍵控後端創建您的主網驗證器密鑰。這樣做可能會導致您的資金通過eth_sendTransaction
JSON-RPC 端點遠程訪問,從而導致資金損失。
Ref: 安全建議:不安全配置的 geth 可以遠程訪問資金
要在測試網上創建驗證器,只需使用以下命令:
stcd tx staking create-validator \
--amount=100000000000000000000nxn \
--pubkey=$(stcd tendermint show-validator) \
--moniker="choose a moniker" \
--chain-id=<chain_id> \
--commission-rate="0.05" \
--commission-max-rate="0.10" \
--commission-max-change-rate="0.01" \
--min-self-delegation="1000000" \
--gas="auto" \
--gas-prices="5000000000dst" \
--from=<key_name>
📣 提示 : 指定佣金參數時,commission-max-change-rate
用於衡量 % point 相對於 commission-rate
的變化。例如。 1% 到 2% 是 100% 的增長率,但只有 1 個百分點。
📣 提示 : Min-self-delegation
是一個嚴格的正整數,表示您的驗證者必須始終擁有的最小自我委託投票權。 min-self-delegation
為 1000000000000000000
意味著您的驗證者的自我委託永遠不能低於 1 nxn
您可以使用第三方瀏覽器確認您在驗證人集中。
編輯驗證器說明
您可以編輯驗證器的公開描述。此信息用於識別您的驗證者,委託人將根據這些信息來決定向哪些驗證者下注。確保為下面的每個標誌提供輸入。如果命令中未包含標誌,則該字段將默認為空(--moniker
默認為機器名稱),如果該字段從未設置過,或者如果過去設置過則保持不變。
--identity
可用於通過 Keybase 或 UPort 等系統驗證身份。與 Keybase 一起使用時,應使用 keybase.io 帳戶生成的 16 位字符串填充 --identity
。這是一種跨多個在線網絡驗證您身份的加密安全方法。 Keybase API 允許我們檢索您的 Keybase 頭像。這就是您可以將徽標添加到驗證器配置文件的方法。
stcd tx staking edit-validator
--moniker="choose a moniker" \
--website="https://daodst.com" \
--identity=6A0D65E29A4CBC8E \
--details="To infinity and beyond!" \
--chain-id=<chain_id> \
--gas="auto" \
--gas-prices="5000000000dst" \
--from=<key_name> \
--commission-rate="0.10"
⚠️注意:commission-rate
值必須遵守以下要求:
- 必須在 0 和驗證者的
commission-max-rate
之間 - 不得超過驗證者的
commission-max-change-rate
,這是每天的最大百分比變化率。換句話說,驗證者每天只能在commission-max-change-rate
範圍內更改其佣金一次。
查看驗證器說明
使用此命令查看驗證器的信息:
stcd query staking validator <account_cosmos>
跟踪驗證器簽名信息
為了跟踪過去驗證器的簽名,您可以使用 signing-info
命令:
stcd query slashing signing-info <validator-pubkey>\
--chain-id=<chain_id>
解禁驗證器
當驗證者因停機而“入獄”時,您必須從運營商賬戶提交 Unjail
交易,以便能夠再次獲得區塊提議者獎勵(取決於區域費用分配)。
stcd tx slashing unjail \
--from=<key_name> \
--chain-id=<chain_id>
確認您的驗證器正在運行
如果以下命令返回任何內容,則您的驗證器處於活動狀態:
stcd query tendermint-validator-set | grep "$(stcd tendermint show-address)"
📣 提示 : $install_path
用來表示您安裝 stcd
二進製程序的路徑
您現在應該可以在其中一個 Daodst 瀏覽器中看到您的驗證器。您正在尋找 $install_path/.stcd/config/priv_validator.json
文件中的 bech32
編碼的 address
。
⚠️注意 要進入驗證者集合,您需要擁有比第 100 個驗證者更多的總投票權。
停止你的驗證器
當嘗試執行例行維護或計劃即將進行的協調升級時,讓您的驗證器系統地、優雅地停止是很有用的。
您可以通過將 halt-height
設置為您希望節點關閉的高度或將 --halt-height
標誌傳遞給 stcd
來實現此目的。
提交塊後,節點將在給定高度以零退出代碼關閉。
常見問題
問題 #1:我的驗證器是 voting_power: 0
您的驗證者已入獄。如果驗證者不對最後10000
塊中的500
進行投票,或者如果他們雙重簽名,驗證者將被監禁,即從活動驗證者集合中移除。
如果您因停機而入獄,您可以將您的投票權還給您的驗證者。首先,如果 stcd
沒有運行,請重新啟動它:
stcd daemon
等待你的全節點趕上最新的區塊。然後,您可以 解禁您的驗證器 最後,再次檢查您的驗證器,看看您的投票權是否恢復。
stcd status
您可能會注意到您的投票權比以前少了。那是因為你因停機而被削減了!
問題 #2:我的節點因為too many open files
而崩潰
Linux 可以打開的默認文件數(每個進程)是1024
。眾所周知,stcd
可以打開超過 1024
個文件。
這會導致進程崩潰。快速修復是運行 ulimit -n 40960
(增加允許打開的文件數),然後使用 stcd daemon
重新啟動進程。
如果您使用 systemd
或其他進程管理器來啟動 stcd
,這可能需要在該級別進行一些配置。
修復此問題的示例systemd
文件如下:
# /etc/systemd/system/stcd.service
[Unit]
Description=Daodst Chain Node
After=network.target
[Service]
Type=simple
User=ubuntu
WorkingDirectory=/home/ubuntu
ExecStart=/home/ubuntu/go/bin/stcd start
Restart=on-failure
RestartSec=3
LimitNOFILE=40960
[Install]
WantedBy=multi-user.target