Cosmos-- 二.Gaia -- 4.在測試網(wǎng)中運(yùn)行一個驗(yàn)證人

cosmos主網(wǎng)即將上線,對文檔做了大量更新。特地翻譯了一下,方便小伙伴們閱覽, 之后會持續(xù)更新

第二章Gaia:

  1. Gaia是什么
  2. 安裝Gaia
  3. 加入公共測試網(wǎng)
  4. 在測試網(wǎng)中運(yùn)行一個驗(yàn)證人
  5. 驗(yàn)證人概覽
  6. 驗(yàn)證人安全
  7. 驗(yàn)證人相關(guān)問題
  8. 委托人指南(命令行操作)
  9. Ledger Nano支持
  10. Gaia客戶端
  11. 部署你自己的測試網(wǎng)

在公共測試網(wǎng)中運(yùn)行一個驗(yàn)證人

提示

你要加入當(dāng)前測試網(wǎng)的詳細(xì)信息(genesis.json和種子節(jié)點(diǎn))在testnet repo中可以找到。請檢查你是否加入我們最新的測試網(wǎng)。

注意 : 該文章只適用于公共測試網(wǎng)的驗(yàn)證人

在啟動你驗(yàn)證人節(jié)點(diǎn)前,確定你已經(jīng)完成了全節(jié)點(diǎn)啟動教程。

什么是驗(yàn)證人?

驗(yàn)證人負(fù)責(zé)通過投票來向區(qū)塊鏈提交新區(qū)塊。如果驗(yàn)證人不可訪問或者對多個相同高度的區(qū)塊簽名,將會遭受到削減處罰。如果變得不可用或者在同一高度上簽名,則會被削減。請閱讀有關(guān)Sentry節(jié)點(diǎn)架構(gòu)的信息,以保護(hù)您的節(jié)點(diǎn)免受DDOS攻擊并確保高可用性。請閱讀哨兵節(jié)點(diǎn)網(wǎng)絡(luò)架構(gòu)來保護(hù)你的節(jié)點(diǎn)免于DDOS攻擊并保證高的可訪問性。

警告

如果你想要成為Cosmos Hub主網(wǎng)的驗(yàn)證人,你應(yīng)該研究安全性。

如果你已經(jīng)啟動了一個全節(jié)點(diǎn),可以跳過下一節(jié)的內(nèi)容。

創(chuàng)建你的驗(yàn)證人

你的cosmosvalconspub可以用于通過抵押token來創(chuàng)建一個新的驗(yàn)證人。你可以通過運(yùn)行下面的命令來查看你的驗(yàn)證人公鑰:

gaiad tendermint show-validator

接下來,制定你的gaiad gentx命令:

注意

不要使用多于你所有的STAKE(STAKE是最新公共測試網(wǎng)絡(luò)的權(quán)益代幣名稱)!你可以通過水龍頭領(lǐng)取更多!

gaiacli tx staking create-validator \
  --amount=5STAKE \
  --pubkey=$(gaiad tendermint show-validator) \
  --moniker="choose a moniker" \
  --chain-id=<chain_id> \
  --from=<key_name> \
  --commission-rate="0.10" \
  --commission-max-rate="0.20" \
  --commission-max-change-rate="0.01" 

注意 : 在指定commission參數(shù)時,commission-max-change-rate用于度量commission-rate的百分比點(diǎn)數(shù)的變化。比如,1%到2%增長了100%,但反映到commission-rate上只有1個百分點(diǎn)。

注意 : 如果沒有指定,consensus_pubkey將默認(rèn)為gaiad tendermint show-validator命令的輸出。key_name是將用于對交易進(jìn)行簽名的私鑰的名稱。

以初始驗(yàn)證人的形式加入到genesis文件

注意 : 這一節(jié)內(nèi)容只針對想要在網(wǎng)絡(luò)啟動前就作為初始驗(yàn)證人身份的節(jié)點(diǎn)。如果你想要成為驗(yàn)證人的網(wǎng)絡(luò)是已經(jīng)啟動了的,請?zhí)^這一節(jié)。

注意 : Gaia-9002Game of stakes不會使用該步驟的方法。他們被Tendermint種子驗(yàn)證人包裹起來。如果要成為這兩個網(wǎng)絡(luò)上的驗(yàn)證人,你只需要使用create-validator命令。

如果你想作為初始驗(yàn)證人被寫入到genesis.json文件,你需要證明你(或者是委托人)在創(chuàng)世狀態(tài)中有一些權(quán)益代幣,創(chuàng)建一個(或多個)交易以將股權(quán)與你的驗(yàn)證人地址聯(lián)系起來,并將此交易包含在genesis文件中。

因此我們需要區(qū)分兩種情形:

  • 情形 1 : 你想要從你的驗(yàn)證人地址上質(zhì)押初始股權(quán)
  • 情形 2 : 你想要從一個委托人地址上質(zhì)押初始股權(quán)

情形 1 : 來自你的驗(yàn)證人地址的初始股權(quán)

在這種情形下,你需要創(chuàng)建一個gentx:

gaiad gentx \
  --amount <amount_of_delegation> \
  --commission-rate <commission_rate> \
  --commission-max-rate <commission_max_rate> \
  --commission-max-change-rate <commission_max_change_rate> \
  --pubkey <consensus_pubkey> \
  --name <key_name>

注意 : 這條命令自動在~/.gaiad/config/gentx文件夾下保存你的gentx,用以在創(chuàng)世階段執(zhí)行。

提示

使用gaiad gentx --help來查看更多默認(rèn)的參數(shù)信息。

一個gentx是一個含有自身委托交易的JSON文件。所有創(chuàng)世交易都將由一個創(chuàng)世協(xié)調(diào)員收集起來,并根據(jù)初始的genesis.json進(jìn)行驗(yàn)證。這個初始的genesis.json文件只包含有所有賬戶及它們擁有coin的列表。一旦交易執(zhí)行完,它們會被合并至genesis.json文件的gentxs字段。

情形 2 : 來自一個委托人地址的初始股權(quán)

在這種情形下,你需要驗(yàn)證人和委托人的雙重簽名。先創(chuàng)建一筆未簽名的create-validator交易,將其保存在一個名為unsignedValTx文件中:

gaiacli tx staking create-validator \
  --amount=5STAKE \
  --pubkey=$(gaiad tendermint show-validator) \
  --moniker="choose a moniker" \
  --chain-id=<chain_id> \
  --from=<key_name> \
  --commission-rate="0.10" \
  --commission-max-rate="0.20" \
  --commission-max-change-rate="0.01" \
  --address-delegator="address of the delegator" \
  --generate-only \
  > unsignedValTx.json

然后,使用你的驗(yàn)證人的私鑰對這個unsignedValTx簽名,然后保存輸出到一個名為signedValTx.json文件中:

gaiacli tx sign unsignedValTx.json --from=<validator_key_name> > signedValTx.json

接著,將這個文件交給委托人,委托人需要執(zhí)行如下命令:

gaiacli tx sign signedValTx.json --from=<delegator_key_name> > gentx.json

這個gentx.json文件需要包含在驗(yàn)證人機(jī)器的~/.gaiad/config/gentx目錄中用于在創(chuàng)世階段執(zhí)行,像情形1那樣(除了在這里它是需要被手動復(fù)制到文件夾中)。

復(fù)制初始genesis文件并執(zhí)行g(shù)enesis交易

genesis.json文件放置在gaiad的配置文件夾下:

mkdir -p $HOME/.gaiad/config
curl https://raw.githubusercontent.com/cosmos/testnets/master/latest/genesis.json > $HOME/.gaiad/config/genesis.json

注意 : 我們使用了testnets repo中的latest文件夾,該文件夾包含了最新測試網(wǎng)絡(luò)的詳細(xì)信息。如果你連接到不一樣的測試網(wǎng)絡(luò),請確保你用的是正確的genesis.json文件。

你需要載入所有其他創(chuàng)世驗(yàn)證人的創(chuàng)世交易。目前還沒有可以供驗(yàn)證人提交創(chuàng)世紀(jì)交易的存儲庫,但是我們會盡快在testnet中嘗試。

一旦你已經(jīng)在~/.gaiad/config/gentx中收集到所有的創(chuàng)世交易,你可以執(zhí)行:

gaiad collect-gentxs

注意 : 你在gentx中委托的賬戶必須在genesis文件中擁有這些抵押代幣,否則,collect-gentx會失敗。

上一個命令將收集所有的創(chuàng)世交易并完成genesis.json。驗(yàn)證配置的正確性并啟動節(jié)點(diǎn):

gaiad start

編輯驗(yàn)證人的說明信息

你可以編輯驗(yàn)證人的公開說明。此信息用于標(biāo)識你的驗(yàn)證人節(jié)點(diǎn),委托人將根據(jù)此信息來決定要委托的驗(yàn)證人節(jié)點(diǎn)。確保為下面的每個標(biāo)識提供輸入,否則該字段將默認(rèn)為空( --moniker默認(rèn)為機(jī)器名稱)。

--identity可用于驗(yàn)證和Keybase或UPort這樣的系統(tǒng)一起驗(yàn)證身份。與Keybase一起使用時,--identity應(yīng)使用由一個keybase.io帳戶生成的16位字符串。它是一種加密安全的方法,可以跨多個在線網(wǎng)絡(luò)驗(yàn)證您的身份。 Keybase API允許我們檢索你的Keybase頭像。這是你可以在驗(yàn)證人配置文件中添加徽標(biāo)的方法。

gaiacli tx staking edit-validator
  --moniker="choose a moniker" \
  --website="https://cosmos.network" \
  --identity=6A0D65E29A4CBC8E \
  --details="To infinity and beyond!" \
  --chain-id=<chain_id> \
  --from=<key_name> \
  --commission-rate="0.10"

注意 : commission-rate的值必須符合如下的不變量檢查:

  • 必須在 0 和 驗(yàn)證人的commission-max-rate 之間
  • 不得超過 驗(yàn)證人的commission-max-change-rate, 該參數(shù)標(biāo)識每日最大的百分點(diǎn)變化數(shù)。也就是,一個驗(yàn)證人在commission-max-change-rate的界限內(nèi)每日一次可調(diào)整的最大傭金變化。

查看驗(yàn)證人的說明信息

通過該命令查看驗(yàn)證人的說明信息:

gaiacli query staking validator <account_cosmos>

跟蹤驗(yàn)證人的簽名信息

你可以通過signing-info命令跟蹤過往的驗(yàn)證人簽名:

gaiacli query slashing signing-info <validator-pubkey>\
  --chain-id=<chain_id>

unjail驗(yàn)證人

當(dāng)驗(yàn)證人因停機(jī)而"jailed"(入獄)時,你必須用節(jié)點(diǎn)操作人帳戶提交一筆Unjail交易,使其再次能夠獲得區(qū)塊提交的獎勵(獎勵多少取決于分區(qū)的fee分配)。

gaiacli tx slashing unjail \
    --from=<key_name> \
    --chain-id=<chain_id>

確認(rèn)你的驗(yàn)證人節(jié)點(diǎn)正在運(yùn)行

如果下面的命令返回有內(nèi)容就證明你的驗(yàn)證人正處于活躍狀態(tài):

gaiacli query tendermint-validator-set | grep "$(gaiad tendermint show-validator)"

你必須要在區(qū)塊瀏覽器中看見你的驗(yàn)證人節(jié)點(diǎn)信息。你可以在~/.gaiad/config/priv_validator.json文件中找到bech32編碼格式的address。

注意

為了能進(jìn)入驗(yàn)證人集合,你的權(quán)重必須超過第100名的驗(yàn)證人。

常見問題

問題 #1 : 我的驗(yàn)證人voting_power: 0

你的驗(yàn)證人已經(jīng)自動解除抵押。在gaia-8000測試網(wǎng)中,我們會自動將那些在最近100個區(qū)塊有超過50個區(qū)塊沒有進(jìn)行表決的驗(yàn)證人解除抵押。因?yàn)閰^(qū)塊大概每2秒鐘提議一次,所以一個驗(yàn)證人節(jié)點(diǎn)100秒沒有響應(yīng)的話就會被解除抵押。這通常發(fā)生在你的gaiad程序崩潰的情況下。

以下是如何將投票權(quán)返還給驗(yàn)證人的方法。首先,如果gaiad沒有運(yùn)行,請?jiān)俅螁铀?/p>

gaiad start

等待你的全節(jié)點(diǎn)追趕上最新的區(qū)塊。接下來,運(yùn)行以下命令。請注意,<cosmos>是你的驗(yàn)證人帳戶的地址,<name>是驗(yàn)人帳戶的名稱。你可以通過運(yùn)行gaiacli keys list找到此信息。

gaiacli tx slashing unjail <cosmos> --chain-id=<chain_id> --from=<from>

警告

如果你在運(yùn)行unjail之前沒有等待gaiad同步完成,你將收到一條錯誤消息,告知你的驗(yàn)證人仍然是jailed狀態(tài)。

最后,檢查你的驗(yàn)證人看看你的投票表決權(quán)是否恢復(fù):

gaiacli status

你可能會注意到你的投票權(quán)比之前要少。這是因?yàn)槟愕南戮€受到的削減處罰!

問題 #2 : 我的gaiad由于too many open files崩潰

Linux可以打開的默認(rèn)文件數(shù)(每個進(jìn)程)是1024。已知gaiad可以打開超過1024個文件。這會導(dǎo)致進(jìn)程崩潰??焖傩迯?fù)運(yùn)行ulimit -n 4096(增加允許的打開文件數(shù))來快速修復(fù),然后使用gaiad start重新啟動進(jìn)程。如果你使用systemd或其他進(jìn)程管理器來啟動gaiad,則可能需要在該級別進(jìn)行一些配置。解決此問題的示例systemd文件如下:

# /etc/systemd/system/gaiad.service
[Unit]
Description=Cosmos Gaia Node
After=network.target

[Service]
Type=simple
User=ubuntu
WorkingDirectory=/home/ubuntu
ExecStart=/home/ubuntu/go/bin/gaiad start
Restart=on-failure
RestartSec=3
LimitNOFILE=4096

[Install]
WantedBy=multi-user.target
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容