跨鏈橋:用零知識證明橋接多鏈宇宙

橋是一種通信協議,用於促進區塊鏈之間的信息傳輸。

橋是一種通信協議,用於促進區塊鏈之間的信息傳輸(消息、資金或其他數據)。建造橋雖然有用,但卻是一件有風險的事情。區塊鏈歷史上最代價慘重的一些黑客攻擊都僅針對橋。

據估計,截至2022年,過去一年損失的資金中,69%是由於橋攻擊造成的,損失達數十億美元。

在本文中,我們關注使用零知識證明(ZKP)的橋結構的具體實現。雖然有些黑客攻擊不能僅僅因使用ZKP而做到預防,但ZKP的可靠性將區塊鏈共識協議的安全性擴展到了橋。

橋與零知識證明

近年來,我們看到零知識證明(ZKP)在應用方面取得了巨大的進展,其穩定性為提供安全和去中心化的應用程序創造了條件。因此,ZKP也被用於製定橋建設是有意義的。下面,我們回顧和比較這一領域的三個有趣的發展:

  • 使用zk-SNARK( Succinct Labs)對共識進行簡潔驗證:使用單個zk-SNARK實現以太坊PoS(權益證明)輕客戶端。

  • 通過zk-SNARKS (Electron Labs)將IBC (區塊鏈間通信)引入以太坊:Cosmos SDK(Tendermint)上的工作原型到帶有單個zk-SNARK 的以太坊輕客戶端。

  • zkbridge:無需信任的跨鏈橋變得實用( ( Berkley RDI ):使用2步遞歸zk-SNARK實現Cosmos SDK到以太坊輕客戶端,以太坊輕客戶端到兼容EVM的區塊鏈(本文未涉及)。

這些項目利用zk-SNARK的特性來重新定義橋應該如何設計。以上所有假設都存在一個輕客戶端協議,該協議確保節點可以同步最終區塊鏈狀態的區塊頭。將ZKP rollup背後的思想應用於橋的兩個主要挑戰是:首先,與rollup相比,橋中涉及的電路大小要大幾個數量級;其次,如何減少鏈上的存儲和計算開銷。

共識證明的簡明驗證(Succinct Labs)

Succinct Labs為以太坊2.0權益共識證明構建了一個輕客戶端,在Gnosis和以太坊之間構建了信任最小化的橋,它使用zk-SNARK(非零知識)的簡潔屬性來高效地驗證鏈上共識有效性證明。

該設置由以太坊中每27 小時隨機選擇的512 名驗證者組成的同步委員會組成。這些驗證者被要求在其運行週期內對每個區塊頭進行簽名,如果超過2/3的驗證者對每個區塊頭進行簽名,則以太坊的狀態被認為是有效狀態。驗證過程主要包括:

  • Merkle證明的區塊頭

  • Merkle證明的同步委員會中的驗證者

  • 用於正確輪換同步委員會的BLS 簽名

上述驗證需要每27小時在鏈上存儲512個BLS公鑰,並且要對每個區塊頭驗證簽名都進行驗證,這將導致512個橢圓曲線添加(在曲線BLS12-381中)和鏈上的配對檢查,該操作的成本是高昂的。這裡的核心思想是使用zk-SNARK (Groth16)來生成有效性證明(大小恆定),並且可以在Gnosis上進行有效的鏈上驗證。

使用zk-SNARKS的簡潔性來擺脫昂貴的鏈下驗證

以太坊輕客戶端在Gnosis鏈上使用Solidity智能合約,而鏈下計算包括構建circom 電路以驗證驗證者及其BLS 簽名,然後計算zk-SNARK 證明。在此之後,區塊頭和證明被提交給智能合約,然後智能合約在Gnosis鏈上執行驗證。 SNARK計算部分的電路大小和驗證時間總結如下:

SNARK 部分的電路大小SNARK 部分的電路大小

優化包括使用驗證者的512個公鑰(PK)輸入作為使用ZK友好的Poseidon hash的承諾。 Poseidon hash解決了存儲開銷問題並減小了電路大小。減小電路尺寸的過程如下;受信任的委員會在27小時後更新,之前的委員會使用SSZ (Simple Serialization),使用SHA256序列對新的委員會進行數字簽名。而不是直接在創建大型電路的SNARK中使用它(每個位操作需要一個門,在SHA中有大量的位操作),對當前公鑰使用Poseidon hash的承諾。

總結:它所使用的這種橋接方法非常特定於應用程序(依賴於共識協議),它的安全性來自於zk-SNARK的穩定性。此外,通過優化,它不僅實現了較低的存儲開銷,降低了電路複雜度,完成了簡潔驗證,同時也具有通用性。

將IBC引入以太坊(Electron Labs)

Electron Labs旨在從Cosmos SDK生態系統(應用特定區塊鏈的框架)中構建一座橋,使用IBC(區塊鏈間通信)來實現框架中所定義的所有主權區塊鏈間的通信。

此設置與前面討論的情況類似,但方向相反,其中輕客戶端(來自Cosmos SDK)需要在以太坊上的智能合約中進行驗證。從實際意義上講,在以太坊上運行來自其他區塊鏈的輕客戶端似乎具有挑戰性。在Cosmos SDK中,Tendermint輕客戶端運行在扭曲的Edwards曲線(Ed25519)上,以太坊鏈本身不支持該曲線。因此,以太坊(BN254)上Ed25519簽名的鏈上驗證變得低效且成本高昂。

在Cosmos 到以太坊的橋中使用zk-SNARK在Cosmos 到以太坊的橋中使用zk-SNARK

與我們前面的討論類似,Cosmos SDK上的每個區塊頭(每個區塊頭由曲線Ed25519上的約128個EdDSA簽名組成)由一組驗證者簽名組成(驗證一個區塊需要32個高風險簽名)。驗證簽名會生成大型電路,這是一個重要的計算組件。因此,基本問題是如何在以太坊鏈上高效、便宜地驗證來自Cosmos SDK中任何區塊鏈的Ed25519簽名。解決方案是構建一個zk-SNARK,它在鏈下生成簽名有效性的證明,並且只在以太坊鏈上驗證證明本身。

circom庫支持BN128、BLS12-381和Ed448-Goldilocks曲線,因此,為了在素數p=2^(255)-19的Ed25519曲線上執行模運算,可以將字段元素的表示分解為更小的85位整數(85*3=255),以實現高效的模運算。 circom生成的電路是Ed25519簽名驗證電路的R1CS表示,它由橢圓曲線點加法/加倍和上面定義的模運算組成。用於簽名驗證的電路使用circom庫構造,每次簽名驗證會產生約2M 的約束。

在見證計算之後,Rapidsnark庫為Ed25519簽名驗證生成Groth16證明。與BLS簽名不同,Ed25519曲線簽名不可聚合,因此不能為聚合簽名生成單個zk-SNARK證明。相反,簽名是批量驗證的,並且可以觀察到,驗證時間與批次中的簽名數量成線性關係。

因此,減少一批次中的簽名數量,確實可以降低證明時間(減少延遲),但隨之也會增加成本(gas費),因為每批生成的證明數量會增加。

總結:這種橋接方法也特定於它們的應用程序,並具備源於zk-SNARK證明的可靠性的安全性。特別是,在不引入任何新的信任假設的情況下,它驗證了以太坊上Tendermint輕客戶端的Ed25519簽名。域外模塊化算法是一種有價值的鏈上驗證計算優化方法。與Succinct Labs方法類似的一個具體技術問題是延遲。 Cosmos SDK中的區塊生成速率約為7秒,為了跟上這個速率,證明時間就不得不降低。 Electronlabs提出用多台機器並行計算,以與區塊生成速率相同的速度生成證明,並進行遞歸生成單個zk-Snark證明。

zkbridge(Berkley RDI)

與其他兩個行業主導的ZKP橋結構不同,zkbridge是一個框架,可以在其之上構建多個應用程序。這個想法類似於前面討論的兩種方法,並且需要兩個鏈上的輕客戶端和智能合約來跟踪摘要,對應於兩端的最新狀態。橋的核心組件是區塊頭中繼網絡、更新合約和應用程序特定合約(發送方:SC1,接收方:SC2)。

橋組件是灰色陰影區域。

區塊頭中繼網絡由中繼節點網絡組成,這些中繼節點偵聽橋接鏈上的狀態變化,並從區塊中的完整節點檢索區塊頭。橋上中繼節點的主要功能是生成一個ZKP,該ZKP驗證來自一個鏈的區塊頭的正確性,並將其轉發給另一個鏈上的更新合約。更新合約會進行驗證並接受或拒絕來自中繼網絡中的節點的證明。行業主導的方法和zkbridge之間的主要區別是,信任假設基本上簡化為中繼網絡中存在一個誠實節點,並且zk-SNARK 是可靠的。

這種結構的一個關鍵創新是並行使用了zk-SNARK: Virgo prover(deVirgo),它具有簡潔的驗證/證明大小,不需要可信的設置。其用於驗證N個簽名的電路本質上由相同的子電路的N個副本組成,稱為數據並行電路,每個子電路與其他子電路相互排斥。例如,前面一節中討論的Ed25519簽名驗證就是這種情況。

Virgo prover的核心組件是基於GKR協議的零知識擴展,該協議為分層電路中的每個子電路和多項式承諾方案運行總和校驗參數。 deVirgo泛化本質上是在一組中繼節點上運行一個Virgo prover,並通過將證明和多項式承諾聚合到一個主節點來避免證明大小的線性增長。

在deVirgo 中證明ed25519 簽名的電路尺寸

對於使用大約10M 門驗證100 個簽名的電路,證明大小為210KB(與Virgo prover大小相同)。 Zkbridge使用兩步遞歸。在第一步中,生成一個deVirgo證明,然後使用Groth16 prover對其進行壓縮。 Groth16 verifier生成deVirgo電路執行的完整證明。遞歸的主要目的是實現簡潔(證明尺寸)和降低驗證gas成本。

然後,中繼網絡將Groth16證明提交給可以在鏈上驗證它的更新合約。 deVirgo證明系統具有後量子抗性,因為它只依賴於抗碰撞哈希函數,主要的計算瓶頸是大型電路中的數論變換(NTT)。有一件事似乎沒有被提及,即中繼網絡的計算將遭受與MPC相同的通信複雜性,這也將影響證明時間。對於中繼網絡中的N台機器,GKR多層和校驗協議的通信複雜度為O(N log_2(gates per layer))。即使對於32個簽名的情況,在中繼網絡中有32台機器,這也將導致網絡中的通信輪數比較多,這可能會完全扼殺分佈式計算帶來的性能。

使用上述方法解決了前面討論的來自Cosmos SDK-Ethereum 輕客戶端的Ed25519 簽名驗證問題。橋由一個中繼網絡組成,它獲取Cosmos區塊頭並生成一個deVirgo證明用於分佈式證明生成。接下來,由Electron-labs設計的優化簽名驗證電路的Gnark適配在遞歸的第二步生成Groth16證明。

Ed25519 簽名的證明時間:RV:遞歸驗證者Ed25519 簽名的證明時間:RV:遞歸驗證者

更新合約在以太坊的Solidity中實現,並跟踪Cosmos區塊頭和中繼網絡的Groth16證明。驗證成本是恆定的

展開全文打開碳鏈價值APP 查看更多精彩資訊

Total
0
Shares
Related Posts