menu-icon
anue logo
鉅樂部鉅亨號鉅亨買幣
search icon
區塊鏈

解讀Celer的ZK全鏈數據計算和驗證平台Brevis

BlockBeats 律動財經 2023-03-22 09:30

cover image of news article
律動財經圖片

TL; DR

眾所周知,Web2 應用通常像一個個被圍牆隔離起來的花園,獨立運行,這導致了其數據互操作性受限、用戶鎖定和身份碎片化等問題。基於區塊鏈構建的 Web3 去中心化應用 (dApps)確實可以解決這些問題。然而,作為 dApp 核心的智能合約目前無法以去信任的方式來訪問和利用儲存在多個區塊鏈完整歷史中的大量數據。

為了解除這個限制,我們推出了 Brevis,一個 ZK 全鏈數據計算和驗證平台,它使 dApp 能夠以完全去信任的方式訪問、計算和利用跨多個區塊鏈的任意數據。

圖 1. Brevis 架構

Brevis 的架構包括三個組件:zkFabric、zkQueryNet 和 zkAggregatorRollup。

zkFabric 從所有連接的區塊鏈中收集「區塊頭」,通過 ZK 輕客戶端電路證明其有效性後,生成共識證明。該組件對於 dApps 以去信任的方式自由訪問「區塊頭」以及受支持區塊鏈的所有狀態至關重要。

zkQueryNet 是一個提供 ZK 查詢引擎的開放市場,可直接接受來自鏈上智能合約的數據查詢,並通過 ZK 查詢引擎電路生成查詢結果和相應的 ZK 查詢證明。其中一些引擎提供高度專業化的查詢,例如計算可配置時間段內的 dex 交易量;另一些引擎高度通用化,支持數據索引抽象和高級查詢語言,以滿足各種應用需求。

zkAggregatorRollup 是一個專門的 ZK rollup,充當 zkFabric 和 zkQueryNet 的聚合和儲存層。它驗證來自這兩個組件的證明,儲存證明數據,並將其 zk 證明狀態根提交給所有連接的區塊鏈,允許 dApp 直接在自身鏈上智能合約的業務邏輯中訪問證明查詢結果。

通過這種模塊化架構,Brevis 可以為鏈上智能合約提供完全去信任、靈活且高效的全鏈數據訪問和計算能力。Brevis 解鎖了全新的 dApp 開發範式,支持廣泛的用例,例如數據驅動型 DeFi、zk 跨鏈橋、鏈上用戶獲取、zkDID、社交帳戶抽象化等等。

在 Brevis 最初的概念驗證中,我們用 gnark 在 zkFabric 中構建了一些當前運行最快的 ZK 輕客戶端電路,用於 Ethereum PoS、Cosmos 和 BNB Chain,使任何 EVM 和非 EVM 鏈能夠以完全去信任的方式訪問這三條鏈的狀態。

表 1 總結了一些關鍵電路性能基準數據(數據由 20 核、2.3GHz 、 384GB 內存的 Linux 服務器取得,測試未使用 GPU 加速)。使用這些 ZK 輕客戶端電路,我們實現了一個面向用戶、支持 Ethereum Goeril 和 BNB Chain 之間跨鏈的資產 zkBridge。

表 1 - ZK 輕客戶端電路性能測評(Linux 服務器/ 20 核/@2.3GHz /384GB 內存)

想要深入了解 Brevis,請繼續閱讀本文。歡迎參閱 Brevis 白皮書,獲取全面的技術資訊。

Web3.0 dApp 正在錯失全鏈數據的潛在價值

Web 2.0 應用徹底改變了網路用戶的交互和內容生成模式。然而,這些應用通常像被圍牆隔離開的花園一樣單獨運作,用戶數據儲存在由平台供應商控制的中心化數據庫中。這導致了數據互操作性受限、身份碎片化、金融和社交數據鎖定等諸多問題,從而導致了創新受阻、供應商鎖定、隱私濫用和用戶體驗碎片化等後果。

構建在區塊鏈上的 Web3 去中心化應用 (dApp) 將能夠打破這些資訊孤島,這是因為區塊鏈的數據儲存僅允許在原有基礎上添加新資訊,且所有數據可公開訪問。隨著多鏈生態擴展,也因為 dApp 的日益普及,L1 區塊鏈和 L2 rollup 積累了豐富的原始數據—例如資產轉移、合約函數調用、合約內事件和區塊鏈狀態根,這些數據將使我們能夠提取有價值的資訊,例如資產所有權、用戶活動概況、社交圖譜、金融聯繫、市場價格趨勢、交易量等。

許多鏈下產品和項目已經在利用可公開訪問數據儲存的以上特性—Dune Analytics 和 Graph 等產品能夠為區塊鏈應用提供跨時間段的鏈下數據索引或數據分析。它們還可為 dApp 的前端 UI 提供狀態數據,例如用戶交易歷史記錄。這些應用以鏈下方式訪問區塊鏈數據,通過區塊鏈節點的 RPC 端口記錄、索引和計算數據。

很自然,我們會認為鏈上區塊鏈應用或智能合約應該能夠以完全去信任的方式,在其業務邏輯中輕鬆訪問和利用這些全鏈數據,畢竟,這些 dApp 是區塊鏈內部的「原生居民」。

然而,事實並非如此。

事實上,Web3 dApp 無法以完全去信任的方式訪問儲存在區塊鏈中的絕大部分數據。這是因為部署在單個區塊鏈上的智能合約存在於區塊鏈虛擬機這一場景中,因此只能通過以下方式訪問數據:

· (1) 通過其他智能合約明確定義的接口;

· (2) 數據須在 dApp 本身所在的區塊鏈上;

· (3) 只能獲得當前狀態,無法獲得完整的歷史數據。

有人可能會說,有一些方案理論上是可以解決上述問題的,例如直接在智能合約中解析和計算數據查詢語義,或者使用基於純智能合約、去信任的輕客戶端來驗證共識算法。然而,由於高昂的鏈上計算成本,這些方法實際並不可行。我們可以使用鏈下預言機,但它們需要依賴預言機本身的外部安全性來確保數據有效性。

那麼,我們怎麼讓智能合約訪問和計算任何區塊鏈內任意時間段的數據呢?

零知識簡潔證明:計算遷移的魔法

零知識簡潔證明技術 (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 查詢引擎的證明者將接收此查詢請求。ZK 查詢引擎使用 zkFabric 提供的已經 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 runtime 具有以下功能:

·(1)遞歸驗證由 zkQueryNet 和 zkFabric 生成的證明;

·(2)儲存來自 zkFabric 的已由 zk 驗證的區塊頭;

·(3)儲存查詢請求和 zk 驗證結果。

在接入一個新的 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 可以生成已經 zk 證明的查詢結果,鏈上智能合約的業務邏輯可以去信任的方式直接使用這些查詢結果,而鏈下解決方案的數據結果只能用於基於 web2 的數據分析情境之中。

用例演示

圖 2 - 用例演示

在討論廣泛的用例之前,我們提供了一個具體的應用示例來概述 Brevis 的工作流程。注意,此概述抽象了一些關鍵細節,我們建議讀者參閱完整的白皮書以獲取詳細資訊。

像 PancakeSwap 這樣部署在多鏈上的去中心化交易平台 (DEX) 通常需要根據交易對質量得分(例如平均每日交易量、14 天交易量、價格波動、活躍交易用戶數量和活躍流動性提供者數量)動態調整所有鏈上流動性池的獎勵。

目前,此類調整必須通過社區治理建議進行,這需要大量的人力開銷,並且只能在獎勵設置嚴重偏離最佳方案時才能完成。這種次優獎勵配置,通常落後於市場趨勢,並會導致用戶參與度下降、收益損失和資金庫預算浪費。

Brevis 使 DEX 能夠根據當前全鏈市場趨勢,通過程式化和去信任的方式調整流動性激勵計劃,以應對這些挑戰。為簡單起見,假設我們只想獲取交易量這一數據,並且在 zkQueryNet 中有一個 ZK 查詢引擎,它為 DEX 交易量數據提供了一組高度優化的電路,其 API 如下所示:

uint_64 get_trading_volume(uint_64 chain_id,

uint_64 start_block,

uint_64 end_block,

address pair)

上文圖 2 顯示了此用例運行的分步流程。要使用這個數據計算 API,DEX 智能合約首先需要用上述查詢參數調用 zkQueryNet 的代理智能合約(記為)。請注意,此函數是異步的,只會立即返回一個 query_id,因此 DEX 的智能合約會記住此 ID,並還會提供一個處理程序來稍後處理返回值。

這個函數調用隨後被 的證明者 P_q 所捕獲。P_q 使用 chain_id 已經在 zkAggregatorRollup 中驗證並儲存的區塊頭來證明 DEX 的 trading_pair 在指定時間段內從 start_block 到 end_block,確實有 volume,並生成一個 ZK 證明。

Q 的證明驗證器在 zkAggregatorRollup 中驗證 π 和 volume 結果,並將相應的查詢參數都儲存在 zkAggregatorRollup 中。此狀態隨後會被包含在 zkAggregatorRollup 的狀態根 S 中,並提交到 DEX 部署的鏈上。

現在,A 可以通過使用 S 的狀態包含證明來獲取和驗證查詢結果,然後將獲取到的查詢結果返回給 DEX 的智能合約處理函數。處理函數能夠將儲存的 query_id 與返回的查詢結果進行匹配,並根據成交量數據相應地調整流動性激勵計劃。

zkFabric 概念證明:Ethereum PoS、Cosmos Tendermint、BNB Chain Light Client ZK Circuits 以及 ZK Bridge

幾乎所有現存的互操作性解決方案都屬於「外部驗證模型」,需要信任一個中間實體。雖然理論上,基於鏈上輕客戶端的解決方案是信任最小化的,但在實施起來成本太高。Brevis 通過將輕客戶端協議和 ZKP 相結合來解決這一挑戰,其中 zkFabric 為所有支持的區塊鏈生成 ZK 共識證明,並將相應的區塊頭儲存在 zkAggregatorRollup 中。在 Brevis 最初的概念驗證中,我們在 Ethereum PoS、Cosmos Tendermint 和 BNB Chain 上實現了 ZK 電路的輕客戶端協議。

· Ethereum PoS 輕客戶端。Ethereum PoS 輕客戶端電路主要由兩個子電路組成。一個是 SSZ Sync Committee Commitment 電路,用於更新 512 個當前同步委員會驗證器的 SSZ 承諾,每 27 小時輪換一次。另一個是 512 個驗證器的聚合 BLS12-381 簽名驗證,它主要進行哈希到曲線計算,並進行 BN254 標量域上的 BLS12-381 配對,以便在以太坊智能合約中進行高效驗證。這裡,非本機配對需要大規模的非本機域算法。通過實現各種 BLS 配對技巧並使用 gnark 提供的高效範圍檢查工具,我們實現了相對於現有實現最快的基於 BN254 標量域的 BLS12-381 簽名驗證。對於 SSZ Sync Committee Commitment 電路,我們正在使用查找表進行優化,並將很快發布一個優化電路。

· Cosmos Tendermint 和 BNB Chain 輕客戶端。BNB Chain 包含兩層架構,包括基礎層(BNB Beacon Chain -BBC)和執行層(BNB Smart Chain -BSC)。BBC 採用 Tendermint 共識,而 BSC 採用 Parli 的權威證明(PoA)共識。每個 BSC 區塊由驗證器集合中的某一個進行簽名確認。作為專門的 Tendermint 應用,BBC 管理 BSC 驗證器集合的選舉和更新。每 24 小時,BBC 會通過類似 IBC 的跨鏈機制(此機制早於官方 IBC 規範),選舉產生一個新的 BSC 驗證器集合,並將其與 BSC 同步。對於 BBC(本質上是 Tendermint),輕客戶端將主要驗證一批 Ed25519 簽名,而在鏈上直接進行這步驗證的成本很高。我們在 gnark 中實現了基於 BN254 標量域的非本機 Ed25519 簽名驗證。通過 gnark 中的範圍檢查工具,我們實現了非本機 Ed25519 簽名驗證的最高性能。對於 BSC,PoA 共識涉及 secp256k1 簽名驗證,由於預編譯的存在,直接在智能合約中驗證。

上述電路已在 gnark 中部署並開源。本篇文章開頭的表格 1 已展示其基準性能。請注意,我們正在不斷優化電路,也希望在不久的將來利用硬體加速和並行化實現優化。

基於輕量級客戶端,我們構建了一條支持在 Goerli 測試網和 BNB Chain 測試網之間進行雙向資產轉移的 ZK 資產橋。需要注意的是,對於從 Goerli 到 BNB Chain 測試網的資產跨鏈,由於包括源鏈交易的區塊頭只有在 2-3 個 epoch(64-96 個區塊)之後才會被最終確認並傳輸,所以預計的延遲時間約為 25 分鐘。

基於 Brevis 的多種創新用例

除了上述 ZK Bridge 示例之外,Brevis 還可支持開發者創建 dApp,以前所未有的方式訪問全鏈任意時間的數據。毫無疑問,這項創新技術將建立一個新的範例,改變 dApp 在所有領域的開發方式。在本節中,我們將展示一些可立即面市的應用,也期待社區與我們一起探索更多用例。

數據驅動型 DeFi

除了上文中探討的流動性激勵自動調整這一用例外,我們相信「數據驅動型 DeFi」將成為基於 Brevis 的廣泛應用類別之一,這要歸功於它的可擴展性和隱私性。

通過用去信任的方式訪問所有全鏈交易數據及歷史狀態,期權等衍生品現在可以添加新的執行條件,例如指數時間加權價格或時間-交易量加權價格。通過部署各種 ZK 查詢引擎,一些新型的鏈上替代衍生品也將成為可能,它們可以跟蹤用戶行為、價格趨勢、協議或區塊鏈鎖倉變化、波動性、價格相關性等。

鏈上主動型基金管理解決方案可以生成 ZK 證明,證明部位調整完全基於市場數據的特定算法模型,沒有任何未經授權的人為干預。此外,由於 Brevis 的隱私保護特性,其可以隱藏精確的模型參數以保持競爭市場優勢。

用戶獲取渠道去信任進行歸因分成

在 Web 2.0 中,用戶獲取過程在用戶下載或註冊軟體時結束,廣告主為獲取的用戶支付固定價格,無論其留存價值如何。這種模式對廣告主和廣告渠道來說都不太理想,因為前者無法區分用戶價值,後者無法分享長期收益。出現這一問題是因為獲客後的用戶數據只屬廣告主私有,渠道無法訪問。

Web 3.0 可能會改變這種模式,因為大部分用戶活動數據都是公開的。然而,當前的平台仍然遵循 Web 2.0 範式。Brevis 通過允許廣告渠道為獲得的用戶生成去信任的收入證明,徹底改變了這一困境。這一創新技術將促使 Web 3.0 的用戶獲取方式發生根本性轉變,廣告主只為高價值用戶付費,渠道也會在激勵模式驅動下以最佳方式匹配用戶與廣告主。

ZK 去中心化身份解決方案

Brevis 是構建去信任 zkDID 解決方案的重要工具,有助於防止 Sybil 攻擊並優化各種用例中的用戶生命周期管理。通過基於難以偽造的鏈上行為生成 ZK 證明,Brevis 使 dApp 開發者能夠以完全去信任的方式運行,同時防止活動或推廣中的 Sybil 攻擊。

通過利用聚合用戶行為的查詢結果和數據,Brevis 可以幫助構建一個去信任的用戶生命周期管理流程,從而促進區塊鏈遊戲中的忠誠度系統、VIP 交易程序和 LiveOps 活動。通過 Brevis 構建的該流程與應用內記賬相比具有多項優勢,例如成本更低、面向未來和可移植性。通過 Brevis 生成的 zkDID 儲存在 zkAggregatorRollup 中,可供不同的應用訪問。

帳戶抽象

Brevis 通過提高區塊鏈應用的安全性和可用性,在帳戶抽象 (AA) 領域提供了引人注目的用例。關鍵應用之一是社交賬號恢復,即在用戶丟失主要控制密鑰的情況下,Brevis 可以幫助用戶重新獲得錢包訪問權限。Brevis 使智能錢包能夠基於最近的交易連接而非一組固定的外部錢包來實現社交賬號恢復。這種方法減少了維護成本並降低了行業新用戶的進入門檻。

Brevis 在社交和 NFT 遊戲等許多其他領域也有潛在的應用。我們非常歡迎開發者探索並構建更多 Brevis 新用例!

原文連結

暢行幣圈交易全攻略,專家駐群實戰交流

▌立即加入鉅亨買幣實戰交流 LINE 社群(點此入群
不管是新手發問,還是老手交流,只要你想參與虛擬貨幣現貨交易、合約跟單、合約網格、量化交易、理財產品的投資,都歡迎入群討論學習!

前往鉅亨買幣找交易所優惠






Empty