ZK-RaaS 網路 Opside 推出 NCRC 協議,該方案繼承了 native bridge 絕對的安全性,也避免了第三方橋所帶來的系統複雜度和信任成本。
(前情提要:面臨Rollup時代,Opside如何共建ZK生態? )
(背景補充:Opside 的 ZK-PoW 是什麼?可「挖礦」賣零知識證明給L2、AI )
TL; DR
Opside 的 NCRC(Native Cross Rollup Communication) 協議提供了一種無需信任的 Rollup 互操作性解決方案。NCRC 協議並不是在各個 Rollup 上額外新增一個第三方橋,而是在系統層面改造了 ZK-Rollup 自帶的 bridge(native bridge),從而直接使用各個 ZK-Rollup 的 native bridge 來實現跨 Rollup 通訊。這樣的做法更加簡潔和徹底,既繼承了 native bridge 絕對的安全性,也避免了第三方橋所帶來的系統複雜度和信任成本。
為什麼我們需要無需信任的跨 Rollup 通訊?
Rollup 能夠顯著提高區塊鏈網路的可擴充套件性、降低交易成本並提高整體效率,它們受到越來越多的關注和使用。Opside 為 Web3 應用提供 ZK-RaaS 服務,任何開發者都可以通過 Opside Rollup Launchbase 建立自己的 Rollup。在這個多 Rollup 的時代裡,我們預計會有越來越多的 Rollup 共存,因此不同的 Layer 2 之間的無縫互操作性變得至關重要。目前,Rollup 之間運作相對孤立,缺乏即時的跨鏈通訊和資產互通。這種隔離導致了碎片化的格局,其中資產在特定的 Rollup 內被隔離,限制了它們在不同網路之間的自由流動和利用。
缺乏高效的跨 Rollup 通訊不僅限制了各個 Rollup 的潛力,還影響了整體使用者體驗。使用者在嘗試在 Rollup 之間轉移資產或執行跨鏈交易時面臨繁瑣而耗時的流程。這種次優的體驗削弱了 Rollup 的吸引力,並在一定程度上阻礙了二層擴容的廣泛採用。
目前的跨 Rollup 橋接方案大部分是在 Rollup 鏈上部署新的一套跨鏈合約,然後通過多鏈流動性激勵機制來提供資產的跨鏈。這些方案並不是通用的訊息跨鏈,同時帶來了中心化和信任的風險。
為了釋放多 Rollup 時代的全部潛力,迫切需要一種無需信任的通用的跨 Rollup 通訊協議。
Opside 的解決方案: Native Cross Rollup Communication
實際上,每一個 ZK-Rollup 都自帶一個 L1<>L2 的 bridge,我們稱之為 Native bridge。與第三方 bridge 採用流動性方案不同,Native bridge 是唯一的 「mint-burn」 跨鏈機制。它由零知識證明來保證安全性,同時也是無需信任的。一個 Rollup 上所有的資產,都來自 native bridge 的 deposit 交易,同時也都由 native bridge 來提供最終的安全性背書。
我們堅信奧卡姆剃刀原理,「如無必要,勿增實體(Entities are not to be multiplied beyond necessity.)」。第三方橋擁有更加便宜和快捷的跨鏈體驗,但也帶來了更多的信任成本和安全風險。前不久的 Multichain 事件,就是一個案例。因此,在一開始,Opside 的跨 rollup 通訊的靈感就簡單得出奇:直接使用 native bridge 來實現多 rollup 互操作性,而不是新增一個第三方的橋。這就有了現在的 NCRC(Native Cross Rollup Communication) 協議。
NCRC 的前提條件
多個 Rollup 之間實現 NCRC 需要滿足以下 2 個前提條件:
- 這些 Rollup 屬於 ZK-Rollup 型別
- 這些 Rollup 在相同的 L1 上
滿足以上 2 個條件的 ZK-Rollups,在理論上,擁有和 L1 一樣的安全性。同樣地,這些 Rollup 之間的 native bridge 的安全等級是一樣的,且無需信任對方。所有的 NCRC 交易都是被 validity proof 所驗證的,這也是 NCRC 的安全性保證的根本來源。
Rollup Recognition Contract(RRC)
截至 2023 年 8 月,已經有多個 ZK-Rollups 主網上線了,包括 Polygon zkEVM、zkSync Era、Linea 等。然而,這些 ZK-Rollups 之間是獨立不相關的,使用者的資產也因此碎片化。造成這種問題的根本原因在於,它們在 L1(以太坊主網)上的合約是不相關的。它們感受不到對方的存在,更無法實現原生 Rollup bridge 的直接通訊。
因此,我們要做的第一步,是在 L1 上部署一個特殊的合約,來讓 Rollup 互相發現和識別。我們稱之為 RRC(Rollup Recognition Contract)。RRC 負責管理所有參與 NCRC 的 ZK-Rollups,包括 Rollup 的新增、暫停、退出等。RRC 中的每個 Rollup,都會有一個專屬的 Rollup ID,L1 的 ID 則固定為 0。
Rollup 上的地址在 native bridge 發起跨 Rollup 交易時,可以指定目標的 Rollup ID:
- 如果 Rollup ID 為 0,則表示把訊息跨到 L1,例如 withdrawal
- 如果 Rollup ID 不為 0,則表示要把訊息跨到其他 Rollup
Opside 將在每一個 L1 層都部署了一個 RRC 合約,並允許對應的 ZK-Rollup 無需許可地加入或者退出。這個 RRC 合約將用於維護各個 Rollup ID 對應的 Rollup 資訊,包括 L1 上的 bridge 合約地址等。值得一提的是,RRC 合約只是負責提供資料檢索服務,不會跟跨鏈資產產生直接聯絡。
相容 native bridge 的 smart contract 與 service
一般來說,一個 Rollup 的 native bridge 分成 3 個模組:L1 上的 bridge 合約、L2 上的 bridge 合約,以及一個 bridge service 負責傳遞資訊。NCRC 協議在底層複用了這些模組,並在其基礎上做了更高階的封裝。主要的改動如下:
- L2 上的 bridge 合約:在保留原有方法的基礎上,添加了新的 bridgeAsset 方法,允許使用者在 destinationNetwork 引數中指定目標 Rollup 的 ID
- L1 上的 bridge 合約:封裝一個新方法來處理新 bridgeAsset 方法的跨鏈訊息。bridge 合約會在 RRC 合約中根據 Rollup ID 尋找到目標 Rollup 的資訊,並將跨鏈資產轉移到目標 Rollup 的 bridge 合約中。跨鏈資產在那裡被 deposit 到目標 Rollup
- bridge service:負責傳遞資訊,並向用戶收取跨 Rollup 交易的手續費
當一個 Rollup 完成以上 NCRC 相關的相容適配之後,就可以將該 Rollup 註冊到 RRC,從而加入原生跨 Rollup 通訊網路。
原生跨 Rollup 交易的流程
對於使用者來說,NCRC 的操作方式和 rollup 的 native bridge 是完全一致的。使用者在 Rollup1 上發起到 Rollup2 的跨鏈交易,整個流程將自動完成,包括以下步驟:
首先,跨 Rollup 交易發起者 User1 在 Rollup1 上呼叫 native bridge 的 bridgeAsset 方法,發起跨鏈交易。該交易中的 destinationNetwork 引數被設定為 Rollup2 的 Rollup ID。這個 Rollup ID 將被用於檢索對應的 L1 層橋合約地址。若 Rollup ID 為 0,則代表目標網路為 L1。
接著,這筆交易被 Rollup1 的 sequencer1 打包。跨 rollup 交易的費用,由交易發起者 User1 承擔,並支付給所在的 Rollup1 的 sequencer1。Rollup1 的 Bridge service 將跨鏈資產先轉移到在 L1 中的 Rollup1 橋合約。此時 Rollup1 和 L1 分別完成了資產的 burn 操作與 release 操作。
為了完成資產的跨 Rollup 轉移,Rollup1 的 Bridge 服務呼叫 RRC 合約來查詢引數 destinationNetwork 對應的目標 Rollup2 資訊,從而獲取到 Rollup2 在 L1 層的橋合約地址。然後,Rollup2 的橋合約將直接接管這些資產,並通過 bridgeAsset 方法將資產反射到 Rollup2 中。
最終,這筆交易在成功打包並生成證明後,會被 Rollup2 的 Bridge 服務執行 claimAsset 操作。最終,Rollup1 發出的跨鏈資產安全地到達 Rollup2 指定的地址。
值得一提的是,在整個跨鏈過程中,使用者的資產流經:
Rollup1 -> Rollup1 在 L1 的橋合約 -> Rollup2 在 L1 的橋合約 -> Rollup2。
也就是說,使用者的資產沒有經過任何第三方協議,而是複用了 Rollup 自帶的 native bridge,整個流程都是安全且無需信任的。
當用戶在 Rollup1 上執行跨鏈操作,選擇 Rollup2 作為目標,技術流程實際上涉及 Rollup1、L1 以及 Rollup2 這三者。然而,使用者在此過程中並不需要感知 L1 的存在,他們的體驗只是從 Rollup1 直接跨到了 Rollup2。背後的實際情況是 跨鏈資產在 L1 中進行了 2 次橋接操作,使得使用者感受到的是 Rollup1 到 Rollup2 的無縫連線。在這個過程中,L1 上的操作將自動處理,使用者不需要有其他的操作。對使用者而言,他們所在的當前 Rollup 可以實現向 L1 和任意其他 Rollup 進行跨鏈操作。這種設計使得使用者體驗更加流暢,同時隱藏了底層複雜性。
NCRC 已經在 Opside 測試網上線!
Opside 目前已經在測試網上實現了原生跨 Rollup 通訊。現在任何人都可以在官網體驗 https://pre-alpha-assetshub.opside.network/ 。我們也歡迎使用者、開發者來幫助我們發現可能存在的 bug 和安全性風險,也歡迎提任何有價值的建議。
我們相信,一個無需信任的原生跨 Rollup 通訊,不僅能安全地共享所有 Rollup 的流動性,也將提供更加強大的多 Rollup 互操作性,從而為去中心化應用和 DeFi 協議開闢新的可能性。