前一天我們提到以太坊的分片,也介紹了三種分片類型(網路、交易、狀態分片),並且提到分片的優缺點。最後,我們還提到以太坊目前的發展路線 - rollup-centric roadmap。
原先在 The Merge 後,其實是計劃要推出分片鏈的,也就是鏈上的執行分片。然而,由於執行層遇到困難,再加上 rollup 的快速發展,因此後來才轉為 rollup-centric 的發展路線。
由於以太坊目前以 L2 鏈下擴容為主要發展路線,原先在 L1 鏈上分片的計劃也就暫時擱置。昨天提到的這種分片,其實又可以被歸類為「執行分片」,也就是在原先的主鏈上,將節點分為多個分片鏈,各自執行、驗證交易。
隨著 rollup-centric 的路線被確認,原先在主鏈上被執行、驗證的交易,也被 offload 到 Layer 2(鏈下)。然而,Layer 2 最終還是需要主鏈(L1)儲存資料,以確保其資料正確性與安全性。
因此,以太坊主鏈(L1)開始發展出「資料可用性分片」的概念,以及 Danksharding、EIP-4844 等實作與標準。
下圖是原先以太坊的設計,在圖中可以看到已經被擱置的分片鏈(Shard chain)。原先,分片鏈打算被作為交易執行、資料儲存的場所,但隨著 rollup 與 L2 的發展,社群決定將交易執行搬到 rollup 上,並且將以太坊 L1 分片作為最終的資料可用性層。
而 Danksharding 則是在這個脈絡下,將以太坊分片打造為資料可用性層的一個技術。
Danksharding 由 Dankrad Feist 於 2021 年提出。原先分片鏈(Sharding)的設計是,將 L1 作為執行分片,並將資料放在不同的鏈;而 Danksharding 的設計則是,將 L1 作為資料可用性分片(Data Availability Sharding),並將所有資料放在同一個區塊中。
rollup 處理過的交易們,會被壓縮打包起來,發佈到以太坊主鏈上。交易的有效性,則透過主鏈節點驗證來確保。然而,由於這些壓縮的交易們,仍然需要與主鏈上的其他交易競爭區塊空間,因此,導致 rollup 手續費仍不夠低廉。
Danksharding 則是打算創造一個 rollup 專屬的資料空間,降低 rollup 發布資料的成本。這個專屬空間被稱為 Blob(Binary Large Object),專門讓 rollup 儲存資料,但Blob 中的資料不會被永久儲存。
Block Proposer 會在區塊後附加一些 Blob,Blob 中不包含智能合約程式碼,而是僅包含 rollup 的資料。此外,主網節點只會驗證 Blob 中的資料,而不會執行其中的交易。
Blob 由 Danksharding 引入,為了儲存 rollup 壓縮打包的交易。然而,節點還要能驗證這些資料。因此,Danksharding 使用 KZG Commitment 這種加密技術,Block Proposer 會替每一個 Blob 建立一個唯一的 Commitment,並且把 KZG Commitment 放在 Block header 中。
其他的節點或輕節點則無需下載整個 Blob,只要透過 DAS(Data Availability Sampling)隨機抽樣一部分的 KZG,就能驗證整個 Blob 的資料是否完整可用。
引入 Blob 跟 DAS 後,一個區塊的建構除了交易外,還多了 Blob 的部分,使得整個區塊打包過程變得更複雜,也更容易產生 MEV(Maximal Extractable Value)。
原本由同一個 Proposer 負責打包交易、發佈區塊,但引入 PBS 將 Proposer、Builder 分離後,由 Builder 專門負責打包交易與 Blob 為一個區塊,Proposer 會負責從多個 Builder 中挑一個最適當的 Block。
如此一來,降低了中心化程度,也降低了 Proposer 從 MEV 中套利的可能。
今天簡介了 Danksharding 這個概念,以太坊從執行分片轉為資料可用性分片,交易的執行與狀態轉移由 L2 rollup 確保,L1 則確保資料可用性與安全性。
我們還提到 Danksharding 引入的新機制,如 Blob、KZG、PBS 等等。老實說,我自己也是第一次看這些內容,文中講得非常淺薄,還甚至可能有些錯誤。
明天,我們將繼續深入 Danksharding 的內部機制,以及討論 Erasure Coding 這個機制。
[1] Danksharding, Ethereum
[2] 認識 Danksharding, Medium
[3] Ethereum Sharding, Web3 University