Sharding 是以太坊擴容的長久之計,也是一個價值巨大、意義深遠的長期方案。
撰文:Yihan Xu@Foresight Ventures
在這篇報告中你可以了解到:
- EIP-4844;
- Proto-danksharding;
- Danksharding;
- KZG Commitment;
- KZG Ceremony;
- Dynamic state sharding;
最近社區參與度超標的KZG Ceremony 都刷到了吧,這個儀式到底在幹什麼?
簡單概括,KZG Ceremony 是實現EIP-4844 不可繞過的一個初始化環節,而EIP-4844 是實現以太坊sharding 過程中的先行版本。
一、Sharding: 以太坊擴容的長久之計
- Sharding 從數據可用性角度擴容,而rollup 主要從執行層面擴容,一起緩解主網擁堵問題;我認為sharding 可能是突破區塊鏈不可能三角的一次嘗試。
- 下面這張以太坊區塊大小的走勢圖可以從另一個角度說明數據層面擴容的必要性。從創世區塊開始,以太坊從底層架構到上層應用都在不斷地快速迭代,但平均區塊大小仍為90Kb 左右,最高點也沒有質的突破。雖然Rollup 從計算層切入,解決以太坊擁堵問題,但性能仍然受制於layer 1 的數據存儲能力。
- 由於實現過程的複雜度和安全性考慮,以太坊開發團隊將sharding 分成了多個階段,其中就包括最近提到的proto-danksharding 和danksharding。整個過程將會是一個歷時數年的更新;
- 在目前的以太坊的數據存儲模式下,只有少數特定高配置的機器可以加入網絡成為節點,而full sharding 之後ethereum 不再需要每個節點都保存全部數據,在降低主網數據存儲成本的同時加強了安全性(成為節點的門檻降低,去中心化程度進一步提升,同時降低被攻擊的風險)。
二、EIP-4844: 短期高回報,Sharding 的精簡先行版EIP-4844 = Proto-Danksharding;Proto 來自以太坊研究者的名稱
由於實現danksharding(下一節會分析)的複雜度很高,開發週期至少是以年為單位的。因此proto-danksharding 是實現danksharding 前對以太坊的擴容方案,主要實現了danksharding 中的交易格式、precompile 等設計。
1. Proto-danksharding 概述
Proto-Danksharding 主要引入了一種新的transaction type,也就是blob-carrying transaction。至此,Rollup 的數據通過blob 的形式以更低的成本向layer 1 傳輸,並作非永久存儲。同時,blob 遠大於現在的calldata,可以更好地支持rollup 上的高TPS。
關於blob:
- 每個transaction 最多掛2 個blob;
- 每個block 理想狀態包含8 個blob,約為1MB,最多包含16 個blob,約為2MB;
- Blob 不需要像calldata 一樣作為history log 被永久存儲;
- 相比danksharding,節點還是需要對完整的DA 進行驗證。
2. Blob-carrying transaction 解讀
給transaction 掛上blob(數據單元)
作用
參考Vitalik 在提案中給出的圖,Data blob 和當前的calldata 相似,rollup 可以將交易、證明等數據通過blob 上傳到layer 1 來保證data availability。
成本
Data blob 的設計初衷是支持rollup高通量的交易,相比同等大小的calldata(使用鏈上存儲),blob 的成本將會降低很多(不需要永久存儲)。因此,rollup 在維持數據可用性上花費的gas 相比之前會顯著降低。
容量
每個blob 的大小約為125kB(fact: 當前平均block size 只有~90kB)。
3. Blob-carrying transaction 的價值和挑戰
價值
可以把blob 看成一種緩存,rollup 提交的交易數據從此以緩存的形式存在。降低對存儲硬件的要求,為以太坊提供額外的數據擴容並降低gas 成本。
挑戰:對以太坊節點硬件性能的要求
Ethereum 當前平均區塊大小只有~90kB,但是一個blob 就有~125kB
根據EIP-4844 的設計,每個slot 正常情況下約為1 MB,因此每年增加的數據量為:
1 MB/block * 5 block/min * 43200 min/month * 12 month/year = 2.47 TB per year
每年增加的數據大小遠超過了以太坊數據總量,這樣的存儲方案顯然是不高效的。
解決方案
- 從短期擴容效果看,由於每個節點仍然需要儲存全量歷史數據,在實現EIP-4844 的同時,對一段時間窗以外的blob(具體的limit time 還沒有最終確定,可能是1 個月或是1 年)進行自動刪除;
- 從sharding 的長期利益看,實現EIP-4444,即節點不需要存儲全量歷史數據,而是只需要參照history expiry,存儲特定時間之後的數據;
這兩種解決方案從不同程度上緩解了blob-carrying transaction 在存儲空間上的tradeoff。
4. KZG Commitment
KZG Commitment 是EIP-4844 中採用的多項式承諾方案
解析KZG commitment
KZG 是作者Aniket Kate, Gregory M. Zaverucha 和Ian Goldberg 姓氏的縮寫,他們在2010 年發表了多項式承諾方案論文「Constant-Size Commitments to Polynomials and Their Applications」,並且這個方案在plonk-style 的zk-snark 協議中有很廣泛的應用。
參考Dankrad Feist 演講中的示意圖,KZG root 類似Merkle root,區別在於KZG root 承諾一個多項式,即所有position 都在這個多項式上。基於proto-danksharding 的場景,KZG root 承諾了一堆數據,其中的任何一個數據都可以被驗證屬於這個整體。
這也是為什麼KZG commitment 在兼容性上對後面實現DAS 更友好。
KZG commitment 的流程如下:
- Prover:提供證明,計算data 的commitment,prover 無法改變給定的多項式,並且用於證明的commitment 只對當前這一個多項式有效;
- Verifier:接收prover 發送的commitment value 並進行驗證,確保prover 提供了有效的證明。
KZG Commitment 的優勢
我認為主要出於對成本和安全性的思考,可以歸納但不局限於以下幾點:
成本
- KZG commitment 具備快速驗證、複雜度相對更低、簡潔的特點;
- 不需要提交額外的proof,因此成本更低、更省bandwidth;
- 數據觸達所需的Point evaluation precompile 可以獲得更低的成本。
安全
- 假設出現了failure,也只會影響commitment 對應的blob 中的數據,而不會其他深遠的影響。
更兼容
- 縱觀sharding 的整體方案,KZG commitment 對DAS 方案兼容,避免了重複開發的成本。
5. KZG Ceremony(trusted setup)
KZG Ceremony 是為KZG Commitment 提供trust setup,目前吸引了超過20,000 participants 的參與和貢獻,已經成為歷史上最大規模的trust setup。
最近社區參與熱情高漲的KZG Ceremony 就是為EIP-4844 採用的KZG commitment 提供trust setup。
KZG Ceremony 的流程
參考Vitalik 的流程圖,任何人都可以作為participants 貢獻secret 並與之前的結果進行混合產生一個新的result,以此類推,通過套娃的形式獲得最終的SRS,並協助完成KZG commitment 的trust setup
trust setup
- EIP-4844 中採用了一種常見的multi-participant trust setup,即powers-of-tau;
- 遵循1-of-N 可信模型,不管多少人參與generating setup 的過程,只要有一個人不洩漏自己的生成方式,可信初始化就是有效的;
必要性
- KZG commitment 的trust setup 可以簡單理解為:生成一個在每次執行cryptographic protocol 時需要依賴的一個參數,類似於zk-snark 需要可信初始化;
- Prover 在提供證明時,KZG commitment C = f(s)g1。其中f 是評估函數,s 就是KZG trusted setup 最終獲得的final secret;
- 可以看出final secret 是生成多項式承諾的核心參數,而作為獲取這個核心參數的可信流程,這次KZG Ceremony 對於整個sharding 的實現非常重要。
6. EIP-4844 帶來的變化
Rollup
參考ethresear 上給出的示意圖,rollup 需要將state delta、KZG commitment 的versioned hash 包含在calldata 中進行提交(zk-rollup 還需要提交zk proof)
可以發現不同的是,calldata 只包含一些數據量小的,比如state delta、KZG commitment,而將包含大量交易數據的transaction batch 放到了blob 裡。
- 有效降低成本,放calldata 裡很貴;
- 降低對區塊空間的佔用
安全性
- Data availability: Blob 存儲在信標鏈上,等同於layer 1 的安全性;
- 歷史數據:節點不會只會將blob 存儲一段時間,需要layer 2 rollup 做永久數據存儲,因此安全性依賴於rollup。
成本
Proto-Danksharding 引入了新的交易類型,低成本數據格式blob 的加入無疑會讓rollup 的成本進一步降低,取決於實際鏈上應用和實現進展,優化後rollup 的成本可能降低x10 甚至x50;
同時EIP-4844 引入了blob fee;
- Gas 和blob 將會分別有可調節的gas price 和limit;
- Blob 的收費單元還是gas,gas amount 隨traffic 變動,以此維持每個block 平均掛8 個blob 的目標(限制額外增加的數據量)
Precompile 的實現
Blob 中的數據本身無法被直接觸達,EVM 只能獲取data blob 的commitment。因此需要rollup 提供precompile 來驗證commitment 的有效性。
下面分析兩種EIP-4844 中提到的precompile 算法
Point evaluation precompile(對數學原理感興趣參考vitalik 的解析)
- 證明多個commitments 指向同一數據;
- 主要針對zk-rollup,rollup 需要提供2 種commitments: 1. KZG commitment; 2. zk-rollup 本身的commitment;
- 對於optimistic rollup,大多數已經採用了multi-round fraud proof 的機制,final round fraud proof 所需的數據量較小。因此,採用point evaluation precompile 能達到更低的成本
Blob verification precompile
- 證明versioned hash 和blob 是有效對應的;
- optimistic rollup 在提交欺詐證明時需要access 全量數據,因此先驗證versioned hash 和blob 合法,再進行fraud proof verification
三、Danksharding: 邁向full sharding 的重要一步
Danksharding 的命名來自以太坊研究員Dankrad Feist
1. 擴容:進一步擴充Rollup 的緩存空間
在proto-danksharding 實現後,由於新的交易格式引入了blob,每個區塊可以平均額外獲得1MB 的緩存空間。 Danksharking 實現後,每個區塊額外16MB,最大允許32MB。
2. Data availability:存儲和驗證策略更高效
相比proto-danksharding 要求全節點下載全量數據,Danksharking 實現後以太坊節點只需要對blob 抽樣。 Sampling 後的數據會分佈在全網節點中,並可以組成完成的data blob。
DAS:高效抽樣檢查
- 通過糾纏碼(erasure coding)幫助全網節點在下載部分數據的情況下更容易發現原始數據的丟失的概率,從而提升安全性
3. 安全性:基本不變
由於每個節點不再保存全量歷史數據,從數據可用性、備份和抽樣檢查的角度出發,安全性由至少一個節點保存全量數據變為多個節點存儲部分數據,並最終還原完整數據。
雖然乍一看對單點的依賴安全性遠高於對多點的依賴,但是以太坊網絡中的節點數量夠多,完全可以保證數據備份的需求,因此安全性並不會有很大變化。
4. 新的挑戰:對block builder 的要求提升
雖然驗證者不需要下載並保留全量歷史數據,對bandwidth 和存儲硬件的要求得到了緩解,但是區塊創建者仍然需要上傳包含全量transaction data 的blob 數據。
這裡簡單介紹一下PBS(proposer/builder separation),參考Dankrad 給出PBS 在danksharding 方案中的應用圖:
- 將負責出塊負責人的角色拆分為proposer 和builder。最初是為了做anti-MEV 設計的提案,在danksharding 的設計中為了降低區塊創建時對bandwidth 的要求。
四、其他sharding 方案:Shardeum 的動態分片
Shardeum 是EVM 兼容的layer 1 公鏈, 與以太坊的static sharding 方案不同,shardeum 通過dynamic state sharding的方案提升底層可擴展性和安全性,同時,天然地保證較高的去中心化程度;
1. Dynamic state sharding
優勢
Dynamic state sharding 帶來最直觀的優勢在於linear scaling,接入網絡的節點可以非常高效的被sharding 算法動態分組,并快速響應,提升區塊鍊網絡的TPS。在dynamic state sharding 的設計中,每個節點會覆蓋不同range 的address,並且覆蓋範圍又會有冗餘設計以保證高效的sharding 和安全性。
場景內實現
拋開生態的複雜度,單從兩種技術實現的角度看,dynamic state sharding 的難度大於static sharding。可以看出Shardeum 的技術團隊在sharding 的技術層面有很深的積累,團隊之前在Shardus technology 上的研發也對這條公鏈的底層技術做出了很大貢獻,甚至在項目早期階段很好的展示了dynamic state sharding 所帶來的linear scaling。
2. Shardeum 綜合歸納
產品
將節點劃分到不同的group,參考divide and conquer 的思路,把計算和存儲的workload 進行分流,從而允許更高程度的並行處理。因此,可以容納更多節點加入,進一步提升公鏈的throughput 和去中心化程度。
團隊
市場經驗豐富,敘事能力超強,對動態分片研究很深。
技術
針對自己的場景設計了合適的sharding 方案(dynamic state sharding) 和共識的設計(Proof of Stake+ Proof of Quorum),以提升可擴展性為第一目標,保證更高程度的去中心化和安全性。
進度
將在2023-02-02 launch betanet,值得關注。
五、對sharding 的思考和展望
- Sharding 是以太坊擴容的長久之計,也是一個價值巨大、意義深遠的長期方案。實現sharding 的過程中,現有所有方案都可能被不斷迭代,包括現在提到的proto-danksharding、danksharding 等,值得持續關注;
- 對sharding 大方向的理解很重要,但是每一個實現full sharding 過程中的提案所採納的技術方案(PBS、DAS、multidimensional fee market)同樣值得關注,並且我相信也會湧現很多相關的優秀團隊和項目;
- Sharding 是對一種擴容技術的統稱,但具體落地的方案並不是只有一種。需要認識到不同的公鏈會有適合自己場景的sharding 方案。比如danksharding 中的一些設計也只適合以太坊網絡,安全性的tradeoff 需要大量的節點來抵消;
- Sharding 和其他擴容方案的合理結合對於可擴展性的提升1+1>2。目前的Danksharding 並不是自成一派的擴容方案,而是和以太坊生態的其他實現相輔相成的。比如Danksharding 和rollup 一起,為以太坊擴容達成更好的效果。
Reference
https://notes.ethereum.org/@dankrad/kzg_commitments_in_proofs
https://notes.ethereum.org/@dankrad/new_sharding
https://vitalik.ca/general/2022/03/14/trustedsetup.html
https://notes.ethereum.org/@vbuterin/proto_danksharding_faq#Why-use-the-hash-of-the-KZG-instead-of-the-KZG-directly
https://ethresear.ch/t/easy-proof-of-equivalence-between-multiple-polynomial-commitment-schemes-to-the-same-data/8188
https://dankradfeist.de/ethereum/2020/06/16/kate-polynomial-commitments.html
https://notes.ethereum.org/@dankrad/new_sharding
https://eips.ethereum.org/EIPS/eip-4844
https://www.eip4844.com/
https://biquanlibai.notion.site/Data-Availability-caa896aae59d489b98f2448f17b01640
https://docs.google.com/presentation/d/1-pe9TMF1ld185GL-5HSWMAsaZLbEqgfU1sYsHGdD0Vw/edit#slide=id.g1150d91b32e_0_474
https://ethresear.ch/t/a-design-of-decentralized-zk-rollups-based-on-eip-4844/12434
展開全文打開碳鏈價值APP 查看更多精彩資訊