作者:Lisa A.,Taiko Labs;翻譯:金色財經xiaozou
本文將從rollup角度探討不同L2跨鏈消息傳遞方法,著重探討無需信任的跨鏈通信。我們將簡要了解直接讀取狀態方法、輕客戶端方法以及存儲證明。我們還會涉及到證明聚合機制、可信第三方跨鏈消息傳輸和核心ZK跨鏈解決方案。最后,我們再來看當今不同的L2是如何實現跨鏈消息傳遞的。
1、跨鏈消息傳遞簡介
對于跨鏈通信,所有各方(L2、L3等)必須能夠直接訪問最新的以太坊狀態根。
所有存款層都有一個“內置”的跨鏈機制,可用來訪問L1狀態根,狀態根將作為存款消息傳遞給L2。
1.1 狀態根的兩種訪問類型
類型1:直接讀取狀態根——可以通過操作碼或預編譯完成。然而,至今還沒有實現,所以不需要任何proof證明。
· Brecht Devos在一篇研究文章中描述了一種可能的直接讀取狀態的方法:“……我們可以公開一個預編譯合約,它可以直接調用目標鏈上的智能合約。這種預編譯直接在源鏈中插入并執行另一條鏈的智能合約代碼。這確保了智能合約始終能夠以高效且易于證明的方式訪問最新的可用狀態。”
· 在Optimism的RFP“遠程靜態調用概念證明”中亦有相關描述。
類型2:證明生成——即在另一個區塊鏈上證明關于一個區塊鏈的陳述。
“帶證明的跨鏈消息傳遞”有兩種方法:
· 無需信任的跨鏈通信——也就是說,沒有可信的第三方(例如,使用輕客戶端或存儲證明)。無需信任的方法既可用于第三方生成證明,也可用于跨鏈通信參與者自己生成證明。
· 在不同的rollup之間共享證明,以確保跨鏈操作。這個方法本文不多做討論,目前正處于研究和探索階段,并且不被認為是一個可能廣泛應用的解決方案。
Volt Protocol已從Rari Capital和Fei Protocol獲得1000萬枚FEI流動性支持:5月3日消息,抗通脹穩定幣協議 Volt Protocol 已從穩定幣 DeFi 智能投顧 Rari Capital 和算法穩定幣協議 Fei Protocol 獲得 1000 萬枚 FEI 流動性支持,作為與代幣兌換相關的發行援助的一部分,用以在 Uniswap 上提供更多 VOLT 流動性。[2022/5/3 2:47:15]
1.2 “帶證明的跨鏈消息傳遞”方法
1.2.1 輕客戶端跨鏈消息傳遞
證明鏈B上的數據
· 從鏈B全節點(如需對某些歷史狀態進行存儲證明則為archive歸檔節點)獲取默克爾證明數據;
· 將與包含我們想要驗證的狀態的鏈B區塊相對應的區塊頭和證明數據作為calldata發送給鏈A上的證明者合約;
· 證明者合約根據區塊頭數據計算區塊哈希值,查詢鏈A上的輕客戶端智能合約(跟蹤鏈B的區塊哈希值),并檢查哈希值是否有效;
· 證明數據是根據區塊頭中的bytes32狀態根進行驗證的。
1.2.2 存儲證明
存儲證明有兩個“workflow”選項:
· 生成存儲證明→在鏈上使用
· 生成存儲證明→生成zk證明→在鏈上使用
也可能有一個實體將多個證明收集打包為單個證明(包括存儲證明和zk證明)。這是一個可選的優化步驟,暫不討論。
下面我們來看下存儲證明“workflow”的三個主要階段:生成存儲證明、生成zk證明、鏈上使用。
(1)生成存儲證明
· 存儲證明允許我們使用機密承諾證明某些信息存在于區塊鏈上,并且是真實的;
1億枚XRP從Ripple錢包轉到未知地址:據Whale Alert數據,北京時間4月9日08:24:11,1枚XRP從Ripple錢包轉入r9ngmmtx開頭的未知地址,價值約1.05億美元。交易哈希為:637F06CE562DC20EA85621207865D69C5AB0DD35E62EDF114BF5C8294FC76B05。[2021/4/9 20:00:30]
· 自1979年默克爾樹出現之后,存儲證明一直是加密領域的一部分。然而,vanilla儲存證明通常相當大。現代創新在于將存儲證明與可證明的計算相結合,創造出可以在鏈上驗證的簡潔證明。
要生成存儲證明,必須提供特定的數據塊及其在默克爾樹中的關聯Merkle或Verkle路徑。該路徑由使用相同的哈希算法重建根哈希值所需的兄弟哈希值組成。
要驗證存儲證明,接收方可以使用所提供的數據和Merkle或Verkle路徑來重新計算根哈希值。如果重新計算的根哈希值與已知的根哈希值相匹配,則接收方可以確信該數據是真實的,是已提交數據集的一部分。
(2)生成ZKP(零知識證明)
然而,以太坊類型的存儲證明約為4kb——對于將整個存儲證明發布到目標鏈上來說相當大,因為證明驗證將非常昂貴。因此,使用ZKP(例如,ZK-SNARK)進行壓縮是合理的,可以使證明更小、驗證成本更低。
(3)Unroll ZKP
獲得ZKP后,目標鏈上的用戶可以unroll他們獲得的證明(例如,通過區塊頭或區塊哈希值訪問歷史狀態)。
Unroll可以通過如下方式進行:
鏈上積累:從證明中重建區塊頭的整個過程直接在區塊鏈上執行。缺點:gas費高,耗費計算資源;優點:沒有額外的證明時間,延遲很低,因為不需要在區塊鏈之外生成證明。
鏈上壓縮:從數據中刪除冗余或不必要的信息,或使用為提高空間效率優化過的數據結構。壓縮后的數據被發送到區塊鏈,并可以在需要時解壓縮。缺點:壓縮和解壓數據可能意味著需要額外的計算,但是這種延遲也許可以忽略不計。使用的壓縮算法可能會對數據的安全性帶來負面影響;優點:降低數據成本。
近5億枚XRP從Ripple聯合創始人錢包轉出:金色財經報道,Whale Alert數據顯示,北京時間9月23日01:16,499,999,970枚XRP從Ripple聯合創始人、前CEO Chris Larsen的錢包地址轉入rJK1oV開頭未知錢包地址,價值約1.16億美元,交易哈希為:29827A34DEFE3E6677435451315D2E5BB26CC0C323F34F78C4D0BA296F59173B。[2020/9/23]
鏈下存儲:將數據存儲在鏈下,按需將特定數據塊放在鏈上。這與出于某種原因需要存儲大量數據的解決方案相關(例如,從創世區塊開始的以太坊archive節點)。缺點:與鏈上壓縮相同;優點:進一步降低數據成本。
1.2.3 可信第三方
完整的跨鏈解決方案還應涉及到具有可信第三方(如oracle、中心化橋等)的跨消息傳遞解決方案。
1.2.4 “通用”證明系統
在使用共享證明聚合平臺機制的情況下,可以通過接收在聚合平臺內結算的區塊哈希值來加快消息傳遞速度,并且此處的結算還將處理消息傳遞(但是如果證明聚合平臺出現了問題怎么辦?)。
1.2.5 ZK跨鏈消息傳遞的一些不明問題
如果沒有可信的第三方(可以是單個實體或多個實體),跨鏈消息傳遞是否可行?跨鏈消息傳遞的有效機制是什么?一般來說,對于以太坊L2(可以直接訪問L1的區塊哈希值)和以太坊本身來說,如果一條鏈可以在另一條鏈上運行輕客戶端等,它就可以驗證來自該外部鏈的區塊頭,這對無需信任的跨鏈消息傳遞來說足夠了。
用于跨鏈證明生成的ZK電路是否規模適宜?在某些情況下,特別是當共識層(需要對跨鏈操作進行驗證)非常大時,用于ZK跨鏈消息傳遞的電路可能比rollup和鏈上存儲大幾個數量級,并且計算開銷也很大。推測這個問題可以通過更中心化的方法來克服。
2、跨鏈消息傳遞解決方案示例
· Succinct Labs使用輕客戶端來驗證從源鏈到目標鏈共識層的共識。具體想法是存在一個輕客戶端協議,以確保節點可以同步最終區塊鏈狀態的區塊頭。ZKP用于生成共識證明。
9億枚XRP從從RippleEscrowWallet轉入Ripple錢包:據WhaleAlert推特,9億枚XRP從從RippleEscrowWallet轉入Ripple錢包,其中包括兩筆4億和5億的轉賬。[2020/5/2]
· Lagrange Labs構建非交互式跨鏈狀態證明。Lagrange證明網絡負責創建狀態根。每個Lagrange節點都包含一個分片私鑰的一部分,用來證明特定鏈的狀態。每個狀態根都是一個閾值簽名的Verkle根,可用于證明特定鏈在特定時間的狀態。狀態根是完全通用的,可以在狀態證明中使用,以證明鏈中任何一個合約或錢包的當前狀態。
· Herodotus使用ZKP存儲證明提供智能合約,同步訪問其他以太坊層的鏈上數據。針對驗證,它使用原生的L1<>L2消息傳遞來同步以太坊rollup之間的區塊哈希值。
· =nil; Foundation(Mina、L1)允許以太坊上的智能合約驗證Mina狀態的有效性。生成特殊用途的狀態證明,在以太坊上進行驗證的成本很低(在以太坊上進行本地Mina證明的成本很高)。假設(在未來的某個時候)應用程序可以直接使用Mina的證明生成工具來檢查跨鏈交易的有效性。=nil; Foundation還有一個Proof Market(證明市場),用戶/項目可以主要購買/出售SNARK證明,這些證明允許無需信任的數據訪問。
· Axiom:如果Axiom已經為至今為止的賬本生成了ZKP——它不需要為特定的數據塊生成ZKP——它可以將這個ZKP傳遞給鏈(作為Relayer中繼器),甚至可以提供對該ZKP的訪問。
3、L2的跨鏈消息傳遞
(1)Taiko
· Taiko存儲每個鏈的區塊哈希值。對于每對鏈,它都部署兩個智能合約,存儲彼此的哈希值。在L2←→L1的例子中,每次在Taiko上創建一個L2區塊時,L1上的外圍塊的哈希值就存儲在TaikoL2合約中。在L1←→L2的情況下也是同樣的運行方式。
動態 | 3000萬枚XRP從Ripple轉入Ripple Otc Distribution錢包 2100萬枚XRP從另一Otc錢包轉出:據Whale Aler監測,北京時間9月24日7:44,Ripple區塊鏈上3000萬枚XRP從Ripple(rBg2FuZT開頭地址)轉入Ripple Otc Distribution錢包(r9B3osC開頭地址)。隨后8點16分,2100萬枚XRP從另一Ripple Otc Distribution錢包(rMaV5QT2開頭地址)轉入未知地址(rEFtdHu開頭地址)。[2019/9/24]
· 可以通過調用TaikoL1/TaikoL2合約上的getCrossChainBlockHash(0)來獲取存儲在目標鏈上的最新已知Merkle根,并獲得要驗證的值/消息。通過在“源鏈”上使用標準RPC調用eth_getProof請求,可以獲得最新已知的Merkle根的兄弟哈希值。
· 然后,只需發送它們根據存儲在“目標鏈”上列表中的最新已知區塊哈希值進行驗證。驗證者將獲取一個值(默克爾樹上的一片葉子)和兄弟哈希值來重新計算Merkle根,并檢查它是否與存儲在目標鏈的區塊哈希值列表中的根相匹配。
(2)Starknet
Starknet使用存儲證明進行無需信任的跨鏈消息傳遞。
L2→L1消息傳遞協議
· 在Starknet交易執行期間,Starknet上的合約發送一條L2→L1消息。
· 然后將消息參數(包含L1上的接收方合約和相關數據)附加到相關的狀態更新(主存儲樹)。
· L2消息存儲在智能合約的L1上。
· 在L1上發出一個事件(存儲消息參數)。
· L1上的接收方地址可以通過重新提供消息參數來訪問和使用該消息作為L1交易的一部分。
· 跨鏈消息存儲在主干樹中。
L2 → L1
L1 → L2
(3)Optimism
· L1和L2之間的通信是由兩個稱為“messenger”的特殊智能合約實現的。
· 針對Optimism(L2)到以太坊(L1)的交易,有必要在狀態根寫入后提供關于L1上消息的默克爾證明。在該證明交易成為L1鏈的一部分之后,錯誤挑戰期開始。在此等待期之后,任何用戶都可以通過觸發以太坊上的第二筆交易來“最終完成”交易,將消息發送到目標L1合約。
(4)Arbitrum
· Retryable tickets是Arbitrum用于創建L1到L2消息傳遞的規范方法,即初始化要在L2上執行的消息的L1交易。可以在L1上支付固定費用(僅取決于其calldata大小)提交一個Retryable。主狀態樹用于智能合約中自定義數據格式的跨鏈通信。在L1上提交retryable ticket與L2上的執行是可以分離/異步的。Retryables提供跨鏈操作之間的原子性。如果L1交易請求提交成功(即沒有回滾),那么L2上的Retryable執行就有了一個強有力的保證,最終也會成功。
· Arbitrum有兩個樹干:Nitro鏈以以太坊的狀態樹格式進行維護,為Merkle樹。Assertion Tree(證明樹)存儲通過“assertion”在以太坊上確認的Arbitrum鏈的狀態。推進Arbitrum鏈的規則是確定性的。這意味著針對給定的一個鏈的狀態和一些新的輸入值,只有一個有效輸出。因此,如果該證明樹包含多個葉子,那么最多只有一個葉子可以表示有效的鏈狀態。
· Arbitrum的Outbox系統允許任意L2到L1的合約調用,即從L2發起消息,最終在L1上執行。L2到L1消息(又名“outgoing message”)與Arbitrum的L1到L2消息(Retryable)有許多共同之處,盡管有一些明顯的區別。Arbitrum鏈的L2狀態的一部分——也就是每個RBlock中證明的部分——是鏈歷史中所有L2到L1消息的默克爾根。在證明的RBlock被確認后(通常為證明后約一周),該Merkle根包含在Outbox合約中被發布到L1上。然后,Outbox合約允許用戶執行他們的消息。
(5)Polygon zkEVM
· 該zkEVM的Bridge SC為參與通信或資產交易的每個網絡使用一種稱為Exit Tree的特殊默克爾樹。
· 它使用Merkle根(在一個單獨的狀態樹中),可以在github上找到一個橋接架構圖。
· zkEVM Bridge SC的部署在以太坊2.0存款合約的基礎上進行了若干改動。例如,它使用了專門設計的append-only默克爾樹,但采用了與以太坊2.0存款合約相同的邏輯。其他差異與基本哈希值和葉節點有關。
· Polygon zkEVM Bridge智能合約的主要特點是使用Exit Tree和全局Exit Tree,其中全局Exit Tree的根是truth狀態的主要來源。因此,L1和L2有兩個不同的全局Exit根管理器,Bridge SC有一個單獨的邏輯。
(6)Scroll
· 部署在以太坊和Scroll上的橋合約允許用戶在L1和L2之間傳遞任意消息。在此消息傳遞協議之上,我們還構建了一個無需信任的橋接協議,以允許用戶在L1和L2之間橋接ERC-20資產。為了從以太坊向Scroll發送消息或資金,用戶調用Bridge合約上的sendMessage交易。中繼器將在L1上索引此交易,并將其發送到排序器,以包含在L2區塊中。在L2橋合約上,將消息從Scroll發送回以太坊的過程類似。
· 跨鏈消息存儲在常規消息隊列中。排序器從這個隊列中攝取跨鏈消息,并將它們作為常規交易添加到鏈上。
(7)zksync Era
· 每個交易包都有一個單獨的L2->L1消息。
· 不可能直接從L2發送交易到L1上。然而,你可以從zkSync Era向以太坊發送任意長度的消息,然后使用L1智能合約在以太坊上處理接收到的消息。zkSync Era有一個請求證明函數,該函數將返回一個布爾參數,指示消息是否成功發送到了L1。通過觀察以太坊或使用zksync-web3 API的zks_getL2ToL1LogProof方法來檢索消息包含的默克爾證明。
· 對于L1→L2,zkSync Era智能合約允許發送方在以太坊L1上請求交易,并將數據傳遞給zkSync Era L2。
· 橋合約:https://github.com/matter-labs/era-contracts/blob/main/ethereum/contracts/bridge/L1ERC20Bridge.sol
4、結論
跨鏈通信對于區塊鏈大規模采用的“必備”應用程序是不可或缺的(例如,V神文章中描述的跨鏈社交恢復錢包)。目前使用的大多數跨鏈解決方案都是為L1←→L2設計的,以覆蓋提款功能。這些解決方案可以擴展到更多的區塊鏈。但與此同時,可以實施更先進的跨鏈通信解決方案,例如完全不需要證明的“直接讀取狀態”或無需信任的“存儲證明”。對于大多數L2來說,跨鏈通信仍有發展進步的空間。
金色財經
企業專欄
閱讀更多
金色薦讀
Block unicorn
區塊鏈騎士
金色財經 善歐巴
Foresight News
深潮TechFlow
“Ordinals 標志著建設者文化的回歸!”7月7日,以太坊創始人 Vitalik Buterin 在Twitter Space《比特幣能從以太坊學到什么》中.
1900/1/1 0:00:00ConsenSys 旗下以太坊 Layer 2 解決方案 Linea 于本次 ETHCC 大會期間宣布上線主網,同時給 Linea Voyage 活動期間的參與者空投相關 NFT.
1900/1/1 0:00:00作者:金色財經cryptonaitive2023年6月12日,基于區塊鏈的AGI算力市場協議Gensyn宣布完成4300萬美元A輪融資,a16z 領投.
1900/1/1 0:00:00一種行業觀點是,市場傳遞出對 VR 設備的熱度,與Vision Pro的高昂價格相互反作用,會將溫度傳導至國內VR市場。屆時,Pico、小米等“平替”們將迎來機會.
1900/1/1 0:00:00撰文:Miles Jennings、 Brian Quintenz,分別為 a16z crypto 總法律顧問和 a16z crypto 全球政策主管編譯.
1900/1/1 0:00:00背景 由于去年FTX引發的一系列Crypto黑天鵝,致使現有的各國紛紛加強了監管。這一點從各國近期的監管相關的討論和政策里,經常提及要避免類似FTX的金融事件發生,就可以直觀地感受到了.
1900/1/1 0:00:00