撰寫:zkSync
編譯:深潮TechFlow
TLDR
-
升級:zkSync Era 正在過渡到新的Boojum 證明系統,無需重新生成。
-
性能:Boojum 展示了一流的證明性能,補充了zkSync Era 排序器,該排序器已經可以處理超過100 TPS。
-
去中心化:Boojum 證明者僅需要16 GB RAM,可實現未來大規模證明者去中心化。
zkSync 的使命是推進所有人的個人自由——通過構建一個無需信任、安全、無需許可、價格合理、易於使用、彈性和可無限擴展的區塊鍊網絡,使數字自我所有權普遍可及。
為了履行這一使命,zkSync Era 的Alpha 版本於三個多月前向公眾開放,反響非常驚人。網絡亮點:
-
鎖定總價值TVL 5.77 億美元(來源:L2Beat);
-
過去30 天的23,750,000 筆交易——是所有L2 中最多的(來源:L2Beat);
-
9,735 個源代碼驗證的智能合約。
2023 年3 月,基於SNARK 的zkSync Era 出世,利用了經過實戰檢驗的電路框架,該框架已經在主網上為zkSync Lite 提供了近三年的支持。然而,我們知道這不會是zkSync Era 證明系統的最終版本,因此設計了這個系統,使我們能夠在不進行重新生成的情況下對其進行根本性的更改。這意味著我們可以在不干擾開發者和用戶的情況下部署重大的密碼學升級。
在幕後,我們已經在進行密碼學升級的工作很長時間了。今天,我們很高興地宣布第一個升級:zkSync Era 正在過渡到一種名為“Boojum”的新的STARK 證明系統。
認識Boojum
Boojum 是我們基於Rust 開發的算術和約束庫,我們使用它來實現zkSync Era 和ZK Stack 的升級版本的ZK 電路。
Boojum 是什麼?
Boojum 的特性:
-
PLONK 算術化:在零知識協議的背景下,算術化是將一般計算轉化為數學形式的過程。與當前的證明系統一樣,升級系統仍然採用PLONK 風格的算術化。採用這種方法,相對於一些替代形式,ZK 電路的編寫更簡單,使系統更易於開發、審計、維護和升級。
-
強大的承諾方案:Boojum 的核心在於FRI 承諾方案,它是一個關鍵組件,使我們能夠承諾有界多項式,並隨後有效地證明所聲稱的(多項式的)opening 確實屬於低次多項式。
-
系統的效率:儘管當人們談論證明者性能時有時會忽略見證生成,但在當前版本的證明系統中,我們已經達到了優化的GPU 證明者非常高效的程度,以至於見證生成時間與證明生成時間相當。通過Boojum,我們提供了自動並行化(如果依賴圖允許)的見證生成,同時保持了定義見證生成函數的簡易性.
-
易於擴展:基本約束系統抽象非常簡潔,但它允許用戶以各種方式添加自定義門類型,例如為它們添加一些專門的多項式,或者重用所謂的“通用列”。用戶在為其電路定義了簡單的幾何結構之後,擴展接口提供了自動生成證明者、驗證者和遞歸驗證者的能力。這樣可以實現非常高效的開發過程;如果用戶更改電路結構並選擇不同類型的門來使用,他們只需再次調用接口,它將重新生成密鑰並確保他們使用正確的證明者和驗證者。
-
單一堆棧:通過Boojum,上述所有內容都可以僅使用標準、慣用的Rust 表達,利用其類型系統的表達能力。 GPU 證明者的計算密集部分是用CUDA C++編寫的,但我們提供了Rust 綁定以進行組合。
Boojum 默認使用大小為2^64 – 2^32 + 1 的素數字段(被稱為“Goldilocks field”),並提供相應字段綁定原語的實現,例如Poseidon2 哈希函數,以及基於查找表的更標準加密原語的實現,例如SHA256、Keccak256 和Blake2s。
重要的是,在最後一步中,我們將使用非透明的基於配對的SNARK 來包裝STARK 證明,並在以太坊上驗證這個SNARK。這個證明要小得多,驗證成本更低;這一步降低了證明系統的成本,從而降低了交易本身的成本。
為什麼選擇Boojum?
在設計Boojum 時,決策背後有兩個關鍵因素:(1)世界一流的證明性能,以及(2)降低去中心化的硬件要求。
世界一流的性能
當前基於SNARK 的系統,雖然對於當前來說是有效的,但無法擴展到ZK Stack 中的高交易量、接近實時的交易。 zkSync Era 作為Hyperchain 運行的未來目標是在未來幾年內支持這些系統。我們對這些系統的設想是,證明可以便宜快速地生成和驗證,從而實現快速的最終性和Hyperchain 之間的互操作性。
證明系統的性能直接影響用戶為其交易支付的費用,隨著時間的推移,這些成本需要趨近於零。當前版本的證明系統足夠高效,可以構建zkEVM,並在短短幾個月內處理數百萬筆交易,但是通過Boojum,我們可以做得更好!
為了衡量網絡的證明生成時間(以及與性能相關的其他關鍵指標),我們與Celer 合作,Celer 團隊在基準測試和分析多個證明系統方面擁有豐富的經驗。在下面的圖像中,您可以看到Boojum 在大多數進行性能分析的系統中表現出色。結果不言自明:我們的實施展示了世界一流的證明性能,據我們所知,這是目前在生產中使用的最快的證明系統。
為了進行公平比較,Celer 在基於CPU 的證明者上進行了這些基準測試,但我們的主網系統使用的是基於GPU 的證明者,速度更快。
轉向基於STARK 的證明系統代表了性能的顯著提升,並將有助於確保最終性和對zkSync Era 和其他基於ZK Stack 的系統的增加活動水平的支持的低延遲。
降低去中心化硬件的要求
當人們認為這不是我們優化的唯一指標時,這些性能結果尤其令人印象深刻——我們希望提高系統性能,同時降低運行它的硬件要求。
目前普遍使用的證明系統,包括我們現有的系統,在硬件方面要求較高。我們當前的證明系統在一組A100 GPU 上運行,每個GPU 具有80 GB 的RAM。對昂貴且功能強大的機器的需求對我們的目標構成了重大障礙:用戶驅動的去中心化證明生成的未來。要實現這個目標,僅僅使證明生成無需許可是不夠的;用戶還不應該需要一台帶有數百GB RAM 的昂貴機器來參與其中。
這是我們取得極其引人注目的進展的另一個領域!我們用於Boojum 的GPU 證明器僅需要16 GB 的RAM,這種低門檻是我們設想的未來的重要一步。基於CPU 的證明也可以使用低至64 GB 的RAM,我們希望將其降低到32 GB,並充分利用現代多核處理器。
最後,zkSync Era 基於Rust 的序列器已經可以每秒處理100 多個交易(TPS)。新的證明系統的引入不僅提高了性能,還降低了硬件要求,使其成為序列器的理想補充。 Boojum 帶來的性能提升意味著系統可以更快地證明交易,而降低的硬件要求則改善了網絡對更便宜的機器的訪問,以實現更高的橫向擴展性。
Boojum 的主網之旅
團隊已經花費數月時間開發這個升級,我們很高興現在已經到了在主網上測試系統的階段。我們也想分享一下迄今為止的一些故事。
升級zkSync Era
首先,zkSync Era 的設計使我們能夠隨著時間的推移升級每個組件,證明系統也不例外。
與以太坊類似,我們使用Merkle 樹數據結構來存儲有關網絡狀態的信息。鑑於我們正在證明有關係統狀態的陳述,這些信息是證明系統所必需的。為了這個Merkle 樹(以及證明系統與之交互的方式),一個關鍵的設計決策是使用非代數哈希函數,具體來說是Blake2s。如果我們僅僅優化證明生成的便利性,我們就會使用代數哈希函數(例如Poseidon2),但這種選擇會將可觀察狀態與證明系統參數耦合起來——例如素數字段的選擇。然後,對證明系統的任何升級都需要完全重新生成狀態。
從設計到審查的Boojum 之旅
大約一個月前,我們開始逐漸形成了我們新的證明系統實現的完整端到端版本。考慮到這個變化的複雜性以及系統正確性的關鍵性,我們開始進行一系列的內部和外部審計。
當時,zkEVM 電路和Boojum 算術化庫仍在積極開發中,但我們與外部安全審計員合作,重點關注我們的主要電路和Boojum 組件的健全性潛在問題的早期識別。我們密切合作,向他們提供完整的源代碼和文檔訪問權限,他們對zkEVM 電路和Boojum 小工具進行了審查和測試,使用了自動化和手動測試的方法。
Boojum: 從審查到測試
這將帶我們來到今天,我們分階段推出的下一步:主網影子模式!我們很高興地宣布,我們現在正在與現有的證明系統並行運行新的證明系統,儘管Boojum 目前僅處於測試階段。我們已經開始為主網區塊生成和驗證“影子證明”。
這些影子證明對於zkSync Era 的主網版本並非必需——這仍將由現有的證明系統驅動。我們只是驗證這些影子證明以進一步測試和優化系統,但使用的是zkSync Era 用戶活動的真實生產數據。
Boojum: 從測試到主網
與我們所做的一切一樣,安全始終是首要考慮的因素。只有當我們對新系統的測試完全滿意時,我們才會考慮遷移,並在未來的幾周和幾個月內分享更多細節。我們還計劃進行進一步的審計和安全評估,以使這個令人興奮的升級更加接近全面部署,並逐漸淘汰當前的證明系統。
我們相信,Boojum 是zkEVM 更安全、可擴展和高效的下一階段。