登陆

史迪奇也驚呆!以太坊零知識證明迎突破,Polyhedra加速Keccak,蔡依林也點讚的zkEVM效率飛躍

author 2025-05-23 2人围观 ,发现0个评论 以太坊零知识证明zkEVMKeccak哈希函数

以太坊零知識證明的聖杯:Keccak 的性能挑戰

以太坊,這個區塊鏈技術的領頭羊,正積極擁抱零知識證明(Zero-Knowledge Proof,ZK)。這項技術不僅能保護隱私,更能大幅提升交易效率。然而,理想很豐滿,現實卻骨感。在以太坊虛擬機(EVM)中,Keccak 哈希函數扮演著至關重要的角色,它負責構建和驗證狀態樹(Merkle Patricia Trees)。但同時,它也是零知識證明中最燒錢、最耗時的環節,簡直是個性能黑洞。這讓無數開發者和研究者頭疼不已,如何高效地證明 Keccak,成了零知識證明領域長久以來的未解之謎,堪稱零知識以太坊的“聖杯”。

Binary GKR:Polyhedra 的突破性方案

面對這個挑戰,Polyhedra 團隊勇敢地站了出來,推出了他們的秘密武器——Binary GKR。這可不是隨便一個方案,而是專門為 Keccak 和其他二進制操作量身打造的高性能證明系統。說白了,就是為了讓 Keccak 在零知識證明的世界裡跑得更快、更順暢。就像00679b一樣,希望成為大家投資組合中的優質選擇。這項技術的出現,無疑為以太坊的零知識證明之路帶來了一絲曙光。希望能像史迪奇電影一樣,給大家帶來驚喜。

加速以太坊:Binary GKR 如何提升 zkEVM 效率

Binary GKR 的出現,不僅僅是理論上的突破,更為實際應用打開了無限可能。想像一下,如果 zkEVM(零知識以太坊虛擬機)能夠像跑車一樣飛馳,而不是像老牛拉破車一樣慢吞吞,那會是怎樣一番景象?我們有理由相信,Binary GKR 可以成為多種 zkEVM 架構中的「通用加速側車」,就像渦輪增壓一樣,高效處理 Ethereum 狀態樹中大量的 Keccak 運算。這意味著,證明成本將顯著降低,系統吞吐量和響應速度將大幅提升。不再需要為了證明一小段程式碼而耗費大量的時間和資源,開發者們可以更專注於創新和應用,而不是被底層的性能瓶頸所困擾。Polyhedra 團隊也表示,將持續推動 Binary GKR 的產品化與開源進程,賦能以太坊及更廣泛生態中的 zk 架構升級。這讓我聯想到青年百億海外圓夢基金計畫,都是為了給有夢想的人提供助力,讓他們在各自的領域裡發光發熱。

從 Ethproofs 計畫看以太坊的零知識未來

以太坊的野心可不僅僅是做一個普通的區塊鏈平台,它正逐步向零知識證明原生的 Layer-1 演進。Ethproofs 計劃就是一個絕佳的例子,它匯集了 21 個團隊的力量,涵蓋 22 種 ZK(E)VM 實現,正在嘗試對以太坊歷史區塊進行完整證明,這絕對是關鍵的一大步。就像蔡依林不斷挑戰自我,追求音樂上的突破一樣,以太坊也在不斷探索新的技術邊界。在 Ethproofs 官網上,我們可以實時追蹤各個團隊的進展:ZkCloud、Succinct、Snarkify 和 ZKM 等項目,已經開始持續提交最新區塊的 ZK 證明。這個趨勢的最終目標,是將以太坊打造為一個以零知識證明驅動的執行層,而共識層僅需完成交易列表的提議等輕量任務。這就好比將一個沉重的貨車改造成輕盈的跑車,讓以太坊的性能和效率得到質的飛躍。

Keccak 的位運算本質:深入解析性能瓶頸

要理解 Binary GKR 的優勢,我們需要先搞清楚 Keccak 到底是什麼,以及為什麼它在零知識證明中如此棘手。Keccak 哈希函數被廣泛用於構建以太坊的 Merkle Patricia Tree,就像房屋的地基一樣,記錄著整個鏈的狀態。但問題就出在這裡:Keccak 的底層運算基於位運算(bit-level operations),簡單來說,就是對 0 和 1 進行操作。這與大多數 ZK 系統使用的素數域(prime field)運算模型格格不入,就像讓一個習慣了吃米飯的人去啃麵包,自然會覺得不舒服。這種不兼容導致了嚴重的性能下降,讓 Keccak 成了 zkEVM 的一大瓶頸。最近台中車禍頻傳,也提醒我們,底層基礎的重要性,如果地基不穩,再華麗的建築也可能倒塌。

傳統 EVM 與零知識證明的衝突

傳統的 EVM 在 CPU 上執行 Keccak 時效率很高,但這種效率在零知識證明系統中卻蕩然無存。這是因為 EVM 是為 CPU 上的高效運算而設計的,它擅長處理整數字和複雜的邏輯運算。然而,零知識證明系統更擅長處理特定類型的數學運算,例如多項式運算和有限域上的運算。Keccak 的位運算本質與這些運算並不匹配,導致了證明過程的巨大开銷。為了讓大家更直觀地理解 Keccak 哈希函數的位運算特性,我們來簡單了解一下它的五個核心操作:θ(theta)、ρ(rho)、π(pi)、χ(chi)和 ι(iota)。這些操作作用於一個 5 × 5 的矩陣結構,每個單元格是一個 64 位整數,稱為「字」(word)。整個矩陣包含 5 行 5 列,就像MLB的球隊陣容一樣。每個操作都涉及到大量的位運算,例如異或、取反、與和左旋。要在零知識證明中高效地實現這些操作,是一個巨大的挑戰。這也是為什麼我們稱其為 Keccak-1600 的原因——因為每一輪的狀態空間為 5 × 5 × 64 = 1600 位。而這樣的操作過程需要重複 24 輪,可想而知,計算量有多麼龐大。

Keccak 證明的早期嘗試:Groth16 與查找表

在 Polyhedra 的 Binary GKR 方案出現之前,開發者們已經在 Keccak 證明上進行了各種嘗試,其中最流行的兩種方法是基於 Groth16 的證明系統和基於查找表的證明系統。這兩種方法各有優缺點,但都未能徹底解決 Keccak 的性能瓶頸問題,就像家寧和男友的關係一樣,總有一些問題難以解決。但無論如何,這些早期的嘗試都為後續的 Binary GKR 方案奠定了基礎。

Groth16 的約束數量分析

Groth16 是一種流行的零知識證明系統,它通過將計算轉換為約束(constraints)來實現證明。要使用 Groth16 證明 Keccak,我們需要將 Keccak 的位運算轉換為 Groth16 可以理解的算術關係。例如,異或(exclusive-or)可以使用表達式 a + b − 2ab 來表示,取反(negation)可以使用表達式 1 − a 來表示,與(and)可以使用表達式 a × b 來表示。而像「左旋」(rotate-left)和其他置換操作在 ZK 環境中通常被視為無成本操作,不需要額外約束。根據計算,Keccak 每一輪中的約束數量如下:θ 操作約產生 4480 個約束,ρ 與 π 操作為「零成本」,χ 操作約產生 3200 個約束,ι 操作約產生 64 個約束。因此,完整的 Keccak-1600(共 24 輪)將在 Groth16 中產生 185,856 個約束。這是一個非常龐大的數字,意味著證明過程需要大量的計算資源和時間。參考 Ingonyama 的 ICICLE 庫中的數據,在一塊 Nvidia 4090 GPU 上生成一個 Keccak 的 ZK 證明大約需要 30-40 毫秒,在 CPU 上則約為 450 毫秒。如果需要證明 8192 次 Keccak 運算,GPU 至少需要 250 至 300 秒,而 CPU 可能需要接近一小時。這樣的性能表現顯然無法滿足 zkEVM 的需求。

查找表的優勢與局限性

為了優化 Groth16 的性能,開發者們提出了基於查找表的證明系統。這種方法的思路是對數據進行批量處理(例如每 4 位或 8 位一組),並通過查找表來執行所有的位運算。換句話說,將每個 64 位整數切分成若干小塊(例如 8 個 8 位 chunk),再使用查找表完成邏輯操作。具體來說,包括以下幾種查找表:異或操作查找表(XOR),一個大小為 2⁸ × 2⁸ 的查找表,用於計算兩個 8 位 chunk 的異或值。這樣可以用一個約束完成 8 位異或,而不是傳統的 8 個約束。與操作查找表(AND),同樣是一個 2⁸ × 2⁸ 的查找表,用於兩個 8 位 chunk 的按位與操作,節省約束的效果與 XOR 類似。左旋操作查找表(Rotate-left),為了處理 Keccak 中頻繁出現的 rotate-left 操作,引入了多個查找表。具體為:七個大小為 2⁸ 的查找表,分別對應旋轉距離為 8k+1、 8k+2 等(其中 k 為非負整數)。相較於嘗試一(Attempt 1)完全不處理旋轉操作,這種方式會引入額外开銷——每輪大約增加 192 個約束。不過與其他部分相比,這個开銷仍然相對較小。為了實現這種系統,我們不再使用 Groth16,而是更適合採用 Stwo、Plonky3 等小域證明系統,這類系統對查找表支持更加完善。在該方案下,每次完整的 Keccak 運算大約需要 27,264 個約束,並結合查找表的調用,可大幅減少整體約束數,相較 Groth16 顯著優化。然而,這種優化在性能上並非絕對佔優。因為查找表本身的調用和管理也會帶來开銷,若處理不當,可能抵消約束數量減少所帶來的優勢。因此,其實際運行效率在某些場景下可能不如基於 Groth16 的實現。就像美股的投資一樣,看似有優勢,但實際操作中可能存在各種風險。

Binius:基於二元域的創新方法

既然查找表(lookup)或定制門電路(customized gates)所帶來的加速在實際中可能並不如預期,主要原因在於查找本身的開銷可能會抵消其帶來的約束優化效果。因此,我們需要探索其他路徑來進一步提升 Keccak 的證明效率。這也是 Keccak 被譽為「零知識聖杯」的原因之一。與之相比,早期的哈希函數如 SHA-256 和 Blake2/3,雖然也依賴於異或(XOR)、與(AND)等位運算,但其最大的性能瓶頸源於整數加法。而整數加法在證明系統中通常通過將其拆解為多個 4-bit 塊來優化,從而大幅提升性能。但 Keccak 並不涉及任何整數加法,因此這些優化策略在此處失效。我個人覺得,這就像是宋威龍的演技,明明底子不錯,但總覺得少了點什麼,難以突破。

為何 Keccak 是零知識證明的「聖杯」?

目前最前沿的解決方案是 Binius。該系統的核心思想是:既然 Keccak 完全由位運算組成,我們便可以使用以位為基本單位的證明系統來實現。這正是 Binius 的突破之處。在 Binius 中,Keccak 被表示為在有限域 ?₂(即二元域)上的運算。由於 XOR 本質上就是 ?₂ 中的加法,因此其相關開銷幾乎完全消除。整體過程被構造為一系列多項式運算,位旋轉操作也可在按位處理模型中輕鬆實現。證明成本主要集中於 χ 步中出現的 AND 門。Binius 的基準測試顯示,其在證明 8192 次 Keccak 運算時,僅需約 12.35 秒,遠優於 Groth16(嘗試一)和查找表方法(嘗試二)。但 Binius 是終點嗎?其實並非如此。我們發現通過去除 Keccak 證明中的某些冗餘部分,還有可能進一步提升約五倍的性能,超過當前的 Binius 實現。這就像孫興慜,雖然已經很厲害了,但還是有進步的空間。

Polyhedra 的 Binary GKR:專為 Keccak 優化的架構

Polyhedra 團隊沒有止步於 Binius 的成就,而是持續探索,最終推出了全新的證明系統——Binary GKR(詳見:ePrint 2025/717)。這是一個專門針對二進制操作高效證明的框架,特別適用於像 Keccak 這樣以位運算為核心的函數。Binary GKR 的核心優勢來自以下三項關鍵技術創新:基於 GKR 協議優化重複計算、基於二進制域的多項式承諾,以及用於二進制操作的預計算表。這就像曹雅雯不斷嘗試新的音樂風格,最終找到了屬於自己的獨特聲音。

GKR 協議的優勢:降低重複計算開銷

我們在 Binary GKR 的設計中選擇以 GKR 協議(Goldwasser–Kalai–Rothblum)為基礎,原因在於它能夠有效降低處理重複性計算所帶來的冗餘開銷。在典型的 zkEVM 場景中,Keccak 往往以 「外掛證明器(sidecar prover)」 的角色出現,用於批量處理 zkEVM 所委託的大量 Keccak 運算任務。因此,我們面向的電路結構天然具有大量的重複模式,例如:8192 次 Keccak 調用是一種常見規模。更重要的是,Keccak 算法本身就極具重複性:它在 5 × 5 的狀態矩陣上反覆執行相似的布爾操作;整個過程包含 24 輪幾乎一致的步驟;各輪之間結構相同,僅輸入狀態不同。這樣的特性,使得 Keccak 成為 GKR 協議的「天然適配對象」:Verifier 成本較低,適合高頻驗證場景;Prover 可充分利用結構重複性,重用計算路徑,大幅簡化證明開銷;相比傳統通用證明系統,在批量 Keccak 場景中具備顯著性能優勢。

二進制域上的多項式承諾

我們採用了一種基於線性碼的多項式承諾方案,該方案直接在二進制域上運行。正如我們此前提到的,使用原生的二進制表示,使我們能夠「免費」獲得諸如異或(XOR)這樣的操作。此外,與 Binius 的方法類似,基於二進制域的多項式承諾避免了使用更大數域所帶來的冗餘,這使系統在性能和效率上都得到了顯著提升。這就好比SOMI嘗試各種音樂風格,最终找到了适合自己的路线,发挥了最大的潜力。

預計算表:Binary GKR 的核心創新

Binary GKR 論文中的關鍵創新在於:通過充分利用電路結構的高稀疏性,顯著提升了 GKR 協議的證明效率。即使在同時處理多個比特的情況下,這種稀疏性依然得以保留。我們的做法是將多個比特 「打包」 進 GKR 協議中的多項式中(注意:這些是中間多項式,無需進行承諾),然後直接在這些打包的數據上執行 GKR 協議的運算。由於稀疏性仍然很高,我們可以利用預計算表,讓證明者以遠低於傳統 GKR 協議的計算開銷來生成證明。這一優化顯著提升了 GKR 在處理二進制關係時的效率。接下來,我們將重點介紹上述第三項技術優化:用於二進制操作的預計算表。

Binary GKR 的技術細節:比特打包與關係評估

Binary GKR 的核心優勢之一,在於其巧妙地將多個比特打包進多項式中,從而減少了證明者的計算負擔,提升了效率。這就像將多件行李打包成一個包裹,減少了搬運的次數,提高了效率。這種方法的核心是一種專為數據並行布爾電路設計的 GKR 協議求和檢驗(sumcheck)新方法。

將比特打包進多項式

傳統的 GKR 協議一次只能處理一個比特,而 Binary GKR 則可以一次處理多個比特,從而大大減少了計算量。我們的方案的核心是一種專為數據並行布爾電路設計的 GKR 協議求和檢驗(sumcheck)新方法。該方法通過將多個比特打包進多項式中,有效減少了證明者的計算負擔,顯著提升了效率。就像易烊千璽在演藝事業上的多棲發展,將不同的技能融合在一起,實現了更大的成就。

更高效的二進制關係評估

相較於傳統 GKR,Binary GKR 帶來了全新的優化空間。這種優化基於預計算表,它可以幫助我們更高效地評估二進制關係。Binary GKR 通过预先计算并存储常用的二元关系的结果,从而避免了在证明过程中重复计算这些关系。这意味着证明者可以在需要评估这些关系时,直接从预计算表中查找结果,而无需进行复杂的计算。预处理表非常小,通过合理设置参数,我们可以将表的大小控制在约 15 MB。该大小可轻松放入 CPU 的 L3 缓存中,使得查表操作非常高效。这一技术几乎适用于所有二进制操作,是 Binary GKR 构造中性能提升的核心所在。这就像永野芽郁在拍攝前做足功課,才能在鏡頭前呈現出最佳狀態。

性能實測:Binary GKR vs. Binius

為了驗證 Binary GKR 的實際性能,我們進行了大量的實驗,並將其與 Binius 在 Keccak 證明上的表現進行了對比。畢竟,實力不是靠嘴說的,而是要用數據說話的,就像諾瓦克·喬科維奇在球場上用一次又一次的勝利證明自己一樣。我們基於 Rust 的 arkworks 生態系統實現了 SNARK 系統,並在不同規模的隨機布爾電路上進行了全面的基準測試。

隨機布爾電路基準測試

除了 Keccak 之外,我們還在隨機布爾電路上進行了基準測試,以評估 Binary GKR 的通用性能。這些測試涵蓋了不同規模的電路,從而幫助我們了解 Binary GKR 在不同場景下的表現。測試結果表明,Binary GKR 在處理隨機布爾電路時也表現出色,證明了其通用性和高效性。這就像尤伯祥律師在各種案件中都能表現出色,證明了他的專業能力。

Keccak 證明的性能比較

我們將 Binary GKR 與 Binius 在 Keccak 證明上的表現進行了直接比較。兩者均基於二進制域操作。在處理 8192 次 Keccak 調用時,Binius 生成證明耗時 12.35 秒,而我們的方法僅需 2.18 秒。同時,得益於 Keccak 的結構簡潔,我們的驗證時間也更短,僅為 0.035 秒。通信开銷方面,我們的證明大小為 1.052 MB。 數據證明了一切,Binary GKR 在 Keccak 證明上的性能遠超 Binius,這無疑是一個巨大的進步。這就像NBA MVP的評選,最终还是要看球员在球场上的实际表现。

展望:Binary GKR 的未來與以太坊的 SNARK 化

本文介紹了 Polyhedra 團隊在零知識證明領域的最新進展,重點在於針對二進制函數(如 Keccak)的優化。這一成果可作為各類 zkEVM 構建的高效「輔助模塊」。我們計劃將 Binary GKR 集成至 RISC Zero、SP1 等 zkEVM 系統中,進一步驗證其在緩解 Keccak 性能瓶頸方面的作用。最終目標,是在不破壞現有 EVM 架構的前提下,加速以太坊向 layer-1 全面 SNARK 化邁進。 這就像林志傑帶領球隊不斷前進,最終目標是贏得比賽。

请发表您的评论
Powered By axaxcoin.com