Nov 30th, 2023 | Kris & Laobai ABCDE / Mo Dong Celer Network
隨著近幾個月協處理器概念的火熱,這一新的ZK用例開始得到越來越多人的關注。
然而我們發現,大多數人對於協處理器概念還是相對陌生,尤其是對於協處理器的精準定位 — 協處理器是什麼,又不是什麼,還比較模糊。而對於市面上幾家協處理器賽道的技術方案對比,尚未有人系統的整理過,這篇文希望能夠給市場和用戶一個關於協處理賽道更加清晰的認識。
一.協處理器Co-Processor是什麼,又不是什麼
如果要求你只用一句話來向一個非技術或是開發人員講清楚協處理器,你會如何描述?
我想董沫博士的這句可能非常接近標準答案 — 協處理器說白了就是”賦予智能合約Dune Analytics的能力”。
這句話該如何拆解?
想象一下我們使用Dune的場景 — 你想要去Uniswap V3做LP賺點手續費,於是乎你打開Dune,找到最近Uniswap上各種交易對的交易量,手續費近7天的APR,主流交易對的上下波動區間等等…
又或者StepN火了那會,你開始炒鞋,不確定什麼時候該脫手,於是你每天盯著Dune上面StepN的數據,每日交易量,新增用戶數,鞋子地板價……打算一旦出現增長放緩或是下跌趨勢就趕緊跑。
當然,可能不僅你在盯著這些數據,Uniswap和StepN的開發團隊也同樣關注這些數據。
這些數據非常有意義 — 它不僅可以幫助判斷趨勢的變化,還可以以此玩出更多的花樣,正如互聯網大廠常用的“大數據”打法。
比如根據用戶經常買賣的鞋子風格與價格,推薦類似的鞋子。
比如根據用戶持有創世鞋子的時長,推出一個“用戶忠誠獎勵計劃”,給予忠誠用戶更多的空投或是福利。
比如根據Uniswap上面LP或是Trader提供的TVL或是交易量推出一個類似Cex的VIP方案,給予Trader交易手續費減免或是LP手續費份額增加的福利
……
這時問題來了 — 互聯網大廠玩大數據+AI,基本是個黑箱,想怎麼弄怎麼弄,用戶看不到,也不在乎。
但在Web3這邊,透明,去信任是咱們天然的政治正確,拒絕黑箱!
於是乎當你想要實現上述場景之時,會面臨一個兩難之境 — 要麼你通過中心化的手段去實現,“後臺手動”用Dune統計完這些索引數據,然後去部署實施;要麼你寫一套智能合約,自動去鏈上抓取這些數據,完成計算,自動部署分。
前者會讓你陷入“政治不正確”的信任問題。
後者在鏈上產生的Gas費用會是個天文數字,你(項目方)的錢包承受不起。
這時候就是協處理器登場的時候了,把剛才那兩種手段結合一下,同時把“後臺手動”這個步驟通過技術手段“自證清白”,換句話說,通過ZK技術把鏈外“索引+計算”這一塊“自證清白”了,然後餵給智能合約,這樣信任問題解決,海量的Gas費用也不見了,完美!
為什麼會叫做“協處理器”呢?其實這是來源於Web2.0發展歷史中的“GPU”。GPU之所以在當時被引入作為一個單獨的計算硬件,獨立於CPU存在,是因為他的設計架構能夠處理一些CPU從根本上就難以處理的計算,比如大規模的並行重複計算,圖形計算等等。正是有了這種“協處理器”的架構,我們今天才有了精彩的CG電影,遊戲,AI模型等等,所以這種協處理器的架構實際上是計算計體系架構的一次飛躍。現在各家協處理器團隊也是希望將這種架構引入Web3.0,在這裡區塊鏈就類似於Web3.0的CPU,不論是L1還是L2,都天生不適應這類“重數據”和“複雜計算邏輯”的任務,所以引入一個區塊鏈協處理器,來幫助處理這類計算,從而極大拓展區塊鏈應用的可能性。
所以協處理器做的事情歸納一下就是兩件事:
- 從區塊鏈上拿數據,並通過ZK證明我拿的數據是真的,沒摻假;
- 根據剛才拿到的數據做出相應的計算,並再次通過ZK證明我算的結果也是真的,沒摻假,計算結果就可以被智能合約“低費用+Trustless”的調用了。
前段時間Starkware那邊火了一個概念,叫做Storage Proof,也叫State Proof,基本上做的就是步驟1,代表是,Herodotus,Langrage等等,許多基於ZK技術的跨鏈橋的技術重點也在步驟1上。
協處理器無非也就是步驟1完事兒之後再加一個步驟2,免信任提取數據之後再做個免信任計算就OK了。
所以用一個相對技術一點的話來精確形容,協處理器應該是Storage Proof/State Proof的超集,是Verfiable Computation(可驗證計算)的一個子集。
要注意的一點是,協處理器不是Rollup。
從技術上講,Rollup的ZK證明類似於上述步驟2,而步驟1“拿數據”這個過程,是通過Sequencer直接實現的,即便是去中心化Sequencer,也只是通過某種競爭或是共識機制去拿,而非Storage Proof這種ZK的形式。更重要的是ZK Rollup除了計算層之外,還要實現一個類似L1 區塊鏈的存儲層,這個存儲是永久存在的,而ZK Coprocessor則是“無狀態”的,進行完計算之後,不需要保留所有狀態。
從應用場景來講,協處理器可以看做所有Layer1/Layer2的一個服務型插件,而Rollup則是自己重新起一個執行層,幫助結算層擴容。
二. 為什麼非得用ZK,用OP行不行?
看完上面,你可能會有一個疑惑,協處理器,非得用ZK來做麼?聽起來怎麼這麼像是一個“加了ZK的Graph”,而我們似乎對於Graph上面的結果也沒有什麼“大的懷疑”。
說是這麼說,那是因為平常你用Graph的時候基本上不怎麼牽扯真金白銀,這些索引都是服務off-chain services的,你在前端用戶界面上看到的,交易量,交易歷史等等數據,可以通過graph,Alchemy,Zettablock等多家數據索引提供商來提供,但這些數據沒法塞回到智能合約裡面,因為一旦你塞回去就是去增加了額外的對這個索引服務的信任。當數據跟真金白銀,尤其是那種大體量的TVL進行聯動之時,這種額外的信任就變得重要起來,想象下一個朋友問你借100塊,你可能眼都不眨說給就給了,問你借1萬,甚至100萬的時候呢?
但話又說回來,是不是協處理上面所有的場景真的都得用ZK來做呢? 畢竟Rollup裡面我們就有OP和ZK兩條技術路線,最近流行的ZKML,也有相應分支路線的OPML概念提出,那麼協處理器這事兒,是不是也有個OP的分支,比如說OP-Coprocessor?
其實還真的有 — 不過在此我們先對具體的細節保密,很快我們將會發布更細節的信息出來。
三. 協處理器哪家強 — 市面上常見的幾家協處理器技術方案對比
- Brevis:
Brevis 的架構由三個組件組成:zkFabric、zkQueryNet 和 zkAggregatorRollup。
如下是一個Brevis的架構圖:
zkFabric: 從所有連接的區塊鏈中收集區塊頭,並生成證明這些區塊頭有效性的 ZK 共識證明。通過zkFabric, Brevis 實現了對多鏈可互操作的協處理器,也就是能夠讓一個區塊鏈訪問另外一個區塊鏈的任意歷史數據。
zkQueryNet: 一個開放的 ZK 查詢引擎市場,可接受來自 dApp 的數據查詢,並對其進行處理。數據查詢使用來自 zkFabric 的經過驗證的區塊頭處理這些查詢,並生成 ZK 查詢證明。這些引擎既有高度專業化的功能,也有通用化的查詢語言,可滿足不同的應用需求。
zkAggregatorRollup: 一個 ZK 卷積區塊鏈,充當 zkFabric 和 zkQueryNet 的聚合和存儲層。它驗證來自這兩個組件的證明,存儲經過驗證的數據,並將其經過 zk 驗證的狀態根提交到所有連接的區塊鏈上。
ZK Fabric 作為為區塊頭生成proof的關鍵部分,保證這一部分的安全是非常重要的,如下為zkFabric的架構圖:
zkFabric基於零知識證明(ZKP)的輕客戶端使其完全免於信任,無需依賴任何外部驗證實體。無需依賴任何外部驗證實體,因為其安全性完全來自於因為其安全性完全來自於底層區塊鏈和數學上可靠的證明。
zkFabric Prover 網絡為每個區塊鏈的 lightclient 協議實現電路,該網絡為區塊頭生成有效性證明。證明者可利用 GPU、FPGA 和 ASIC 等加速器,最大限度地減少證明時間和成本。
zkFabric依賴於區塊鏈和底層加密協議的安全假設和底層加密協議的安全假設。不過,要確保 zkFabric 的有效性,至少需要一個誠實的中繼器來同步正確的fork。因此,zkFabric採用了去中心化的中繼網絡而不是單箇中繼器來優化 zkFabric 的有效性。這種中繼網絡可以利用現有的結構,如 Celer 網絡中的狀態監護網絡。
證明者分配: 證明者網絡是一個分散的 ZKP 證明者網絡、需要為每個證明生成任務選擇一個證明者,並向這些證明者支付費用。
目前的部署:
目前為各種區塊鏈(包括以太坊 PoS、Cosmos Tendermint 和 BNB Chain)實現的輕客戶端協議作為示例和概念驗證。
Brevis目前已經跟uniswap hook開展合作,hook大大添加了自定義uniswap 池,但與CEX相比,UnisWap仍然缺乏有效的數據處理功能來創建依賴大型用戶交易數據(例如基於交易量的忠誠度計劃)的功能。
在Brevis的幫助下,hook解決了挑戰。hook現在可以從用戶或LP的完整歷史鏈數據中讀取,並以完全無信任的方式運行可自定義的計算。
2. Herodotus
Herodotus 是一個強大的數據訪問中間件,它為智能合約提供如下跨以太坊層同步訪問當前和歷史鏈上數據的功能:
L1 states from L2s
L2 states from both L1s and other L2s
L3/App-Chain states to L2s and L1s
Herodotus提出存儲證明這個概念,存儲證明融合了包含證明(確認數據的存在)和計算證明(驗證多步驟工作流的執行),以證明大型數據集(如整個以太坊區塊鏈或rollup)中一個或多個元素的有效性。
區塊鏈的核心是數據庫,其中的數據使用 Merkle 樹、Merkle Patricia 樹等數據結構進行加密保護。這些數據結構的獨特之處在於,一旦數據被安全地提交給它們,就可以產生證據來確認數據包含在結構內。
Merkle 樹和 Merkle Patricia 樹的使用增強了以太坊區塊鏈的安全性。通過在樹的每個級別對數據進行加密散列,幾乎不可能在不被發現的情況下更改數據。對數據點的任何更改都需要更改樹上相應的哈希值到根哈希值,這在區塊鏈標頭中公開可見。區塊鏈的這一基本特徵提供了高水平的數據完整性和不變性。
其次,這些樹可以通過包含證明進行有效的數據驗證。例如,當驗證交易的包含或合約的狀態時,無需搜索整個以太坊區塊鏈,只需驗證相關 Merkle 樹內的路徑即可。
Herodotus定義的存儲證明是以下內容的融合:
- 包含證明:這些證明確認加密數據結構(例如 Merkle 樹或 Merkle Patricia 樹)中特定數據的存在,確保相關數據確實存在於數據集中。
- 計算證明:驗證多步驟工作流程的執行,證明廣泛數據集中一個或多個元素的有效性,例如整個以太坊區塊鏈或彙總。除了指示數據的存在之外,它們還驗證應用於該數據的轉換或操作。
- 零知識證明:簡化智能合約需要交互的數據量。零知識證明允許智能合約在不處理所有基礎數據的情況下確認索賠的有效性。
Workflow :
1. 獲得區塊哈希
區塊鏈上的每個數據都屬於特定的區塊。區塊哈希作為該區塊的唯一標識符,通過區塊頭來總結其所有內容。在存儲證明的工作流程中,首先需要確定和驗證包含我們感興趣的數據的區塊的區塊哈希,這是整個過程中的首要步驟。
2. 獲得區塊頭
一旦獲得了相關的區塊散列,下一步就是訪問區塊頭。為此,需要與上一步獲取的區塊哈希值相關聯的區塊頭進行哈希處理。然後,將提供的區塊頭的哈希值與所得的區塊哈希值進行比較:
取得哈希的方式有兩種:
(1)使用BLOCKHASH opcode 來檢索
(2)從 Block Hash Accumulator來查詢歷史中已經被驗證過的區塊的哈希
這一步驟可確保正在處理的區塊頭是真實的。該步驟完成後,智能合約就可以訪問區塊頭中的任何值。
3. 確定所需的根 (可選)
有了區塊頭,我們就可以深入研究它的內容,特別是:
stateRoot: 區塊鏈發生時整個區塊鏈狀態的加密摘要。
receiptsRoot: 區塊中所有交易結果(收據)的加密摘要。
事務根(transactionsRoot): 區塊中發生的所有交易的加密摘要。
跟可以被解碼,使得能夠核實區塊中是否包含特定賬戶、收據或交易。
4. 根據所選根來驗證數據(可選)
有了我們所選的根,並考慮到以太坊採用的是 Merkle-Patricia Trie 結構,我們就可以利用 Merkle 包含證明來驗證樹中是否存在數據。驗證步驟將根據數據和區塊內數據的深度而有所不同。
目前支持的網絡:
From Ethereum to Starknet
From Ethereum Goerli* to Starknet Goerli*
From Ethereum Goerli* to zkSync Era Goerli*
3. Axiom
Axiom提供了一種方式可以讓開發人員從以太坊的整個歷史記錄中查詢區塊頭,帳戶或存儲值。AXIOM引入了一種基於密碼學的鏈接的新方法。Axiom返回的所有結果均通過零知識證明在鏈上驗證,這意味著智能合約可以在沒有其他信任假設的情況下使用它們。
Axiom最近發佈了Halo2-repl ,是一個基於瀏覽器的用 Javascript 編寫的 halo2 REPL。這使得開發人員只需使用標準的 Javascript 就能編寫 ZK 電路,而無需學習 Rust 等新語言、安裝證明庫或處理依賴關係。
Axiom 由兩個主要技術組件組成:
AxiomV1 — 以太坊區塊鏈緩存,從 Genesis 開始。
AxiomV1Query — 執行針對 AxiomV1 查詢的智能合約。
(1)在 AxiomV1 中緩存區塊哈希值:
AxiomV1智能合約以兩種形式緩存自創世區塊以來的以太坊區塊哈希:
首先, 緩存了連續1024個區塊哈希的Keccak Merkle根。這些Merkle根通過ZK證明進行更新,驗證區塊頭哈希是否形成以EVM直接可訪問的最近256個區塊之一或已存在於AxiomV1緩存中的區塊哈希為結束的承諾鏈。
其次。Axiom從創世區塊開始存儲這些Merkle根的Merkle Mountain Range。該Merkle Mountain Range是在鏈上構建的,通過對緩存的第一部分Keccak Merkle根進行更新。
(2)在AxiomV1Query中履行查詢:
AxiomV1Query智能合約用於批量查詢,以實現對歷史以太坊區塊頭、賬戶和賬戶存儲的任意數據的無信任訪問。查詢可以在鏈上進行,並且通過針對AxiomV1緩存的區塊哈希進行的ZK證明來在鏈上完成。
這些ZK證明檢查相關的鏈上數據是否直接位於區塊頭中,或者位於區塊的賬戶或存儲Trie中,通過驗證Merkle-Patricia Trie的包含(或不包含)證明來實現。
4. Nexus
Nexus 試圖利用零知識證明為可驗證的雲計算搭建一個通用平臺。目前是machine archetechture agnostic 的,對risc 5/ WebAssembly/ EVM 都支持。Nexus利用的是supernova的證明系統,團隊測試生成證明所需的內存為6GB,未來還會在此基礎上優化使得普通的用戶端設備電腦可以生成證明。
確切的說,架構分為兩部分:
Nexus zero:由零知識證明和通用 zkVM 支持的去中心化可驗證雲計算網絡。
Nexus: 由多方計算、狀態機複製和通用 WASM 虛擬機驅動的分散式可驗證雲計算網絡。
Nexus 和 Nexus Zero 應用程序可以用傳統編程語言編寫,目前支持 Rust,以後將會支持更多的語言。
Nexus 應用程序在去中心化雲計算網絡中運行,該網絡本質上是一種直接連接到以太坊的通用 “無服務器區塊鏈”。因此,Nexus 應用程序並不繼承以太坊的安全性,但作為交換,由於其網絡規模縮小,可以獲得更高的計算能力(如計算、存儲和事件驅動 I/O)。Nexus 應用程序在專用雲上運行,該雲可達成內部共識,並通過以太坊內部可驗證的全網閾值簽名提供可驗證計算的 “證明”(而非真正的證明)。
Nexus Zero 應用程序確實繼承了以太坊的安全性,因為它們是帶有零知識證明的通用程序,可以在 BN-254 橢圓曲線上進行鏈上驗證。
由於 Nexus 可在複製環境中運行任何確定性 WASM 二進制文件,預計它將被用作證明生成應用的有效性/分散性/容錯性來源,包括 zk-rollup排序器、樂觀的 rollup 排序器和其他證明器,如 Nexus Zero 的 zkVM 本身。
關於ABCDE
ABCDE是專注於領投頂級Crypto Builder的VC,由耕耘了Crypto行業10年以上的Huobi Cofounder杜均及前互聯網和Crypto創業者BMAN聯合創辦。 ABCDE的聯合創始人們從0開始在Crypto行業建立了數十億美元市值的公司。因為我們是創業者,所以我們更懂得創業者。我們已經為ABCDE的 Builder構建了上市公司(1611.HK)、交易所(Huobi)、SAAS公司(ChainUP)、媒體(CoinTime.com)、開發者平臺(BeWater.xyz)等端到端的生態。
Twitter:https://twitter.com/ABCDLabs
Website:www.ABCDE.com