Skip to content

管理驗證器

瞭解如何創建、修改、查看、解禁驗證器。

先決條件

創建你的驗證器

您的節點共識公鑰 (dstvalconspub...) 可用於通過抵押 NXN 代幣來創建新的驗證器。您可以通過運行以下命令找到您的驗證器公鑰:

stcd tendermint show-validator

🚨 危險切勿使用 test 鍵控後端創建您的主網驗證器密鑰。這樣做可能會導致您的資金通過eth_sendTransactionJSON-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-delegation1000000000000000000 意味著您的驗證者的自我委託永遠不能低於 1 nxn

您可以使用第三方瀏覽器確認您在驗證人集中。

編輯驗證器說明

您可以編輯驗證器的公開描述。此信息用於識別您的驗證者,委託人將根據這些信息來決定向哪些驗證者下注。確保為下面的每個標誌提供輸入。如果命令中未包含標誌,則該字段將默認為空(--moniker 默認為機器名稱),如果該字段從未設置過,或者如果過去設置過則保持不變。

指定您正在編輯的驗證器。如果您選擇不包含某些標誌,請記住必須包含 --from 標誌以標識要更新的驗證器。

--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