原文作者|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的驗證者離線時繼續運作並恢復。
單槽最終性的主要挑戰是,這意味著每個以太坊質押者每12秒需要發布兩條訊息,這對鏈來說是很大的負載。有一些巧妙的想法可以緩解這個問題,包括最近的Orbit SSF提案。雖然這顯著加快了「最終性」來提升用戶體驗,但並未改變用戶需要等待5-20秒的事實。
Rollup 預確認
過去幾年,以太坊一直遵循以rollup 為中心的路線圖,設計以太坊基礎層(L1),以支援資料可用性和其他功能,然後這些功能可供L2 協定(如rollups、validiums 和plasmas)使用,能夠在更大規模上為用戶提供與以太坊同等程度的安全性。
這在以太坊生態系統內造成了關注點的分離:以太坊L1 專注於抵審查、可靠、穩定,以及維護和改進某個基礎層核心功能,而L2專注於透過不同的文化和技術更直接地接觸用戶。但如果沿著這條路徑前進,一個不可避免的問題出現了:L2 希望為用戶提供比5-20 秒更快的確認。
到目前為止,至少在理論上,創建自己的「去中心化排序器」網路是L2 的責任。一小群驗證者可能每幾百毫秒就為區塊簽名一次,並在這些區塊後面投入他們的質押資產。最終,這些L2 區塊的頭檔會發佈到L1。
但L2 驗證者集可以進行「詐欺」:他們可以先簽署區塊B1,然後再簽署一個衝突的區塊B2 並在B1 之前提交到鏈上。但如果他們這樣做,他們會被查驗出來並失去質押資產。實際上我們已經看到了中心化版本的實際案例,但另一方面rollup 在開發去中心化排序網路方面進展緩慢。你可以說要求所有L2都去中心化排序是不公平的:我們這是在要求rollup做與創造一個全新的L1幾乎相同的工作。因此,Justin Drake一直在推廣一種方法,讓所有L2(以及L1)都能使用一個以太坊範圍內共享的預確認機制:基礎預確認。
基礎預確認
基礎預確認(Based preconfirmations)的方法假設以太坊提議者(Ethereum proposers)是與MEV 相關的高度複雜的參與者。基於預先確認的方法透過激勵這些複雜的提議者接受提供預先確認服務的責任來利用這種複雜性。
該方法的基本想法是創建一個標準化協議,用戶可以提供額外費用以確保交易會被包括在下一個區塊中的即時保證,以及對執行該交易結果的聲明。如果提議者違反了對任何用戶所做的任何承諾,他們可以被罰沒。
如所述,基於預確認為L1 交易提供保證。如果rollups 是「基於」的,那麼所有L2 區塊都是L1 交易,因此相同的機制可以用於為任何L2 提供預先確認。
我們實際在看什麼?
假設我們實現了單槽最終性。我們使用類似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 開發人員的工作。