作者 : Vitalik
編譯 :南枳,Odaily星球日報
一個好的區塊鏈用戶體驗的重要屬性之一是快速的交易確認時間。如今,以太坊相比五年前已經有了很大的改進。得益於 EIP-1559 和轉 PoS(The Merge)後穩定的區塊時間,用戶在L1上發送的交易通常可以在 5-20 秒內確認,大體與使用信用卡支付的體驗相當。然而,進一步改善用戶體驗是有價值的,某些應用甚至要求數百毫秒甚至更短的延遲。本文將探討以太坊(改進交易確認時間)的一些實用選項。
現有想法和技術的概述
單槽最終性
目前,以太坊的 Gasper 共識使用單個槽(Slot)和 Epoch 的架構。每 12 秒一個槽,一部分驗證者會對鏈的頭部進行投票,並在 32 個槽(6.4 分鐘)內,所有驗證者都有機會投票一次。這些投票然後被重新解釋爲一種類似於 PBFT 的共識算法中的消息,在兩個 Epoch(12.8 分鐘)之後,給予一種稱爲最終性的非常強的經濟保證。
過去幾年中,我們對當前的方法越來越不滿意。主要原因有兩點,首先這種方法很複雜,槽對槽投票機制和 Epoch 對 Epoch 最終性機制之間存在許多交互錯誤,其次 12.8 分鐘太長了,沒人願意等那麼久。
單槽最終性(Single Slot Finaty,SSF)通過一種類似於 Tendermint 共識的機制取代了這種架構,其中塊 N 在塊 N+ 1 生成之前被最終確定。與 Tendermint 的主要區別是我們保留了“非活躍泄漏(inactivity leak)”機制,這允許鏈在超過 1/3 的驗證者離線時繼續運行並恢復。
(注:inactivity leak 是 PoS 中的一種機制,旨在懲罰長時間不活躍的驗證者,一旦被標記爲不活躍,將持續罰沒其質押的 ETH。
Tendermint 是一種高效且安全的拜占庭容錯共識算法,允許快速達成交易確認,並確保區塊鏈系統在部分節點惡意或離線的情況下仍能正常運行。)
單槽最終性的主要挑戰是,這意味着每個以太坊質押者每 12 秒需要發佈兩條消息,這對鏈來說是很大的負載。有一些巧妙的想法可以緩解這個問題,包括最近的 Orbit SSF 提案。雖然這顯著加快了“最終性”來提升用戶體驗,但並未改變用戶需要等待 5-20 秒的事實。
(注:最終性與交易被打包進區塊並確認並非同一事件,交易已確認但未實現最終性的情況下,可能出現分叉或回滾。)
Rollup 預確認
過去幾年,以太坊一直遵循以 rollup 爲中心的路線圖,設計以太坊基礎層(L1),以支持數據可用性和其他功能,然後這些功能可供 L2 協議(如 rollups、validiums 和 plasmas)使用,能夠在更大規模上爲用戶提供與以太坊同等水平的安全性。
這在以太坊生態系統內造成了關注點的分離:以太坊 L1 專注於抵審查、可靠、穩定,以及維護和改進某個基礎層核心功能,而 L2專注於通過不同的文化和技術更直接地接觸用戶。但如果沿着這條路徑前進,一個不可避免的問題出現了:L2 希望爲用戶提供比 5-20 秒更快的確認。
到目前爲止,至少在理論上,創建自己的“去中心化排序器”網絡是 L2 的責任。一小羣驗證者可能每幾百毫秒就爲區塊簽名一次,並在這些區塊後面投入他們的質押資產。最終,這些 L2 區塊的頭文件會發布到 L1。
但L2 驗證者集可以進行“欺詐”:他們可以先簽署區塊 B 1 ,然後再簽署一個衝突的區塊 B 2 並在 B 1 之前提交到鏈上。但如果他們這樣做,他們會被查驗出來並失去質押資產。實際上我們已經看到了中心化版本的實際案例,但另一方面 rollup 在開發去中心化排序網絡方面進展緩慢。你可以說要求所有L2都進行去中心化排序是不公平的:我們這是在要求 rollup 做與創建一個全新的L1幾乎相同的工作。因此,Justin Drake 一直在推廣一種方法,讓所有L2(以及L1)都能使用一個以太坊範圍內共享的預確認機制:基礎預確認。
基礎預確認
基礎預確認(Based preconfirmations)的方法假設以太坊提議者(Ethereum proposers)是與 MEV 相關的高度複雜的參與者。基於預確認的方法通過激勵這些複雜的提議者接受提供預確認服務的責任來利用這種複雜性。
該方法的基本思想是創建一個標準化協議,用戶可以提供額外費用以確保交易會被包括在下一個區塊中的即時保證,以及對執行該交易結果的聲明。如果提議者違反了對任何用戶做出的任何承諾,他們可以被罰沒。
如所述,基於預確認爲 L1 交易提供保證。如果 rollups 是“基於”的,那麼所有 L2 區塊都是 L1 交易,因此相同的機制可以用於爲任何 L2 提供預確認。
(注:Ethereum proposers 能夠通過費用機制,將一系列交易捆綁爲 bundle 並打包至區塊中,確保了交易執行以及順序。例如衆所周知的夾子,通過其確保了在某筆交易前買入並在之後賣出。Vitalik 此處所提方案概念上一致,通過這一 proposers 提前鎖定交易結果,加快執行。)
我們實際在看什麼?
假設我們實現了單槽最終性。我們使用類似於 Orbit 的技術來減少每個槽簽署的驗證者數量,但不會減少太多,以便我們也可以在減少 32 ETH 質押最低限度的關鍵目標上取得進展。槽時長(slot time)可能會增加到 16 秒,然後我們使用 rollup 預確認或基礎預確認,爲用戶提供更快的確認。最後我們獲得了什麼:一個 epoch-slot 架構。
有一個深刻的哲學原因,爲什麼 epoch-and-slot 架構似乎如此難以避免:與就某件事達成最大程度的“經濟最終性”協議相比,就某件事情達成大致一致所需的時間更少。
一個簡單的原因是節點數量。雖然由於超優化的 BLS 聚合和即將出現的 ZK-STARKs,舊的線性去中心化/最終性時間/開銷權衡現在看起來溫和了,以下原因不可忽視:
“近似共識”只需要少量節點,而經濟最終性需要大部分節點。
一旦節點數量超過某個規模,你需要花費更多時間來收集簽名。
在今天的以太坊中, 12 秒槽劃分爲三個子槽:區塊發佈和分發、證明、證明聚合。如果證明者數量大大減少,我們可以減少到兩個子槽並使用 8 秒槽時間。另一個、更實際的更大因素是節點的“質量”。另一個更大的因素是節點的“質量”。如果我們也可以依靠專業化的節點子集來達成近似協議(並且仍然使用完整的驗證器集來確定最終性),我們可以將其降至約 2 秒。
因此在我看來,epoch-and-slot 架構顯然是正確的,但並非所有 epoch-and-slot 體系結構都是平等的,更充分地探索設計空間是有價值的。值得深入研究的方向不是像 Gasper 那樣緊密結合在一起,而在兩種機制之間有更強的關注點分離。
L2 應該怎麼做?
在我看來,L2 目前有三種合理的策略:
在技術上和精神上都是“based”的。也就是說,他們優化以太坊基礎層技術屬性及其價值觀(高度去中心化、抗審查等)。最簡單形式下,你可以將這些 rollup 視爲“品牌分片”,但它們也可以擁有更大的野心,在新的虛擬機設計和其他技術改進上進行大量實驗。
成爲“帶區塊鏈腳手架的服務器”並充分利用它。如果你從服務器開始,然後添加 STARK 有效性證明以確保服務器遵循規則;確保用戶退出或強制交易的權利;集體選擇的自由,通過協調的大規模退出或通過改變排序者的投票,那麼你已經獲得了上鍊的大部分好處,同時保留了服務器的大部分效率。
(注:腳手架是指自動生成項目基本結構和代碼框架的工具或方法,以便開發者能夠快速開始編碼。)
折衷方法:一個擁有一百個節點的快速鏈,以太坊提供額外的互操作性和安全性。這是許多 L2 項目當前實際的路線圖。
對於某些應用程序(例如 ENS、密鑰存儲,部分支付協議), 12 秒區塊時間已經足夠。對於那些不適用的應用程序,唯一的解決方案是 epoch-and-slot 架構。在三種情況下,“epoch”是以太坊的 SSF,但 slot 在上述三種情況下各不相同:
一個以太坊原生的 epoch-and-slot 架構
服務器預確認
委員會預確認
一個關鍵問題是,我們能在第 1 類中做到多好?特別是,如果它變得非常好,那麼感覺第 3 類的意義就不那麼大了。因爲所有“based”的方案都不適用於如 plasmas 和 validiums 之類的鏈下數據 L2,因此第 2 類將永遠存在。如果一個以太坊原生的 epoch-and-slot 架構可以降低到 1 秒的 slot 時間,那麼第 3 類的空間就會變得小得多。
今天,我們離這些問題的最終答案還很遠。一個關鍵問題是:區塊提議者會變得多麼複雜,這仍然是一個存在相當大不確定性的領域。像 Orbit SSF 這樣的設計非常新穎,因此例如將 Orbit SSF 作爲 epoch-and-slot 中的 epoch 等方案的設計空間仍值得充分探索。我們擁有的選項越多,我們可以爲 L1 和 L2 的用戶做得越好,我們可以簡化 L2 開發人員的工作。