掃碼下載
BTC $77,989.61 +4.91%
ETH $2,456.63 +5.75%
BNB $645.38 +3.09%
XRP $1.50 +5.51%
SOL $90.24 +5.07%
TRX $0.3255 -0.33%
DOGE $0.1017 +4.67%
ADA $0.2655 +5.17%
BCH $458.83 +4.21%
LINK $9.82 +4.82%
HYPE $45.20 +2.92%
AAVE $117.89 +7.95%
SUI $1.03 +5.29%
XLM $0.1757 +7.25%
ZEC $343.74 +2.56%
BTC $77,989.61 +4.91%
ETH $2,456.63 +5.75%
BNB $645.38 +3.09%
XRP $1.50 +5.51%
SOL $90.24 +5.07%
TRX $0.3255 -0.33%
DOGE $0.1017 +4.67%
ADA $0.2655 +5.17%
BCH $458.83 +4.21%
LINK $9.82 +4.82%
HYPE $45.20 +2.92%
AAVE $117.89 +7.95%
SUI $1.03 +5.29%
XLM $0.1757 +7.25%
ZEC $343.74 +2.56%

深度解讀 EIP-4844:Sharding 的一小步,以太坊擴容的一大步

Summary: 在proto-danksharding實現後,由於新的交易格式引入了blob,每個區塊可以平均額外獲得1MB的緩存空間。Danksharding實現後,每個區塊額外16MB,最大允許32MB。
Foresight News
2023-01-30 09:43:08
收藏
在proto-danksharding實現後,由於新的交易格式引入了blob,每個區塊可以平均額外獲得1MB的緩存空間。Danksharding實現後,每個區塊額外16MB,最大允許32MB。

撰文:Yihan Xu,Foresight Research

在這篇報告中你可以了解到

EIP-4844;

Proto-danksharding;

Danksharding;

KZG Commitment;

KZG Ceremony;

Dynamic state sharding;

image

最近社區參與度超標的KZG Ceremony都刷到了吧,這個儀式到底在幹什麼?

簡單概括,KZG Ceremony是實現EIP-4844不可繞過的一個初始化環節,而EIP-4844是實現以太坊sharding過程中的先行版本。

一、Sharding: 以太坊擴容的長久之計

  • Sharding從數據可用性角度擴容,而rollup主要從執行層面擴容,一起緩解主網擁堵問題;我認為sharding可能是突破區塊鏈不可能三角的一次嘗試。
  • 下面這張以太坊區塊大小的走势图可以從另一個角度說明數據層面擴容的必要性。從創世區塊開始,以太坊從底層架構到上層應用都在不斷地快速迭代,但平均區塊大小仍為90Kb左右,最高點也沒有質的突破。雖然Rollup從計算層切入,解決以太坊擁堵問題,但性能仍然受制於layer 1的數據存儲能力。

image

  • 由於實現過程的複雜度和安全性考量,以太坊開發團隊將sharding分成了多個階段,其中就包括最近提到的proto-danksharding和danksharding。整個過程將會是一個歷時數年的更新;
  • 在目前的以太坊的數據存儲模式下,只有少數特定高配置的機器可以加入網絡成為節點,而full sharding之後ethereum不再需要每個節點都保存全部數據,在降低主網數據存儲成本的同時加強了安全性(成為節點的門檻降低,去中心化程度進一步提升,同時降低被攻擊的風險)。

二、EIP-4844: 短期高回報,Sharding的精簡先行版

EIP-4844 = Proto-Danksharding; Proto來自以太坊研究者的名稱

由於實現danksharding(下一節會分析)的複雜度很高,開發周期至少是以年為單位的。因此proto-danksharding是實現danksharding前對以太坊的擴容方案,主要實現了danksharding中的交易格式、precompile等設計;

image

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(數據單元)

image

作用

參考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協議中有很廣泛的應用。

image

參考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。

image

最近社區參與熱情高漲的KZG Ceremony就是為EIP-4844採用的KZG commitment提供trust setup;

KZG Ceremony的流程

image

參考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裡很貴;
  • 降低對區塊空間的佔用

image

安全性

  • 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的要求

image

四、其他sharding方案:Shardeum的動態分片

Shardeum是EVM兼容的layer 1公鏈, 與以太坊的static sharding方案不同,shardeum通過dynamic state sharding的方案提升底層可擴展性和安全性,同時,天然地保證較高的去中心化程度;

image

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/kzgcommitmentsin_proofs

https://notes.ethereum.org/@dankrad/new_sharding

https://vitalik.ca/general/2022/03/14/trustedsetup.html

https://notes.ethereum.org/@dankrad/protodankshardingfaq#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.g1150d91b32e0474

https://ethresear.ch/t/a-design-of-decentralized-zk-rollups-based-on-eip-4844/12434

warnning 風險提示
app_icon
ChainCatcher 與創新者共建Web3世界