Harmony 採用 PoS+FBFT 共識機制,即首先透過 PoS 選出參與區塊簽名的節點,再透過 FBFT 達成共識。成為 Harmony 的驗證者需要質押一定數量的 ONE 通證,抵押的通證數量代表驗證者的投票份額,每個投票份額對應 FBFT 共識的一票。
為防止單個分片中出現單個/多個節點投票份額過大等問題, Harmony 採用了自適應閥值 PoS,根據分散式隨機生成協議把節點的投票份額隨機分配到不同的分片當中,而非單個驗證者連同其所有選票隨機分配到一個分片(如上圖所示)。這樣一來,即使某惡意節點持有大量的選票份額,也無法影響單個分片的選票結果。
每個週期(epoch)伊始,Harmony 網路會透過分散式隨機生成協議產生隨機數,基於隨機數來確定分片結構。週期是預定的時間間隔,在此期間,分片結構是固定的,每個分片持續與同一組驗證者執行共識。
為防止分片保持結構固定可能會出現的靜態迴圈攻擊、慢適應攻擊或完全適應攻擊等,Harmony 還採用基於 Cuckoo 規則的重新分片機制對分片的選票進行重新洗牌。此外,Harmony 還設定了使驗證者快速進行狀態同步與驗證的機制。簡單來說,每個週期的首個區塊都包含上一個週期首個區塊的雜湊連結。當驗證者新加入一個分片時,它們需要檢索狀態,並確保狀態有效。新加入的驗證者只需下載當前狀態即可獲得從當前狀態到創始區塊的路徑,新驗證者可透過灰色區塊快速驗證當前狀態(如上圖所示)。
3. Harmony EPoS 設計
Harmony 的抵押證明機制 EPoS(Effective Proof-of-Stake)是一種高效的抵押機制,可避免抵押代幣中心化,同時支援抵押複利和代幣委託,適合需要大量同等權利驗證者的分片系統。
EPoS 系統基於抵押者代幣數量的排名選取驗證者,對於每個 epoch(約為1天),前 1600 名抵押者將獲得有限的 1600 個驗證者席位(4個分片* 400個席位)。epoch 更新後,新的抵押排名將決定誰是下一個 epoch 的驗證者。在 EPoS 中,驗證者的區塊獎勵按照其“有效抵押量”的比例進行分配,而非實際抵押量。有效抵押量的共識定義如下:
其中,c 是鏈上設定的引數,median stake 表示前1600名抵押者的中位數抵押量,actual stake 則是每個驗證者持有的實際抵押數量。驗證者的有效抵押量本質上為其實際抵押量介於上限閾值(1 + c)* median stake 和下限閾值(1-c)* median stake 之間的數量。除區塊獎勵外,每個驗證者在共識中的投票權也根據驗證者的有效抵押按比例確定。
上圖為當 c = 0.15 時前 1600 位驗證者的實際抵押量和有效抵押量曲線。
隨著有效抵押的引入,排名較高的驗證者會因為抵押代幣數量過高而獲得較低迴報,間接蒙受一定經濟損失;而排名較低的驗證者則可享受額外獎勵。有效抵押在此充當均衡器,推動驗證者之間更均勻地分配抵押代幣,避免集中。
為實現複利,藍色和綠色區域中的驗證者可透過在同一驗證者節點中反覆抵押區塊獎勵來直接獲得複利,黃色區域中的驗證者則只能透過啟動新驗證者節點來獲得更多區塊獎勵。對於持有大量代幣的礦池而言,這種設計迫使其自身加強去中心化,從而避免單點故障。
此外,EPoS 支援直觀有效的代幣委託:代幣持有者可根據驗證者的佣金率、正常執行時間和其在排名中的位置,自行選擇將代幣委託給一個或多個驗證者。扣除驗證者設定的佣金費用後,塊獎勵將按委託代幣的比例分配給委託者。對委託者而言,委託給綠色區域的驗證者會獲得更高回報,這也避免大量代幣被委託給頭部驗證者,從而降低抵押中心化風險。
在節點懲罰機制設計中,節點若觸發 slash ,將削減至少 2% 的抵押代幣,且削減數量將隨著同時間被削減的驗證者的數量呈線性增加。舉例來說,若三分之一驗證者觸發雙重簽名,則每位驗證者的削減比例上升為 33%。這一規則與有效抵押機制相得益彰。若大戶的多個抵押者節點同時發起攻擊,他們的抵押代幣也會受到更為嚴重的削減。
透過上述設計,Harmony 網路得以有效避免抵押中心化,從而進一步緩解馬太效應。