1 TL;DR
TeleportDAO 和 Eigen Labs 于近日聯合發表了一篇論文,重點關注了輕節點在權益證明(PoS)區塊鏈中訪問和驗證鏈上數據時面臨的安全和效率挑戰。該論文提出了一種新的解決方案,通過經濟激勵和有保險的預安全機制,以及客制化「可編程安全」性和具有成本效益等一系列措施來確保 PoS 區塊鏈中輕節點的安全性和效率。十分具有前瞻性,值得深入研究。
注:Eigen Labs 是 Restaking 協議 EigenLayer 和 EigenDA 的背后開發商,Eigen Labs 目前已從 a16z、Polychain、Blockchain Capital 等著名風投機構募集了超過 1 億 5 千萬美金。
TeleportDAO 位于加拿大溫哥華,是一家專注于比特幣和 EVM 公鏈之間的跨鏈通信基礎設施項目,目前該協議已通過 Coinlist 進行了一輪公開發售和融資成功籌集了 900 萬美元。此輪融資得到了包括 Appworks、OIG Capital、DefinanceX、Oak Grove Ventures、Candaq Ventures、TON、Across 和 bitSmiley 在內的多家投資者的參與。
2 輕節點設計現存問題
目前來說,在 PoS 區塊鏈中,驗證者通過鎖定一定數量的質押(如以太坊中的 32 ETH)來參與共識網絡,從而確保網絡安全。因此,PoS 區塊鏈安全的本質是由經濟保護的,即總質押越大,攻擊共識網絡所需的成本或損失就越大。執行這種罰沒機制依賴于一種稱為「問責安全」的功能,即如果驗證者簽署了相互沖突的狀態,就可以罰沒質押。
全節點在維護 PoS 區塊鏈完整性方面發揮著至關重要的作用。它們存儲所有區塊交易信息、驗證共識簽名、復制完整的交易歷史副本,并執行狀態更新。這些過程需要大量計算資源和復雜的硬件。例如,運行一個完整的以太坊節點需要至少 2 TB 的固態硬盤存儲。相比之下,輕節點減少了計算資源需求,只存儲區塊頭,所以應用上也只適用于驗證特定交易 / 狀態的場景,如移動端錢包和跨鏈橋。另外,輕節點在驗證交易時依賴全節點提供區塊信息,但目前的節點服務商市場份額較為集中,因此安全性、獨立性和即時性都無法完全保障。因此本文探討了輕節點實現最佳安全性下,在數據獲取成本和延遲之間的權衡方案。
3 現有的輕節點設計方案
比特幣引入了簡單支付驗證(SPV)作為其輕節點協議。SPV 使輕節點能夠使用 Merkle Proof 和區塊頭來驗證特定區塊中是否包含交易。因此,輕節點只需下載區塊鏈的區塊頭,就可以通過檢查區塊的深度來驗證交易的最終性。在這種情況下,比特幣中輕節點驗證共識的計算成本相對較低。然而在以太坊這樣的 PoS 區塊鏈中,共識檢查的設計本質上更為復雜。它涉及維護整個驗證者集,跟蹤他們的質押變化,以及為共識網絡執行許多簽名檢查。另一方面,PoW 輕節點的安全性依賴于大多數完整節點都是誠實的這一假設。為解決 SPV 的局限性,FlyClient 和非交互式工作證明(NiPoPoW)以亞線性(sublinear)成本向客戶端證明這些區塊。然而,他們對 PoS 共識模型的適用性弱。
相比之下,PoS 區塊鏈通過罰沒機制獲得安全性。該系統依賴于共識參與者皆為理性,即攻擊成本超過任何潛在利潤,則不會攻擊網絡。為了降低驗證成本,以太坊當前的輕節點協議依賴于同步委員會(sync committee),該委員會由 512 個隨機選擇的以太坊驗證者組成,每個驗證者質押 32 個以太坊,但簽名過程不會被罰沒。這種不可罰沒的設計存在重大安全缺陷,同步委員會中不誠實的簽名可能會誤導輕節點接受無效數據,并且不會受到任何懲罰。即使引入罰沒機制,同步委員會的總質押與龐大的以太坊驗證者池相比仍然很少(截至 2024 年 3 月,以太坊驗證者的數量已超過 100 萬)。因此,這種方法為輕節點提供的安全性無法等價于以太坊驗證者集。該模型代表了理性設置下多方計算的一種特殊變體,但無法提供基于經濟的保障,也無法解決惡意、非理性數據提供者帶來的威脅。
為了解決 PoS 引導過程中的安全和效率挑戰,PoPoS 引入了一種分段博弈,以有效挑戰 PoS 時序的對抗性 Merkle 樹。雖然它們實現了最小空間,并避免了要求客戶端始終在線和保持質押,但使客戶端能夠在重新加入網絡不產生大量成本的情況下離線的問題仍未得到解決。
另一種研究方法側重于使用零知識證明來創建簡潔的證明。例如,Mina 和 Plumo 通過使用遞歸 SNARK 組合和基于 SNARK 的狀態轉換證明,有效促進了輕量級共識驗證。然而,這些方法給區塊生產者生成證明帶來了相當大的計算負擔,而且它們沒有解決輕節點潛在損失的補償問題。在其他 PoS 協議(如 Cosmos 中使用的 Tendermint 協議)的背景下,輕節點的作用在其區塊鏈間通信(IBC)協議中進行了探討。但這些實現是針對其各自生態的,并不直接適用于以太坊或其他各種 PoS 區塊鏈。
4 輕節點新方案設計
大體上來說新方案引入了經濟安全模塊以實現「可編程性安全」,輕節點可根據自身安全需求以決定不同方案設計。在安全性假設上基本服從 1/N + 1/M,即只要保證全節點和檢察官網絡各有一個誠實有效的節點即可保證網絡正常運行。
涉及模塊 / 角色
- 區塊鏈:協議建立在一個可編程的區塊鏈,其區塊的最終確定規則是確定的。比如在以太坊區塊鏈上,一個區塊的最終完成至少需要兩個后續的 epoch,通常需要 13 分鐘左右。
- 罰沒智能合約:該協議包括一個符合標準智能合約抽象的鏈上罰沒合約。它可以訪問區塊鏈中前一個區塊的區塊哈希值。所有各方都可以向該合約發送信息。
- 數據提供商:數據提供者運行全節點并跟蹤區塊鏈的最新狀態。他們以資產為質押,提供服務以驗證輕節點請求的狀態有效性。他們用與其公鑰相對應的秘鑰簽署發送給輕節點的所有數據,從而驗證數據的來源和完整性。
- 檢察官:檢察官是連接到輕節點的全節點,協助數據驗證。任何人都可以成為檢察官,通過監視和罰沒行為不當的一方獲利。為簡單起見,下述方案假設每個輕節點至少連接到一個誠實的檢察官。
- 輕節點:輕節點為求以最小的成本驗證區塊鏈上是否包含了特定狀態 / 交易。輕節點在驗證過程中與一組數據提供者和檢察官連接。
- 網絡:數據提供商組成一個點對點(p2p)網絡,使用 Gossip 協議傳播數據。輕節點連接到一些數據提供者以發送請求和接收響應。
方案一:安全優先
方案一主要通過提出挑戰期與檢察官網絡實現數據可信性。簡單來說,輕節點會在收到提供商簽署過的數據后,將這部分的數據發給檢察官網絡審查,在一段期限內,如出現數據作假,檢察官會提醒輕節點數據不可信,智能合約的罰沒模塊會罰沒對于數據提供商的質押代幣,反之,輕節點可以相信這些數據的可信性。
輕節點請求數據具體流程:
- 輕節點從當前網絡中獲取最新的數據提供商名單,并決定一個挑戰期限。值得注意的是該挑戰期對于不同的輕節點之間是互相獨立的,但挑戰期上限是適用于所有輕節點。挑戰期限是檢察官網絡用于檢查數據可信性的最長時間,因此時間越長,單比交易傳遞延遲越久。
- 獲取完名單后,輕節點會挑選一組數據提供商,并確保他們各自的質押資金大于當前交易的價值,理論上越高的質押資金,數據提供商做惡成本越高,輕節點信任成本則越低。
- 輕節點向這組數據提供商發送相應數據請求,該請求包括對應區塊編號和該目標狀態(該交易的 inclusion proof)
- 數據提供商發送對應區塊的哈希和該交易的 inclusion proof,并附上簽名。
- 輕節點收到上述資料后,轉發給當前鏈接的檢察官網絡。如果在挑戰期結束后沒有收到數據可信性警示,那么輕節點就對該簽名進行驗證,無誤后便通過數據可信性測試。


- 但如果從檢察官網絡中收到了警示,那么輕節點需要舍棄先前收到的簽名。檢察官網絡會提交相關的證明給智能合約的罰沒模塊,智能合約在檢查過數據后如果發現做惡情況確實發生,那么對應的數據提供商的質押則會被罰沒。由于部分 / 全部選擇的數據提供商被罰沒,所以輕節點需要重新從當前網絡中獲取新一批數據提供商名單,以確罰沒事件的確發生。


其他要點:
- 任何全節點都可以通過向智能合約發起「注冊」和「提款」請求去參與 / 離開數據提供商網絡。注冊參與數據提供商網絡有最低的質押門檻。一旦全節點選擇發起提款,那么他們在該網絡的狀態會立刻改為「離開」,并且無法接收輕節的請求,以防快進快出的做惡可能。另外,數據提供商網絡會按照一個周期更新當前網絡活躍的數據提供商,在此期間數據提供商無法收到提款款項,提款請求會在當前更新周期內的最后一個區塊生效,同時更新頻率會比挑戰期限上限高,以確保所有輕節點數據可用性測試皆已完成。因為數據提供商網絡的活躍性,輕節點需要在每輪網絡更新周期的時候重新獲取當前網絡活躍提供商的名單。如果選擇延長這個更新周期,輕節點可以享受更簡潔的驗證過程(可通過上一個周期的「注冊」和「提款」請求去預估當前活躍名單),但希望離開的全節點則需要面臨更長的等候時間。
- 檢察官網絡收到數據簽名后,會檢查簽名是否屬于該數據提供商,并且衡量數據是否在共識網絡中被「最終確認」。如果數據沒有出現在合理鏈上有兩種可能。第一,數據還沒有被當前區塊鏈最終確認,不同鏈有不同的最終確定性規則,比如最長鏈原則。第二,交易在別的合理鏈的區塊。如果上述數據出現作假,檢察官網絡會發送一個罰沒請求至智能合約,當中包括數據提供商的公鑰、數據提供商的簽名、區塊編號,同時間發送該罰沒事件的證明以提醒輕節點。智能合約會在收到這些數據后,通過共識層的最終確定性原則衡量當前最終確認的區塊編號與收到的數據是否一致,如果不一致,那么罰沒事件觸發。另外,如果輕節點在選擇數據提供商后,該數據提供商因另一組數據請求被罰沒,檢察官網絡會及時發送該罰沒事件以提醒輕節點該提供商的數據可信性較低,輕節點則會重新獲取名單并選擇其他提供商。
評估:
- 安全性:輕節點通過質押模塊與檢察官網絡決定了理性與非理性的數據提供商的做惡成本,以提高數據可信性。但是因為整個協議是基于共識網絡(本文在以太坊進行測試)的,所以一旦共識層遭受攻擊,本協議也會受到潛在信任危機,因此可以進一步引入名譽機制確保極端情況下的系統性風險。
- 全節點級別安全性:本方案希望提供等價于以太坊 PoS 的安全假設,即全節點做出虛假聲明需要承擔罰沒風險。
- 網絡活躍性:如果當前網絡只有少數理性數據提供商,輕節點將面臨多輪的延遲,但由于每個數據提供商的吞吐量不為零,每筆請求始終都能完成。因此只要該網路有一個理性的全節點,就能確保網絡能夠持續運行。同時,由于數據提供商的收益與質押金額大小掛鉤,這也鼓勵了全節點采取超額質押的方式保護網絡。
- 效率:文章作者團隊預估以太坊驗證者是主要參與數據提供商的用戶,因為驗證者已經在運行全節點了,并且可以通過該協議獲得額外的收益。小金額的交易可能通過單個數據提供商便可以獲取可信數據(對輕節點來說只需要驗證一次),而大筆交易可能需要多個數據提供商才能獲取可信數據(驗證次數根據提供商數量線性增加)。
方案二:效率優先
方案二在方案一的基礎上通過提出保險機制實現數據快速確認。簡單來說,輕節點根據保單金額與時長確定保險后,數據提供商部分 / 全部的質押可以被償還輕節點后續因數據做惡而產生的損失,因此輕節點收到并驗證提供商提供的數據簽名后,便可以確定該數據的初始可信性。
輕節點請求數據具體流程:
- 輕節點計算當前交易潛在最大損失,隨后制定保單金額大小與保單保期。數據提供商質押在保險的資金量大小應當大于保單金額大小已確保有足夠的償還金。
- 輕節點決定該交易的挑戰周期。值得注意的是保單保期可以覆蓋多筆交易的 inclusion check,因此輕節點選擇的總挑戰周期不能超過保期,否則可能出現部分交易無法收到保障。
- 選擇完參數后(保單金額、保單保期、數據提供商質押在保險的資金大小、數據提供商意向名單),輕節點就可以發送請求至智能合約。隨后等待區塊最終確認時間,便可以驗證保險購買是否成功。如果出現失敗,情況可能來源于其他的輕節點也選擇了該數據提供商,并且先結算,因此剩余質押不足以匹配他原本的需求。
- 輕節點發送數據請求,當中除了區塊編號和該目標狀態(該交易的 inclusion proof)還需要包括保險編號。
- 數據提供商發送數據以及簽名,輕節點驗證該簽名并轉發至檢察官網絡,隨后該筆交易已經被初步確信。
- 檢察官在收到數據以及簽名后會初步驗證數據可信性,如果出現做惡則提交證明至智能合約,并且向對應的數據提供商罰沒,該罰沒會分發給輕節點。


其他要點:
- 數據提供商的質押在保險的代幣在不同輕節點請求之間互相獨立,以防出現多重保險的償還風險。智能合約在輕節點選定數據提供商后,會把對應的質押在保險的代幣鎖定,并且其他輕節點在該保期結束前無法分配此部分的質押。如果交易之間是獨立的,那么保單金額大小與最大交易金額相同。反之,保單金額大小與交易總金額相同。在相同質押金額前提下,輕節點一般會選擇盡可能少的數據提供商以保證驗證效率。
- 數據提供商在保險期限結束前雖然可以發起發起「提款」請求,但提款款項必須在保期結束后才會收到。
- 嚴謹來說保單保期時間應當大于區塊最終確認時間 + 總挑戰期 + 通訊延遲 + 計算 / 驗證延遲。選擇越多的數據提供商,所需要的保單保期會根據總挑戰期延長。
評估:
- 可擴展性:方案二的可擴展性由數據提供商愿意質押在保險的代幣金額總量決定。
- 保單成本:因為更高的安全水平與挑戰周期掛鉤,這意味著數據提供商要質押的時間要大于或等于挑戰周期,所以越高安全需求,質押周期越長,輕節點所支付的費用越高。以公式來看,數據提供商的質押成本由數據提供商節點收益 /( 全年平均質押利用乘上每年區塊總量 ) 計算。而輕節點所需要付出的價格則是由質押成本乘上保單保期和保單大小。


方案有效性


第一,在輕節點計算效率上,輕節點兩個方案中都體現了毫秒級別的驗證效率(輕節點只需要對數據進行一次驗證)。
第二,在輕節點延遲上,按照實驗配置的不同情境下(下圖),延遲都在毫秒級別。值得注意的是延遲會根據數據提供商的數量線性增加,但延遲始終在毫秒級別。另外,方案一由于輕節點需要等候挑戰期結果,所以延遲都在 5 小時。如果檢查者網絡足夠可靠高效,那么這個 5 小時的延遲也是可以大幅減少的。


第三,在輕節點成本上,實際情況來看,輕節點的成本有二:gas fee 和保費,都會因為保單金額增加而增加。另外,對于檢查者來說,他們遞交數據時所涉及的 gas 會以罰沒金額償還,以保證有足夠的參與激勵。
5 延展方向
- 更多抵押品:目前數據提供商質押的代幣是 ETH,但交易信息是以 U 本位為計算的,這意味著輕節點在每次獲取數據時都需要衡量 ETH 的匯率以確足以維持夠高的抵押資金量如果允許多種代幣質押,數據提供商可以有更多的質押選擇,也就避免了單幣的風險敞口。
- 授權:類似于聯合挖礦,一些散戶可以通過授權他們自己的 ETH 給全節點用以參與數據提供商網絡,收益則按照他們自身的協議進行分配,可參考 LSD。
- 出塊保證:為了避免等候最終確定周期(在以太坊是 12 – 13 秒),輕節點可以通過一種保證,以減少這部分的等候時間。輕節點會先在數據請求時添加一個符號 / 標識,并且確定需要哪種保證(最終確認 /Proposed)。數據提供商在收到請求后提供對應的數據以及簽名。當數據提供商在「Proposed 保證」情況下沒有 proposed 區塊,那么他們會被罰沒。
注:Proposed 的區塊會最后被 finalized 或者成為 uncle block。
- 成本與費用:對于檢察官網絡來說,他們需要質押一定量的代幣(大于 gas)才能向智能合約提交證明。另外這部分的證明是可以通過 zkp 的方式減少費用。另外,在保險機制下,輕節點提交的保費將會給到數據提供商,而檢察官網絡則抽取部分做惡提供商的罰沒收益。
- 數據可用性:數據提供商本質上是全節點,他們除了可以參與共識層網絡,也可以驗證數據可用性。驗證可用性檢驗有兩類方案:Pull model 和 Push model。前者指的是輕節點隨機抽取從全節點獲得的數據。后者指的是出塊人分發不同區塊給數據提供商。對于采用 Pull model 的數據提供商,他們有責任去返回抽樣請求,輕節點在收到數據后轉發給受信節點 / 驗證者,并由他們嘗試還原區塊,如果不能,那么數據提供商則會被罰沒。本文的輕節點協議在此基礎上提出了保險機制,為數據可用性研究提供了新的探索方向。
6 總結與評價
本文提出的輕節點方案提供了「可編程性安全」以符合不同情況下的安全需求。方案一以更高延遲換取高安全性,而方案二通過引入保險機制為輕節點提供了「即時確認」服務。這些方案可用于需要確認交易最終性的場景,比如原子交易、跨鏈。