昨天和前天講了以太坊的 L1 分片擴容,從最初的執行分片,到後來整個以太坊轉為以 rollup-centric 的路線,將交易執行 offload 到 L2 上,Layer 1 則作為資料可用性層。
L1 轉為提供資料可用性分片,以 Danksharding 為擴容目標。其中,我們介紹相關的 KZG-Commitment、PBS 等概念。然而,昨天的介紹有些不清楚的地方,對於細節也沒詳細交代。
今天,我們將更加清楚詳細的介紹 Danksharding 以及對應的 Proto-Danksharding。
隨著越來越多交易以及 dApps 執行在以太坊上,整個網路的容量逐漸不敷使用。隨之而來的是高昂的手續費以及緩慢的交易確認時間。儘管透過 EIP-1559、以太坊 The Merge,部分緩解了手續費與交易時間的問題。然而,以太坊的擴容依然是刻不容緩。
原先以太坊的執行分片,隨著確認了 L2 rollup-centric 路線後,L1 轉為資料可用性層,提供資料可用性分片。
Danksharding 則是在這個背景之下,透過輔助 Layer 2,讓 rollup 能更有效率的運作,以加速交易、降低成本,並且期望讓以太坊能夠每秒處理超過 10,000 筆交易。
Danksharding 其實是個更加宏偉的目標。目前我們看到的 EIP-4844,又被稱為 Proto-Danksharding,其實只是 Danksharding 的前置作業。
目前主網上只引入了 Proto-Danksharding,甚至還沒實現資料可用性分片機制。完整的 Danksharding 應該還包含了 DAS、Erasure Encoding、PBS 等機制。
在介紹 Proto-Danksharding 前,我想我們要先講講 Layer 2 的交易。Layer 2 負責 offload Layer 1 協助執行交易。最後,為了確認交易的正確與可用性,Layer 2 上的交易需要被儲存到 Layer 1 上。
過去,Layer 2 會將交易打包,放在 Type 2 Transaction 的 CALLDATA 中,發佈到 Layer 1 上,交易資料會被永久儲存在 Layer 1 上。由於資料量大,導致 Layer 2 發布這樣的資料的成本很高,使得 L2 手續費雖然比 L1 便宜,但仍然有點貴。
Proto-Danksharding 在 2024/03,隨著 Dencun 升級在以太坊主網上線,主要引入了兩個核心機制:Blob 與 KZG Commitment。
Blob 全名是 Binary large object。Layer 2 的 rollup 會在自己的鏈上處理交易,以批次的方式將資料與「有效性證明」發佈到以太坊上。
Proto-danksharding 因此引入了一種新的交易類型(type 3),被稱為 blob-carrying transaction。目前,Proto-danksharding 中的 type 3 transaction 最多可以攜帶 6 個 blob,Danksharding 的最終目標是擴展到攜帶 64 個 blob。
Blob 中的資料是臨時儲存的(約 18 天),固定時間後會被清除掉。此外,Blob 資料是無法被 EVM 直接存取的,EVM 只能看到 blob 的「有效性證明」。
由於這些特性(臨時儲存、EVM 不可存取),透過 blob 發布的 Layer 2 交易資料,比起 CALLDATA,大幅降低了使用成本。
KZG Commitment 其實就是前面說的「有效性證明」。Layer 2 rollup 發布交易時,會同時發布交易的 KZG Commitment。
KZG Commitment 其實是一種 ZK-Proof,透過多項式函數與交易資料擬合,產生一個加密的承諾。透過檢查 KZG Commitment,無需讀取整個 blob 就能檢查 blob 中的資料。
L1 驗證:Blob 驗證預先編譯、點評估預編譯
目前,DAS、Erasure Encoding、PBS 尚未上線,網路上所有的驗證者還是要下載完整的 blob 資料,搭配 KZG Commitment,以驗證 blob 的資料可用性。
那麼,你可能會想,都下載完整的 blob 資料了,為什麼還需要 KZG Commitment 呢?KZG 專注的是資料的完整性與真實性,
EIP-4844 引入 Blob、Blob-carrying Transaction,以及 KZG 後,距離完整的 Danksharing 還缺了 DAS、Erasure encoding,以及 PBS。以下將分別介紹這些概念。
目前在 Proto-danksharding 中,如果要確認 rollup 發布的 blob 的資料可用性,驗證者仍然需要下載完整的 blob 資料。
DAS(資料可用性採樣)則是讓節點可以透過抽樣的方式,隨機下載部分的 blob 資料以驗證資料的可用性,也就是 blob 資料是否可以被下載。
此外,搭配 Erasure Encoding 技術,提升資料的可恢復性。
PBS 全名是 Proposer Builder Separation,引入了一種新的驗證角色:Block Builder。
原本 Block Proposer 會負責打包交易、廣播區塊。引入 PBS 後,將讓 Block Builder 負責競標區塊建立的權力,也就是競標 Slot。而 Proposer 則選擇其中出價最高的有效區塊 header。
如此一來,其他驗證者透過 DAS 也能更有效的驗證區塊。
今天用比較正確的宏觀概念看了 Danksharding 與 Proto-danksharding 兩個概念。但這部分的內容真的有點複雜,看了第二次之後,越發覺得有無法理解的細節,特別是 Danksharding 尚未實現的 DAS、PBS 等技術。此外,KZG 的驗證與背後數學原理,也是一個大坑。
此外,L1 雖然被稱為資料可用性層,但更精確的說,應該叫做短期的資料可用性層。
[1] Transaction, Ethereum
[2] EIP-4844
[3] 資料可得性, HackMD