在下面的螢幕截圖中,您可以看到我的節點“clb-polkadancer”,它與24個對等節點相連,每5秒鐘處理一個新的區塊,並將其新增到其本地區塊鏈(遙測使用者介面)。
請注意,本文介紹了Docker上的polkadot驗證器節點的例項化。要將其轉換為完全受信任的polkadot驗證人節點,該節點積極參與股權證明(POS)協商過程-需要額外的步驟,並將在另一篇部落格文章中介紹。
驗證人是維護一個polkadot網路的四個基本角色之一。其他三個角色是;
收集人
提名者
漁民
白皮書中描述了4個角色及其相互作用,如下所示:
驗證人的作用取決於是否有足夠高的保證金存入,儘管我們允許其他擔保方指定一個或多個驗證人成為代理人,因此,驗證人的部分保證金可能不一定由驗證人本身擁有,而是由這些提名人擁有。
那麼驗證人的主要任務是什麼呢?
驗證器必須執行具有高可用性和頻寬的中繼鏈客戶端實現。在每個區塊,節點必須準備接受在指定的鏈上批准新區塊的角色。此過程涉及接收,驗證和重新發布候選塊。
有兩個新概念引入了“中繼鏈”和“平行鏈”,並且是polkadot中的核心概念。讓我們試著用白皮書的總結來快速解釋它們:
polkadot提供了一個基礎的“中繼鏈”,在此基礎上,可以並行承載大量可驗證的、全域性一致的動態資料結構。我們稱這些資料結構為平行鏈。
因此,我們的驗證器節點是中繼鏈的一部分,接收區塊,如果塊屬於我們的託管平行鏈,將它們驗證打包並完全同步的平行鏈資料庫中。如果塊屬於不在我們範圍內的平行鏈,那麼
驗證器節點將指定一個任務,提議給另外的平行鏈的第三方,稱為collator。
如果您希望被提名為批准的驗證節點,您必須確保以7x24的方式執行節點,以便與全域性平行鏈的發展保持同步。否則,漁民會發現這種不良行為並給予懲罰,可能會把你踢出共識驗證者的角色。
如下圖所示,大約每5秒處理一個新塊,傳播時間為502毫秒。您的節點必須準備好及時處理和傳播此類請求。
準備驗證器Dockerfile
我所有的雲專案(無論是基於Java的Bot還是基於Meteor Node.js的前端)我都在Docker容器中執行。這使我能夠標準化和自動化部署和執行時配置和調優。
Polkadot已經提供了自己的Docker Image“chevdor / polkadot”,它基於“phusion / baseimage:0.10.1”,它對映到最新的Ubuntu版本18.04。
Jelastic PaaS提供的不是Ubuntu 18.04,因此我將Dockerfile更改為基於Ubuntu 16.04版本,並透過名為“talfco / clb-polkadot”的Docker Hub支援;
配置Validator Docker例項
在Hidora PaaS中,我建立了一個新的Docker Environment“polkadotDocker”,並從Docker Hub載入了我的clb-polkadot Docker映象。
重新同步階段的初始例項配置是4-5個cloudlet,它被轉換為1.6 GHz - 2.0 GHz之間的CPU,記憶體是512 MB到640 MB。
我將Polkadot資料庫目錄配置為在伺服器本地檔案系統上保留,以便在重新部署新的docker映象後不會丟失我們的完整平行鏈資料庫。
最後,我在入口點新增了-name'clb polkadancer'引數。
執行驗證節點
我啟動了例項,日誌檔案將顯示同步的進度。
建立平行鏈DB的副本
作為第一步,Validator節點必須在本地節點上構建完整的parachain DB。
正如可以在下面的螢幕截圖所示,鏈構建階段 大約在14:30完成,幾乎使用所有CPU。 完成後,CPU使用率降至200-250 MHz。 要建立大約500萬個區塊的完整平行鏈,需要6個小時的處理時間。 整體磁碟消耗約為5 GB。
載入了完整的平行鏈後,就可以重新配置例項了。 測試的第一個例項配置包括2個cloudlet,它們被轉換為256 MB RAM和800 MHz的CPU。
Cloudlets調整
對執行時統計資料的評估表明,我們節點的RAM上限(對於2個Cloudlets 256 MB)始終是最高的,這會導致額外的動態Cloudlets收費,這是次優的。
最後:別忘了開啟30333埠
在這個螢幕截圖中可以看到,某些節點只與一半的平行鏈節點(24)連線。
作者:Felix Kuestahler