“
以下資訊適用於當前處於軟啟動階段的 Polkadot 網路。在軟啟動期間,網路在轉換為 PoS (權益證明) 之前先作為 PoA (權威證明) 網路啟動。你可以按照本指南設定驗證節點,但驗證節點的首次選舉和獎勵將會晚一些開啟。如果要在 Kusama 上設定驗證節點,請檢視Kusama 指南[1]。
本指南會指導你如何在 Polkadot 網路上設定驗證節點。
預備知識
在實時網路上執行驗證節點需要承擔非常多的責任!你不僅要對自己的權益負責,而且還要對當前的提名人的權益負責。如果你因為一些操作失誤被 slash,你的利益和名譽都會受到威脅。但是,執行驗證節點也會有很多好處,在獲得更多收益的同時,你也為去中心化網路的安全做出了貢獻。
由於安全性對於成功執行驗證節點至關重要,你可以檢視相關資訊保安驗證節點[2]來了解構建基礎結構時要考慮的因素。Web3 基金會還維護了一個安全驗證人設定的參考文件[3],你可以透過自己部署來使用 (點選這裡[4]檢視影片操作過程)。在你成為驗證人的不斷積累過程中,你可能會把這個儲存庫作為起點,做適當的修改和自定義。
如果你需要幫助,請在 Riot 上點選訪問Polkadot Validator Lounge[5]。
我們團隊及其他驗證人會在這裡提供幫助和解答,或者根據經驗分享一些小提示。我需要多少 DOTs ?
你可以在檢視這裡[6]粗略估算至少需要多少 DOT。驗證節點的篩選是透過Phragmen 演算法[7],要被選入驗證人節點池,也就是成為驗證節點,你需要一筆最小質押。這部分質押可以是你自己也可以來自提名人[8]。這意味著,作為最小質押,你必須擁有足夠的 DOT 存款來設定 Stash 和 Controller 賬戶[9],以及一些額外的用於交易的手續費。其餘的 DOT 可能來自提名人。
注意:你為驗證節點投入的任何 DOT 都有可能被 slash,這意味著不安全或者不正確的設定可能會直接導致 DOT 丟失!如果你沒有信心可以成功執行一個節點,建議將 DOT 提名給受信任的驗證節點。
初始設定要求
初學者執行驗證節點的最常見方法是執行在 Linux 的雲伺服器上。你可以選擇自己喜歡的VPS[10]供應商, 以及任何你喜歡的作業系統來使用。本指南中我們將使用Ubuntu 18.04,但其他平臺的說明應該與此類似。
Polkadot 中的交易權重以標準硬體為基準。建議驗證節點至少執行標準硬體,以確保他們能夠及時處理所有塊。以下內容不是最低要求但如果你決定以低於此的速度執行,則可能會遇到效能問題。標準硬體
有關硬體標準的完整詳細資訊,請參見這裡[11]。
CPU- Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz
儲存- NVMe 固態驅動器。應該合理調整大小以應對區塊鏈增長。Polkadot 的前 6 個月,大約可以使用在 30GB - 50GB 之間,但需要每 6 個月重新評估一次。
記憶體- 64 GB。
以上釋出的規格絕不是你在執行驗證人時能使用的最低規格, 但是應該注意,如果你使用的規格更低,則可能需要切換一些額外的最佳化,才能與使用標準配置的其他驗證人相同。安裝 Rust
在選擇雲服務提供商並設定在新伺服器上後,要做的第一件事就是安裝 Rust 。如果你從未安裝 Rust, 則首先進行安裝。
該命令可以獲取 Rust 最新版本並安裝。
curl https://sh.rustup.rs -sSf | sh
另外,如果已經安裝了 Rust,請執行以下命令確保你使用的是最新版本。
rustup update
最後,請執行此命令以安裝必要的依賴項,以便編譯和執行 Polkadot 節點軟體。
sudo apt install make clang pkg-config libssl-dev build-essential
注意:如果你使用的是 OSX 並且安裝了Homebrew[12],則可以使用下面這個同等效果的命令,而不要用上面的那個:
brew install cmake pkg-config openssl git llvm安裝和配置網路時間協議 (NTP) 客戶端
NTP[13]是一種旨在同步時間的網路協議, NTP 允許你同步網路中所有系統的時間。當前,驗證人的本地時間需要保持合理的同步,因此你應該執行 NTP 或者類似的服務。你可以透過執行以下命令檢查是否具有 NTP 客戶端:
如果你使用的是 Ubuntu 18.04 / 19.04, 則應該預設安裝了 NTP 客戶端
timedatectl
如果已經安裝並且正在執行 NTP, 則應該看到System clock synchronized: yes(或者類似的系統通知),如果你沒有看到,可以執行以下命令並安裝:
sudo apt-get install ntp
ntpd 將在安裝後自動啟動 。你可以查詢 ntpd 以獲得狀態資訊,以驗證是否一切正常:
sudo ntpq -p
構建和安裝polkadot二進位制檔案建立和安裝polkadot二進位制檔案
你將需要從 GitHubparitytech/polkadot[14]儲存庫中,使用v0.8分支中提供的原始碼來建立polkadot二進位制檔案。
通常應使用最新的0.8.x標籤。在撰寫本文的時候,它是0.8.2,但你應該檢視 "git tag" 命令 (git tag | grep "$v\0\.8") 的輸出,來檢查所有潛在的 0.8 版本列表。你應該將v0.8.2替換為最新版本(即最新編號)。你還可以在release[15]標籤上找到 Polkadot 最新版本。“
注意:如果你更喜歡用 SSH 而不是 HTTPS,則可以將下面的第一行替換為git clone [email protected]:paritytech/polkadot.git.
gitclonehttps://github.com/paritytech/polkadot.gitcdpolkadotgittag|grep"$v\0\.8"gitcheckoutv0.8.2./scripts/init.shcargobuild--release
此步驟將花費一些時間(通常需要 10 到 40 分鐘,具體取決於你的硬體)。“
請注意,如果遇到編譯錯誤,則可能必須切換到一個更近的 nightly 版本。這可以透過執行以下命令來完成:
rustupinstallnightly-2020-05-15rustupoverridesetnightly-2020-05-15rustuptargetaddwasm32-unknown-unknown--toolchainnightly-2020-05-15
如果你有興趣在本地生成金鑰,你可以從同一目錄安裝subkey。然後,你可以獲取生成的subkey可執行檔案,並將其傳輸到 air-gapped 計算機中以提高安全性。
cargoinstall--force--githttps://github.com/paritytech/substratesubkey同步鏈資料“
注意:預設情況下,驗證人節點需要處於歸檔模式。如果你已經以非存檔模式同步了鏈,則必須首先使用polkadot purge-chain刪除資料庫,然後確保使用--pruning=archive選項執行 Polkadot。
你可以透過新增以下標記,在非歸檔模式下執行驗證節點,:-unsafe-pruning --pruning OF BLOCKS>,但是請注意,歸檔節點和非歸檔節點資料庫彼此不相容,要進行切換,並且需要清除鏈資料 。
你可以透過執行以下命令開始同步節點:
./target/release/polkadot--pruning=archive
如果你不想立即以驗證節點模式啟動。
--pruning=archive標記是由--validator和--sentry標記編譯而來,因此只有在沒有這兩個選項之一的情況下啟動節點時,才一定需要它。如果你沒有將 pruning 設定為存檔節點,即使未在驗證節點和哨兵模式下執行,切換時也需要重新同步資料庫。“
注意:驗證節點應使用 RocksDb 後端進行同步。預設情況下,這是隱藏的,但可以透過傳遞--database RocksDb標記來顯示。不過之後,建議切換到使用更快,更有效的 ParityDb 選項。在資料庫後端之間切換將需要重新同步。
如果要測試 ParityDB ,可以新增標記---database paritydb。
根據執行此操作時鏈的大小,此步驟可能需要幾分鐘到幾個小時不等。
如果你想要確定需要執行多長時間,伺服器日誌 (從polkadot過程列印到 STDOUT) 將告訴你節點已處理和驗證的最新資料塊。你可以透過 [Telemetry](https://telemetry.polkadot.io/#list/Polkadot CC1 "Telemetry") 或者PolkadotJS 區塊瀏覽器[16]將其與當前最高的塊進行比較。“
注意:如果你並不持有 DOT , 則可以在軟啟動期結束之後再進行嘗試。你仍然可以執行節點,但你需要一筆最小持有量的 DOT 才能繼續,因為在軟啟動期間,轉賬是被禁用的。需要了解的是,即使對於那些擁有 DOT 的人,他們也只能表明其意圖進行驗證;在 NPoS 階段開始之前,它們也將無法執行驗證人節點。
Bond DOTs“
注意:在 Polkadot 的軟啟動階段,轉賬功能被禁用。這意味著,如果你在這段時間內設定驗證人,則可能無法按照建議的方式將 stash 和 controller 設定為兩個單獨的帳戶。你不得不使它們成為同一帳戶,這意味著你將把該帳戶繫結到其自身。但是,強烈建議你儘快更換 controller。
強烈建議你將 controller 帳戶和 stash 帳戶設為兩個單獨的帳戶。為此,你將建立兩個帳戶,並確保每個帳戶至少有足夠的資金來支付進行交易的費用,因為你的大部分資金都將用作抵押資金進行託管。
請確保不要將所有 DOT 餘額作為保證金,因為那樣會使你無法從保證金餘額中支付交易費用。
接下來設定我們的驗證節點,我們將執行以下操作:
繫結 Stash 賬戶中的 DOT。這些 DOT 將會用於質押以確保網路安全,並且可以被 slash。
然後選擇 Controller,這是決定何時開始或停止驗證的帳戶。首先轉到Staking[17]部分。點選 "Account Actions" 然後點選 "New stake" 按鈕。
dashboard bonding
Stash 賬戶- 選擇你的 Stash 賬戶。在此示例中,我們將繫結 100 milliDOTs - 確保你的 Stash 賬戶裡至少有這麼多 DOT。當然,你可以質押更多金額。
Controller 賬戶- 選擇之前建立的 Controller 賬戶。該帳戶還需要少量的 DOT 才能開始和停止驗證。
Value bonded- 你希望從 Stash 賬戶中繫結或者質押多少 DOT。請注意,你不需要繫結該賬戶中的所有 DOT。並且你要知道,之後始終可以繫結更多DOT 。但是,從任何已經繫結的賬戶中提取都需要一個解除繫結的期限。在 Kusama 網路中,解除繫結時間為 7 天。在 Polkadot 網路中,計劃解除繫結時間為 28 天。
Payment destination- 接收 staking 獎勵的帳戶。點選這裡[18]瞭解更多。
填寫完所有內容後,單擊Bond並使用你的 Stash 賬戶簽名交易。
幾秒鐘後,你應該會看到 "ExtrinsicSuccess" 訊息。你應該會看到一張包含所有賬戶的新卡 (注意: 可能需要重新整理當前介面)。右邊的保證金金額對應於 Stash 賬戶的保證金。
設定 Session key
注意:Session key 是共識關鍵,那麼,如果不確定節點是否具有當前的 Session key,你可以使用setKeys交易來使用兩種可用的 RPC 方法之一來查詢你的節點:hasKey[19]檢查特定金鑰,或hasSessionKeys[20]檢查完整的 session key 公鑰字串。
節點完全同步後,請按 Ctrl-C 停止該過程。在終端提示下,你現在將開始在驗證人模式下執行該節點,並帶有允許進行一些高階操作所需的不安全 RPC 呼叫的標記。
./target/release/polkadot --validator --name "name on telemetry"
你可以給驗證人取一個你喜歡的名字,但是你需要了解,其他人也可以看到這個名字,並且該名字將包含在使用同一 telemetry 伺服器的所有伺服器的列表中。由於很多人在使用 telemetry,因此更建議你選擇更獨特的方法。生成 Session Key
你需要透過簽名並提交外部金鑰來告知 Session Key。這就是將驗證節點與 Polkadot 上的 Controller 帳戶相關聯的方法。方法 1: PolkadotJS-APPS
你可以透過應用 RPC 在客戶端中生成Session Key[21]。如果執行此操作,請確保已將 PolkadotJS-Apps 資源管理器附加到驗證節點。你可以在 “設定” 標籤中將應用程式儀表板配置為連線到驗證節點的端點。如果你連線到由 Web3 基金會的 Parity 託管的預設終結點,則將無法使用此方法,因為對此節點發出 RPC 請求將影響託管在 public node上的本地金鑰庫,並且你需要確保自己與your node的金鑰庫進行互動。
確保連線到節點後,設定節點 session 金鑰的最簡單方法是呼叫author_rotateKeysRPC 請求在驗證者的金鑰庫中建立新金鑰。導航到 “工具箱” 選項卡,然後選擇“ RPC呼叫”然後選擇 author > rotateKeys() 選項,並記住儲存你返回的輸出以用於後續步驟。
Explorer RPC call方法 2: CLI
如果你使用遠端伺服器,則在同一臺機器上執行此命令更加容易(在節點執行時配置了預設的 HTTP RPC 埠時):
curl -H "Content-Type: application/json" -d '{"id":1, "jsonrpc":"2.0", "method": "author_rotateKeys", "params":[]}' http://localhost:9933
輸出將有十六進位制編碼的 "result" 欄位。結果是四個公鑰的串聯。儲存此結果以備後用。
此時你可以重新啟動節點, 省略--unsafe-rpc-expose標記,因為不再需要它了。提交setKeys交易
你需要透過簽名並提交外部資訊來告訴鏈上的 Session key。這就是將驗證人與你的 Controller 帳戶相關聯的工具。轉到Staking > Account Actions[22],然後在你之前生成的繫結賬戶上單擊 "Set Session Key" 。在欄位中輸入author_rotateKeys的輸出,然後單擊 "Set Session Key"。
提交這個外部資訊,你現在就可以開始驗證了。
驗證
要驗證你的節點是否線上並且已同步,跳轉至 [Telemetry](https://telemetry.polkadot.io/#list/Polkadot CC1 "Telemetry") 並找到你的節點。請注意,這將顯示 Polkadot 網路上的所有節點,這就是為什麼選擇唯一名字很重要的原因。
如果一切正常,請繼續並單擊 "Validate" 。
Polkadot UI.
Payment preferences- 你可以指定將支付給你的獎勵比例。其餘的將在提名人之間分配。
單擊 "Validate"。
如果轉到 "Staking" 選項卡,你將看到當前在網路上執行的活躍驗證人的列表。在頁面頂部,它顯示了可用的驗證人插槽的數量,以及已發出訊號表示希望成為驗證人的節點的數量。你可以轉到 “Waiting” 選項卡仔細檢查以檢視是否在此處列出了你的節點。
staking queue
驗證人集在每一個新的 era 進行重新整理。在下一個週期開始的時候,如果有可用插槽,並且選擇了你的節點加入驗證人節點池,你的節點將會成為活躍的驗證節點。在此之前,它會保留在waiting佇列中。如果沒有選擇你的驗證節點成為驗證人節點池的一部分,它將一直保留在waiting佇列中,直到成為驗證人。如果未選擇特定週期的 validator set ,則無需重新啟動。但是,可能需要增加質押 DOT 的數量或為驗證人尋找提名人,以便加入驗證人節點池。
恭喜!如果你已按照所有這些步驟進行,並被選為驗證人節點池的一員,那你已經成功開始執行 Polkadot 驗證節點了!如果你需要幫助,請聯絡Polkadot Validator chat[23]。
FAQ為什麼在無對等方時我無法同步鏈?
zero-peer
確保啟用30333libp2p 埠。最後 ,在網路上發現其他對等方需要花一點時間。
如何清除我的所有鏈上資料?如何清除我的所有鏈上資料?
./target/release/polkadot purge-chain
VPS 列表
OVH[24]
Digital Ocean[25]
Vultr[26]
Linode[27]
Contabo[28]
Scaleway[29]
使用 Docker
如果你已經安裝了 Docker ,則可以使用它來啟動驗證節點而無需構建二進位制檔案。你可以使用一個簡單的單行命令來執行此操作:
$ docker run parity/polkadot:latest --validator --name "name on telemetry"參考連結
[1]
Kusama 指南:https://wiki.polkadot.network/docs/en/mirror-maintain-guides-how-to-validate-kusama[2]
安全驗證節點:https://wiki.polkadot.network/docs/en/maintain-guides-secure-validator[3]
安全驗證程式設定的參考實現:https://github.com/w3f/polkadot-secure-validator[4]
這裡:https://www.youtube.com/watch?v=tTn8P6t7JYc[5]
Polkadot Validator Lounge:https://matrix.to/#/!NZrbtteFeqYKCUGQtr:matrix.parity.io?via=matrix.parity.io&via=matrix.org&via=web3.foundation[6]
這裡:https://wiki.polkadot.network/docs/en/learn-faq#what-are-the-ways-to-find-out-the-minimum-stake-necessary-for-the-validators[7]
Phragmen 演算法:https://wiki.polkadot.network/docs/en/learn-phragmen[8]
提名人:https://wiki.polkadot.network/docs/en/maintain-nominator[9]
賬戶:https://wiki.polkadot.network/docs/en/learn-keys[10]
VPS:https://wiki.polkadot.network/docs/en/maintain-guides-how-to-validate-polkadot#vps-list[11]
這裡:https://github.com/paritytech/substrate/pull/5848[12]
Homebrew:https://brew.sh/[13]
NTP:https://en.wikipedia.org/wiki/Network_Time_Protocol[14]
paritytech/polkadot:https://github.com/paritytech/polkadot[15]
release:https://github.com/paritytech/polkadot/releases[16]
PolkadotJS 區塊瀏覽器:https://polkadot.js.org/apps/#/explorer[17]
Staking:https://polkadot.js.org/apps/#/staking/actions[18]
這裡:https://wiki.polkadot.network/en/latest/polkadot/learn/staking/#reward-distribution[19]
hasKey:https://polkadot.js.org/api/substrate/rpc.html#haskey-publickey-bytes-keytype-text-bool[20]
hasSessionKeys:https://polkadot.js.org/api/substrate/rpc.html#hassessionkeys-sessionkeys-bytes-bool[21]
Session Key:https://wiki.polkadot.network/en/latest/polkadot/learn/keys/#session-key[22]
Staking > Account Actions:https://polkadot.js.org/apps/#/staking/actions[23]
Polkadot Validator chat:https://matrix.to/#/!NZrbtteFeqYKCUGQtr:matrix.parity.io?via=matrix.parity.io&via=matrix.org&via=web3.foundation[24]
OVH:https://www.ovh.com.au/[25]
Digital Ocean:https://www.digitalocean.com/[26]
Vultr:https://www.vultr.com/[27]
Linode:https://www.linode.com/[28]
Contabo:https://contabo.com/[29]
Scaleway:https://www.scaleway.com/
歡迎學習 Substrate:
https://substrate.dev/
關注 Substrate 進展:
https://github.com/paritytech/substrate
關注 Polkadot 進展:
https://github.com/paritytech/polkadot
原文:https://wiki.polkadot.network/docs/en/maintain-guides-how-to-validate-polkadot
翻譯:PolkaWorld