分佈式驗證者技術可以如何減緩傳統驗證者客戶端的風險?它在整個架構裡扮演什麼角色?

原文:Ethereum Distributed Validator Specification(github.com/ethereum)

作者: Aditya Asgaonkar

編譯: EthereumCN

原用標題:以太坊分佈式驗證者規範

分佈式驗證者 (Distributed Validators, DV) 是一種將一個以太坊驗證者的工作分配給一組分散節點的技術,以提高與在一個單一機器上運行一個驗證者客戶端相比的韌性 (安全性、活性,或兩者兼有)。

引介

動因

傳統的驗證者客戶端設置

以太坊驗證者通過用他們的質押私鑰對消息簽名 (例如區塊或證明) 來參與權益證明 (PoS) 協議。質押私鑰只能通過客戶端軟件來訪問,客戶端根據分配給驗證者的職責安排消息的創建和簽名。傳統的驗證者客戶端設置會有一些風險:

  • 質押私鑰存在一個地方。如果一個攻擊者獲得了這個密鑰,它可以創建衝突的消息,從而導致驗證存款被罰沒。
    • 不運行自己的驗證者的質押者需要把他們的質押私鑰交給運營商。為了保證他們質押私鑰的安全,他們必須信任該運營商。
  • 如果驗證者客戶端軟件不能創建及時的消息以履行驗證者職責,該驗證者會遭受怠工懲罰 (inactivity),餘額會減少。
    • 這可能是由於軟件崩潰、斷網、硬件故障等原因造成的。
  • 如果驗證者客戶端連接的信標節點出現故障,驗證者可能跟在一個少數節點所在的分叉上,導致在 PoS 協議的其他部分顯示是離線狀態。

分佈式驗證者協議

分佈式驗證者協議提供了一個解決方案,以減輕與傳統的單個驗證者設置相關的風險與擔憂。此外,該協議還可以用來實現先進的質押設置,例如去中心化的質押池。

基本概念

請注意:請參考詞彙表,了解分佈式驗證者規範中引入的新術語的解釋。(譯者註:見文末)

分佈式驗證者背後的兩個基本概念是:

  • 共識:單個驗證者的職責被分給幾個共同驗證者 (co-validator) ,他們必須協作,在對任何消息簽名之前就如何投票達成一致。
  • M-of-N 門限簽名 (threshold signatures):驗證者的質押私鑰被分割為 N 個部分,每個共同驗證者持有一個 share 。當至少有 M 個共同驗證者對如何投票達成共識時,他們分別用各自的 share 來對消息簽名,一個組合簽名可以由這些 share 重構出來。

PoS 以太坊使用的是 BLS 簽名方案,其中私鑰可以使用 M-of-N  秘密共享技術 (使用 Shamir's Secret Sharing 方案),以實現 M-of-N 門限簽名。

(譯者註:Shamir's Secret Sharing 被用於以分佈式的方式來保護秘密。秘密被分割為多個部分,這些部分被稱為 share, 這些 share 可以用來重構原來的秘密。而通過 Shamir's Secret Sharing 解密需要一個最低數量的 share,被稱為門限。)

通過把一個合適的 (偏重於安全性的) 共識算法和一個 M-of-N 門限簽名方案組合起來,這個 DV 協議確保共識是得到密碼學保證的,且至少有 M 個共同驗證者對任何決定達成一致。

資源

實現

以下是分佈式驗證者技術的現有實現 (但不一定是本規範的實現)。

文檔

總體架構

General Architecture

General Architecture

本規範提出一種實現分佈式驗證者客戶端 (Distributed Validator Client, DVC) 軟件的方法,作為信標節點和一個遠程簽名者 ( Remote Signer , RS) 之間的中間件:

  • 信標節點和遠程簽名者之間的所有通信都由 DVC 管理,以便它能提供額外的分佈式驗證者功能。
  • 信標節點和遠程簽名者不知道 DVC 的存在,也就是說,它們以為彼此像往常一樣相互連接。

假設

  • 我們假設總共有 N 個節點,以及一個 M-of-N 門限簽名方案。
    • 為了與拜占庭容錯共識協議兼容,我們假設 M = ceil(2 * N / 3)
  • 本規範假設某種基於領袖的、偏重安全性的共識協議,讓共同驗證者選定相同的證明/區塊進行簽名。我們假設共識協議在 M 個正確節點下成功運行,且在 N 個總節點中不超過 F = (N-1)/3  個拜占庭節點和不超過 N - M - F  防失敗節點 (fail-stop node)。(譯者註:拜占庭節點指的是在網絡裡故意撒謊或誤導其他節點的背叛節點。)
  • 我們假設驗證者客戶端安全運行的通常前提條件包括最新的抗罰沒數據庫、正確的系統時鐘等。
  • 我們暫時不考慮對 “正確” 以太坊分叉的投票——這個功能將在未來的更新里加上。

理想的保證

  • 安全性 (防止密鑰被盜):
    • 除非 N 個共同驗證者中有多於 M 個驗證者的安全受到影響,否則質押者私鑰是安全的。
  • 安全性 (防止罰沒):
    • 在異步網絡的假設下,除非多於三分之一的共同驗證者成了背叛者,否則驗證者永遠不會被罰沒。
    • 在同步網絡的假設下,除非多於三分之二的共同驗證者成了背叛者,否則驗證者永遠不會被罰沒。
  • 活性:在部分同步的網絡裡,除非多於三分之一的共同驗證者成了叛徒,否則協議最終都會產生一個新的證明/區塊。

規範

關於規範的技術細節描述在 src/dvspec/ :  https://github.com/ethereum/distributed-validator-specs/blob/dev/src/dvspec。

詞彙表

以太坊概念

  • 驗證者:參與權益證明以太坊驗證的公鑰。在階段 0,驗證者預期會為信標鏈區塊履行證明和區塊提議的職責。
  • 驗證者客戶端 (Validator Client, VC):履行驗證者職責的軟件。VC 能訪問驗證者的私鑰。
  • 遠程簽名者 (RS):負責以太坊私鑰管理的軟件,特別是用於對以太坊消息 (例如區塊、證明等) 的簽名。RS 運行一個服務器,用於接受傳入的對該類消息簽名的請求。

密碼學概念

  • 私鑰分片 (Key Share):作為門限簽名方案一部分的單個密鑰。
  • 簽名分片 (Signature Share):對來自單個私鑰 share 的一些數據的簽名。多個這樣的簽名 share 需要組合起來生成一個完整的簽名。

分佈式驗證者概念

  • 分佈式驗證者 (DV):一組參與者共同履行一個驗證者的職責。驗證者的私鑰在多個參與者中是秘密共享的,因此在沒有參與者的一定多數門限下,一個完整的簽名是無法形成的。
  • 共同驗證者 (Co-Validator)  :參與 DV 協議成為一個特定驗證者的 BLS 公鑰門限驗證者。
  • 分佈式驗證者客戶端 (DVC):通過運行 DV 協議 (或者,作為多個共同驗證者來參與,每個共同驗證者身份與不同的驗證者相關聯)參與成為一個共同驗證者的軟件。DVC 能訪問共同驗證者的私鑰,即所對應的驗證者的秘密共享門限私鑰。

實例

使用上述術語的實例說明:

  • 公鑰為 0xa5c91...  的以太坊驗證者作為一個分佈式驗證者在運行。
  • 有 4 個共同驗證者參與到驗證者 0xa5c91...  的分佈式驗證者中。
  • 與 0xa5c91...  相關聯的私鑰在 4 個共同驗證者中使用 3-of-4 的秘密共享方案來拆分,這樣就建立了一個 3-of-4 的門限簽名方案。
    • 更簡單地說,0xa5c91...  的私鑰被拆分為 4 份,每一份由共同驗證者中一名來託管,這樣必須至少有共同驗證者中的三名合作才能從 0xa5c91...  產生一個簽名。
  • 每個共同驗證者都在運行分佈式驗證者客戶端軟件來參與分佈式驗證者。

ECN 的翻譯工作旨在為中國以太坊社區傳遞優質資訊和學習資源,文章版權歸原作者所有,轉載須註明原文出處以及 ethereum.cn,若需長期轉載,請聯繫 eth@ecn.co 進行授權。

免責聲明:作為區塊鏈信息平台,本站所發布文章僅代表作者及嘉賓個人觀點,與 Web3Caff 立場無關。本文內容僅用於信息分享,均不構成任何投資建議及要約,並請您遵守所在國家或地區的相關法律法規。