作者:zkSync;翻譯:金色財經xiaozou
本文要點:
升級:zkSync Era正在無需regenesis的情況下過渡到一個新的Boojum證明系統。
性能:Boojum展示了世界級的證明性能,助力zkSync Era排序器性能提高,已可處理超100 TPS。
去中心化:Boojum prover(證明者)只需要16 GB RAM,支持未來大規模的prover去中心化。
準備就緒:Shadow proving(影子證明)已經在主網上線!
正如我們在ZK Credo宣言中所闡述的那樣,zkSync的使命是通過建立一個無需信任、安全、無需許可、價格合理、易於使用、有彈性和無限擴展的區塊鍊網絡,促進所有人的個人自由,讓數字自我所有權普遍可用。
為了達成這一使命,zkSync Era的Alpha版本在三個多月前就向公眾開放了,並獲得了驚人的反響。在此期間,我們在網絡上看到了大量活動。
網絡重點:
· 總鎖定價值5.77億美元(來源:L2Beat)。
· 過去30天里處理了2375萬筆交易——是交易量最多的L2(來源:L2Beat)。
· 9735個源代碼驗證的智能合約。
2023年3月,我們推出了zkSync Era,使用基於SNARK的系統支持我們的zkEVM,利用久經考驗的電路框架,已經在主網上為zkSync Lite提供了近三年的支持。然而,我們知道這並非zkSync Era證明系統的終點,我們將該系統設計為無需執行regenesis就可以進行根本改變。這意味著我們可以在不干擾開發人員和用戶的情況下進行重要的加密升級。
我們長期致力於加密升級。如今,我們很高興地宣布我們的第一次加密升級:zkSync Era正在過渡到一個新的基於STARK的證明系統,稱為“Boojum”。
1、Boojum簡介
Boojum是我們基於Rust的算法和約束庫的名稱,我們使用它來實現zkSync Era和ZK Stack的ZK電路的升級版本。 Boojum一名的靈感出自Lewis Carroll的The Hunting of The Snark(獵鯊記)一詩,Boojum則代表最可怕的Snark類型。
(1)什麼是Boojum?
Boojum的設計具有許多引人矚目的特性:
· PLONK類型算法:對零知識協議來說,算法(arithmetization)是將一般計算轉換為數學形式的過程。就當前的證明系統而言,我們升級的系統繼續採用PLONK類型算法。使用這種方法,相對於其他一些可選方案,ZK電路更容易編寫,系統也就更容易開發、審計、維護和升級。
· 強大的承諾方案:Boojum的核心是FRI承諾方案,FRI承諾是一個關鍵的組成部分,它使我們能夠對一個有界多項式進行承諾,然後有效地證明(多項式)聲稱的opening確實屬於低階多項式。
· 系統中“boring”部分的效率:儘管當人們談論prover性能時,有時會忽略見證者的生成,但在當前版本的證明系統中,經優化的GPU prover非常高效,見證者生成時間與證明生成時間相當。通過Boojum,我們提供了自動化的並行(如果依賴圖允許的話)見證生成,同時仍然可以輕鬆定義像|(a, b)| a + b這樣的見證生成函數。
· 易於擴展:基礎約束系統抽象非常淺層,但它允許用戶以各種方式添加他們自定義的gate約束類型,例如添加一些專門的多項式,或者重用通用column(列)。在用戶為他們的電路定義了一個簡單的geometry之後,擴展接口則為他們提供自動生成證明者、驗證者和遞歸驗證者的能力。這將允許一個非常高效的開發過程;如果用戶改變電路結構並選擇使用不同類型的gate,他們可以再次調用接口,它將重新生成密鑰並確保他們使用正確的證明者和驗證者程序。
· 單棧:使用Boojum,上述的所有內容都可以僅用標準的、慣用的Rust來表示,並使用其類型系統的表達性。 GPU prover計算繁重的部分是用CUDA C++編寫的,但我們為組合提供了Rust綁定。
Boojum默認操作大小為2^64 – 2^32 + 1的素數域(稱為“Goldilocks field”,最初由Mike Hamburg提出,使用Hamish Ivey-Law建議的特定參數),並提供相應的域綁定原語的實現,如Poseidon2哈希函數,以及基於查找表的更標準的加密原語實現,如SHA256、Keccak256和Blake2s。
重要的是,在我們部署的最後一步,我們將使用一個不透明的基於配對的SNARK——本質上是當前證明系統的一個微升級的版本——來包裝STARK證明,並且這個SNARK將在以太坊上進行驗證。這種證明要小得多,驗證成本也低得多;這一步降低了證明系統的成本,從而降低了交易本身的成本。
Boojum受益於社區內很多人的貢獻,我們收到了各種各樣的想法,對此深表感謝。我們從STARK、FRI和DEEP-FRI的基礎文檔、Poseidon和Poseidon2中提出的哈希函數的進步以及Gabizon、Williamson和Ciobotaru提出的PLONK算法的發展中獲得了靈感。此外,Plonky2項目(Farmer、Lubarov、Borgeaud等)的創新方法——包括選擇Poseidon MDS及使用round常數,以及Eagen、Fiore、Gabizon和Haböck在cached quotients和多元查找研究中提出的新穎見解。正是這些寶貴的貢獻共同塑造了Boojum的設計。
2、為什麼選擇Boojum?
在設計Boojum時,我們的決策考量了兩個關鍵因素:(1)世界級的證明性能,(2)降低去中心化的硬件要求。
(1)世界級性能
我們當前基於SNARK的系統雖然目前有效運行,但無法擴展到ZK Stack在接下來的幾年計劃支持的大容量、幾近實時的交易。我們對這些系統的未來是這樣設想的:證明可以低成本、快速地生成和驗證,從而實現超鏈之間的快速最終性和互操作性。
證明系統的性能直接影響用戶為其交易支付的價格,隨著時間的推移,這些成本需要趨近於零。當前版本的證明系統的性能足以用於構建zkEVM,並在短短幾個月內處理數百萬筆交易,但有了Boojum,我們可以做得更好!
為了測量網絡的證明生成時間(以及與性能相關的其他關鍵指標),我們與Celer達成合作,Celer是一個在基準測試和分析多證明系統領域具有豐富經驗的團隊。你可以從下圖看出Boojum的性能明顯優於大多數係統。結果不言自明:我們的部署展示了世界級的證明性能,據我們所知,這是投入應用的最快的證明系統。
為了進行同類比較,Celer對基於CPU的prover執行了這些基準測試,但我們的主網系統使用的是更快的基於GPU的prover。
向基於STARK的證明系統轉變將帶來性能的顯著提升,並將有助於確保低延遲的最終結果,並支持zkSync Era和其他基於ZK Stack的系統上增加的活動量。
(2)降低去中心化的硬件要求
鑑於這不是我們優化的唯一指標時,這些性能結果尤其令人印象深刻——我們希望在提高系統性能的同時降低系統運行的硬件需求。
當今流行的證明系統,包括我們現有的證明系統,明顯對硬件要求都很高。我們目前的驗證系統運行在一個A100 GPU集群上,每個GPU都有80 GB RAM。這種對昂貴、強大的機器的需求對我們的目標構成了重大障礙,我們的目標是實現一個用戶驅動的、去中心化的證明生成的未來。要實現這一目標,僅僅使證明生成無需許可是不夠的;用戶還應該無需昂貴的機器和數百GB的RAM。
這是我們取得巨大進步的又一個領域!我們在Boojum中使用的GPU prover只需要16GB RAM,這樣的低門檻是我們邁向未來願景的重要一步。基於CPU的驗證在低至64 GB RAM(我們希望可以低至32 GB)的情況下也是可能的,並且可以最大限度地利用現代多核處理器。在我們完全遷移到新的證明系統後,我們將發布更多關於其去中心化計劃的信息。
最後,基於Rust的zkSync Era排序器已每秒可處理100多筆交易(TPS)。新證明系統的推出不僅提高了性能,還降低了硬件要求,使其成為排序器的理想助力。 Boojum的性能提高也意味著系統可以更快地證明交易,並且硬件要求的降低讓網絡可以訪問更低成本的機器,從而提高了水平可擴展性。
3、Boojum的主網之路
團隊已經為該升級連續工作了幾個月,我們很高興現在終於可以把系統帶到主網上。我們也想分享一下到目前為止的一些故事。
(1)升級zkSync Era
首先,來簡單介紹一下我們是如何執行這樣的升級的。首先,zkSync Era的設計使我們能夠隨著時間的推移升級每個組件,證明系統也不例外。
與以太坊類似,我們使用Merkle(默克爾)樹數據結構來存儲有關網絡狀態的信息。這些信息是證明系統需要的,因為我們正在證明關於系統狀態的陳述。這個Merkle樹(以及證明系統與之交互的方式)的一個關鍵設計決策是使用非代數哈希函數,特別是Blake2s。如果我們純粹是為了簡化證明生成而進行優化,我們會使用代數哈希函數(例如Poseidon2),但這種選擇會將可觀察狀態與證明系統參數耦合起來——比如素數域的選擇。任何對證明系統的升級都需要對狀態進行完全regenesis,這對zkSync Era的用戶來說將是一個巨大的顛覆性體驗。我們升級我們的證明系統所需要做的只是在電路內重新部署Blake2s。
(2)Boojum:從設計到審查
大約一個月前,我們開始集中力量在一個完整的端到端版本的新證明系統的實現上,考慮到這個更新的複雜性和系統正確性的重要程度,我們開始進行一系列的內部和外部審計。
zkEVM電路和Boojum算法庫當時仍在積極開發中,但我們與外部安全審計員合作,他們專注於與主電路和Boojum組件的可靠性相關的潛在問題的早期識別。我們展開緊密合作,在他們(使用自動和手動方法)審查和測試zkEVM電路和Boojum相關工具時,為他們提供源代碼和文檔的完整訪問權限。通過這種夥伴關係,我們能夠解決許多早期問題。
(3)Boojum:從審查到測試
如今,我們進入了計劃的下一步:主網影子模式!我們很高興現在能夠與現有的證明系統一起運行新的證明系統,儘管Boojum還只處於測試階段。我們已經在為主網區塊生成和驗證“影子證明”。
zkSync Era的主網版本不需要影子證明——它將繼續由現有的證明系統提供支持。我們只是驗證這些影子證明,以進一步測試和優化系統,但使用的是來自zkSync Era用戶活動的真實生產數據。
我們也很高興能夠公開進行這項測試,在接下來的幾週內,你將在區塊瀏覽器中現有的證明信息旁看到關於這些影子證明的一些信息的鏈接,我們正在開源一個CLI工具,任何人都可以使用這個工具來驗證新的證明。
我們現在尤其專注於測試新的證明系統,並且還不打算在以太坊上驗證影子證明。在測試階段,影子證明的驗證將在鏈下完成,我們會尋找邊緣情況和bug,並繼續進一步審查實施情況。
我們如今還開放了Boojum代碼庫的源代碼。請注意:代碼庫仍在進行中!隨著測試的深入,你可能還會看到大量的調整、優化、修復和文檔改進。我們還將在未來幾週開放幾個更有趣的代碼庫,包括更新的電路和GPU prover。
(4)Boojum:從測試到遷移
我們所做的一切都將安全性放在首位。只有當我們對新系統的測試完全滿意時,我們才會考慮遷移,我們將在未來幾周和幾個月內分享更多細節。我們還計劃進行進一步的審計和安全審查,這個令人興奮的升級即將全面實現,而當前的證明系統已棄用。
我們相信,Boojum,再加上我們對創新和用戶至上設計的承諾,是邁向更安全、更可擴展、更高效的zkEVM的下一步。