WEEX 唯客博客, 原標題:《Possible futures for the Ethereum protocol, part 2: The Surge》 作者:Vitalik Buterin 編譯:Karen,Foresight News 特別鳴謝 Justin Drake、Francesco、Hsiao-wei Wang、@antonttc 和 Georgios Konstantopoulos。 起初,以太坊的路線圖中有兩種擴容策略。一種(參見 2015 年的一篇早期論文)是「分片」(sharding):每個節點只需要驗證和存儲一小部分交易,而不是驗證和存儲鏈中的所有交易。其他任何點對點網路(例如 BitTorrent)也是這樣工作的,所以我們當然可以讓區塊鏈以同樣的方式工作。另一種是 Layer2 協議:這些網路將位於以太坊之上,使其能夠充分受益於其安全性,同時使大部分數據和計算保持在主鏈之外。Layer2 協議是指 2015 年的 state channels,2017 年的 Plasma,然後是 2019 年的 Rollup。Rollup 比 state channels 或 Plasma 更強大,但它們需要大量的鏈上數據帶寬。幸運的是,到 2019 年,分片研究已經解決了大規模驗證「數據可用性」的問題。結果,兩條路徑融合在一起,我們得到了以 Rollup 為中心的路線圖,該路線圖今天仍然是以太坊的擴展策略。 The Surge,2023 路線圖版 以 Rollup 為中心的路線圖提出了一個簡單的分工:以太坊 L1 專註於成為一個強大且去中心化的基礎層,而 L2 則承擔幫助生態系統擴展的任務。這種模式在社會上無處不在:法院系統(L1)的存在不是為了追求超高速和高效,而是為了保護合同和財產權,而創業者(L2)則要在這一穩固的基礎層之上進行建設,帶領人類走向(無論是字面還是比喻意義上的)火星。 今年,以 Rollup 為中心的路線圖取得了重要成果:隨著 EIP-4844 blobs 的推出,以太坊 L1 的數據帶寬大幅增加,多個以太坊虛擬機(EVM)Rollup 已進入第一階段。每個 L2 都作為具有自身內部規則和邏輯的「分片」存在,分片實現方式的多樣性和多元化如今已成為現實。但正如我們所見,走這條路也面臨著一些獨特的挑戰。因此,我們現在的任務是完成以 Rollup 為中心的路線圖,並解決這些問題,同時保持以太坊 L1 所特有的穩健性和去中心化。 The Surge:關鍵目標 1、未來以太坊通過 L2 可以達到 10 萬以上的 TPS; 2、保持 L1 的去中心化和魯棒性; 3、至少一些 L2 完全繼承了以太坊的核心屬性(去信任、開放、抗審查); 4、以太坊應該感覺像一個統一的生態系統,而不是 34 個不同的區塊鏈。 本章內容 可擴展性三角悖論 數據可用性採樣的進一步進展 數據壓縮 Generalized Plasma 成熟的 L2 證明系統 跨 L2 互操作性改進 在 L1 上擴展執行 可擴展性三角悖論 可擴展性三角悖論是 2017 年提出的一個想法,它認為區塊鏈的三個特性之間存在矛盾:去中心化(更具體地說:運行節點的成本低)、可擴展性(處理的交易數量多)和安全性(攻擊者需要破壞網路中很大一部分節點才能使單筆交易失敗)。 值得注意的是,三角悖論不是一個定理,介紹三角悖論的帖子也沒有附帶數學證明。它確實給出了一個啟髮式的數學論點:如果一個去中心化友好的節點(例如消費類筆記本電腦)每秒可以驗證 N 筆交易,並且你有一個每秒處理 k*N 筆交易的鏈,那麼 (i) 每筆交易只能被 1/k 個節點看到,這意味著攻擊者只需破壞少數節點就能通過一筆惡意交易, 或 (ii) 你的節點將變得強大,而你的鏈不會去中心化。這篇文章的目的從不是證明打破三角悖論論是不可能的;相反,它旨在表明打破三元悖論是困難的,它需要在某種程度上跳出該論證所隱含的思維框架。 多年來,一些高性能鏈常聲稱它們在不從根本上改變架構的情況下就解決了三元悖論,通常是通過運用軟體工程技巧來優化節點。這總是具有誤導性的,在這些鏈上運行節點比在以太坊上運行節點要困難得多。本篇文章將探討為何會如此,以及為什麼僅憑 L1 客戶端軟體工程本身無法擴展以太坊? 然而,數據可用性採樣與 SNARKs 的結合確實解決了三角悖論:它允許客戶端在僅下載少量數據並執行極少量計算的情況下,驗證一定數量的數據是可用的,並且一定數量的計算步驟是正確執行的。SNARKs 是無需信任的。數據可用性採樣具有一種微妙的 few-of-N 信任模型,但它保留了不可擴容鏈所具有的基本特性,即即使是 51% 的攻擊也無法強制壞塊被網路接受。 解決三難困境的另一種方法是 Plasma 架構,它使用巧妙的技術,以激勵兼容的方式將監視數據可用性的責任推給用戶。早在 2017-2019 年,當我們只有欺詐證明這一手段來擴展計算能力時,Plasma 在安全執行方面非常受限,但隨著 SNARKs(零知識簡潔非互動式論證)的普及,Plasma 架構對於比以往更廣泛的使用場景變得更加可行。 數據可用性採樣的進一步進展 我們正在解決什麼問題? 2024 年 3 月 13 日,當 Dencun 升級上線時,以太坊區塊鏈每 12 秒的 slot 有 3 個約 125 kB blob,或每個 slot 的數據可用帶寬約 375 kB。假設交易數據直接在鏈上發布,則 ERC20 轉賬約為 180 位元組,因此以太坊上 Rollup 的最大 TPS 為:375000 / 12 / 180 = 173.6 TPS 如果我們加上以太坊的 calldata(理論最大值:每個 slot 3000 萬 Gas / 每位元組 16 gas = 每個 slot 1,875,000 位元組),則變為 607 TPS。使用 PeerDAS,blob 數量可能會增加到 8-16,這將為 calldata 提供 463-926 TPS。 這是對以太坊 L1 的重大提升,但還不夠。我們想要更多的可擴展性。我們的中期目標是每個 slot 16 MB,如果結合 Rollup 數據壓縮的改進,將帶來 ~58000 TPS。 它是什麼?如何運行? PeerDAS 是「1D sampling」的一個相對簡單的實現。在以太坊中,每個 blob 都是一個在 253 位素數域(prime field)上的 4096 次多項式(polynomial)。我們廣播多項式的 shares,其中每個 shares 包含從總共 8192 個坐標中相鄰的 16 個坐標上的 16 個評估值。在這 8192 個評估值中,任何 4096 個(根據當前提出的參數:128 個可能樣本中的任何 64 個)都可以恢復 blob。 PeerDAS 的工作原理是讓每個客戶端偵聽少量子網,其中第 i 個子網廣播任何 blob 的第 i 個樣本,並通過詢問全球 p2p 網路中的對等方(誰將偵聽不同的子網)來請求它需要的其他子網上的 blob。更保守的版本 SubnetDAS 僅使用子網機制,而沒有額外的詢問對等層。當前的提案是讓參與權益證明的節點使用 SubnetDAS,而其他節點(即客戶)使用 PeerDAS。 從理論上講,我們可以將一「1D sampling」規模擴展得相當大:如果我們將 blob 的最大數量增加到 256(目標為 128),那麼我們就能達到 16MB 的目標,而數據可用性採樣中每個節點 16 個樣本 * 128 個 blob * 每個 blob 每個樣本 512 位元組 = 每個 slot 1 MB 的數據帶寬。這只是勉強在我們的容忍範圍內:這是可行的,但這意味著帶寬受限的客戶端無法採樣。我們可以通過減少 blob 數量和增加 blob 大小來對此進行一定程度的優化,但這會使重建成本更高。 因此,我們最終想要更進一步,進行 2D 採樣(2D sampling),這種方法不僅在 blob 內進行隨機抽樣,還在 blob 之間進行隨機抽樣。利用 KZG 承諾的線性屬性,通過一組新的虛擬 blob 來擴展一個區塊中的 blob 集,這些虛擬 blob 冗餘地編碼了相同的信息。 因此,最終我們想更進一步,進行 2D 採樣,它不僅在 blob 內,而且在 blob 之間進行隨機採樣。KZG 承諾的線性屬性用於擴展一個區塊中的 blob 集,其中包含對相同信息進行冗餘編碼的新虛擬 blob 列表。 2D 採樣。資料來源:a16z crypto 至關重要的是,計算承諾的擴展並不需要有 blob,因此該方案從根本上來說對分散式區塊構建是友好的。實際構建區塊的節點只需要擁有 blob KZG 承諾,並且它們可以依賴數據可用性採樣(DAS)來驗證數據塊的可用性。一維數據可用性採樣(1D DAS)本質上也對分散式塊構建友好。 有哪些與現有研究的鏈接? 介紹數據可用性的原始帖子 (2018):https://github.com/ethereum/research/wiki/A-note-on-data-availability-and-erasure-coding Follow-up paper: https://arxiv.org/abs/1809.09044 關於 DAS 的解釋文章,paradigm:https://www.paradigm.xyz/2022/08/das 帶有 KZG 承諾的 2D 可用性:https://ethresear.ch/t/2d-data-availability-with-kate-commitments/8081 ethresear.ch 上的 PeerDAS:https://ethresear.ch/t/peerdas-a-simpler-das-approach-using-battle-tested-p2p-components/16541 和論文:https://eprint.iacr.org/2024/1362 EIP-7594: https://eips.ethereum.org/EIPS/eip-7594 ethresear.ch 上的 SubnetDAS:https://ethresear.ch/t/subnetdas-an-intermediate-das-approach/17169 2D 採樣中可恢復性的細微差別:https://ethresear.ch/t/nuances-of-data-recoverability-in-data-availability-sampling/16256 還需做什麼?又有哪些權衡? 接下來是完成 PeerDAS 的實施和推出。之後,不斷增加 PeerDAS 上的 blob 數量,同時仔細觀察網路並改進軟體以確保安全,這是一個漸進的過程。同時,與此同時,我們希望有更多的學術工作來規範 PeerDAS 和其他版本的 DAS 及其與分叉選擇規則安全等問題的交互。 在未來更遠的階段,我們需要做更多的工作來確定 2D DAS 的理想版本,並證明其安全屬性。我們還希望最終能夠從 KZG 轉向一種量子安全且無需可信設置的替代方案。目前,我們還不清楚有哪些候選方案對分散式區塊構建是友好的。即使使用昂貴的「蠻力」技術,即使用遞歸 STARK 來生成用於重建行和列的有效性證明,也不足以滿足需求,因為雖然從技術上講,一個 STARK 的大小為 O(log(n) * log(log(n)) 哈希值(使用 STIR),但實際上 STARK 幾乎與整個 blob 一樣大。 我認為的長期現實路徑是: 實施理想的 2D DAS; 堅持使用 1D DAS,犧牲採樣帶寬效率,為了簡單性和魯棒性而接受較低的數據上限 (Hard pivot)放棄 DA,完全接受 Plasma 作為我們關注的主要 Layer2 架構。 請注意,即使我們決定直接在 L1 層擴展執行,這種選擇也是存在的。這是因為如果 L1 層要處理大量的 TPS,L1 區塊將變得非常大,客戶端將希望有一種高效的方法來驗證它們的正確性,因此我們將不得不在 L1 層使用與 Rollup(如 ZK-EVM 和 DAS)相同的技術。 如何與路線圖的其他部分交互? 如果實現數據壓縮,對 2D DAS 的需求會有所減少,或者至少會延遲,如果 Plasma 被廣泛使用,則需求會進一步減少。DAS 也對分散式區塊構建協議和機制提出了挑戰:雖然 DAS 理論上對分散式重建友好,但這在實踐中需要與包 inclusion list 提案及其周圍的分叉選擇機制相結合。 數據壓縮 我們在解決什麼問題? Rollup 中的每筆交易都會佔用大量的鏈上數據空間:ERC20 傳輸大約需要 180 位元組。即使有理想的數據可用性採樣,這也限制了 Layer 協議的可擴展性。每個 slot 16 MB,我們得到: 16000000 / 12 / 180 = 7407 TPS 如果我們不僅能解決分子的問題,還能解決分母的問題,讓每個 Rollup 中的交易在鏈上佔用更少的位元組,那會怎樣? 它是什麼,如何工作? 在我看來,最好的解釋是兩年前的這張圖: 零位元組壓縮中,用兩個位元組替換每個長的零位元組序列,表示有多少個零位元組。更進一步,我們利用了交易的特定屬性: 簽名聚合:我們從 ECDSA 簽名切換到 BLS 簽名,BLS 簽名的特性是多個簽名可以組合成一個單一的簽名,該簽名可以證明所有原始簽名的有效性。在 L1 層中,由於即使進行聚合,驗證的計算成本也較高,因此不考慮使用 BLS 簽名。但在 L2 這樣數據稀缺的環境中,使用 BLS 簽名是有意義的。ERC-4337 的聚合特性為實現這一功能提供了一條途徑。 用 pointers 替換地址:如果以前使用過某個地址,我們可以將 20 位元組的地址替換為指向歷史記錄中某個位置的 4 位元組 pointer。 交易值的自定義序列化——大多數交易值的位數很少,例如,0.25 ETH 表示為 250,000,000,000,000,000 wei。最大基礎手續費和優先手續費也類似。因此,我們可以使用自定義的十進位浮點格式,來表示大多數貨幣值。 有哪些與現有研究的鏈接? 探索 sequence.xyz:https://sequence.xyz/blog/compressing-calldata L2 Calldata 優化合約:https://github.com/ScopeLift/l2-optimizoooors 基於有效性證明的 Rollups(又名 ZK rollups)發布狀態差異而不是交易:https://ethresear.ch/t/rollup-diff-compression-application-level-compression-strategies-to-reduce-the-l2-data-footprint-on-l1/9975 BLS 錢包 – 通過 ERC-4337 實現 BLS 聚合:https://github.com/getwax/bls-wallet 還需做什麼,有哪些權衡? 接下來主要要做的是實際實現上述方案。主要的權衡包括: 1、切換到 BLS 簽名需要付出很大努力,並且會降低與能夠增強安全性的可信硬體晶元的兼容性。可以使用其他簽名方案的 ZK-SNARK 封裝來替代它。 2、動態壓縮(例如,用 pointers 替換地址)會使客戶端代碼變得複雜。 3、將狀態差異發布到鏈上而不是交易,會降低可審計性,並使很多軟體(例如區塊瀏覽器)無法工作。 如何與路線圖的其他部分交互? 採用 ERC-4337,並最終將其部分內容納入 L2 EVM 中,可以大大加快聚合技術的部署。將 ERC-4337 的部分內容放在 L1 上可以加快其在 L2 上的部署。 Generalized Plasma 我們正在解決什麼問題? 即使使用 16 MB 的 blob 和數據壓縮,58,000 TPS 也未必足以完全滿足消費者支付、去中心化社交或其他高帶寬領域的需求,尤其是當我們開始考慮隱私因素時,這可能會使可擴展性降低 3-8 倍。對於高交易量、低價值的應用場景,目前的一種選擇是使用 Validium,它將數據保存在鏈下,並採用了一種有趣的安全模型:運營商無法竊取用戶的資金,但他們可能會暫時或永久凍結所有用戶的資金。但我們可以做得更好。 它是什麼,如何工作? Plasma 是一種擴容解決方案,它涉及到一個運營商將區塊發布到鏈下,並將這些區塊的 Merkle 根放到鏈上(與 Rollup 不同,Rollup 會將完整的區塊放到鏈上)。對於每個區塊,運營商會向每個用戶發送一個 Merkle 分支來證明該用戶的資產發生了什麼變化,或者沒有發生什麼變化。用戶可以通過提供 Merkle 分支來提取他們的資產。重要的是,這個分支不必以最新狀態為根。因此,即使數據可用性出現問題,用戶仍然可以通過提取他們可用的最新狀態來恢復他們的資產。如果用戶提交了一個無效的分支(例如,提取他們已經發送給其他人的資產,或者運營商自己憑空創造了一個資產),則可以通過鏈上的挑戰機制來判斷資產的合法歸屬。 Plasma Cash chain 圖。花費硬幣 i 的交易被放在 tree 中的第 i 個位置。在此示例中,假設所有先前的 tree 都有效,我們知道 Eve 當前擁有代幣 1,David 擁有代幣 4,George 擁有代幣 6。 早期的 Plasma 版本僅能處理支付用例,無法有效地進一步推廣。然而,如果我們要求每個根都用 SNARK 進行驗證,那麼 Plasma 就會變得強大得多。每個挑戰遊戲都可以大大簡化,因為我們排除了運營商作弊的大部分可能路徑。同時,也開闢了新的路徑,使 Plasma 技術能夠擴展到更廣泛的資產類別。最後,在運營商不作弊的情況下,用戶可以立即提取資金,而無需等待一周的挑戰期。 製作 EVM Plasma 鏈的一種方法(不是唯一的方法):使用 ZK-SNARK 構建一個并行的 UTXO 樹,該 tree 反映了 EVM 所做的餘額變化,並定義了在歷史不同時間點的「同一代幣」的唯一映射。然後可以在其上構建 Plasma 結構。 一個關鍵的見解是,Plasma 系統並不需要完美。即使你只能保護資產的子集(例如,僅僅是過去一周內未移動的代幣),你也已經大大改善了當前超可擴展 EVM(即 Validium)的現狀。 另一類結構是是混合 Plasma/Rollup,例如 Intmax。這些構造將每個用戶的極少量數據放到鏈上(例如,5 個位元組),這樣做可以獲得介於 Plasma 和 Rollup 之間的某些特性:在 Intmax 的情況下,你可以獲得非常高的可擴展性和隱私性,儘管即使在 16 MB 的容量中,理論上也限制在大約 16,000,000 / 12 / 5 = 266,667 TPS 之間。 有哪些與現有研究相關的鏈接? Original Plasma paper: https://plasma.io/plasma-deprecated.pdf Plasma Cash: https://ethresear.ch/t/plasm…