
長話短說
Web 2.0 應用程序通常像圍牆花園一樣運行,數據互操作性有限,導致用戶鎖定和身份碎片化。基於區塊鏈構建的 Web3 去中心化應用程序 (dApp) 有可能克服這些問題。然而,作爲 dApp 核心的智能合約目前缺乏一種無需信任的方式來訪問和利用存儲在多個區塊鏈完整歷史記錄中的大量數據。爲了解決這一限制,我們向您介紹了 Brevis,這是一個零知識 (ZK) 全鏈數據證明平臺,使 dApp 能夠以完全無需信任的方式訪問、計算和利用跨多個區塊鏈的任意數據。

Brevis 的架構由三個組件組成:zkFabric、zkQueryNet 和 zkAggregatorRollup。zkFabric 從所有連接的區塊鏈收集區塊頭,並通過 ZK 輕客戶端電路生成共識證明,以證明這些區塊頭的有效性。這對於 dApp 能夠以無信任的方式訪問所有受支持的區塊鏈的區塊頭和所有狀態至關重要。zkQueryNet 是一個開放的 ZK 查詢引擎市場,可以直接接受來自鏈上智能合約的數據查詢,並能夠通過 ZK 查詢引擎電路生成查詢結果和相應的 ZK 查詢證明。這些引擎範圍從高度專業化(例如計算特定時間段內 DEX 的交易量)到高度通用的數據索引抽象和高級查詢語言,可滿足各種應用程序需求。 zkAggregatorRollup 是一個專門的 ZK rollup,充當 zkFabric 和 zkQueryNet 的聚合和存儲層。它驗證來自這兩個組件的證明,存儲經過證明的數據,並將其 zk 經過證明的狀態根提交給所有連接的區塊鏈,從而允許 dApp 直接在其鏈上智能合約的業務邏輯中訪問經過證明的查詢結果。
憑藉這種模塊化架構,Brevis 爲鏈上智能合約提供了完全免信任、靈活且高效的數據訪問和計算功能。這爲 dApp 開發提供了全新的範式。Brevis 具有廣泛的用例,例如數據驅動的 DeFi、zkBridges、鏈上用戶獲取、zkDID、社交帳戶抽象等等。

在 Brevis 的初始概念驗證中,我們使用 gnark 爲以太坊 PoS、Cosmos 和 BNB 鏈構建了一些最快的 ZK 輕客戶端電路作爲 zkFabric 的一部分,以使任何 EVM 和非 EVM 鏈能夠以完全無需信任的方式訪問這三條鏈的狀態。表 1 總結了一些關鍵電路性能基準數字(使用具有 20 個核心@2.3GHz 和 384GB 內存的 Linux 服務器,沒有 GPU 加速)。使用這些 ZK 輕客戶端電路,我們在以太坊 Goeril 和 BNB 鏈測試網之間實現了一個面向用戶的資產 zkBridge,供用戶試用。[https://zkbridge.brevis.network/]
有關 Brevis 的更深入描述,請繼續閱讀此博客,或者您可以參考我們的 Brevis 白皮書以獲取更全面的技術細節。[https://get.celer.app/brevis/BrevisWhitePaper_03211833.pdf]
Web3 dApp 錯失利用全鏈數據的價值
Web 2.0 應用徹底改變了互聯網上的用戶交互和內容生成方式。然而,這些應用通常像封閉的花園一樣運行,用戶數據存儲在由平臺提供商控制的集中數據庫中。這帶來了諸多挑戰,例如數據互操作性有限、身份分散、財務和社交數據鎖定,以及創新受阻、供應商鎖定、隱私問題和用戶體驗分散等後續問題。
Web3 去中心化應用程序 (dApps) 有可能通過建立在具有僅可追加和可公開訪問的數據存儲的區塊鏈之上來打破這些信息孤島。隨着 dApps 的多區塊鏈擴展和採用不斷增長,L1 區塊鏈和 L2 彙總已經積累了大量原始數據,例如資產轉移、合約功能調用、合約內事件和區塊鏈狀態根。利用所有這些數據,可以提取有價值的信息,例如資產所有權、用戶活動資料、社交圖譜、財務聯繫、市場定價趨勢、交易量等等。
許多鏈下產品和項目已經在利用這種可公開訪問的數據存儲的獨特屬性。Dune Analytics 和 Graph 等產品爲跨時間的區塊鏈應用程序提供鏈下數據索引或數據分析。它們還可用於提供狀態數據,例如 dApp 前端 UI 的用戶交易歷史記錄。這些應用程序以鏈下方式訪問區塊鏈數據,通過區塊鏈節點的 RPC 端點記錄、索引和計算數據。
直觀地說,鏈上區塊鏈應用程序或智能合約應該能夠以完全無需信任的方式在其業務邏輯中輕鬆訪問和利用這些全鏈數據洞察,因爲所有這些 dApp 都是區塊鏈內部的“本土居民”。
然而,這種情況並非如此。
事實上,Web3 dApp 根本無法以無需信任的方式訪問區塊鏈中存儲的絕大多數數據。這是因爲部署在單個區塊鏈上的智能合約存在於區塊鏈虛擬機的環境中,只能訪問以下數據:
(1)通過其他智能合約明確定義的接口;
(2)在同一個區塊鏈上;
(3)僅提供區塊鏈的最新狀態,而不是完整的歷史視圖。
有人可能會認爲,直接在智能合約中解析和計算數據查詢語義或使用純基於智能合約的無信任輕客戶端驗證共識算法等解決方案在理論上是可行的。然而,由於鏈上計算成本高昂,這些方法是不可行的。可以使用鏈下 Oracle 解決方案,但它們需要額外依賴外部 Oracle 安全性來確保數據有效性。
那麼,我們如何允許智能合約在任意時間段內訪問和計算來自任何區塊鏈的數據?
零知識簡潔證明:計算遷移的魔力
零知識簡潔證明技術 (ZKP) 是密碼學的一個新興領域,有可能改變我們的數字交互。它允許一方向另一方證明計算的有效性,而無需透露有關輸入值的任何信息。驗證方只需運行一個計算成本低廉的程序(稱爲驗證器)即可確認計算的準確性。
ZKP 不僅提供了隱私優勢,還能夠將計算從單位成本高的位置遷移到單位成本低的位置。證明者執行計算成本高昂的操作來完成計算並生成加密證明,而驗證者運行成本低廉的操作來驗證證明。此過程將計算位置從驗證者轉移到證明者,如果證明者的單位計算成本遠低於驗證者的單位計算成本,那麼這是一個值得的權衡。這種計算遷移屬性是許多 ZK rollup 背後的驅動力。我們還將利用此屬性來設計 Brevis。
Brevis 系統概述
如圖 1 所示,Brevis 的架構由三個主要組件組成:zkFabric、zkQueryNet 和 zkAggregatorRollup。zkFabric 從所有連接的區塊鏈收集區塊頭,並生成證明這些區塊頭有效性的 ZK 共識證明。這些區塊頭進一步經過 zk 驗證並存儲在 zkAggregatorRollup 中。zkQueryNet 接受來自 dApp 的數據查詢,並根據存儲在 zkAggregatorRollup 中的經過證明的區塊頭生成 ZK 查詢證明。這些查詢結果也經過 zk 驗證並存儲在 zkAggregatorRollup 中。本質上,zkAggregatorRollup 是一個 ZK rollup,充當 zkFabric 和 zkQueryNet 的聚合和存儲層。通過將其 zk 證明的狀態根提交給所有 Brevis 連接的區塊鏈,zkAggregatorRollup 允許 dApp 訪問已證明的查詢結果並以完全無需信任的方式直接在其鏈上智能合約邏輯中使用它們。
記住這個總體概述,讓我們來看一下每個組件。
首先,爲了利用跨多個區塊鏈的任意數據,dApp 需要有一種無需信任的方式來訪問其原生鏈以外的區塊鏈的區塊頭。這是因爲區塊頭包含可用於訪問區塊鏈數據和狀態的狀態根。爲了滿足這一需求,引入了 zkFabric 來爲所有受支持的鏈的區塊頭生成 ZK 共識證明。共識證明由輕客戶端電路生成,證明相關區塊頭是根據相應區塊鏈的共識規則生成的。zkFabric 本身是一個由區塊頭中繼器和證明器網絡組成的去中心化系統。
爲了真正從 zk 證明的區塊頭中提取有價值的信息,zkQueryNet 被構建爲一個 ZK 查詢引擎的開放市場,可直接與 dApp 開發人員和智能合約交互。dApp 開發人員可以選擇適合其需求的 ZK 查詢引擎,然後通過智能合約中的高級 API 編寫查詢。
在運行時,智能合約可以調用針對特定 ZK 查詢引擎的 zkQueryNet 代理智能合約。此查詢將由此 ZK 查詢引擎的證明者拾取。使用 zkFabric 提供的已經經過 zk 證明的區塊頭,ZK 查詢引擎可以計算查詢結果並生成 ZK 查詢證明,證明計算正確完成。
不同的 ZK 查詢引擎可以具有非常不同的 API,從通用查詢語言到具有固定數量參數的高度特定的函數調用。例如,一方面,特定的 ZK 查詢引擎可能只公開一個接受兩個區塊號和兩個鏈 ID 的函數,該函數將返回 Uniswap 上指定兩個區塊鏈在指定時間段內的 ETH/USDC 對的時間加權平均價格。另一方面,通用 ZK 查詢引擎可以使用 SQL 或 GraphQL 等高級數據庫查詢向開發人員提供區塊鏈索引抽象,這非常類似於他們在 Dune Analytics 和 Graph 等鏈下數據解決方案中可以做的事情。
Brevis 將提供一組 ZK 查詢引擎,以合理的靈活性和高性能解決許多直接用例。由於 zkQueryNet 是一個開放的市場,我們希望 dApp 開發人員和其他第三方提供其他 ZK 查詢引擎,以更好地服務於多樣化的應用程序生態系統。
最後,zkAggregatorRollup 是一個由輕量級 ZK 虛擬機驅動的 ZK Rollup 區塊鏈,它聚合了來自 zkQueryNet 和 zkFabric 的不同證明及其輸入。具體來說,zkAggregatorRollup VM 運行時具有以下功能:
(1)遞歸驗證zkQueryNet和zkFabric生成的證明;
(2)存儲來自 zkFabric 的 zk 驗證的區塊頭;
(3)存儲查詢和零知識驗證的結果。
當插入 ZK 查詢引擎或添加新類型的共識時,zkAggregatorRollup 將被擴展以支持相應 ZK 證明的驗證。此外,與許多 ZK rollup 鏈不同,其中狀態根進展的證明僅提交給單個區塊鏈,zkAggregatorRollup 的狀態根證明提交給 Brevis 支持的所有區塊鏈。
由於 zkAggregatorRollup 的狀態根在所有連接的鏈上可用,智能合約可以通過數據包含證明訪問查詢結果和區塊頭。使用 zkAggregatorRollup 作爲聚合點的主要好處是將區塊頭通信或驗證開銷從 O(N^2) 減少到 O(N)(其中 N 是 Brevis 支持的區塊鏈數量),並在所有連接的區塊鏈上按需高效地共享查詢結果。
綜上所述,Brevis 具有以下主要優勢:
無需信任:Brevis 不依賴任何鏈下方來證明數據和計算的完整性。相反,它僅依賴於 ZK 簡潔證明。因此,使用 Brevis 的應用程序不需要接受除底層區塊鏈和加密協議之外的任何其他信任假設。
全鏈:Brevis 與運行在不同共識上的多個區塊鏈集成,從而實現全鏈數據訪問和計算。
模塊化:Brevis 在其 zkQueryNet 中使用高度模塊化設計,因此可以通過不同風格和實現的 ZK 查詢引擎滿足廣泛的應用需求。
低成本:Brevis 的 zkAggregatorRollup 本質上充當了區塊頭和查詢結果的批處理和聚合層。因此,zkAggregatorRollup 通過消除原本 N 對 N 的通信開銷並實現跨鏈和跨應用程序查詢結果共享,顯著降低了鏈上成本。
值得注意的是,Brevis 與 Dune Analytics 和 Graph 等鏈下數據索引解決方案之間的關鍵區別在於,Brevis 可以生成零知識證明的查詢結果,這些結果可以直接以無信任的方式被鏈上智能合約的業務邏輯利用。相比之下,鏈下解決方案的數據結果只能在基於 web2 的數據分析環境中使用。
示例演練

在討論廣泛的應用用例之前,我們先介紹一個具體的應用示例,以概述 Brevis。請注意,此概述抽象了一些關鍵細節,我們建議讀者參閱完整的白皮書以瞭解更多詳細信息。
多區塊鏈去中心化交易所(DEX),例如 PancakeSwap,通常需要根據交易對質量得分(例如平均每日交易量、14 天交易量、價格波動性、活躍交易者數量以及所有支持的區塊鏈上的流動性提供者)動態調整激勵池的耕作獎勵。
目前,此類調整必須通過治理提案進行,這需要大量人力成本,並且只有在設置嚴重偏離最佳狀態時才能進行。這會導致事情落後於市場趨勢,並且經常導致用戶參與度下降、收入損失,以及由於獎勵配置不理想而浪費資金。
Brevis 可以通過讓 DEX 根據全鏈市場趨勢以編程方式和無信任方式調整流動性耕作計劃來解決這些挑戰。爲簡單起見,我們假設我們只關心交易量。我們還假設 zkQueryNet 中有一個 ZK 查詢引擎 𝑄,它爲 DEX 交易量數據提供了一組高度優化的電路,其 API 如下所示:
uint_64 獲取交易量(uint_64 chain_id,
uint_64 啓動塊,
uint_64 end_block,
地址對)
圖 2 展示了此用例的分步工作過程。要使用此數據計算 API,DEX 智能合約首先需要對 zkQueryNet 的代理智能合約(表示爲 𝐴)進行函數調用,並指定上述查詢參數。請注意,此函數是異步的,並且僅立即返回 𝑞𝑢𝑒𝑟𝑦_𝑖𝑑,因此 DEX 的智能合約需要記住此 ID,並有一個處理程序來稍後處理返回值。
然後,𝑄 的證明器 (用𝑃_𝑞 表示) 獲取該函數調用。使用 𝑐ℎ𝑎𝑖𝑛_𝑖𝑑 的區塊頭(已驗證並存儲在 zkAggregatorRollup 中),𝑃_𝑞 將生成一個 ZK 證明 𝜋,證明在 𝑠𝑡𝑎𝑟𝑡_𝑏𝑙𝑜𝑐𝑘 到 𝑒𝑛𝑑_𝑏𝑙𝑜𝑐𝑘 的時間段內,𝑐ℎ𝑎𝑖𝑛_𝑖𝑑 上的 DEX 的 𝑡𝑟𝑎𝑑𝑖𝑛𝑔_𝑝𝑎𝑖𝑟 確實已經離您最近。
zkAggregatorRollup 中 𝑄 的證明驗證器驗證 𝜋,然後將結果 𝑣𝑜𝑙𝑢𝑚𝑒 以及相應的查詢參數存儲在 zkAggregatorRollup 中。此狀態隨後包含在 zkAggregatorRollup 的狀態根 𝑆 中,並提交到部署 DEX 的鏈上。
現在,𝐴 可以使用針對 𝑆 的狀態包含證明來檢索和驗證查詢結果。檢索到的查詢結果隨後將返回到 DEX 智能合約的處理函數。處理函數將能夠將存儲的 𝑞𝑢𝑒𝑟𝑦_𝑖𝑑 與返回的查詢結果進行匹配,並根據交易量數據調整流動性耕作計劃。
zkFabric PoC:以太坊 PoS、Cosmos Tendermint、BNB 鏈輕客戶端 ZK Circuits 和 ZK Bridge
儘管鏈上輕客戶端解決方案在理論上是信任最小化的,但在實踐中實施起來卻成本高昂。Brevis 通過結合輕客戶端協議和 ZKP 來解決這一挑戰,其中 zkFabric 爲所有連接的區塊鏈生成 ZK 共識證明,並將相應的區塊頭存儲在 zkAggregatorRollup 中。在 zkFabric 的初始概念驗證中,我們在以太坊 PoS、Cosmos Tendermint 和 BNB Chain 的 ZK 電路中實現了輕客戶端協議。
以太坊 PoS 輕客戶端。以太坊 PoS 輕客戶端電路主要由 2 個子電路組成。一個是 SSZ 同步委員會承諾電路,用於更新同步委員會中 512 個當前驗證者的 SSZ 承諾,每 27 小時輪換一次。另一個是 512 個驗證者的聚合 BLS12-381 簽名驗證,主要在 BN254 標量場上進行哈希到曲線計算和 BLS12-381 配對,以便在以太坊智能合約中高效驗證。這裏,非原生配對需要大量非原生算術領域。遵循 BLS 配對實現的各種技巧,並使用 gnark 提供的高效範圍檢查小工具,與現有實現相比,我們能夠實現對 BN254 標量場的加速 BLS12-381 簽名驗證。對於 SSZ 同步委員會承諾電路,我們正在使用查找表進行優化,並將很快發佈優化的電路。
Cosmos Tendermint 和 BNB 鏈的輕客戶端。BNB 鏈採用兩層架構,包括基礎層(稱爲 BNB 信標鏈 (BBC))和執行層(稱爲 BNB 智能鏈 (BSC)。BBC 採用 Tendermint 共識,而 BSC 採用稱爲 Parli 的權威證明 (PoA) 共識。每個 BSC 區塊都由集合中的一位驗證者簽名。作爲專門的 Tendermint 應用程序,BBC 管理 BSC 驗證者集合的選舉和更新。每 24 小時,都會選出一組新的 BSC 驗證者,並通過早於官方 IBC 規範的 IBC 類跨鏈機制將其同步到 BSC。對於 BBC(本質上是 Tendermint),輕客戶端主要涉及驗證一批 Ed25519 簽名,直接在鏈上驗證這些簽名的成本很高。我們在 gnark 中實現了 BN254 標量場上的非原生 Ed25519 簽名驗證。使用 gnark 中的範圍檢查小工具,我們實現了非原生 Ed25519 簽名驗證的最優性能。對於 BSC,PoA 共識涉及 secp256k1 簽名驗證,由於存在預編譯,因此直接在智能合約中進行驗證。
上述電路在 gnark 中實現,並開源 [https://github.com/celer-network/brevis-circuits]。它們的基準性能如本博客開頭的表 1 所示。請注意,我們正在不斷優化電路,並希望在不久的將來利用硬件加速和並行化。
此外,幾乎所有現有的互操作性解決方案都屬於“外部驗證模型”,這需要對中介實體的信任。作爲第一步,我們在 Goerli 測試網和 BNB 鏈測試網之間構建了一個 ZK 橋的概念驗證演示,展示了 Brevis 的功能。基於輕客戶端,我們在 Goerli 測試網和 BNB 鏈測試網之間構建了一個雙向資產 ZK 橋。值得注意的是,對於 Goerli 到 BNB 的方向,預計橋接延遲約爲 25 分鐘,因爲包含源鏈 tx 的塊頭僅在 2-3 個時期(64-96 個塊)後才被視爲最終確定和中繼。
Brevis 實現的衆多激動人心的用例
除了上述 ZK Bridge 示例之外,Brevis 還使開發人員能夠創建能夠以以前不可能的方式跨任意時間範圍訪問全鏈數據的 dApp。這項創新無疑將建立一種新範式,改變所有行業的 dApp 開發方式。在本節中,我們將介紹幾個直接的應用程序,但我們預計社區將發現更多用例。
數據驅動的 DeFi
除了前面討論過的流動性農業獎勵自動調整示例之外,我們相信,由於數據驅動的 DeFi 具有可擴展性和隱私性,它將利用 Brevis 成爲一類廣泛的應用。
通過無需信任即可訪問全面的歷史和全鏈交易流程,期權等衍生品現在可以納入新的行權條件,例如指數時間加權價格或時間交易量加權價格。通過 ZQE 的各種實現,還可以實現跟蹤用戶行爲、價格趨勢、協議或區塊鏈 TVL 變化、波動性、價格相關性等的替代衍生品。
鏈上主動型基金管理解決方案可以生成零知識證明,證明頭寸調整完全基於從市場數據中得出的特定算法模型,無需任何未經授權的人爲干預。此外,由於 Brevis 的隱私保護特性,精確的模型參數可以保持隱藏,以保持競爭市場優勢。
通過無信任收益分享獲取用戶
在 Web 2.0 中,用戶獲取過程在用戶下載或註冊時結束,廣告商爲所有用戶支付固定價格,無論其生命週期價值如何。這種安排對廣告商和廣告渠道來說都不理想,因爲前者無法區分用戶價值,而後者無法分享長期收入。這個問題的出現是因爲獲取後的用戶數據是私密的,廣告渠道無法訪問。
Web3 可能會改變這種模式,因爲大多數用戶活動數據都是公開的。然而,當前的平臺仍然遵循 Web 2.0 範式。Brevis 通過允許廣告渠道爲獲取的用戶生成無信任的收入證明,徹底改變了這一模式。這將導致 Web 3.0 用戶獲取的根本性轉變,廣告商只爲高價值用戶付費,廣告渠道受到激勵,以最佳方式匹配用戶和廣告商。
茲克DID
Brevis 是構建無需信任的 zkDID 解決方案的重要工具,有助於防止 Sybil 攻擊並在各種用例中促進用戶生命週期管理。通過基於難以僞造的鏈上行爲生成 ZK 證明,Brevis 使 dApp 開發人員能夠以完全無需信任的方式運行,同時防止活動或發佈中的 Sybil 攻擊。
通過利用查詢結果和聚合用戶行爲數據,可以構建一個無需信任的用戶生命週期管理流程,從而實現區塊鏈遊戲中的忠誠度系統、VIP 交易者計劃和 LiveOps 活動。與應用內會計相比,Brevis 具有多項優勢,例如成本更低、面向未來和可移植性。通過 Brevis 生成的 zkDID 存儲在 zkAggregatorRollup 中,可供不同的應用程序訪問。
賬戶抽象
Brevis 通過提高區塊鏈應用程序的安全性和可用性,在帳戶抽象 (AA) 中提供了一個引人注目的用例。一個關鍵的好處是社交恢復,即使主控制密鑰丟失,它也有助於重新獲得錢包訪問權限。Brevis 使智能錢包能夠根據最近的交易連接而不是一組固定的外部錢包來實現社交恢復。這種方法減少了維護開銷,並降低了區塊鏈生態系統新用戶的進入門檻。
Brevis 在社交和 NFT 遊戲等許多其他領域也有潛在應用。我們鼓勵開發人員探索並發現 Brevis 更多令人興奮的用例。

