來源:巴比特
北京時間2月14日情人節當晚,以太坊創始人Vitalik Buterin聯合以太坊基金會(EF)研究人員Dankrad Feist一起舉辦了一場關於擴容解決方案“Danksharding”的教育研討會,如果你想了解區塊鏈如何在增加“去中心化”和“安全性”屬性的同時大規模實現擴容,那麼這場研討會就是一個好的切入點。
注:關於“Danksharding”對以太坊的意義,建議讀者先閱讀一下《一文了解以太坊的“擴容殺手鐧”danksharding》這篇文章。
以下內容來自Dankrad Feist提供的《Dude, what’s the Danksharding situation?》PPT,如果你想觀看完整的研討會視頻,可以訪問以太坊基金會的官方youtube頻道。
概述
1、什麼是舊的:
數據分片;
使用KZG 承諾的數據可用性;
使用分離分片方案進行原始數據分片;
2、什麼是新的:
提議者-構建者(數據生成者)分離(PBS);
crList;
2D方案;
建議的架構
3、總結優點和缺點
一、什麼是舊的
1、1 數據分片
1、為Rollup和其他擴容解決方案提供數據可用性(DA);
2、數據的含義由應用層定義;
以太坊基礎共識(全節點和驗證者)除了確保數據可用外不承擔任何責任;
為什麼沒有執行分片?與原生執行相比,rollup二層網絡的效率要高100 倍,很難看出執行分片會有什麼需求;
3、目標:提供約1.3 MB/s 的數據可用性層和完整的分片功能(目前最大數據容量的10倍,平常容量的200倍);
6、自2019年底以來,數據分片一直是以太坊的目標;
1、2 數據可用性採樣(DA sampling)
1、想知道通過O(1) 工作獲得的O(n) 數據是可用的;
2、思路:將數據分佈到n 個chunk分塊中;
3、每個節點下載k 個(隨機選擇的)chunk分塊;
1、3 糾刪碼(Erasure coding)
1、使用Reed-Solomon 編碼(多項式插值)擴展數據;
2、例如,在編碼率r=0.5 時,這意味著任何50% 的區塊(d0 到e4)都足以重建整個數據;
3、現在採樣變得高效(例如,查詢30個隨機區塊,如果全部可用,超過50%不可用的概率為2 ^ (-30))
4、但是,我們需要確保編碼是正確的;
1、4 KZG承諾(KZG Commitments)
1、多項式
2、承諾C(f)
3、評估y = f(z)
證明者可以計算證明π(f,z)
使用C(f), π(f,z), y 以及z,驗證者可以確認f(z) = y
4、C(f)以及π(f,z) 是一個橢圓曲線元素(每個48 字節)
1、5 KZG 承諾作為數據可用性根
1、將“KZG 根”想像成類似於Merkle 根的東西;
2、不同之處在於“KZG 根”承諾了一個“多項式”(所有點都保證在同一個多項式上,而Merkle根不能保證這一點);
1、6 分離分片提案
二、 什麼是新的
2、1 提議者-構建者(數據生成者)分離(PBS)
1、被發明用來對抗MEV 導致的中心化趨勢;
2、MEV意味著更成熟的參與者可以比普通驗證者提取更多的價值,這對大型礦池而言意味著優勢;
3、PBS 在一個獨立的角色中“包含”了這種複雜性/中心化,並具有誠實的少數假設;
提議者(Proposer)= 驗證者,誠實的多數假設意味著高度的去中心化要求;
數據生成者(Builder)= 單獨的角色,誠實的少數假設,意味著去中心化只需要確保一個誠實(非審查)的數據生成者;
2、2 審查阻力方案– crList
1、PBS的危險之處:一個高效的構建者(Builder)可以(以一定的經濟成本)永久審查一些交易;
2、[注:在今天的贿赂模型中, 审查一笔交易的成本是永久贿赂所有提议人而不将这笔交易纳入的成本;]
3、crLists允許提議者指定構建者必須包含的tx列表,從而恢復舊的平衡;
crList(“混合PBS”設計)
2、3 KZG 2d 方案
1、為什麼不在KZG 承諾中編碼所有內容?
需要一個超級節點(“構建者”)來構建和重建以防失敗的情況;
我們希望避免這種假設的有效性;
2、目標:在d 個KZG 承諾中編碼m 個分片blob;
如果我們天真地去這樣做,那就需要m * k個樣本,這樣數據就太多了;
相反,我們可以再次使用Reed-Solomon編碼將m 個承諾擴展到2* m 個承諾;
2、4 KZG 2d 方案屬性
1、所有樣本都可以直接根據承諾進行驗證(沒有欺詐證明!);
2、恆定數量的樣本確保概率數據可用性;
3、如果75%+1 的樣本可用:
所有數據都可用;
它可以從只觀察行和列的驗證器中重構;
不需要節點觀察所有的情況;
三、組合在一起就是Danksharding
1、執行區塊和分片區塊是一起構建的;
我們以前需要分片委員會,因為每個分片blob可能無法單獨使用;
現在,數據生成者的責任是使執行區塊有效,並且所有分片blob 都可用;
2、⇒ 驗證可以是聚合的;
3、1 Danksharding 誠實多數驗證
1、每個驗證者選擇s = 2 隨機行和列;
2、僅證明分配的行/列是否可用於整個epoch時期;
3、一個不可用的區塊(<75% 可用)不能獲得超過2^(-2s) = 1/16 的證明;
3、2 Danksharding 重構
1、每個驗證者都應該重構他們遇到的任何不完整的行/列;
2、這樣做時,他們應該將丟失的樣本轉移到正交線;
3、每個驗證器可以在行/列之間傳輸4個缺失的樣本(大約55,000 個在線驗證器可保證完全重構)
3、3 Danksharding DA 採樣(惡意多數安全)
1、未來升級
2、每個全節點檢查方塊矩陣上的75 個隨機樣本;
3、這確保了不可用區塊通過的概率< 2 ^(-30);
4、帶寬75*512 B / 16s = 2.5 kb/s;
四、總結優點和缺點
優點:
1、簡單的設計:
不需要分片委員會基礎設施;
不需要跟踪分片blob 確認;
沒有額外的構建者基礎設施(來自執行層的同步支付取代了這一點)
可以使用現有的執行層費用市場基礎設施;
2、執行鍊和分片之間的緊密耦合:
使得rollup設計更簡單;
zkRollup 和執行鏈之間的同步調用是可能的;
3、分片不需要單獨的PBS;
4、隨著數據立即被驗證者集的1/32(而不是舊分片方案中的1/2048)確認,並在一個epoch時期內增加到完整的驗證者集,抗賄賂的能力增強了;
5、得益於2d方案,全節點(無需運行驗證器)將能通過75 個樣本(2.5 kb/s)確保數據可用性,而不是30*64=1920 個樣本(60 kb/s);
新的挑戰:
1、增加了數據生成者要求:
構建32MB數據的KZG證明(需要100核,但目前正在研究CPU實現)
需要2.5 GBit/s的互聯網連接來分發樣本;
2、為數據生成者提供了更多權力,因為他們充當了執行+數據層服務提供商;
需要通過crList緩解;
相關資源
Danksharding:
Summary doc:
https://notes.ethereum.org/@dankrad/new_sharding
Consensus PR:
https://github.com/ethereum/consensus-specs/pull/2792
KZG承諾介紹:
https://docs.google.com/presentation/d/1hEGJd1pT5NpuiHlw91ys6jFpDbNA2ahq5oRWkEk9BRQ
Two-slot PBS:
https://ethresear.ch/t/two-slot-proposer-builder-separation/10980
crList 總結:
https://notes.ethereum.org/@fradamt/H1ZqdtrBF