關鍵要點
原文編譯:DeFi 之道
關鍵要點
關鍵要點
原文編譯:DeFi 之道
關鍵要點
以太坊是唯一構建可擴展統一結算和數據可用性層的主要協議
Rollups 在利用以太坊的安全性的同時擴展計算
條條大路通向中心化區塊生產、去中心化去信任區塊驗證和抗審查的終局
簡介
簡介
Danksharding 結合了多種前沿研究途徑,以提供以太坊以Rollup 為中心的路線圖所需的可擴展基礎層
簡介
簡介
第I 部分–Danksharding 之路
1) 原始數據分片設計–獨立的分片提議者
2) 數據可用性採樣
3) KZG 承諾
4) KZG 承諾與欺詐證明
8) Danksharding
5) 協議內提議者- 構建者分離
6) 抗審查列表(crList)
7) 二維KZG 方案
10) Danksharding–重建
10) Danksharding–重建
11) Danksharding–帶有私人隨機抽樣的惡意多數安全性
12) Danksharding–關鍵要點
13) Danksharding–區塊鏈可擴展性的限制
14) 原始danksharding (EIP-4844)
15) 多維EIP- 1559
第II 部分–歷史和狀態管理
1) 通過總calldata 限制降低calldata gas (EIP-4488)
5) Verkle Tries
2) 限制執行客戶端中的歷史數據(EIP-4444)
3) 恢復歷史數據
4) 弱無狀態
2) MEV-Boost
6) 狀態到期
第III 部分–都是MEV
1) 當前的MEV 供應鏈
3) 委員會驅動的MEV 平滑
4) 單槽確定性
5) 單一秘密領導人選舉
簡介
簡介
2) 合併後的共識
簡介
簡介
自從Vitalik 說今天出生的人有50-75% 的機會活到3000 年並且他希望長生不老以來,我一直對The Merge 的時間表持懷疑態度。不過,權當這是玩笑吧,不管怎樣,我們還是要展望一下以太坊雄心勃勃的路線圖。這不是一篇能快速閱讀完的文章。如果你想對以太坊雄心勃勃的路線圖有一個廣泛而細緻的了解——給我一個小時的專注,我會為你節省幾個月的工作時間。以太坊研究方向有很多需要長期跟踪,但一切最終都融入了一個總體目標——在不犧牲去中心化驗證的情況下擴展計算。
希望您熟悉Vitalik 著名的《
終局遊戲
》一文。他在文章中承認需要一些中心化(Centralization)來實現擴大規模。這個“C”字母開頭的單詞在區塊鏈中是很嚇人的,但這卻是一個事實。我們只需要通過去中心化和去信任的驗證來維持這種權力。這裡沒有可妥協的。
專業人士將為L1 及更高級別構建模塊。以太坊通過簡單的去中心化驗證仍然非常安全,並且Rollup 從L1 繼承了它們的安全性。然後,以太坊提供結算和數據可用性,允許Rollup 擴展。這裡的所有研究最終都希望優化這兩個角色,同時使完全驗證鏈變得比以往更容易。
下面是一個術語表,用於縮略一些將出現~43531756765713534 次的單詞:
DA–數據可用性
DS–Danksharding
DAS–數據可用性抽樣
PBS–提議者- 建造者分離
PDS–原始danksharding
PoW——工作量證明
PoS–權益證明
第I 部分:邁向Danksharding 之路
希望你現在已經聽說以太坊已經轉向以Rollup 為中心的路線圖。不再有執行分片——以太坊將改為針對需要大量數據的Rollup 進行優化。這是通過數據分片(以太坊的計劃)或大區塊(Celestia 的計劃)來實現的。
共識層不解釋分片數據。它有一項要做的工作——確保數據可用。
我假設你已經熟悉一些基本概念,如Rollup、欺詐和ZK 證明,以及為什麼DA 很重要。如果您不熟悉或只是需要復習,Can 最近發布的關於Celestia 報告涵蓋了這些內容。
原始數據分片設計——獨立的分片提議者
這裡描述的設計已被廢棄,但它是有價值的情景。為簡單起見,我將其稱為“分片1.0”。
64 個分片區塊中的每一個都有獨立的提議者和委員會,從驗證者集中輪換。他們分別驗證他們的分片數據是否可用。最初這不是DAS——它依賴於每個分片的驗證器集中的大多數來完全下載數據。
這種設計引入了不必要的複雜性、更糟糕的用戶體驗和攻擊向量。在分片之間混洗驗證者是很棘手的。
除非您引入非常嚴格的同步假設,否則很難保証投票將在單個時隙(slot)內完成。信標(Beacon)區塊提議者需要收集所有單個委員會的投票,並且可能會出現延遲。
DS 完全不同。驗證者執行DAS 以確認所有數據都可用(不再有單獨的分片委員會)。一個專門的構建器創建一個帶有信標區塊和所有分片數據一起確認的大區塊。因此,PBS 是DS 保持去中心化所必需的(將大區塊構建在一起是資源密集型的)。
數據可用性抽樣
Rollups 發布了大量數據,但我們不想讓節點下載所有這些數據。這將意味著高資源需求,從而損害去中心化。
相反,DAS 允許節點(甚至是輕客戶端)輕鬆安全地驗證所有內容是否可用,而無需下載所有內容。
簡單的解決方案——只需檢查該區塊中的一堆隨機組塊。如果他們都簽了,我就簽了。但是,如果您錯過了將所有ETH 都交給Sifu 的一筆交易怎麼辦?資金不再安全。
智能解決方案——首先擦除數據。使用Reed-Solomon 代碼擴展數據。這意味著數據被插值為一個多項式,然後我們在許多其他地方對其進行評估。這是一氣呵成的,所以讓我們分解一下。
對於數學理解有困難的人來講,我們快速來解釋一下。 (我保證這不會是一個真正可怕的數學——我不得不看一些可汗學院的視頻來寫這些部分,但我現在已經明白了)。
多項式是對任何有限數量的cxk 形式的項求和的表達式。度數是最高的指數。例如,2 x3+6 x2+2 x-4 是三次多項式。您可以從位於該多項式上的任何d+1 坐標重建任何d 次多項式。
現在舉一個具體的例子。下面我們有四個數據組塊(d0 到d3)。這些數據組塊可以映射到給定點的多項式f (X) 的評估。例如,f (0) = d0。現在您找到了貫穿這些評估的最小次數多項式。由於這是四個組塊,我們可以找到三次多項式。然後,我們可以擴展此數據以添加四個沿同一多項式的評估(e0 到e3)。
請記住關鍵多項式屬性——我們可以從任意四個點重建它,而不僅僅是我們原來的四個數據組塊。
回到我們的DAS。現在我們只需要確保任何50% (4/8) 的糾刪碼數據可用。由此,我們可以重建整個區塊。
因此,攻擊者必須隱藏超過50% 的區塊才能成功欺騙DAS 節點,使其認為數據在不可用時可用。
在許多成功的隨機樣本之後,<50% 的可用概率非常小。如果我們成功地對糾刪碼數據進行了30 次採樣,那麼<50% 可用的概率是2-30。
KZG 承諾
好的,所以我們做了一堆隨機樣本,它們都是可用的。但我們還有另一個問題——數據擦除編碼是否正確?否則,可能區塊生產者在擴展區塊時只是添加了50% 的垃圾,而我們對廢話進行了採樣。在這種情況下,我們實際上將無法重建數據。
通常我們只是通過使用Merkle 根來提交大量數據。這對於證明集合中包含某些數據是有效的。
但是,我們還需要知道所有原始數據和擴展數據都位於同一個低次多項式上。 Merkle 根並不能證明這一點。所以如果你使用這個方案,你還需要欺詐證明,以防萬一做錯了。
開發人員正從兩個方向著手:
Celestia 正在走防欺詐路線。有人需要注意,如果區塊被錯誤地擦除編碼,他們將提交欺詐證明以提醒所有人。這需要標準的誠實少數假設和同步假設(即,除了有人向我發送欺詐證明之外,我還需要假設我已連接並將在一個有限的時間內收到它)。
以太坊和Polygon Avail 正在走一條新路線——KZG 承諾(又名Kate 承諾)。這消除了關於欺詐證明的誠實少數和同步安全假設(儘管它們仍然在那裡進行重建,我們將很快介紹)。
存在其他解決方案,但並未積極尋求。例如,您可以使用ZK 證明。不幸的是,它們在計算上是不切實際的(目前)。然而,預計未來幾年它們會有所改善,因此以太坊可能會在未來轉向STARK,因為KZG 承諾不具有量子抗性。
回到KZG 承諾——這是一種多項式承諾方案。
承諾方案只是一種可證明承諾某些值的加密方式。最好的比喻是把一封信放在一個鎖著的盒子裡,然後交給別人。這封信一旦進去就無法更改,但可以用鑰匙打開並證明。你提交的新就是承諾,鑰匙就是證明。
在我們的例子中,我們將所有原始數據和擴展數據映射到X,Y 網格上,然後找到穿過它們的最小次數多項式(這個過程稱為拉格朗日插值)。這個多項式就是證明者將承諾的:
以下是關鍵點:
我們有一個“多項式”f (X)
證明者對多項式做出“承諾”C (f)
這依賴於具有可信設置的橢圓曲線密碼學。有關其工作原理的更多詳細信息,請參閱Bartek 的一個很棒的帖子
對於該多項式的任何“評估”y = f (z),證明者可以計算“證明”π(f,z)
給定承諾C (f)、證明π(f,z)、任何位置z 以及多項式在z 處的評估y,驗證者可以確認確實f (z) = y
解釋:證明者將這些片段提供給任何驗證者,然後驗證者可以確認某個點的評估(其中評估代表基礎數據)正確地位於承諾的多項式上
這證明原始數據被正確擴展,因為所有評估都位於相同的多項式上
請注意,驗證者不需要多項式f (X)
重要屬性- 這具有O (1) 承諾大小、O (1) 證明大小和O (1) 驗證時間。即使對於證明者,承諾和證明生成也僅在O (d) 上進行擴展,其中d 是多項式的次數
解釋:即使n(X 中的值的數量)增加(即,隨著數據集隨著更大的分片blob 而增加)- 承諾和證明保持不變的大小,並且驗證需要持續的努力
承諾C (f) 和證明π(f,z) 都只是配對友好曲線上的一個橢圓曲線元素(這將使用BL12-381)。在這種情況下,它們每個只有48 個字節(非常小)
因此,證明者提交大量原始數據和擴展數據(表示多項式的多次評估)仍然只有48 個字節,證明也只有48 個字節
TLDR–這是高度可擴展的
然後,KZG 根(多項式承諾)類似於Merkle 根(這是一個向量承諾):
原始數據是在f (0) 到f (3) 位置處計算的多項式f (X),然後我們通過計算f (4) 到f (7) 處的多項式來擴展它。所有點f (0) 到f (7) 都保證在同一個多項式上。
底線:DAS 允許我們檢查糾刪碼數據是否可用。 KZG 的承諾向我們證明了原始數據得到了適當的擴展並承諾了所有這些。
幹得好,這就是今天的代數知識。
KZG 承諾與欺詐證明
既然我們了解了KZG 的工作原理,請退後一步比較這兩種方法。
KZG 的缺點——它不是後量子安全的,它需要一個可信的設置。這些並不令人擔憂。 STARK 提供了一種後量子替代方案,而可信設置(開放參與)只需要一個誠實的參與者。
KZG 的優勢- 比欺詐證明設置的延遲更低(儘管如前所述,GASPER 無論如何都不會具有快速確定性),並且它確保了正確的擦除編碼,而不會引入欺詐證明中固有的同步和誠實的少數假設。
然而,考慮到以太坊仍然會重新引入這些假設來進行區塊重建,所以你實際上並沒有刪除它們。 DA 層總是需要為最初提供塊的場景進行規劃,但隨後節點需要相互通信以將其重新組合在一起。這種重建需要兩個假設:
您有足夠的節點(輕節點或全節點)對數據進行採樣,這樣它們就足以將它們重新組合在一起。這是一個相當弱且不可避免的誠實少數假設,因此不是一個大問題。
重新引入同步假設——節點需要能夠在一段時間內進行通信才能將其重新組合在一起。
以太坊驗證器在PDS 中完全下載分片blob,並且使用DS,他們將只執行DAS(下載分配的行和列)。 Celestia 將要求驗證者下載整個區塊。
請注意,無論哪種情況,我們都需要同步假設來進行重建。如果該區塊僅部分可用,則完整節點必須與其他節點通信以將其重新組合在一起。
我推薦以下內容以更深入地探索KZG 承諾的工作方式:–Dankrad
橢圓曲線密碼學(相對容易理解)入門–Vitalik
探索橢圓曲線配對
KZG 多項式承諾
受信任的設置如何工作?
協議內提議者-構建者分離
今天的共識節點(礦工)和合併後的(驗證者)扮演兩個角色。他們構建實際的區塊,然後將其提議給其他驗證它的共識節點。礦工通過在前一個區塊的基礎上進行“投票”,在合併之後,驗證者將直接對區塊的有效或無效進行投票。
PBS 將它們分開——它明確地創建了一個新的協議內構建者角色。專業的構建者將把區塊放在一起並競標提議者(驗證者)來選擇他們的區塊。這與MEV 的中心化力量作鬥爭。
回想一下Vitalik 的《終局之戰》一文——所有道路都通向中心化區塊生產,具有去信任和去中心化的驗證。 PBS 對此進行了編纂。我們需要一個誠實的構建者來為網絡提供服務以提高活躍度和抗審查能力(需要兩個來實現有效的市場),但驗證者集需要誠實的多數。 PBS 使提議者角色盡可能簡單地支持驗證者去中心化。
構建者收到優先費用小費以及他們可以提取的任何MEV。在一個有效的市場中,有競爭力的構建者將競標到他們可以從區塊中提取的全部價值(減去他們的攤銷成本,如強大的硬件等)。所有價值都滲透到去中心化的驗證器集——正是我們想要的。
確切的PBS 實現仍在討論中,但two-slot PBS 可能如下所示:
構建者使用他們的出價承諾區塊頭
信標區塊提議者選擇獲勝的區塊頭和出價。即使構建者未能生產出body,投標人也將無條件獲得中標
證明人委員會確認獲勝標頭
構建者公佈獲勝的body
獨立的證明人委員會選舉獲勝的機構(如果獲勝的構建者不同意,則投票決定它缺席)
提議者是使用標準RANDAO 機制從驗證者集中選擇的。然後我們使用承諾- 顯示(commit-reveal)方案,在委員會確認區塊頭之前,不會顯示完整的區塊body。
commit-reveal 更有效(發送大約數百個完整的區塊body 可能會壓倒p2 p 層的帶寬),並且它還可以防止MEV 竊取。如果構建者要提交他們的完整區塊,另一個構建者可以看到它,找出那個策略,合併它,并快速發布一個更好的區塊。此外,成熟的提議者可以檢測使用的MEV 策略並複制它,而無需補償構建者。如果這種MEV 竊取成為平衡,它將激勵合併構建者和提議者,因此我們使用commit-reveal 來避免這種情況。
在提議者選出獲勝區塊頭後,委員會確認並固定在分叉選擇規則中。然後,獲勝的建造者發布他們獲勝的完整“構建者區塊”body。如果及時發布,下屆委員會將作證。如果他們未能及時發布,他們仍然向提議者支付全部出價(並失去所有MEV 和費用)。這種無條件的支付消除了提議者信任構建者的需要。
這種“雙時隙(two-slot)”設計的缺點是延遲。合併後的區塊將是固定的12 秒,所以如果我們不想引入任何新的假設,這裡我們需要24 秒來獲得完整的區塊時間(兩個12 秒的時隙)。每個時隙8 秒(16 秒的出塊時間)似乎是一個安全的折衷方案,儘管研究正在進行中。
抗審查名單(crList)
不幸的是,PBS 賦予了構建者更高的審查交易能力。也許構建者只是不喜歡你,所以他們忽略了你的交易。也許他們的工作非常出色,以至於所有其他構建者都放棄了,或者他們只是因為他們真的不喜歡你而對區塊出價過高。
crLists 對這種能力進行了檢查。確切的實現又是一個開放的設計空間,但“混合PBS”似乎是最受歡迎的。提議者指定他們在內存池中看到的所有合格交易的列表,構建者將被強制包含它們(除非區塊已滿):
提議者發布一個crList 和crList 摘要,其中包括所有符合條件的交易
構建者創建一個提議的區塊body,然後提交一個競標,其中包括crList 摘要的哈希,證明他們已經看到它
提議者接受中標構建者的出價和區塊頭(他們還沒有看到body)
構建者發布他們的區塊並包含他們已包含來自crList 的所有交易或該區塊已滿的證明。否則分叉選擇規則不會接受該塊
證明者檢查已發布的body 的有效性
這裡仍有重要問題需要解決。例如,這裡的主導經濟策略是讓提議者提交一個空列表。只要出價最高,即使是審查構建者也能贏得拍賣。有一些想法可以解決這個問題和其他問題,但只是強調這裡的設計並不是一成不變的。
二維KZG 方案
我們看到了KZG 承諾如何讓我們承諾數據並證明它被正確擴展。但是,我簡化了以太坊的實際操作。它不會在單個KZG 承諾中承諾所有數據——單個區塊將使用許多KZG 承諾。
我們已經有一個專門的構建者,那麼為什麼不讓他們創造一個巨大的KZG 承諾呢?問題是這需要一個強大的超級節點來重建。我們可以接受初始構建的超級節點要求,但我們需要避免這裡的重建假設。我們需要資源較少的實體來處理重建,並將其拆分為許多KZG 承諾使這變得可行。考慮到手頭的數據量,重建甚至可能相當普遍,或者是本設計中的基本情況假設。
為了使重建更容易,每個區塊將包含在m 個KZG 承諾中編碼的m 個分片blob。天真地這樣做會導致大量的採樣——你會在每個分片blob 上執行DAS 以知道它都是可用的(m*k 個樣本,其中k 是每個blob 的樣本數)。
相反,以太坊將使用2 D KZG 方案。我們再次使用Reed-Solomon 代碼將m 承諾擴展到2 m 承諾:
我們通過擴展與0-255 位於相同多項式上的額外KZG 承諾(此處為256-511)使其成為2 D 方案。現在我們只需對上表進行DAS,以確保所有分片的數據可用性。
≥75% 的數據可用的2 D 採樣要求(與之前的50% 相比)意味著我們做的固定樣本數量要多一些。在我提到簡單一維方案中DAS 的30 個樣本之前,但這將需要75 個樣本來確保重建可用區塊的相同概率機率。
分片1.0(具有一維KZG 承諾方案)只需要30 個樣本,但如果您想檢查1920 個樣本的完整DA,則需要對64 個分片進行採樣。每個樣本為512 B,因此這需要:
(512 B x 64 分片x 30 個樣本)/16 秒= 60 KB/s 帶寬
Danksharding
實際上,驗證者只是在沒有單獨檢查所有分片的情況下被洗牌。
現在,使用2 D KZG 承諾方案的組合區塊使得檢查完整DA 變得微不足道。它只需要單個統一區塊的75 個樣本:
(512 B x 1 塊x 75 個樣本)/16 秒= 2.5 KB/s 帶寬
PBS 最初的設計目的是削弱MEV 在驗證器集上的集中力。然而,Dankrad 最近利用了這種設計,意識到它解鎖了一個更好的分片結構——DS。
DS 利用專門的構建者來創建信標鏈執行區塊和分片的更緊密集成。我們現在有一個構建者一起創建整個區塊,一個提議者和一個委員會。如果沒有PBS,DS 將是不可行的——常規驗證者無法處理充滿Rollup 數據blob 的區塊的巨大帶寬:
分片1.0 包括64 個獨立的委員會和提議者,因此每個分片都可能單獨不可用。這裡更緊密的集成使我們能夠一次性確保DA。數據仍然在幕後“分片”,但從實際的角度來看,danksharding 開始感覺更像是大區塊,這很棒。
Danksharding–誠實的多數驗證
驗證者證明數據可用如下:
這依賴於誠實的大多數驗證者——作為一個單獨的驗證者,我的列和行可用並不足以讓我在統計上確信整個區塊可用。這取決於誠實的大多數人說它是。去中心化驗證很重要。
請注意,這與我們之前討論的75 個隨機樣本不同。私人隨機抽樣是資源匱乏的個人能夠輕鬆檢查可用性的方式(例如,我可以運行DAS 輕節點並知道該區塊可用)。但是,驗證者將繼續使用行和列方法來檢查可用性和引導區塊重建。
Danksharding——重構
只要單個行或列的50% 可用,那麼採樣驗證器就可以輕鬆地對其進行完全重建。當他們重建行/列中丟失的任何區塊時,他們將這些區塊重新分配到正交線。這有助於其他驗證器根據需要從相交的行和列中重建任何丟失的區塊。
這裡重建可用區塊的安全假設是:
足夠多的節點來執行樣本請求,以便它們共同擁有足夠的數據來重建區塊
廣播各自區塊的節點之間的同步假設
那麼,多少節點就足夠了?粗略估計大約有64,000 個個體實例(到目前為止,目前已超過380,000 個)。這也是一個非常悲觀的計算,它假設由同一驗證器運行的節點中沒有交叉(這與節點被限制為32 個ETH 實例的情況相去甚遠)。如果您對超過2 行和列進行採樣,則由於交叉,您可以集體檢索它們的機率會增加。這開始以二次方的方式擴展——如果驗證者運行10 或100 個驗證者,則64,000 個可能會減少幾個數量級。
如果在線驗證器的數量開始變得異常低,可以設置DS 以自動減少分片數據blob 計數。因此,安全假設將降低到安全水平。
Danksharding–私人隨機抽樣的惡意多數安全
我們看到DS 驗證依賴於誠實的多數來證明區塊。作為個人,我無法通過僅下載幾行和幾列來向自己證明一個區塊可用。但是,私人隨機抽樣可以在不信任任何人的情況下給我這種保證。如前所述,這是節點查驗這75 個隨機樣本的地方。
DS 最初不會包含私有隨機抽樣,因為這在網絡方面是一個非常難以解決的問題(PSA:也許他們實際上可以在這裡使用你的幫助!)。
請注意,“私有”很重要,因為如果攻擊者對您進行了去匿名化,他們就能夠欺騙少量的採樣節點。他們可以只返回您請求的確切區塊並保留其餘部分。因此,您不會僅從自己的抽樣中知道所有數據都是可用的。
Danksharding–關鍵要點
除了是一個甜美的名字,DS 也非常令人興奮。它最終實現了以太坊統一結算和DA 層的願景。 Beacon 區塊和分片的這種緊密耦合本質上是假裝沒有被分片。
事實上,讓我們定義為什麼它甚至被認為是“分片”。 “分片”的唯一殘餘就是驗證者不負責下載所有數據。而已。
所以如果你現在質疑這是否真的仍然是分片,你並沒有瘋。這種區別就是為什麼PDS(我們將很快介紹)不被視為“分片”的原因(即使它的名稱中有“分片”,是的,我知道這很令人困惑)。 PDS 要求每個驗證者完全下載所有分片blob,以證明它們的可用性。然後DS 引入了抽樣,因此各個驗證者只下載其中的一部分。
幸運的是,最小分片意味著比分片1.0 更簡單的設計(交付速度如此之快,對吧?)。簡化來講,包括:
與分片1.0 規範相比,DS 規範中的代碼可能少了數百行(客戶端少了數千行)
沒有分片委員會基礎設施,委員會只需要在主鏈上投票
沒有跟踪單獨的分片blob 確認,現在它們都在主鏈中得到確認,或者它們沒有
這樣做的一個很好的結果是數據的合併收費市場。由不同的提議者製作的具有不同區塊的分片1.0 會分散這一點。dAMM分片委員會的取消也加強了反賄賂。 DS 驗證人每個epoch 對整個區塊進行一次投票,因此數據立即得到整個驗證人集的1/32 的確認(每個epoch 32 個slot)。分片1.0 驗證者也在每個epoch 投票一次,但每個分片都有自己的委員會被改組。因此,每個分片僅由驗證器集的1/2048 確認(1/32 分為64 個分片)。
如前所述,與2 D KZG 承諾方案的組合區塊也使DAS 更加高效。分片1.0 需要60 KB/s 的帶寬來檢查所有分片的完整DA。 DS 只需要2.5 KB/s。
DS 還存在另一個令人興奮的可能性——ZK-rollups 和L1 以太坊執行之間的同步調用。來自分片blob 的事務可以立即確認並寫入L1,因為一切都在同一個信標鏈區塊中生成。由於單獨的分片確認,分片1.0 將消除這種可能性。這允許一個令人興奮的設計空間,這對於共享流動性(例如
)之類的東西可能非常有價值。
模塊化基礎層可以優雅地擴展——更多的去中心化會帶來更多的擴展。這與我們今天看到的根本不同。向DA 層添加更多節點可以讓您安全地增加數據吞吐量(即,有更多的空間讓rollup 存在於頂部)。
區塊鏈的可擴展性仍然存在限制,但我們可以將數量級提高到比我們今天看到的任何東西都要高。安全且可擴展的基礎層允許執行在它們之上激增。隨著時間的推移,數據存儲和帶寬的改進也將允許更高的數據吞吐量。
超越此處設想的DA 吞吐量肯定是有可能的,但很難說這個最大值最終會在哪裡。沒有明確的紅線,而是一些假設會開始讓人感到不舒服的區域:
Proto-danksharding (EIP-4844)
數據存儲——這與DA 與數據可檢索性有關。共識層的作用不是無限期地保證數據的可檢索性。它的作用是讓它在足夠長的時間內可用,以便任何關心下載它的人都可以,滿足我們的安全假設。然後它會被轉儲到任何地方——這很舒服,因為歷史是N 信任假設中的1,而且我們實際上並沒有在宏偉的計劃中談論那麼多數據。隨著吞吐量增加幾個數量級,這可能會在幾年後進入令人不安的領域。
驗證者——DAS 需要足夠多的節點來共同重建區塊。否則,攻擊者可能會等待,只響應他們收到的查詢。如果提供的這些查詢不足以重建區塊,那麼攻擊者可以保留其餘的,我們就不走運了。為了安全地增加吞吐量,我們需要添加更多的DAS 節點或增加它們的數據帶寬需求。這不是這裡討論的吞吐量的問題。但是,如果吞吐量比這種設計進一步增加幾個數量級,這可能會讓人感到不舒服。
請注意,構建者不是瓶頸。您需要為32 MB 的數據快速生成KZG 證明,因此需要GPU 或相當強大的CPU 以及至少2.5 GBit/s 的帶寬。無論如何,這是一個專門的角色,對他們來說這是一個可以忽略不計的業務成本。
DS 很棒,但我們必須要有耐心。 PDS 旨在幫助我們渡過難關——它在加快的時間線(針對上海硬分叉)上對DS 實施必要的前向兼容步驟,以在此期間提供數量級的擴展。但是,它實際上還沒有實現數據分片(即驗證者需要單獨下載所有數據)。
今天的Rollups 使用L1“calldata”進行存儲,它永遠存在於鏈上。然而,Rollup 只需要一段合理的時間段內的DA,這樣任何有興趣的人都有足夠的時間下載它。
EIP-4844 引入了新的支持blob 的事務格式,Rollup 將用於未來的數據存儲。 Blob 攜帶大量數據(~125 KB),它們比類似數量的calldata 便宜得多。然後在一個月後從節點中刪除數據blob,這會降低存儲需求。這是足夠的時間來滿足我們的DA 安全假設。
當前的以太坊區塊通常平均約為90 KB(調用數據約為其中的10 KB)。 PDS 為blob 解鎖了更多的DA 帶寬(目標~1 MB 和最大~2 MB),因為它們會在一個月後被修剪。它們不會成為節點上的永久拖累。
一個blob 是一個由4096 個字段元素組成的向量,每個字段元素為32 個字節。 PDS 允許每個區塊最多16 個,而DS 將增加到256 個。
PDS DA 帶寬= 4096 x 32 x 16 = 每區塊2 MiB,目標為1 MiB
DS DA 帶寬= 4096 x 32 x 256 = 每區塊32 MiB,目標為16 MiB
DS 所需的所有執行/共識交叉驗證邏輯
DS 所需的所有執行層邏輯
DS 所需的所有執行/共識交叉驗證邏輯
DS 所需的所有執行/共識交叉驗證邏輯
DS 所需的所有執行層邏輯
DS 所需的所有執行/共識交叉驗證邏輯
BeaconBlock 驗證和DAS blob 之間的層分離
PBS
DS 所需的大部分BeaconBlock 邏輯
blob 的自調整獨立gas 價格(具有指數定價規則的多維EIP-1559)
然後DS 會進一步添加:
2 D KZG 方案
2 D KZG 方案
每個驗證者的託管證明或類似的協議內要求,以驗證每個區塊中分片數據的特定部分的可用性(可能大約一個月)
請注意,這些數據blob 是作為執行鏈上的一種新事務類型引入的,但它們不會給執行端帶來額外的要求。 EVM 僅查看附加到blob 的承諾。使用EIP-4844 進行的執行層更改也與DS 向前兼容,並且在這方面不需要更多的更改。然後從PDS 升級到DS 只需要更改共識層。
數據blob 由PDS 中的共識客戶端完全下載。現在,在Beacon 區塊體中引用了blob,但未完全編碼。不是將全部內容嵌入正文中,而是單獨傳播blob 的內容,作為“sidecar”。每個區塊有一個blob sidecar,在PDS 中完全下載,然後使用DS 驗證器將在其上執行DAS。
我們之前討論瞭如何使用KZG 多項式承諾來提交blob。然而,EIP-4844 並沒有直接使用KZG,而是實現了我們實際使用的東西——它的版本化哈希。這是一個0 x01 字節(代表這個版本),後跟KZG 的SHA256 哈希的最後31 個字節。
我們這樣做是為了更容易實現EVM 兼容性和前向兼容性:
EVM 兼容性–KZG 承諾是48 字節,而EVM 更自然地使用32 字節值
前向兼容性——如果我們從KZG 切換到其他東西(STARKs 可用於抗量子),這些承諾可以繼續為32 字節
PDS 最終創建了一個定制的數據層——數據blob 將擁有自己獨特的費用市場,具有單獨的浮動gas 價格和限制。因此,即使某個NFT 項目在L1 上出售一堆猴子土地,您的Rollup 數據成本也不會上升(儘管證明結算成本會上升)。這承認今天任何Rollup 的主要成本是將他們的數據發佈到L1(而不是證明)。gas 費市場保持不變,數據blob 被添加為新市場:blob 費用以gas 收取,但它是基於其自己的EIP-1559 機制的可變金額調整。每個區塊的長期平均blob 數應等於目標。
您實際上有兩個並行運行的拍賣——一個用於計算,一個用於DA。這是有效
資源定價
的巨大飛躍。
這裡有一些有趣的設計。例如,將當前的gas 和blob 定價機制從線性EIP-1559 更改為一種新的指數EIP-1559 機制可能是有意義的。當前的實現在實踐中並沒有平均到我們的目標區塊大小。今天,基本費用(basefee)沒有完全穩定,導致觀察到的每個區塊使用的平均gas 平均超過目標約3%。
第II 部分:歷史&狀態管理
在這裡快速回顧一些基礎知識:
歷史——鏈上發生的一切。您可以將其粘貼在硬盤上,因為它不需要快速訪問。從長遠來看,1 of N 誠實假設。
狀態——所有當前賬戶餘額、智能合約等的快照。完整節點(當前)都需要這個來驗證交易。它對於RAM 來說太大了,而硬盤驅動器又太慢了——它放在你的SSD 裡。高吞吐量區塊鏈膨脹了它們的狀態,遠遠超出了我們普通人在筆記本電腦上所能保存的範圍。如果日常用戶不能持有狀態,他們就無法完全驗證,那麼告別去中心化。
EIP-4488 有兩個主要組成部分:
EIP-4488 有兩個主要組成部分:
PDS 是通向DS 的重要墊腳石,它檢查了許多最終要求。在合理的時間跨度內實施PDS 可以提前DS 上的時間線。
EIP-4488 有兩個主要組成部分:
EIP-4488 有兩個主要組成部分:
將calldata 成本從每字節16 gas 降低到每字節3 gas
添加每個區塊1 MB 調用數據的限制以及每個事務額外300 字節(理論最大值約為1.4 MB)
需要添加限制以防止出現最壞的情況——一個充滿calldata 的區塊將達到18 MB,這遠遠超出了以太坊的處理能力。 EIP-4488 增加了以太坊的平均數據容量,但由於這個calldata 限制(3000 萬gas/每calldata 字節16 gas = 1.875 MB),它的突發數據容量實際上會略有下降。
EIP-4488 的持續負載遠高於PDS,因為這仍然是calldata 與blob,一個月後可以修剪的數據。 EIP-4488 將顯著加速歷史增長,使其成為運行節點的瓶頸。即使EIP-4444 與EIP-4488 一起實施,這也只會在一年後刪除執行負載歷史。 PDS 較低的持續負載顯然是可取的。
在執行客戶端中綁定歷史數據(EIP-4444)
EIP-4444 允許客戶端選擇在本地修剪超過一年的歷史數據(標題、正文和收據)。它要求客戶端停止在p2 p 層上提供這些修剪過的歷史數據。修剪歷史允許客戶減少用戶的磁盤存儲需求(目前數百GB 並且還在增長)。devp2p這已經很重要了,但如果EIP-4488 被實施(因為它顯著增長了歷史),這將基本上是強制性的。無論如何,希望這能在相對近期內完成。最終將需要某種形式的歷史到期,所以這是處理它的好時機。
鏈的完全同步需要歷史記錄,但驗證新區塊不需要它(這只需要狀態)。因此,一旦客戶端同步到鏈的頂端,只有在通過JSON-RPC 明確請求或對等方嘗試同步鏈時,才會檢索歷史數據。隨著EIP-4444 的實施,我們需要為這些找到替代解決方案。
客戶端將無法像現在一樣使用
進行“完全同步”——他們將取而代之的是從弱主觀性檢查點“檢查點同步”,他們將其視為創世區塊。
請注意,弱主觀性不會是一個額外的假設——無論如何,它是向PoS 轉變所固有的。由於遠程攻擊的可能性,這需要使用有效的弱主觀性檢查點進行同步。這裡的假設是客戶端不會從無效或舊的弱主觀性檢查點同步。該檢查點必須在我們開始修剪歷史數據的時期內(即此處為一年內),否則p2 p 層將無法提供所需的數據。
隨著越來越多的客戶端採用輕量級同步策略,這也將減少網絡上的帶寬使用。
找回曆史數據
EIP-4444 在一年後修剪歷史數據聽起來不錯,而PDS 修剪blob 的速度更快(大約一個月後)。我們絕對需要這些,因為我們不能要求節點存儲所有這些並保持去中心化:
EIP-4488–長期可能包括每個時隙(slot)約1 MB 每年增加約2.5 TB 存儲
個人和機構志願者
個人和機構志願者
但是這些數據去哪兒了?我們不再需要了嗎?是的,但請注意,丟失歷史數據對協議沒有風險——僅對單個應用程序而言。那麼,以太坊核心協議的工作不應該是永久維護所有達成共識的數據。
個人和機構志願者
個人和機構志願者
區塊瀏覽器(例如etherscan.io)、API 提供者和其他數據服務
像TheGraph 這樣的第三方索引協議可以創建激勵市場,客戶可以在其中向服務器支付歷史數據以及Merkle 證明
Portal Network 中的客戶端(目前正在開發中)可以存儲鏈歷史的隨機部分,Portal Network 會自動將數據請求定向到擁有它的節點
BitTorrent,例如。每天自動生成和分發一個7 GB 的文件,其中包含來自區塊的blob 數據
特定於應用程序的協議(例如Rollup)可以要求其節點存儲與其應用程序相關的歷史記錄部分
長期數據存儲問題是一個相對簡單的問題,因為它是我們之前討論過的1 of N 信任假設。我們距離成為區塊鏈可擴展性的最終限制還有很多年。
弱無狀態
好的,所以我們已經很好地處理了歷史記錄管理,但是如何處理狀態呢?狀態問題實際上是目前提高以太坊TPS 的主要瓶頸。
全節點獲取前狀態根,執行區塊中的所有事務,並檢查後狀態根是否與它們在區塊中提供的內容相匹配。要知道這些交易是否有效,他們目前需要手頭的狀態——驗證是有狀態的。
進入無狀態時代——我們將不需要狀態來發揮作用。以太坊正在爭取“弱無狀態”,這意味著驗證區塊不需要狀態,但構建區塊需要狀態。驗證變成了一個純函數——給我一個完全隔離的區塊,我可以告訴你它是否有效。基本上是這樣的:
由於PBS,構建者仍然需要狀態是可以接受的——無論如何,它們將是更加中心化的高資源實體。專注於去中心化驗證者。弱無狀態給構建者帶來了更多的工作,而驗證者的工作要少得多。這是一個偉大的權衡。
您通過見證(witness)實現了這種神奇的無狀態執行。這些是構建者將開始包含在每個區塊中的正確狀態訪問的證明。驗證一個區塊實際上並不需要整個狀態——您只需要該區塊中的交易讀取或影響的狀態。構建者將開始在給定區塊中包含受交易影響的狀態片段,並且他們將證明他們通過見證(witness)正確訪問了該狀態。
讓我們舉個例子。 Alice 想向Bob 發送1 個ETH。要使用此交易驗證區塊,我需要知道:
交易前——Alice 有1 ETH
Alice 的公鑰——所以我可以知道簽名是正確的
Alice 的隨機數——所以我可以知道交易是按正確的順序發送的
執行交易後——Bob 多了1 ETH,Alice 少了1 ETH
在弱無狀態世界中,構建者將上述見證數據添加到區塊中並證明其準確性。驗證者接收區塊,執行它,並決定它是否有效。僅此而已!
以下是從驗證者的角度來看的含義:
用於持有狀態的巨大SSD 需求消失了——這是當今擴展的關鍵瓶頸。
由於您現在還要下載見證數據和證明,因此帶寬要求會有所增加。這是Merkle-Patricia 樹的瓶頸,但它是溫和的,而不是Verkle 嘗試的瓶頸。
Verkle Tries
您仍然執行事務以完全驗證。無狀態承認這不是目前擴展以太坊的瓶頸。
弱無狀態還允許以太坊放鬆對其執行吞吐量的自我限制,狀態膨脹不再是一個緊迫的問題。將gas 限制提高約3 倍可能是合理的。
無論如何,大多數用戶執行都將在L2 上進行,但更高的L1 吞吐量即使對他們來說仍然是有益的。 Rollups 依靠以太坊進行DA(發佈到分片)和結算(需要L1 執行)。隨著以太坊擴展其DA 層,發布證明的攤銷成本可能會成為Rollup 成本的更大份額(尤其是對於ZK-rollups)。
我們掩蓋了這些見證的實際工作方式。以太坊目前使用Merkle-Patricia 樹來表示狀態,但所需的Merkle 證明對於這些見證來說太大而無法實現。
以太坊將轉向Verkle 嘗試進行狀態存儲。 Verkle 證明的效率要高得多,因此它們可以作為可行的見證來實現弱無狀態。
首先讓我們回顧一下Merkle 樹的樣子。每筆交易都經過哈希處理——底部的這些哈希被稱為“葉子”。所有的哈希都稱為“節點”,它們是它們下面的兩個“子”節點的哈希。生成的最終哈希是“Merkle 根”。
這是一個有用的數據結構,用於證明包含事務,而無需下載整個樹。例如,如果您想驗證交易H4 是否包含在內,則只需要Merkle 證明中的H12、H3 和H5678。我們有來自區塊頭的H12345678。因此,輕客戶端可以向完整節點詢問這些哈希,然後根據樹中的路由將它們哈希在一起。如果結果是H12345678,那麼我們已經成功證明H4 在樹中。
但是,樹越深,到達底部的路徑就越長,因此您需要更多的項目來證明。因此,淺而寬的樹似乎有利於進行有效的證明。
問題是,如果你想通過在每個節點下添加更多子節點來使Merkle 樹更寬,那將是非常低效的。您需要將所有兄弟姐妹哈希在一起才能爬上樹,因此您需要接收更多兄弟姐妹哈希以用於Merkle 證明。這將使證明大小變得龐大。
這就是高效向量承諾的用武之地。請注意,Merkle 樹中使用的哈希實際上是向量承諾——它們只是有效地只對兩個元素進行承諾。所以我們想要向量承諾,我們不需要接收所有的兄弟姐妹來驗證它。一旦我們有了它,我們就可以使樹更寬並減少它們的深度。這就是我們獲得有效證明大小的方式——減少需要提供的信息量。
Verkle trie 類似於Merkle 樹,但它使用有效的向量承諾(因此名稱為“Verkle”)而不是簡單的哈希來向其子節點承諾。所以基本思想是每個節點可以有很多孩子,但我不需要所有的孩子來驗證證明。無論寬度如何,它都是恆定尺寸的證明。
實際上,我們之前已經介紹了其中一種可能性的一個很好的例子——KZG 承諾也可以用作向量承諾。事實上,這就是以太坊開發者最初計劃在這裡使用的東西。此後,他們轉向Pedersen 承諾履行類似的職責。這些將基於橢圓曲線(在本例中為Bandersnatch),並且它們將分別提交256 個值(比兩個好得多!)。
那麼為什麼不擁有盡可能寬的深度樹呢?這對於現在擁有超級緊湊證明的驗證者來說非常有用。但是有一個實際的權衡是證明者需要能夠計算這個證明,而且它越寬就越難。因此,這些Verkle 嘗試將位於256 個值寬的極端之間。
狀態到期
弱無狀態消除了驗證者的狀態膨脹約束,但狀態不會神奇地消失。交易成本是有限的,但它們通過增加狀態對網絡造成永久性稅收。狀態增長仍然是網絡的永久拖累。需要做一些事情來解決根本問題。
這就是狀態到期的地方。長時間處於非活動狀態(比如一兩年)的狀態甚至會從區塊構建者需要攜帶的東西中剔除。活躍用戶不會注意到任何事情,並且不再需要的無用狀態可以被丟棄。
如果您需要恢復過期狀態,您只需要顯示一個證明並重新激活它。這又回到了這裡的1 of N 存儲假設。只要有人仍然擁有完整的歷史記錄(區塊瀏覽器等),你就可以從他們那裡得到你需要的東西。
弱無狀態會削弱基礎層對狀態到期的即時需求,但從長遠來看,特別是隨著L1 吞吐量的增加,這是一件好事。對於高吞吐量匯總來說,這將是一個更有用的工具。 L2 狀態將以更高數量級的速度增長,甚至會拖累高性能構建者。
第III 部分——MEV
PBS 是安全實施DS 所必需的,但請回想一下,它最初實際上是為了對抗MEV 的中心化力量而設計的。你會注意到今天以太坊研究的一個反復出現的趨勢——MEV 現在是加密經濟學的前沿和中心。
設計具有MEV 的區塊鏈對於保持安全性和去中心化至關重要。基本的協議級方法是:
盡可能減少有害的MEV(例如,單個slot 確定性、單一秘密領導者選舉)
使其餘部分民主化(例如,MEV-Boost、PBS、MEV 平滑)
其餘的必須很容易被捕獲並在驗證者之間傳播。否則,由於無法與復雜的搜索者競爭,它將集中驗證器集。合併後MEV 將在驗證者獎勵中所佔份額更高(質押發行遠低於給予礦工的通脹率)這一事實加劇了這種情況。不容忽視。
當今的MEV 供應鏈
今天的事件順序如下所示:
MEV-Boost
礦池在這裡扮演了建設者的角色。 MEV 搜索者通過Flashbot 將交易包(及其各自的出價)中繼到礦池。礦池運營商聚合一個完整的區塊並將區塊頭傳遞給各個礦工。礦工通過PoW 在分叉選擇規則中賦予其權重來證明這一點。
Flashbots 的出現是為了防止整個堆棧的垂直整合——這將為審查制度和其他令人討厭的外部性打開大門。當Flashbots 出現時,礦池已經開始與交易公司達成獨家交易以提取MEV。相反,Flashbots 為他們提供了一種簡單的方法來匯總MEV 出價並避免垂直整合(通過實施MEV-geth)。
以太坊合併後,礦池將消失。我們希望為在家中能夠合理運行的驗證者節點打開大門。這需要找人擔任專門的構建角色。您的家庭驗證者節點在捕獲MEV 方面可能不如擁有量化工資的對沖基金那麼好。如果不加以控制,如果普通人無法競爭,這將集中驗證者集。如果結構合理,該協議可以將MEV 收入重定向到日常驗證者的質押收益。
不幸的是,協議內的PBS 根本無法在合併時準備好。 Flashbots 再次提供了一個墊腳石解決方案- MEV-Boost。
合併後的驗證者將默認將公共內存池交易直接接收到其執行客戶端中。他們可以將這些打包,交給共識客戶端,然後廣播到網絡。 (如果您需要了解以太坊的共識和執行客戶端如何協同工作,我將在第四部分中介紹)。
但正如我們所討論的,您的驗證者不知道如何提取MEV,因此Flashbots 提供了另一種選擇。 MEV-boost 將插入您的共識客戶端,允許您外包專門的區塊構建。重要的是,您仍然可以選擇使用自己的執行客戶端作為後備。
MEV 搜索者將繼續發揮他們今天的作用。他們將運行特定的策略(統計套利、原子套利、三明治等)並競標他們的捆綁交易包。然後,構建者將他們看到的所有捆綁包以及任何私人訂單流(例如,來自Flashbots Protect)聚合到最佳完整區塊中。構建者僅通過運行到MEV-Boost 的中繼將區塊頭傳遞給驗證者。 Flashbots 打算運行中繼器和構建者,併計劃隨著時間的推移去中心化,但將其他構建者列入白名單可能會很慢。
MEV-Boost 要求驗證者信任中繼者——共識客戶端收到區塊頭,對其進行簽名,然後才顯示區塊body。中繼者的目的是向提議者證明body 是有效且存在的,這樣驗證者就不必直接信任構建者。當協議內PBS 準備就緒時,它會在此期間編入MEV-Boost 提供的內容。 PBS 提供相同的權力分離,允許更容易的構建者去中心化,並消除了提議者信任任何人的需要。。
委員會驅動的MEV 平滑
PBS 還為另一個很酷的想法打開了大門——
委員會驅動的MEV 平滑
我們看到提取MEV 的能力是驗證者集的中心化力量,但分佈也是如此。從一個區塊到另一個區塊的MEV 獎勵的高度可變性促使匯集許多驗證者來平滑你的回報(正如我們今天在礦池中看到的那樣,儘管在這裡的程度較小)。
默認設置是向實際的區塊提議者提供構建者的全額付款。 MEV 平滑將改為將支付分配給許多驗證者。驗證者委員會將檢查提議的區塊並證明這是否確實是出價最高的區塊。如果一切順利,則區塊繼續進行,獎勵將在委員會和提議者之間分配。
這也解決了另一個問題——帶外賄賂。例如,可以激勵提議者提交次優區塊並直接接受帶外賄賂以向委託人隱瞞他們的付款。此證明可以檢查提議者。
協議內PBS 是實現MEV 平滑的先決條件。您需要了解構建者市場和提交的明確投標。這裡有幾個開放的研究問題,但這是一個令人興奮的提議,對於確保去中心化的驗證者再次至關重要。
單slot 交易最終性
快速最終性很棒。等待約15 分鐘對於UX 或跨鏈通信來說不是最佳選擇。更重要的是,這會造成一個MEV 重組問題。
合併後的以太坊已經提供了比今天更強大的確認——成千上萬的驗證者證明每個區塊與礦工競爭並可能在相同區塊高度進行挖礦而無需投票。這將使重組極不可能。然而,這仍然不是真正的交易最終性。如果最後一個區塊有一些豐厚的MEV,你可能只是誘使驗證者嘗試重組鏈並為自己竊取它。
這裡這裡這裡
Vitalik 在
這裡
分解了一些有趣的解決方案。
單一秘密領袖選舉(SSLE)
SSLE 試圖修補合併後我們將面臨的另一個MEV 攻擊向量。
信標鏈驗證者列表和即將到來的領導者選擇列表是公開的,並且很容易對它們進行去匿名化並映射它們的IP 地址。您可能可以在這裡看到問題。
更複雜的驗證者可以使用技巧來更好地隱藏自己,但小型驗證者特別容易受到doxxed 和隨後的DDOSd 的影響。這可以很容易地用於MEV。
假設你是第n 區塊的提議者,我是第n+1 區塊的提議者。如果我知道你的IP 地址,我可以廉價地對你進行DDOS 攻擊,這樣你就會超時並且無法生成你的區塊。我現在可以捕獲我們slot 的MEV 並加倍我的獎勵。 EIP-1559 的彈性區塊大小(每個區塊的最大gas 是目標大小的兩倍)加劇了這種情況,因此我可以將本來應該是兩個區塊的交易塞進我現在兩倍長的單個區塊中。
第IV 部分——合併
合併後的客戶端
好吧,要清楚我之前是在開玩笑。我實際上認為(希望)以太坊合併發生得相對較快。
我們都在談論這個話題,所以我覺得有義務至少給它一個簡短的介紹。
合併後的客戶端
今天,你運行一個可以處理所有事情的單體客戶端(例如,Go Ethereum、Nethermind 等)。具體來說,全節點同時執行以下操作:
執行——執行區塊中的每筆交易以確保有效性。獲取前狀態根,執行所有操作,並檢查生成的後狀態根是否正確
共識——驗證你是否在完成工作最多的最重(最高PoW)鏈上(即中本聰共識)
它們是不可分割的,因為全節點不僅遵循最重的鏈,而且遵循最重的有效鏈。這就是為什麼它們是完整節點而不是輕節點。即使發生51% 攻擊,全節點也不會接受無效交易。
信標鏈目前只運行共識來給PoS 一個測試運行。不包含執行。最終將決定最終的總難度,此時當前的以太坊執行區塊將合併到信標鏈塊中,形成一條鏈:
但是,全節點將在後台運行兩個獨立的客戶端,它們可以互操作:
執行客戶端(又名“Eth1 客戶端”)——當前的Eth 1.0 客戶端繼續處理執行。他們處理區塊,維護內存池,管理和同步狀態。 PoW 部分被撕掉了。
共識客戶端(又名“Eth2 客戶端”)——當前信標鏈客戶端繼續處理PoS 共識。他們跟踪鏈的頭部,gossip 並證明區塊,並獲得驗證者獎勵。
或者:
或者:
合併後的共識
結論
結論
區別在於,有利於安全的共識算法(例如,Tendermint)在未能獲得必要數量的選票(此處設置為驗證者的2/3)時停止。有利於鏈的活躍性(例如,PoW + 中本聰共識)無論如何都會繼續建立一個樂觀的分類帳,但如果沒有足夠的選票,它們就無法達到最終確定性。今天的比特幣和以太坊永遠不會最終確定——你只是假設在足夠數量的區塊之後不會發生重組。
然而,以太坊也將通過定期檢查點獲得足夠的票數來實現最終性。每個32 ETH 實例都是一個單獨的驗證者,並且已經有超過380,000 個信標鏈驗證者。 Epochs 由32 個slot 組成,所有驗證者都分開並在給定epoch 內證明一個slot(意味著每個slot 約12,000 個證明)。分叉選擇規則LMD Ghost 然後根據這些證明確定鏈的當前頭部。每個slot(12 秒)添加一個新區塊,因此epoch 為6.4 分鐘。通常在兩個epoch(也就是64 個slot,儘管最多可能需要95 個)之後通過必要的投票來實現最終性。
