轉發原文標題《Epochs and slots all the way down: ways to give Ethereum users faster transaction confirmation times》
良好的區塊鏈用戶體驗的重要特性之一是快速的交易確認時間。如今,以太坊與五年前相比已經有了很大的進步。得益於 EIP-1559 和 PoS 合並後穩定的出塊時間,用戶在L1上發送的交易在5-20秒內就能得到可靠確認。這與信用卡支付的體驗大致相當。然而,以太坊的用戶體驗仍需要進一步的改善,因爲有些應用程序確實需要數百毫秒甚至更短的交易延遲。這篇文章將介紹加快以太坊交易確認時間的一些實用方案。
現在以太坊的 Gasper 共識採用時隙(Slot)和紀元(epoch)架構。每隔 12 秒(單個 slot 的時長),驗證者子集會在區塊鏈的最新區塊上發布投票,在 32 個 slot(6.4 分鍾,一個 epoch 包含 32 個 slot)內,所有驗證者都有機會投票一次。然後,這些投票被重新解釋爲類似於 PBFT 的共識算法中的消息,該算法在兩個 epoch(12.8 分鍾)後提供非常嚴格的經濟保證,這就是最終性。
在過去的幾年裏,我們對當前的方法越來越不滿意。主要原因是(i)它很復雜,並且逐個時隙投票機制和逐個紀元最終確定機制之間存在很多交互錯誤,以及(ii)12.8分鍾太長,沒有人願意等那麼久。
單時隙最終性(SSF)用一種與Tendermint 共識類似的機制取代了這種架構 ,其中塊 N 在塊 N+1 之前完成。與 Tendermint 的主要區別是我們保留了“不活躍泄漏(inactive leak)”機制,這種機制允許區塊鏈在超過 1/3 的驗證者離線時繼續運行並恢復。
主要提議 single-slot finality design圖
SSF 的主要挑戰在於,它似乎暗示者每個以太坊質押者都需要每 12 秒發布兩條消息,這對區塊鏈來說是一個很大的負擔。有一些巧妙的想法可以緩解這種情況,包括最近的 Orbit SSF 提案。即便如此,這種方案通過加快「最終確定性」能顯著改善用戶體驗,但它並沒有縮短用戶需要等待 5-20 秒的這個時間。
在過去的幾年中,以太坊一直遵循着以 Rollup 爲中心的路線圖,圍繞支持數據可用性和其他功能設計以太坊基礎層(L1)。這些功能被 Rollup(還有 Validiums 和 Plasmas )等 L2 協議使用,L2 協議可以爲用戶提供與以太坊相同級別的安全性,但它們的交易規模比 L1 要大得多。
這使得以太坊生態系統中產生了一種關注點分離:以太坊 L1 可以專注於抗審查、可靠、穩定以及維護和改進某些核心基礎功能,而 L2 可以通過不同的文化和技術權衡專注於用戶體驗。但如果你沿着這條路走下去,就會出現一個不可避免的問題:L2 專注於爲那些希望在 5-20 秒內獲得更快確認的用戶提供服務。
到目前爲止,創建自己的「去中心化排序」網路已經成爲 L2 不可推卸的責任。可能每隔幾百毫秒,一小部分驗證者會籤署區塊,他們會將自己的代幣質押在這些區塊中。最終,這些 L2 區塊的區塊頭會發布到 L1 上。
L2 驗證者集可以作弊:他們可以先籤署區塊 B1,然後再籤署與 B1 有衝突的區塊 B2,並在 B1 之前將其提交到鏈上。但如果他們這樣做,就會面臨懲罰而失去他們的押金。在實踐中,我們已經看到了這種做法的中心化版本,但是 Rollup 在開發去中心化排序網路方面進展緩慢。你可以說要求 L2 都進行去中心化排序是一項不公平的交易:這相當於要求 Rollup 做與創建一個全新的 L1 相同的工作。出於一些原因,以太坊基金會研究員 Justin Drake 一直在推廣一種讓所有 L2(以及 L1)訪問共享的以太坊預確認機制的方法:基於預確認(based preconfirmations)。
基於預確認的方法,假設以太坊提議者將因 MEV 相關原因而成爲高度復雜的參與者(請參閱此處了解我對 MEV 的解釋,另請參閱執行系列提議)。基於預確認的方法利用這種復雜性,激勵這些成熟的提議者提供預確認服務。
基本想法是創建一個標準化協議,通過該協議,用戶可以提供額外的費用,以換即時取保證自身交易被納入下一個區塊,並獲得有關執行該交易結果的聲明。如果提議者違反了對任何用戶做出的承諾,他們就會受到懲罰。
如上所述,基於預確認爲 L1 交易提供保證。如果匯總是 “基於”匯總,那麼所有 L2 區塊都是 L1 交易,因此可以使用相同的機制爲任何 L2 提供預確認。
假設我們實現單時隙最終性。我們使用類似 Orbit 的技術來減少每個時隙籤名的驗證者數量,這樣我們也可以在減少 32 ETH 最低質押數量,可謂是一舉兩得。結果,slot 時間可能會逐漸增加到 16 秒。然後我們使用 Rollup 預確認或基於預確認來爲用戶提供更快的保證。我們現在得到了什麼?一個時隙與紀元(epoch-and-slot)架構。
“它們是同一張圖”的模因已經被過度使用了,所以我將把我幾年前畫的一個舊圖表來描述 Gasper 的時隙和紀元架構和 L2 預確認的圖表放在一起,希望這能讓大家明白這一點。
爲什麼紀元和時隙架構似乎如此難以避免,有一個深刻的哲學原因:它本質上比達成最嚴格的“經濟最終性”協議所需的時間更少。
一個簡單的原因是節點數量。雖然由於超優化的 BLS 聚合和不久的將來的 ZK-STARK,舊的@VitalikButerin/parametrizing-casper-the-decentralization-finality-time-overhead-tradeoff-3f2011672735">漸進式去中心化 / 最終確定時間 / 開銷權衡現在看起來更加溫和,但從根本上來說,以下觀點仍然是正確的:
在當前的以太坊中,12 秒的 slot 被劃分爲三個 sub-slots,用於 (i) 區塊發布和分發、(ii) 證明 (iii) 證明聚合。如果證明者數量少得多,我們可以將其減少到兩個 sub-slots,並擁有 8 秒的 slot 時間。另一個實際上更重要的因素是節點的「質量」。如果我們還可以依靠專業化的節點子集來達成近似協議(並且仍然使用完整的驗證器集來實現最終性),我們可以合理地將其縮短到約 2 秒。
因此,我認爲 (i) 時隙和紀元架構顯然是正確的,但 (ii) 並非所有時隙和紀元架構都是一樣的,我們需要更充分地探索設計空間。特別是,那些不像 Gasper 那樣緊密交織的方案值得探索。
我認爲,目前 L2 可以採取三種合理的策略:
對於某些應用程序(例如 ENS、keystores 以及一些支付場景),12 秒的區塊時間就足夠了。對於需要更短確認時間的應用程序,唯一的解決方案是時隙和紀元架構。在這三種情況下,「紀元」都是以太坊的 SSF(也許我們可以將該首字母縮略詞重新定義爲「單個時隙」以外的其他含義,例如,它可以是「Secure Speedy Finality」)。但在上述三種情況下,「時隙」是不同的:
一個關鍵問題是,我們能把第 (1) 類中的某樣東西做得有多好?特別是,如果它變得非常好,那麼第 (3) 類似乎就意義不大了。第 (2) 類將永遠存在,因爲任何「Based」的東西都不適用於鏈下數據 L2,例如 Plasma 和 Validium。但如果以太坊原生的時隙和紀元架構可以縮短到 1 秒的「時隙」(即預確認)時間,那麼第 (3) 類的空間就會變得小得多。
今天,我們距離得到這些問題的最終答案還很遙遠。區塊提議者將變得多麼復雜?這個關鍵問題的答案仍然存在相當多不確定性。像 Orbit SSF 這樣的設計非常新穎,因此類似 Orbit SSF 的時隙和紀元方案的設計空間還需要更多的探索。我們擁有的選擇越多,我們就能爲 L1 和 L2 上的用戶做得更好,我們也能簡化 L2 開發人員的工作。
Пригласить больше голосов
轉發原文標題《Epochs and slots all the way down: ways to give Ethereum users faster transaction confirmation times》
良好的區塊鏈用戶體驗的重要特性之一是快速的交易確認時間。如今,以太坊與五年前相比已經有了很大的進步。得益於 EIP-1559 和 PoS 合並後穩定的出塊時間,用戶在L1上發送的交易在5-20秒內就能得到可靠確認。這與信用卡支付的體驗大致相當。然而,以太坊的用戶體驗仍需要進一步的改善,因爲有些應用程序確實需要數百毫秒甚至更短的交易延遲。這篇文章將介紹加快以太坊交易確認時間的一些實用方案。
現在以太坊的 Gasper 共識採用時隙(Slot)和紀元(epoch)架構。每隔 12 秒(單個 slot 的時長),驗證者子集會在區塊鏈的最新區塊上發布投票,在 32 個 slot(6.4 分鍾,一個 epoch 包含 32 個 slot)內,所有驗證者都有機會投票一次。然後,這些投票被重新解釋爲類似於 PBFT 的共識算法中的消息,該算法在兩個 epoch(12.8 分鍾)後提供非常嚴格的經濟保證,這就是最終性。
在過去的幾年裏,我們對當前的方法越來越不滿意。主要原因是(i)它很復雜,並且逐個時隙投票機制和逐個紀元最終確定機制之間存在很多交互錯誤,以及(ii)12.8分鍾太長,沒有人願意等那麼久。
單時隙最終性(SSF)用一種與Tendermint 共識類似的機制取代了這種架構 ,其中塊 N 在塊 N+1 之前完成。與 Tendermint 的主要區別是我們保留了“不活躍泄漏(inactive leak)”機制,這種機制允許區塊鏈在超過 1/3 的驗證者離線時繼續運行並恢復。
主要提議 single-slot finality design圖
SSF 的主要挑戰在於,它似乎暗示者每個以太坊質押者都需要每 12 秒發布兩條消息,這對區塊鏈來說是一個很大的負擔。有一些巧妙的想法可以緩解這種情況,包括最近的 Orbit SSF 提案。即便如此,這種方案通過加快「最終確定性」能顯著改善用戶體驗,但它並沒有縮短用戶需要等待 5-20 秒的這個時間。
在過去的幾年中,以太坊一直遵循着以 Rollup 爲中心的路線圖,圍繞支持數據可用性和其他功能設計以太坊基礎層(L1)。這些功能被 Rollup(還有 Validiums 和 Plasmas )等 L2 協議使用,L2 協議可以爲用戶提供與以太坊相同級別的安全性,但它們的交易規模比 L1 要大得多。
這使得以太坊生態系統中產生了一種關注點分離:以太坊 L1 可以專注於抗審查、可靠、穩定以及維護和改進某些核心基礎功能,而 L2 可以通過不同的文化和技術權衡專注於用戶體驗。但如果你沿着這條路走下去,就會出現一個不可避免的問題:L2 專注於爲那些希望在 5-20 秒內獲得更快確認的用戶提供服務。
到目前爲止,創建自己的「去中心化排序」網路已經成爲 L2 不可推卸的責任。可能每隔幾百毫秒,一小部分驗證者會籤署區塊,他們會將自己的代幣質押在這些區塊中。最終,這些 L2 區塊的區塊頭會發布到 L1 上。
L2 驗證者集可以作弊:他們可以先籤署區塊 B1,然後再籤署與 B1 有衝突的區塊 B2,並在 B1 之前將其提交到鏈上。但如果他們這樣做,就會面臨懲罰而失去他們的押金。在實踐中,我們已經看到了這種做法的中心化版本,但是 Rollup 在開發去中心化排序網路方面進展緩慢。你可以說要求 L2 都進行去中心化排序是一項不公平的交易:這相當於要求 Rollup 做與創建一個全新的 L1 相同的工作。出於一些原因,以太坊基金會研究員 Justin Drake 一直在推廣一種讓所有 L2(以及 L1)訪問共享的以太坊預確認機制的方法:基於預確認(based preconfirmations)。
基於預確認的方法,假設以太坊提議者將因 MEV 相關原因而成爲高度復雜的參與者(請參閱此處了解我對 MEV 的解釋,另請參閱執行系列提議)。基於預確認的方法利用這種復雜性,激勵這些成熟的提議者提供預確認服務。
基本想法是創建一個標準化協議,通過該協議,用戶可以提供額外的費用,以換即時取保證自身交易被納入下一個區塊,並獲得有關執行該交易結果的聲明。如果提議者違反了對任何用戶做出的承諾,他們就會受到懲罰。
如上所述,基於預確認爲 L1 交易提供保證。如果匯總是 “基於”匯總,那麼所有 L2 區塊都是 L1 交易,因此可以使用相同的機制爲任何 L2 提供預確認。
假設我們實現單時隙最終性。我們使用類似 Orbit 的技術來減少每個時隙籤名的驗證者數量,這樣我們也可以在減少 32 ETH 最低質押數量,可謂是一舉兩得。結果,slot 時間可能會逐漸增加到 16 秒。然後我們使用 Rollup 預確認或基於預確認來爲用戶提供更快的保證。我們現在得到了什麼?一個時隙與紀元(epoch-and-slot)架構。
“它們是同一張圖”的模因已經被過度使用了,所以我將把我幾年前畫的一個舊圖表來描述 Gasper 的時隙和紀元架構和 L2 預確認的圖表放在一起,希望這能讓大家明白這一點。
爲什麼紀元和時隙架構似乎如此難以避免,有一個深刻的哲學原因:它本質上比達成最嚴格的“經濟最終性”協議所需的時間更少。
一個簡單的原因是節點數量。雖然由於超優化的 BLS 聚合和不久的將來的 ZK-STARK,舊的@VitalikButerin/parametrizing-casper-the-decentralization-finality-time-overhead-tradeoff-3f2011672735">漸進式去中心化 / 最終確定時間 / 開銷權衡現在看起來更加溫和,但從根本上來說,以下觀點仍然是正確的:
在當前的以太坊中,12 秒的 slot 被劃分爲三個 sub-slots,用於 (i) 區塊發布和分發、(ii) 證明 (iii) 證明聚合。如果證明者數量少得多,我們可以將其減少到兩個 sub-slots,並擁有 8 秒的 slot 時間。另一個實際上更重要的因素是節點的「質量」。如果我們還可以依靠專業化的節點子集來達成近似協議(並且仍然使用完整的驗證器集來實現最終性),我們可以合理地將其縮短到約 2 秒。
因此,我認爲 (i) 時隙和紀元架構顯然是正確的,但 (ii) 並非所有時隙和紀元架構都是一樣的,我們需要更充分地探索設計空間。特別是,那些不像 Gasper 那樣緊密交織的方案值得探索。
我認爲,目前 L2 可以採取三種合理的策略:
對於某些應用程序(例如 ENS、keystores 以及一些支付場景),12 秒的區塊時間就足夠了。對於需要更短確認時間的應用程序,唯一的解決方案是時隙和紀元架構。在這三種情況下,「紀元」都是以太坊的 SSF(也許我們可以將該首字母縮略詞重新定義爲「單個時隙」以外的其他含義,例如,它可以是「Secure Speedy Finality」)。但在上述三種情況下,「時隙」是不同的:
一個關鍵問題是,我們能把第 (1) 類中的某樣東西做得有多好?特別是,如果它變得非常好,那麼第 (3) 類似乎就意義不大了。第 (2) 類將永遠存在,因爲任何「Based」的東西都不適用於鏈下數據 L2,例如 Plasma 和 Validium。但如果以太坊原生的時隙和紀元架構可以縮短到 1 秒的「時隙」(即預確認)時間,那麼第 (3) 類的空間就會變得小得多。
今天,我們距離得到這些問題的最終答案還很遙遠。區塊提議者將變得多麼復雜?這個關鍵問題的答案仍然存在相當多不確定性。像 Orbit SSF 這樣的設計非常新穎,因此類似 Orbit SSF 的時隙和紀元方案的設計空間還需要更多的探索。我們擁有的選擇越多,我們就能爲 L1 和 L2 上的用戶做得更好,我們也能簡化 L2 開發人員的工作。