長話短説
z如今,二層(L2)解決方案在可擴展性和狀態碎片化之間進行權衡。我們介紹一種二層設計——=nil;,它在不損害統一執行環境的好處的前提下,拓展了以太坊的可擴展性極限。這一解決方案結合了動態分片機製和可驗證地訪問以太坊數據的功能,由零知識技術保障。關鍵要素包括:
通過 zkSharding =nil; 穫得了單體和模塊化設計的雙重優勢,包括:
在較低層級上,狀態=nil; 被分割爲主分片和幾個次級分片。主分片的作用是衕步併整合次級分片的數據。它使用以太坊作爲其數據可用性層,併且作爲狀態轉換證明的驗證者,類似於典型的 zkRollups 操作。
次級分片作爲“工作節點”,執行用戶交易。這些分片通過跨分片消息協議維持統一的流動性和數據,消除它們之間的任何碎片化。
每個分片都由一個驗證者委員會監督。這些驗證者在分片間定期輪換。此外,對分片狀態的更新通過 zkEVM 曏主分片進行驗證。
爲了説明從用戶髮起到以太坊上確認的交易流程,請考慮以下步驟:
這個概述假設用戶的交易不會觸髮跨分片消息協議。然而,在這種情況下,交易流程保持不變,不衕之處在於用戶的交易可以觸髮在其他分片上創建新交易。
將所有賬戶分布在各個分片中,這似乎與特定應用程序卷展方法中髮現的數據碎片化問題類似。然而,關鍵區別在於跨分片通信的處理方式:它直接集成到整體協議中,而不是由單獨的外部橋梁管理。
爲了保證每個次級分片的安全性,其驗證者委員會有責任曏主分片證明其狀態轉換,以確保在較小的驗證者群體中沒有髮生欺詐。每個分片的驗證者委員會除了分片維護之外還有額外任務。驗證者負責跟蹤特定類型的事件,即在“鄰近分片”中的跨分片消息。鄰近分片是基於分片標識符中的漢明距離確定的。
=nil; 的zkEVM是用zkLLVM編譯的類型1 zkEVM。爲了理解更傳統的zkEVM和=nil;的zkEVM之間的區別,我們需要討論與zkEVM底層電路定義過程相關的限製。zkEVM電路是一個關鍵部分,負責狀態轉換證明被認爲是正確的,通常使用一些自定義的zkDSL或簡單的庫來定義。這種電路定義方式帶來的問題與以下方麵相關:
通過zkLLVM編譯的zkEVM在設計上是安全的,利用evmone來確保與以太坊生産環境中使用的EVM完全一緻。zkLLVM(C++或Rust)自動編譯成電路,意味著人爲錯誤從電路定義過程中被移除。
此外,由於=nil; zkEVM是通過zkLLVM編譯的,它比手動定義的電路自然更靈活(因此,更具未來證明性),因爲它容易調整且電路生成是自動的。它也更易於審計,這意味著它的安全性不會以犧牲包含以太坊最新EIP爲代價。
由於主分片和輔助分片在其專門任務方麵的不衕 - 輔助分片專註於交易處理,而主分片專註於數據衕步 - 它們對數據可用性(DA)的處理方式也不衕,這有助於在緊急情況下恢覆狀態數據。這意味著:
主分片採用以太坊作爲其DA。
輔助分片可以選擇使用以太坊,或者選擇不採用獨立的DA。
這種安排是通過在開始時啟動兩種類型的分片來建立的:具有獨立的外部DA解決方案的分片和沒有的分片。在後續階段,隻能合併相衕DA類別的分片。這意味著在創建時,每個賬戶必鬚映射到特定的DA類別。
此外,這個框架可以擴展以包括其他類型的DA。
我們的主要目標之一是優化應用程序組合性併防止流動性碎片化,因此自然地,zkSharding方法如果沒有對以太坊狀態的無信任訪問是不完整的。這意味著 =nil; 提供完全的可組合性和透明的與以太坊集成,通過數據提供者模塊。
數據提供者模塊獨立於分片的數據存儲運行,將其信息與外部數據庫衕步,併將以太坊對最後監控的數據庫狀態的指紋(由以太坊的區塊哈希錶示)註入到分片的區塊中。這個數據庫的最新狀態通過確認模塊穫得驗證,該模塊使用與以太坊的Casper FFG共識證明的zkBridge。
=nil; 和 zkSharding 是=nil; 基金會在過去四年中開髮的産品的高潮。其目標是成爲第一個可組合、可擴展且通用的以太坊L2 zkRollup解決方案。我們很高興在接下來的幾個月內分享更多的實施細節。請確保關註我們的Twitter,以了解我們的進展!
對於技術傾曏的人,我們開髮了一本單獨的、全麵的入門書,深入探討=nil; 和 zkSharding 的細節。這本入門書是理解這種方法背後覆雜性的入口,配備了您所需的所有技術細節和預備知識。
立即深入我們的技術入門書,併在Discord和Telegram上加入討論。讓我們一起探索zkSharding的無限可能!
Пригласить больше голосов
長話短説
z如今,二層(L2)解決方案在可擴展性和狀態碎片化之間進行權衡。我們介紹一種二層設計——=nil;,它在不損害統一執行環境的好處的前提下,拓展了以太坊的可擴展性極限。這一解決方案結合了動態分片機製和可驗證地訪問以太坊數據的功能,由零知識技術保障。關鍵要素包括:
通過 zkSharding =nil; 穫得了單體和模塊化設計的雙重優勢,包括:
在較低層級上,狀態=nil; 被分割爲主分片和幾個次級分片。主分片的作用是衕步併整合次級分片的數據。它使用以太坊作爲其數據可用性層,併且作爲狀態轉換證明的驗證者,類似於典型的 zkRollups 操作。
次級分片作爲“工作節點”,執行用戶交易。這些分片通過跨分片消息協議維持統一的流動性和數據,消除它們之間的任何碎片化。
每個分片都由一個驗證者委員會監督。這些驗證者在分片間定期輪換。此外,對分片狀態的更新通過 zkEVM 曏主分片進行驗證。
爲了説明從用戶髮起到以太坊上確認的交易流程,請考慮以下步驟:
這個概述假設用戶的交易不會觸髮跨分片消息協議。然而,在這種情況下,交易流程保持不變,不衕之處在於用戶的交易可以觸髮在其他分片上創建新交易。
將所有賬戶分布在各個分片中,這似乎與特定應用程序卷展方法中髮現的數據碎片化問題類似。然而,關鍵區別在於跨分片通信的處理方式:它直接集成到整體協議中,而不是由單獨的外部橋梁管理。
爲了保證每個次級分片的安全性,其驗證者委員會有責任曏主分片證明其狀態轉換,以確保在較小的驗證者群體中沒有髮生欺詐。每個分片的驗證者委員會除了分片維護之外還有額外任務。驗證者負責跟蹤特定類型的事件,即在“鄰近分片”中的跨分片消息。鄰近分片是基於分片標識符中的漢明距離確定的。
=nil; 的zkEVM是用zkLLVM編譯的類型1 zkEVM。爲了理解更傳統的zkEVM和=nil;的zkEVM之間的區別,我們需要討論與zkEVM底層電路定義過程相關的限製。zkEVM電路是一個關鍵部分,負責狀態轉換證明被認爲是正確的,通常使用一些自定義的zkDSL或簡單的庫來定義。這種電路定義方式帶來的問題與以下方麵相關:
通過zkLLVM編譯的zkEVM在設計上是安全的,利用evmone來確保與以太坊生産環境中使用的EVM完全一緻。zkLLVM(C++或Rust)自動編譯成電路,意味著人爲錯誤從電路定義過程中被移除。
此外,由於=nil; zkEVM是通過zkLLVM編譯的,它比手動定義的電路自然更靈活(因此,更具未來證明性),因爲它容易調整且電路生成是自動的。它也更易於審計,這意味著它的安全性不會以犧牲包含以太坊最新EIP爲代價。
由於主分片和輔助分片在其專門任務方麵的不衕 - 輔助分片專註於交易處理,而主分片專註於數據衕步 - 它們對數據可用性(DA)的處理方式也不衕,這有助於在緊急情況下恢覆狀態數據。這意味著:
主分片採用以太坊作爲其DA。
輔助分片可以選擇使用以太坊,或者選擇不採用獨立的DA。
這種安排是通過在開始時啟動兩種類型的分片來建立的:具有獨立的外部DA解決方案的分片和沒有的分片。在後續階段,隻能合併相衕DA類別的分片。這意味著在創建時,每個賬戶必鬚映射到特定的DA類別。
此外,這個框架可以擴展以包括其他類型的DA。
我們的主要目標之一是優化應用程序組合性併防止流動性碎片化,因此自然地,zkSharding方法如果沒有對以太坊狀態的無信任訪問是不完整的。這意味著 =nil; 提供完全的可組合性和透明的與以太坊集成,通過數據提供者模塊。
數據提供者模塊獨立於分片的數據存儲運行,將其信息與外部數據庫衕步,併將以太坊對最後監控的數據庫狀態的指紋(由以太坊的區塊哈希錶示)註入到分片的區塊中。這個數據庫的最新狀態通過確認模塊穫得驗證,該模塊使用與以太坊的Casper FFG共識證明的zkBridge。
=nil; 和 zkSharding 是=nil; 基金會在過去四年中開髮的産品的高潮。其目標是成爲第一個可組合、可擴展且通用的以太坊L2 zkRollup解決方案。我們很高興在接下來的幾個月內分享更多的實施細節。請確保關註我們的Twitter,以了解我們的進展!
對於技術傾曏的人,我們開髮了一本單獨的、全麵的入門書,深入探討=nil; 和 zkSharding 的細節。這本入門書是理解這種方法背後覆雜性的入口,配備了您所需的所有技術細節和預備知識。
立即深入我們的技術入門書,併在Discord和Telegram上加入討論。讓我們一起探索zkSharding的無限可能!