在這篇報告中你可以了解到:\x0d\x0aEIP-4844、Proto-danksharding、Danksharding、KZG Commitment、KZG Ceremony、Dynamic state sharding…

作者: Yihan Xu,Foresight Ventures

Overview

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

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

免責聲明:作為區塊鏈信息平台,本站所發布文章僅代表作者及嘉賓個人觀點,與 Web3Caff 立場無關。文章內的信息僅供參考,均不構成任何投資建議及要約,並請您遵守所在國家或地區的相關法律法規。