ZK coprocessor 使區塊鏈可以在不傷害去中心化的情況下以較低成本的方式讓智能合約抓取更多數據,獲取鏈下的計算資源,同時解藕了智能合約的工作流,增加了可拓展性和效率。

作者:Mike@Foresight Ventures

封面:Photo by Shubham Dhage on Unsplash

一、概念介紹

關於協處理器這個概念,一個很淺顯易懂的例子就是電腦和顯卡的關係,CPU 可以完成大部分任務,但是一旦遇到特定任務,就需要顯卡的幫助,因為 CPU 算力不夠,比如說機器學習,圖形渲染,或者是大型遊戲的運行,我們玩大型遊戲的時候如果不想掉幀或者卡頓,那肯定就需要一塊性能很好的顯卡。 那在這個場景中,CPU 就是處理器,顯卡就是協處理器。 映射到區塊鏈上,智能合約就是 CPU,ZK 協處理器就是 GPU。

關鍵點就是把特定任務交給特定的協處理器做,就像一個工廠里,老闆知道每個環節的步驟,也可以自己做,也可以教員工整個生產過程,但是這樣效率就很低,只能一個一個生產,一個生產完了才能生產下一個,於是他雇了很多特定的員工,他們各司其職,在自己的車間做著生產鏈條上自己擅長的工作,鏈條的環節之間可以互相進行通信協同但互不干涉對方的工作, 只做自己最擅長的事,手速快體力好的就打螺絲,懂操作機器的就去操作機器,懂財會的就去計算生產量和成本,異步協同工作從而最大化工作效率。

在工業革命的時候,資本家們就已經發現這種模式能給自己的工廠帶來最大的產能,但可能因為技術或者別的原因,生產環節中的一步遇到壁壘的時候,可能要外包別的專門的生產商去做,比如說一個生產手機的公司,晶元可能由別的專門的晶元公司生產,手機公司就是中央處理器,晶元公司就是協處理器。 協處理器能夠輕鬆異步處理中央處理器自身難以處理的壁壘較大和繁瑣的特定任務。

ZK 協處理器廣義上比較寬泛,有的專案叫自己協處理器,有的叫 ZKVM,但是都是同一個思路:允許智慧合約開發者在現有的數據上無狀態地證明鏈下計算。 簡單來說就是把一些鏈上計算的工作丟到鏈下,降本增效,同時用 ZK 保證計算的可靠性,並保護特定數據的隱私。 在數據驅動的區塊鏈世界里,這顯得尤為重要。

二、為什麼我們需要 ZK 協處理器

智慧合約開發者面臨的最大瓶頸之一仍然是與鏈上計算相關的高昂成本。 由於每次操作都要計量 Gas,因此複雜應用邏輯的成本很快就會變得高到沒法執行,因為區塊鏈的 DA 層中的存檔節點雖然確實能夠存儲歷史數據,這也是為什麼像 Dune Analytics,Nansen,0xscope,Etherscan 這些鏈外分析應用能有那麼多來自區塊鏈上的數據,並且可以追溯到很久以前, 但對於智慧合約來說要訪問所有的這些數據並不簡單,它只能夠輕鬆訪問虛擬機狀態中儲存的數據,最新的區塊數據,以及其他公開的智慧合約的數據。 對於更多的數據,智能合約可能要耗費很大的功夫去訪問:

智能合約在乙太坊虛擬機(EVM)中能夠訪問最近的 256 個區塊的區塊頭哈希值。 這些區塊頭包含了區塊鏈中直到當前區塊為止的所有活動資訊,並通過默克爾樹和 Keccak 哈希演算法被壓縮成了 32 位元組的哈希值。

雖然這些數據被哈希打包過了,但其實它們是可以解壓的——只是這並不容易實現。 例如,如果你想利用最近的區塊頭來無需信任地訪問上一個區塊中的特定數據,這涉及一系列複雜的步驟。 首先,你需要從存檔節點獲取鏈外數據,然後構建一個默克爾樹和區塊的有效性證明,以驗證該數據在區塊鏈上的真實性。 隨後,EVM 會處理這些有效性證明,進行驗證和解釋,這種操作不僅繁瑣而且時間長,Gas 還特別貴。

這個挑戰的根本原因在於,區塊鏈虛擬機(如 EVM)本身並不適合處理大量數據和密集型計算任務,比如上述的解壓縮工作。 EVM 的設計重點是在保證安全和去中心化的同時,執行智慧合約代碼,而非處理大規模數據或進行複雜的計算任務。 因此,當涉及到需要大量計算資源的任務時,通常需要尋找其他解決方案,比如利用鏈下計算或其他擴展技術,這時候,ZK 協處理器應運而生。

ZK rollups 其實就是最早的 ZK 協處理器,以更大的規模和數量支援在 L1 上使用的同類型計算。 這個處理器是協議層面上的,現在我們說的 ZK 協處理器是 dapp 層面上的。 ZK 協處理器通過允許智慧合約使用 ZK 證明無信任地委託歷史性鏈上數據訪問和計算來增強智慧合約的可拓展性。 開發者可以將昂貴的操作轉移到 ZK 協處理器上,並簡單地使用鏈上的結果,而不是在 EVM 中執行所有操作。 通過將數據訪問和計算與區塊鏈共識解耦,這為智能合約提供了一種新的擴展方式。

ZK 協處理器為鏈上應用引入了一種新的設計模式,消除了計算必須在區塊鏈虛擬機中完成的限制。 這使得應用程式在控制 gas 成本的情況下可以訪問更多數據,並以比以前更大的規模運行,在不損害去中心化和安全性的情況下增加了智慧合約的可擴展性和效率。

三、技術實現

這個部分將以 Axiom 的架構詮釋技術上 zk coprocessor 是怎麼解決問題的。 其實就是兩個核心:數據抓取和計算。 在這兩個過程中,ZK 同時保障了效率和隱私。

3.1 數據抓取

在 ZK 協處理器上執行計算最重要的一個方面是確保從區塊鏈歷史中正確訪問所有輸入數據。 前文有提到過其實這挺難的,因為智能合約只能在其代碼中訪問當前的區塊鏈狀態,而即使是這種訪問也是鏈上計算中最昂貴的部分。 這意味著交易記錄或以前的餘額等歷史性鏈上數據(計算中有趣的鏈上輸入)無法被智慧合約本地使用,以驗證協處理器的結果。

ZK 協處理器通過三種不同的方式來解決這個問題,在成本、安全性和開發難度之間進行權衡:

  1. 在區塊鏈狀態中存儲額外數據,並使用 EVM 儲存讀取驗證協處理器在鏈上使用的所有數據。 這種方法相當昂貴,對於海量數據來說成本過高。
  2. 信任 Oracle 或簽名者網路來驗證協處理器的輸入數據。 這要求協處理器使用者信任 Oracle 或多重簽名提供者,但這樣降低了安全性。
  3. 使用 ZK 證明來檢查協處理器中使用的任何鏈上數據是否在區塊鏈歷史中得到了承諾。 區塊鏈中的任何區塊都會提交所有過去的區塊,因此會提交任何歷史數據,從而為數據有效性提供加密保證,並且不需要使用者提供額外的信任假設。

3.2 計算

在 ZK 協處理器中執行鏈下計算需要將傳統計算機程式轉化為 ZK 電路。 目前,所有實現這一目的的方法都會對性能產生巨大影響,與本地程序執行相比,ZK 證明的開銷從 10,000 到 1,000,000 不等。 另一方面,ZK 電路的計算模型與標準計算機體系結構不同(比如,目前所有變數都必須以一個大的加密質數為模數來編碼,而且執行可能是非確定性的),這意味著開發人員很難直接編寫它們。

因此,在 ZK 協處理器中指定計算的三種主要方法主要是在性能、靈活性和開發難度之間進行權衡,:

  1. 自定義電路: 開發人員為每個應用編寫自己的電路。 這種方法具有最大的性能潛力,但需要開發人員投入大量精力。
  2. 電路的 eDSL / DSL: 開發人員為每個應用編寫電路,但要在一個有主見的框架中抽象出 ZK 特有的問題(類似於使用 PyTorch 處理神經網路)。 但這樣性能就稍微低一些。
  3. zkVM 開發人員在現有虛擬機中編寫電路,並在 ZK 中驗證其執行。 在使用現有虛擬機時,這為開發人員提供了最簡單的體驗,但由於虛擬機和 ZK 之間的計算模型不同,這樣性能和靈活性都比較低。

四、應用

ZK 協處理器的應用非常廣泛,Dapp 能覆蓋到的所有應用場景 ZK 協處理器理論上來說都能覆蓋到。 只要是跟數據和計算相關的任務,ZK 協處理器都能起到降本增效、保護隱私的作用,以下將從不同的賽道出發,探討 ZK 處理器能在應用層具體做些什麼。

4.1 Defi

4.1.1 DEX

以 Uniswap V4 裡的 hook 來舉例:

Hook 允許開發者在流動性池的整個生命週期中的任意關鍵點執行指定的操作——例如在交易代幣之前或之後,或者在 LP 頭寸更改之前或之後,自定義流動性池、兌換、費用和 LP 頭寸之間的交互方式,比如說:

  • 時間加權平均做市商(TWAMM);
  • 基於波動性或其他投入的動態費用;
  • 鏈上限價訂單;
  • 將超出範圍的流動性存入借貸協定;
  • 定製化的鏈上預言機,例如幾何平均數預言機;
  • 自動複利 LP 手續費到 LP 頭寸;
  • Uniswap 的 MEV 利潤分配給 LP;
  • LP 或者交易員的忠誠度折扣計劃;

簡單來說就是可以讓開發者根據自己的想法,抓取任意鏈上歷史數據並用來自定義 Uniswap 裡的池子的機制,Hook 的出現給鏈上的交易帶來更多的可組合性,和更高的資本效率。 然而,定義這些的代碼邏輯一旦複雜起來,就會給使用者和開發者帶來極大的 gas 負擔,那麼這個時候 zkcoprocessor 就派上用場了,它可以説明省去這些 gas 費用,又提高了效率。

從更長遠的視角來看,ZK 協處理器將加速 DEX 和 CEX 的融合,自 2022 年以來,我們看到 DEX 和 CEX 在功能上趨於一致,各大 CEX 都在接受這一現實,並採用 Web3 錢包、構建 EVM L2 並採用閃電網路等現有基礎設施或開源來擁抱鏈上的流動性份額。 這種現象的背後離不開 ZK 協處理器的助推,CEX 能實現的所有功能,無論是網格交易,跟單,快速借貸,還是用戶數據的使用,DEX 也能通過 ZK 協處理器實現,而 Defi 的可組合性和自由度,以及鏈上小幣種的交易,傳統的 CEX 都難以實現,同時 ZK 技術還能在執行的同時保障用戶的隱私。

4.1.2 空投

如果一些專案方想進行空投,那就需要智慧合約查詢位址的歷史活動,但又不想暴露使用者的位址資訊,並在不引入額外信任證明的情況下執行,比如說一個做 Defi lending 的專案方想通過位址和 Aave,Compound,Fraxlend,Spark 一系列的借貸協定的交互量作為空投的標準,ZK 協處理器的抓取歷史數據和隱私特性可以輕鬆的解決這個需求。

4.2 ZKML

ZK 協處理器另一個令人興奮的點是在機器學習這塊,既然可以賦予智慧合約鏈下計算的能力,那麼鏈上的高效率機器學習將成為可能,而事實上,ZK 協處理器確實也是目前 ZKML 數據的輸入和計算不可或缺的板塊,它可以智慧合約中導入的鏈上/鏈下歷史數據中提取機器學習需要的 input,然後把計算編寫成 ZK 電路丟到鏈上。

4.3 KYC

KYC 是一個很大的生意,現在 web3 世界正在逐漸擁抱合規,有了 ZK 協處理器,就可以通過抓取使用者提供的任何鏈下數據,做出一個智慧合約可驗證的證明,而不需要暴露使用者的任何多餘資訊,事實上一些專案正在落地,比如說 Uniswap 的 KYC hook,就是採用了 ZK 協處理器 Pado 無信任地抓取鏈下數據。 資產證明,學歷證明,出行證明,駕駛證明,執法證明,玩家證明,交易證明....... 一切鏈上鏈下的歷史行為,甚至可以打包成一個完整的身份,都可以寫成可信度極強的 ZK 證明上鏈,同時保護用戶隱私。

4.4 Social

Friend.tech 的投機屬性其實要比社交屬性更強,核心在於它的 bonding curve,那有沒有可能也給 friend.tech 的 bonding curve 上一個 hook,讓使用者可以自定義 bonding curve 的走向,比如說實現在交易 key 的熱潮結束,投機者離開之後,讓 bonding curve 變得平滑,使真正的粉絲進入門檻變低, 實現真正的私域流量的增長。 又或是讓智慧合約獲得使用者的鏈上/鏈下的社交圖譜,在不同的社交 Dapp 上都能夠一鍵關注自己的好友。 又或者在鏈上建立 private club,比如說 Degen club,達到歷史 Gas 消耗條件的位址才能進入等等。

4.5 Gaming

在傳統的 Web2 遊戲中,用戶數據是一個很重要的參數,購買行為,遊戲風格以及貢獻都可以讓遊戲更好的去運營,提供更好的用戶體驗,比如說 MOBA 遊戲中的 ELO 匹配機制,對皮膚的購買頻率等等,但在區塊鏈上這些數據難以被智慧合約抓取,所以只能用中心化的方案取代或者乾脆直接放棄。 但 ZK 協處理器的出現使得去中心化的方案成為可能。

五、專案方

這個賽道里已經有了一些佼佼者,思路其實都差不多,通過 storage proof 或者共識生成 ZK 證明然後丟到鏈上,但技術特點和實現的功能各有所長。

5.1 Axiom

Axiom 作為 ZK(零知識)協處理器的領導者,專注於智慧合約能夠無需信任地訪問整個乙太坊歷史和任何 ZK 驗證計算。 開發者可以向 Axiom 提交鏈上查詢,Axiom 隨後通過 ZK 驗證處理這些查詢,並以無信任的方式將結果回傳給開發者的智能合約。 這使得開發者能夠構建更豐富的鏈上應用程式,而無需依賴額外的信任假設。

為了實現這些查詢,Axiom 執行以下三個步驟:

  1. 讀取:Axiom 利用 ZK 證明,無需信任地從乙太坊歷史區塊的區塊頭、狀態、交易和收據中讀取數據。 由於所有乙太坊鏈上數據都以這些格式編碼,Axiom 因此能夠存檔節點能夠存取的所有內容。 Axiom 通過 Merkle-Patricia 三元組和區塊頭哈希鏈的 ZK 證明來驗證 ZK 協處理器的所有輸入數據。 雖然這種方法開發起來比較困難,但它能為最終使用者提供最佳的安全性和成本,因為它能確保 Axiom 傳回的所有結果在密碼學上等同於 EVM 中進行的鏈上計算。
  2. 計算:數據攝取后,Axiom 在其上應用經過驗證的計算。 開發者可以在 JavaScript 前端指定他們的計算邏輯,每次計算的有效性都在 ZK 證明中得到驗證。 開發者可以訪問 AxiomREPL 或查看文件,瞭解可用的計算原語。 Axiom 通過 eDSL 允許使用者存取鏈上數據並指定自己的計算。 還允許使用者使用 ZK 電路庫編寫自己的電路。
  3. 驗證:Axiom 為每個查詢結果提供 ZK 有效性證明,這些證明確保(1)輸入數據是從鏈中正確提取的,(2)計算是正確應用的。 這些 ZK 證明在 Axiom 智慧合約中進行鏈上驗證,確保最終結果在使用者的智慧合約中可靠使用。

由於結果是通過 ZK 證明驗證的,Axiom 的結果在密碼學上與乙太坊的結果具有相同的安全性。 這種方法不對加密經濟學、激勵機制或博弈論做任何假設。 Axiom 相信這種方式將為智慧合約應用提供盡可能高的保證水準。 Axiom 團隊和 Uniswap Foundation 密切合作,拿到了 Uniswap 的 Grants,將在 Uniswap 上打造無信任的預言機。

5.2 Risc Zero

Bonsai: 在 2023 年,RISC Zero 發佈了 Bonsai,這是一個證明服務,允許鏈上和鏈下應用請求並接收 zkVM 證明。 Bonsai 是一個通用的零知識證明服務,允許任何鏈、任何協定和任何應用利用 ZK 證明。 它具有高度並行性,可程式設計性和高性能。

Bonsai 使你能夠直接將零知識證明集成到任何智能合約中,無需定製電路。 這使得 ZK 可以直接整合到任何 EVM 鏈上的去中心化應用程式中,有潛力支援任何其他生態系統。

zkVM 是 Bonsai 的基礎,支援廣泛的語言相容性,支援可證明的 Rust 代碼,以及潛在的任何編譯到 RISC-V 的語言(如 C++、Rust、Go 等)的零知識可證明代碼。 通過遞歸證明、定製電路編譯器、狀態延續以及對證明演算法的持續改進,Bonsai 使任何人都能為各種應用生成高性能的 ZK 證明。

RISC Zero zkVM: RISC Zero zkVM 首次發佈於 2022 年 4 月,可以證明任意代碼的正確執行,使開發者能夠用成熟的語言如 Rust 和 C++構建 ZK 應用。 這個發佈是 ZK 軟體開發的一個重大突破:zkVM 使得無需構建電路和使用定製語言就能構建 ZK 應用成為可能。

通過允許開發者使用 Rust 並利用 Rust 生態系統的成熟度,zkVM 使開發者能夠快速構建有意義的 ZK 應用,無需有高級數學或密碼學方面的背景。

這些應用包括:

  • JSON:證明 JSON 檔中某個條目的內容,同時保持其他數據的私密性。
  • Where's Waldo:證明 Waldo 出現在 JPG 檔中,同時保持圖像的其他部分私密。
  • ZK Checkmate:證明你看到一步將軍,而不透露獲勝的舉動。
  • ZK Proof of Exploit:證明你可以利用一個乙太坊帳戶,而不透露漏洞。
  • ECDSA 簽名驗證:證明 ECDSA 簽名的有效性。

這些示例都是通過利用成熟的軟體生態系統實現的:大部分 Rust 工具包在 Risc Zero zkVM 中開箱即用。 能夠相容 Rust 對 ZK 軟體世界來說是一個遊戲規則改變者:在其他平臺上可能需要幾個月或幾年才能構建的專案,在 RISC Zero 的平臺上可以輕鬆解決。

除了更容易構建之外,RISC Zero 還在性能上交付成果。 zkVM 具有 CUDA 和 Metal 的 GPU 加速,且通過延續實現了大型程式的並行證明。

此前,Risc Zero 獲得了 Galaxy Digital, IOSG, RockawayX, Maven 11, Fenbushi Capital, Delphi Digital, Algaé Ventures, IOBC 等機構的 4 千萬美元 A 輪融資。

5.3 Brevis

Celer Network 旗下的 Brevis 則專注於多鏈歷史數據的抓取,它賦予智慧合約能力,從任何鏈上讀取其完整的歷史數據,並執行全面無信任的定製計算,目前主要支援乙太坊 POS,Comos Tendermint 和 BSC。

應用介面:Brevis 的當前系統支援高效且簡潔的 ZK 證明,為連接至區塊鏈的去中心化應用(dApp)合約提供以下經過 ZK 證明的源鏈資訊:

  1. 源鏈上任何區塊的區塊哈希值及相關狀態、交易、收據根。
  2. 源鏈上任何特定區塊、合約、槽的槽值和相關元數據。
  3. 源鏈上任何交易的交易收據和相關元數據。
  4. 源鏈上任何交易的交易輸入和相關元數據。
  5. 源鏈上任何實體發送至目標鏈上任何實體的任意資訊。

架構概述:Brevis 的架構由三個主要部分構成:

  1. 中繼器網路:它同步來自不同區塊鏈的區塊頭和鏈上資訊,並將其轉發給驗證器網路以生成有效性證明。 之後,它會將驗證過的資訊及其相關證明提交至連接的區塊鏈。
  2. 證明者網路:為每個區塊鏈的輕用戶端協定、區塊更新實現電路,並生成所請求的槽值、交易、收據以及集成應用邏輯的證明。 為了最小化證明時間、成本和鏈上驗證成本,證明者網路可以匯總同時生成的分散式證明。 此外,它還可以利用 GPU、FPGA 和 ASIC 等加速器來提高效率。
  3. 連接區塊鏈上的驗證器合約:接收由驗證器網路生成的經過 zk 驗證的數據和相關證明,然後將經過驗證的信息反饋給 dApp 合約。

這一整合的架構使得 Brevis 在提供跨鏈數據和計算時,能夠保證高效率和安全性,從而使 dApp 開發者能夠充分利用區塊鏈的潛力。 有了這種模組化架構,Brevis 可以在所有支持的鏈上為鏈上智能合約提供完全免信任、靈活、高效的數據訪問和計算能力。 這為 dApp 開發提供了全新的範式。 Brevis 具有廣泛的用例,如數據驅動的 DeFi、zkBridges、鏈上用戶獲取、zkDID、社交帳戶抽象等,增加了數據的互操性。

5.4 Langrange

Langrange 和 Brevis 的願景類似,旨在通過 ZK Big Data Stack 增強多鏈之間的互通,它能夠在所有主流區塊鏈上創建通用的狀態證明。 通過與 Langrange 協定整合,應用程式能夠提交多鏈狀態的聚合證明,這些證明隨後可以被其他鏈上的合約以非交互的方式驗證。

與傳統的橋接和消息傳遞協定不同,Langrange 協定不依賴於特定的節點組來傳遞資訊。 相反,它利用加密技術來即時協調跨鏈狀態的證明,這包括那些由不受信任的使用者提交的證明。 在這種機制下,即使資訊來源不可信,加密技術的應用也保證了證明的有效性和安全性。

Langrange 協定一開始將與所有 EVM 相容的 L1、L2 rollups 相容。 此外,Langrange 還計劃在不久的將來支援非 EVM 相容鏈,包括但不限於 Solana、Sui、Aptos 以及基於 Cosmos SDK 的流行公鏈。

Langrange 協定與傳統橋接和消息協議的區別:

傳統的橋接和消息傳遞協定主要用於在特定的一對鏈之間轉移資產或消息。 這些協定通常依賴於一組中間節點來確認源鏈在目標鏈上的最新區塊頭。 這種模式主要針對單一對單的鏈關係進行優化,基於兩個鏈的當前狀態。 相比之下,Langrange 協定提供了一種更通用、更靈活的跨鏈交互方法,使應用程式能夠在更廣泛的區塊鏈生態系統中進行交互,而不僅限於單一的鏈對鏈關係。

Langrange 協定專門優化了用於證明鏈間合約狀態的機制,而非僅限於資訊或資產的傳輸。 這一特點允許 Langrange 協定有效地處理涉及當前和歷史合約狀態的複雜分析,這些狀態可能跨越多條鏈。 這種能力使得 Langrange 能夠支援一系列複雜的跨鏈應用場景,例如計算多鏈去中心化交易所(DEX)上資產價格的移動平均值,或者分析多條不同鏈上貨幣市場利率的波動性。

因此,Langrange 狀態證明可被視為對多對一(n 對 1)鏈關係的優化。 在這種跨鏈關係中,一條鏈上的去中心化應用(DApp)依賴於來自多條其他鏈(n 條)的即時和歷史狀態數據的聚合。 這一特性極大地拓展了 DApp 的功能和效率,使其能夠匯總和分析來自多個不同區塊鏈的數據,進而提供更深入、全面的洞察。 這種方式顯著區別於傳統的單一鏈或一對一鏈關係,為區塊鏈應用提供了更加廣闊的潛力和應用範圍。

Langrange 此前獲得了 1kx,Maven11, Lattice,CMT Digital 和 gumi crypto 等機構的投資。

5.5 Herodotus

Herodotus 旨在為智慧合約提供來自其他乙太坊層的同步鏈上數據訪問。 他們認為存儲證明可以統一多個 Rollups 的狀態,甚至允許乙太坊層之間的同步讀取。 簡單來說就是跨 EVM 主鏈和 rollup 之間的數據抓取。 目前支援 ETH 主網,Starknet,Zksync,OP,Arbitrum 和 Polygon。

Herodotus 定義的 Storage Proof 是一種復合證明,可用於驗證大型數據集中的一個或多個元素的有效性,比如整個乙太坊區塊鏈中的數據。

Storage Proof 的生成流程大致分為三個步驟:

第一步:獲取可驗證承諾的區塊頭儲存累加器

  • 這一步是為了獲取一個我們可以驗證證明的「承諾」。 如果累加器還沒有包含我們需要證明的最新區塊頭,我們首先需要證明鏈的連續性,以確保覆蓋到包含我們目標數據的區塊範圍。 例如,如果我們要證明的數據在區塊 1,000,001 中,而區塊頭儲存的智慧合約只覆蓋到區塊 1,000,000,那麼我們就需要對頭存儲進行更新。
  • 如果目標區塊已在累加器中,則可以直接進行下一步。

第二步:證明特定帳戶的存在

  • 這一步需要從乙太坊網路中所有賬戶構成的狀態樹(State Trie)中生成包含證明。 狀態根是推導區塊承諾哈希的重要部分,也是頭存儲的一部分。 需要注意的是,累加器中的區塊頭哈希值可能與區塊的實際哈希值不同,因為為了提高效率,可能採用了不同的哈希處理方法。

第三步:證明帳戶樹中的特定數據

  • 在這一步,可以為諸如 nonce、餘額、存儲根或 codeHash 等數據生成包含證明。 每個乙太坊帳戶都有一個存儲三元組(Merkle Patricia Tree),用於保存帳戶的存儲數據。 如果我們要證明的數據在帳戶存儲中,那麼就需要為該存儲中的特定數據點生成額外的包含證明。

生成所有必要的包含證明和計算證明之後,就形成了一個完整的存儲證明。 這個證明隨後會被發送到鏈上,在鏈上進行驗證,驗證依據是單一的初始承諾(如 blockhash)或頭存儲的 MMR 根。 這個過程確保了數據的真實性和完整性,同時也保持了系統的高效性。

Herodotus 已經得到了 Geometry,Fabric Ventures,Lambda Class 以及 Starkware 的支援。

5.6 HyperOracle

Hyper Oracle 專門為可程式設計零知識預言機設計,旨在保持區塊鏈的安全性和去中心化。 Hyper Oracle 通過其 zkGraph 標準,讓鏈上數據和鏈上等價計算變得既實用又可驗證,並且具有快速終結性。 它為開發人員提供了一種全新的方式來與區塊鏈互動。

Hyper Oracle 的 zkOracle 節點主要由兩個元件構成:zkPoS 和 zkWASM。

  1. zkPoS:這個元件負責通過零知識(zk)證明獲取乙太坊區塊鏈的區塊頭和數據根,以確保乙太坊共識的正確性。 zkPoS 還充當 zkWASM 的外部電路。
  2. zkWASM:它使用從 zkPoS 獲取的數據作為運行 zkGraphs 的關鍵輸入。 zkWASM 負責運行由 zkGraphs 定義的定製數據映射,併為這些操作生成零知識證明。 zkOracle 節點的操作員可以選擇他們想要運行的 zkGraph 數量,這可以是從一個到所有已部署的 zkGraph。 生成 zk 證明的過程可以委託給分散式的證明者網路。

zkOracle 的輸出是鏈外數據,開發者可以通過 Hyper Oracle 的 zkGraph 標準來使用這些數據。 這些數據還附帶 zk 證明,以驗證數據的有效性和計算。

為了維護網路安全,Hyper Oracle 網路只需要一個 zkOracle 節點。 然而,網路中可以存在多個 zkOracle 節點,針對 zkPoS 和每個 zkGraph 進行操作。 這樣可以並行生成 zk 證明,從而顯著提高性能。 總的來說,Hyper Oracle 通過結合先進的 zk 技術和靈活的節點架構,為開發者提供了一個高效且安全的區塊鏈互動平臺。

2023 年 1 月,Hyper Oracle 宣布獲得由 Dao5,紅杉中國,Foresight Ventures,FutureMoney Group 共同參與的 300 萬美元種子輪前融資。

5.7 Pado

Pado 在 ZK 協處理器中是一個比較特殊的存在,其他協處理器專注於抓取鏈上數據,而 Pado 提供了抓取鏈下數據的路徑,旨在把所有互聯網數據帶入智慧合約當中,在保證隱私和無需信任外部數據源的情況下一定程度上替代了預言機的功能。

5.8 ZK coprocessor 和預言機的對比

  • 延遲: 預言機是異步的,因此與 ZK coprocessor 相比,訪問平面數據時的延遲更長。
  • 成本: 雖然許多預言機不需要計算證明,因此成本較低,但安全性較低。 存儲證明成本更高,但安全性更高。
  • 安全性: 資料傳輸的最大安全性以預言機自身的安全級別為上限。 相比之下,ZK coprocessor 與鏈的安全性相匹配。 此外,由於使用鏈外證明,預言機容易受到操縱攻擊。

下圖展示了 Pado 的工作流:

Pado 採用加密節點作為後端證明者。 為了降低信任假設,Pado 團隊將採取演進策略,逐步完善證明者服務的去中心化。 證明者積极參與用戶數據檢索和共用過程,同時證明從網路數據源獲取的用戶數據的真實性。 其獨特之處在於,Pado 利用了 MPC-TLS(傳輸層安全多方計算)和 IZK(互動式零知識證明),使證明者能夠 “ 盲目 ” 地證明數據。 這意味著驗證者看不到任何原始數據,包括公共和私人用戶資訊。 不過,驗證者仍可通過加密方法確保任何傳輸的 TLS 數據的數據來源。

  1. MPC-TLS:TLS 是一種安全協定,用於保護互聯網通信的隱私和數據完整性。 當你訪問一個網站,並在 URL 上看到「鎖」圖示和「HTTPs」時,就意味著你的訪問是通過 TLS 進行保護的。 MPC-TLS 模仿了 TLS 用戶端的功能,使 Pado 的驗證器能夠與 TLS 用戶端協作,執行以下任務:需要注意的是,這些與 TLS 相關的操作都是在用戶端和驗證者之間通過雙方計算(2PC)協議執行的。 MPC-TLS 的設計依賴於一些加密技術,如混淆電路(GC)、遺忘傳輸(OT)、IZK 等。
    • 建立 TLS 連接,包括計算主要金鑰、工作話金鑰和驗證資訊等。
    • 在 TLS 通道中執行查詢,包括生成加密請求和解密伺服器回應。
  2. IZK:互動式零知識證明是一種證明者和驗證者可以進行交互的零知識證明。 在 IZK 協定中,驗證者的結果是接受或拒絕證明者的聲明。 與簡單的 NIZKs(如 zk-STARKs 或 zk-SNARKs)相比,IZK 協定具有幾個優點,如對大型聲明的高擴展性、低計算成本、無需可信設置以及最小化記憶體使用。

Pado 正在積極開發 Uniswap 的 kyc hook,尋求更多的數據上鏈應用場景,併入選了首批 Consensys Fellowship 計劃。

六、未來展望

ZK coprocessor 使區塊鏈可以在不傷害去中心化的情況下以較低成本的方式讓智能合約抓取更多數據,獲取鏈下的計算資源,同時解藕了智能合約的工作流,增加了可拓展性和效率。

單從需求端來看,ZK coprocessor 是個剛需,就單從 DEX 這個賽道來看,這個 hook 的潛力非常大,可以做很多事情,如果 sushiswap 不上 hook,就沒法和 uniswap 競爭,會被很快淘汰,如果不用 zkcoprocessor 上 hook,那麼對開發者和使用者來說 gas 就會很貴,因為 hook 引入了新的邏輯,讓智能合約變得更複雜, 適得其反。 那麼目前來看,使用 zk coprocessor 就是最好的解決方案。 無論從數據抓取還是計算來看,幾種方法都有不同的優劣點,適用於特定功能的協處理器就是好的協處理器。 鏈上可驗證計算市場前景廣闊,會在更多領域體現出新的價值。

在區塊鏈未來的發展中,有潛力打破 web2 傳統的數據壁壘,信息之間不再是孤島,實現更強的互操性,ZK 協處理器們將會成為強勁的中間件,在保障安全、隱私以及無信任的情況下為智慧合約的數據抓取、計算、驗證降本增效,解放數據網路,打開更多的可能性,成為真正的意圖應用落地以及鏈上 AI Agent 的基礎設施,只有你想不到,沒有你做不到。

試想在將來的一個場景:利用 ZK 做數據驗證的高可信度和隱私性,網約車司機們可以在自己的平臺之外另外建立一個聚合網路,這個數據網路可以涵蓋 Uber,Lyft,滴滴,bolt 等等,網約車司機可以提供自己平台的數據,你拿一塊,我拿一塊,在區塊鏈上把他拼起來,慢慢地獨立於自己平臺的網路就建立起來了,聚合了所有的司機數據, 成為了網約車數據的大聚合器,同時可以讓司機匿名,不洩漏自己的隱私。

七、索引

https://blog.axiom.xyz/what-is-a-zk-coprocessor/

https://crypto.mirror.xyz/BFqUfBNVZrqYau3Vz9WJ-BACw5FT3W30iUX3mPlKxtA

https://dev.risczero.com/api

https://blog.uniswap.org/uniswap-v4

https://blog.celer.network/2023/03/21/brevis-a-zk-omnichain-data-attestation-platform/

https://lagrange-labs.gitbook.io/lagrange-labs/overview/what-is-the-lagrange-protocol

https://docs.herodotus.dev/herodotus-docs/

https://docs.padolabs.org/

感謝 Yiping Lu 對本文的建議和指導

免責聲明:作為區塊鏈資訊平臺,本站所發佈文章僅代表作者及嘉賓個人觀點,與 Web3Caff 立場無關。 文章內的資訊僅供參考,均不構成任何投資建議及要約,並請您遵守所在國家或地區的相關法律法規。