Danksharding、4844 萬字研報:白話解讀「不可能三角」的變革性解決方案

發表於 2023-02-14 13:11 作者: SevenUp DAO

作者:菠菜菠菜,web3caff

來源:@wzxznl,web3caff

原文標題:

《以太坊新分片方案 Danksharding 及 EIP-4844 萬字研報:全新公鏈敘事已來?白話解讀「區塊鏈不可能三角」的變革性解決方案》

擴容一直是以太坊繞不开的話題之一,以太坊要想成爲真正的 “世界計算機” 需要同時具備可擴展性、安全性、去中心化,但同時具備這三個條件在行業中被稱爲 “區塊鏈不可能三角”,在整個行業中是一直沒有被解決的一個大難題。

但隨着 2021 年末以太坊研究員&开發者 Dankrad Feist 提出以太坊新分片方案 Danksharding 後,似乎給解決 “區塊鏈不可能三角” 帶來了一種變革性方案,甚至有可能改寫整個行業的遊戲規則。

本份研報將嘗試用白話形式講清楚什么是以太坊的新分片方案 Danksharding 以及來龍去脈。關於爲什么寫這份研報是因爲關於 Danksharding 的中文文章十分少並且大多都需要較高的知識門檻,因此菠菜將嘗試爲你掰开揉碎背後的復雜原理,通過用簡單的大白話去讓一個 Web3 初學者也可以看懂以太坊新分片方案 Danksharding 及其前置方案 EIP-4844。

目錄

一、以太坊爲什么需要擴容?

以太坊創始人 Vitalik Buterin 在 2014 年發表以太坊的白皮書 “下一代智能合約和去中心化應用平台” 後,區塊鏈迎來了一個新的時代。智能合約的誕生使得人們可以在以太坊上創建去中心化的應用(DApp),也爲區塊鏈的生態帶來了一系列創新如 NFT、DeFi、GameFi 等。

以太坊擴容背景

隨着以太坊鏈上生態日漸壯大,越來越多的人开始使用以太坊,以太坊的性能問題开始暴露出來。當許多人同時在以太坊上進行交互時,區塊鏈就會發生 “擁堵”,就像一條馬路上的紅綠燈時間是固定的,在一定數量內的車輛不會導致堵車,但突然在高峰期的時候許多車都往這條馬路上开,綠燈時駛出馬路車輛的數量遠遠沒有新駛入這條馬路等待紅綠燈車輛的數量多,就會導致大擁堵,所有車輛通過這條馬路的時間就會被一直拉長,那么在區塊鏈中也是如此,所有人的交互請求確認時間都會被拉長。

但在區塊鏈中,被拉長的不只是時間,還會導致高昂的 Gas 費(Gas 費可以理解爲支付給礦工們的辛苦費,礦工負責打包處理區塊鏈中的所有交易),因爲礦工會優先處理出價最高的交易,這就會導致大家都去擡高 Gas 費去爭取更快的交互請求確認引發一場 “Gas War”。比較有名的一次事件是 2017 年的一個 NFT 項目——CryptoKitties 加密貓的爆紅將 Gas 費推至幾百美金一次交互,在以太坊上進行一次交互需要消耗幾十甚至上百刀的 Gas 費是多么昂貴的一個成本。

而導致如此昂貴 Gas 費的主要原因便是以太坊的性能已經無法滿足現有用戶的交互需求。在性能的計算上,以太坊與比特幣不同,比特幣由於只是單純的账本處理轉账信息,所以 TPS 是固定的每秒可以處理 7 筆交易,但在以太坊中不同。

以太坊由於智能合約的存在,每個交易的內容各不相同,所以每個區塊可以處理多少筆交易(TPS)取決於一個區塊中包含的交易的數據量大小,每個交易的數據量大小都是根據實時需求決定的,關於以太坊性能的機制我們可以了解到:

(以下信息對理解 Danksharding 有幫助,一定要看噢~)

→以太坊是按照 Gas 費來規定一個區塊的數據量上限的,一個區塊最高可以承載 3000 萬 GAS 的數據量

→以太坊不希望每個區塊的數據量都太大,所以每個區塊都有一個 Gas Target(目標 Gas)爲 1500 萬 Gas 的數據量

→以太坊有一套 Gas 的數據消耗標准,不同類型的數據消耗的 Gas 都是不一樣的,但根據菠菜的估算,每個區塊大概有 5kb~160kb 左右的大小,平均一個區塊是 60~70kb 左右的數據大小

→一個區塊的 Gas 消耗一旦超過了 Gas Target 也就是 1500 萬 Gas,那么下一個區塊的基礎費用就會貴 12.5%,如果低於的話就會降低基礎費用,這個機制是一個自動化的動態調節機制,可以在交易高峰時一直增加成本去緩解擁堵,同時在交易低迷時降低成本來吸引更多交易

那么通過了解了以上機制我們可以得知,以太坊的 TPS 是浮動的。我們可以通過區塊鏈瀏覽器看到每個區塊的交易數量來算出大概的 TPS,根據下圖可以看到,平均一個區塊按照剛好達到 Gas Target 來計算有 160 筆交易左右,最高的可以達到 300 筆交易以上。

按照每個區塊 12 秒的出塊時間 TPS 大概爲 13~30 筆交易左右,但根據目前已知以太坊的 TPS 最高可以達到每秒 45 筆交易。

圖源:Mainnet | Beacon Chain Explorer (Phase 0) for Ethereum 2.0 – BeaconScan

如果拿世界著名的交易系統 VISA 每秒可以處理幾萬筆交易的性能來說,想要成爲 “世界計算機” 的以太坊每秒最多處理 45 筆交易的性能實在是太弱了。所以以太坊迫切需要擴容來解決性能問題,這關乎到以太坊的未來,但擴容並非一件易事,因爲在區塊鏈行業中存在一個 “不可能三角”。

什么是區塊鏈不可能三角?

“區塊鏈不可能三角” 指的是一個公共區塊鏈無法同時滿足三個特性:去中心化、安全性、可擴展性。

  • 去中心化:指的是節點的去中心化程度,節點越多越分散越去中心化

  • 安全性:指的是整個區塊鏈網絡的安全,攻擊成本越高越安全

  • 可擴展性:指的是區塊鏈的處理交易性能,每秒可處理交易越多越具備可擴展性

如果我們從這三點的重要性來看的話,我們會發現去中心化和安全性是權重最高的,去中心化是以太坊的基石,正是去中心化賦予了以太坊中立、抗審查、开放性、數據所有權和近乎牢不可破的安全性。而安全性的重要性自然不必解釋,但以太坊的愿景是在去中心化並且安全的前提下實現可擴展性,實現難度可想而知,所以這也被稱爲 “區塊鏈不可能三角”。

圖源:以太坊愿景 | ethereum.org

目前以太坊的擴容解決方案有哪些?

我們知道了 “區塊鏈不可能三角” 中,以太坊要想實現擴容的前提必須是保證去中心化和安全性,要做到確保去中心化和安全性的話就必須在實現擴容中不能過多提高對節點的能力要求。

因爲節點是維護整個以太坊網絡中必不可少的角色,高要求的節點會阻礙更多人成爲節點越來越中心化,節點當然是門檻越低越好,低門檻節點會讓更多人參與進入讓以太坊更加去中心化和安全。

那么目前針對以太坊的擴容方案有兩種:Layer2 和分片(Sharding),Layer2 是針對底層區塊鏈(Layer1)擴容的一種鏈下解決方案,原理是將區塊鏈上的請求放在鏈下執行。Layer2 的方案有好幾種,本份研報只重點介紹一種 Layer2 方案那就是 Rollup:Rollup 原理是將數百筆交易在鏈下像攤煎餅一樣打包成一筆交易發送給以太坊來實現擴容,這樣每個人平攤下來上傳以太坊的費用就會很便宜,同時還可以繼承以太坊的安全性。

Rollup 目前分爲兩種類型:Optimism Rollup(樂觀 Rollup)和 ZK Rollup(零知識證明 Rollup),這兩個 Rollup 的區別簡單來說 Optimism Rollup 就是假設所有交易都是誠實可信的,把許多筆交易壓縮成一筆交易提交給以太坊,在提交後會有一段時間窗口(挑战期-目前是一周),任何人都可以質疑發起挑战來驗證交易的真實性,但用戶如果要將 OP Rollup 上的 ETH 轉到以太坊上則需要等待挑战期結束後才可以得到最終確認。

ZK Rollup 則是通過生成一個零知識證明來證明所有交易都是有效的,並將所有交易執行後的最終狀態變化上傳至以太坊。相比 Optimism Rollup 來說 ZK Rollup 更有前景,ZK Rollup 不需要像 Optimism Rollup 那樣上傳壓縮後的所有交易細節,只需要上傳一個零知識證明和最終的狀態變化的數據即可,意味着在可擴展性上可以比 OP Rollup 壓縮更多的數據,並且也不需要像 OP Rollup 那樣等待長達一周的挑战期,但 ZK Rollup 最大的缺點就是开發難度極大,所以短期來看 Optimism Rollup 會佔據 L2 大量的市場。

除了 Layer2 之外呢,還有一種擴容解決方案就是我們本文的主角分片(Sharding),我們知道了 Layer2 是將以太坊上的交易放到鏈下去處理。但不管 Layer2 怎么去處理數據,以太坊本身的性能還是沒有變,那么 Layer2 能實現的擴容效果其實是沒有那么顯著的。

分片就是在以太坊這條 Layer1 的層面上去實現擴容,但我們知道在以太坊上實現擴容的前提是確保以太坊的去中心化和安全性,那么就不能去增加太多對節點的負擔。

關於分片的具體實現方案也一直是以太坊社區不斷討論的一個話題,目前最新的方案便是本文的主題 Danksharding,那么也提到了 Danksharding 是最新的分片方案,在講 Danksharding 之前呢菠菜也會簡單介紹一下老的分片方案是什么樣的以及爲什么不採納。

二、以太坊初始分片方案 Sharding1.0

在講分片 1.0 方案之前,菠菜需要先介紹一下以太坊目前的 POS 共識機制是如何運行的,因爲這是理解分片 1.0 方案和 Danksharding 的必備前置知識,在講分片 1.0 方案上會簡短概括(知道大概要做什么就可以了)。

以太坊的 POS 共識機制是如何運作的?[7]

共識機制是使區塊鏈中所有維護網絡的節點達成一致的一套體系,其重要性不言而喻。以太坊在 2022 年 9 月 15 日完成了以太坊 2.0 升級階段中的 “The Merge”,即 POW 工作量證明的以太坊主網與 POS 權益證明機制的信標鏈進行了合並,POS 權益證明機制正式取代了 POW 工作量證明機制成爲了以太坊的共識機制。

我們知道在 POW 工作量證明機制中,礦工們是通過算力的堆疊來競爭出塊權,那么在 POS 權益證明機制中,礦工們則是通過質押 32 個 ETH 成爲以太坊的驗證節點來競爭出塊權(關於質押的方式這裏不展开介紹)。

除了共識機制的變化,以太坊的出塊時間也由之前浮動的出塊時間變爲了固定時間,分爲插槽(Slot)和周期(Epoch)兩個單位:Slot 爲 12 秒,Epoch 爲 6.4 分鐘。一個 Epoch 中包含了 32 個 Slot,簡單來說就是 12 秒出一個塊,6.4 分鐘出 32 個區塊爲一個周期(Epoch)。

當礦工質押 32 個 ETH 成爲驗證節點後,信標鏈就會通過隨機算法來選擇驗證節點作爲出塊節點來打包區塊,每一個區塊都會隨機選擇一次出塊節點。同時在每一個周期 Epoch 中,信標鏈還會將所有的驗證節點平均並隨機分配給每個區塊一組由至少 128 個驗證節點組成的 “委員會(Committees)”。

也就是說每個區塊會被分配所有節點數量 32 分之 1 數量的驗證節點,這些驗證節點組成的 “委員會(Committees)” 需要對每個區塊出塊節點打包的區塊進行驗證投票。當出塊節點打包區塊後,超過三分之二以上的驗證節點投票通過即可成功出塊。

初始分片方案 Sharding1.0 是什么樣的?[7]

在初始的分片方案 Sharding1.0 的設計理念中,以太坊從原本的一條主鏈被設計爲了最多 64 條分片鏈,通過增加多條新鏈的方式來實現擴容。在這個方案中,每條分片鏈負責處理以太坊的數據並交給信標鏈,信標鏈則負責整個以太坊的協調,每一條分片鏈的出塊節點和委員會都是由信標鏈來隨機分配。

信標鏈和分片鏈之間通過交聯 (crosslinks) 來進行實現鏈接,信標鏈的區塊會給同區塊的分片區塊一個哈希值,然後這個分片區塊帶着這個哈希值給到下一個信標區塊就可以實現交聯 (crosslinks) 了,如果錯過了的話則給到下一個信標區塊即可。

初始分片方案 Sharding1.0 方案存在哪些弊端?

簡單來說分片 1.0 的方案就是把以太坊切割成很多條分片鏈來一起處理數據然後將數據交給信標鏈來達到擴容,但這個方案存在許多弊端:

  • 开發困難:把以太坊分割成 64 條分片鏈的同時還要確保可以正常運行,在技術上要實現十分困難,並且越是復雜的系統越容易出現一些不可預料的漏洞,一旦出現問題要進行修復的話也會帶來許多麻煩。

  • 數據同步問題:信標鏈每一個周期 Epoch 就會重新打亂一次負責驗證的 “委員會 (committees)”,那么每次重新分配驗證節點就是一次大規模網絡的數據同步,因爲如果被節點分配到了一條新的分片鏈就需要同步這條分片鏈的數據,由於節點的性能帶寬各不相同,很難能保證在規定時間內完成同步。但如果讓節點直接同步所有分片鏈的數據的話,就會大大的增加對節點的負擔,這就會使得以太坊越來越中心化。[2]

  • 數據量增長問題:雖然以太坊的處理速度提高了許多,但多條分片鏈同時處理數據也帶來了存儲數據量的大量增長,以太坊數據量的膨脹速度將會是之前的許多倍,對於節點的存儲性能要求也會持續增加,從而導致更加中心化。

  • 無法解決 MEV 問題: 最大可提取價值 (MEV) 是指通過在區塊中添加和排除交易並更改區塊中的交易順序,可以從區塊生產中提取的超過標准區塊獎勵和燃料費用的最大值。在以太坊中一個交易發起後,這筆交易會被放在 mempool(一個保存待執行交易的池子)中等待被礦工打包,那么礦工就可以看到 mempool 中的所有交易,而礦工的權利是很大的,礦工掌握了交易的包含、排除和順序。

    如果有人通過支付更多的 Gas 費賄賂礦工調整了交易池中的交易順序而獲利,這就屬於一種最大可提取價值 MEV。[6]

舉個例子:

→有一種 MEV 手段叫「三明治攻擊」或「夾子攻擊」,這種提取 MEV 的手段是通過在鏈上監控大額的 DEX 交易,比如有人想在 Uniswap 上購买價值 100 萬美金的山寨幣,而這一筆交易會將這個山寨幣的價格拉高很多,在這筆交易被放入 mempool 的時候,監控機器人就可以檢測到這一筆交易,這時機器人就賄賂打包這個區塊的礦工將一筆买入這個山寨幣的操作插隊在這個人前面,隨後在這個人的購买操作之後進行一個賣出的操作,就像一個三明治一樣把這個進行大額 DEX 交易的人夾在中間,這樣發動「三明治攻擊」的人就從中獲取了山寨幣因爲這個人大額交易拉盤的利潤,而大額交易的這個人則造成了損失。[6]

MEV 的存在也一直給以太坊帶來一些負面的影響,比如「三明治攻擊」給用戶帶來的損失和更差的用戶體驗、搶跑者競爭導致的網絡擁堵、高 Gas 費甚至是節點中心化問題,因爲通過獲取 MEV 價值越多的節點可以通過收益不斷在網絡中佔據更多的份額,因爲更多收益=更多的 ETH=更多的質押權益,再加上 MEV 帶來的高昂成本(搶跑造成的網絡擁堵和高 GAS)會使得以太坊的用戶不斷流失,甚至如果 MEV 價值大幅超過了區塊獎勵還會造成整個以太坊的共識不穩定和安全性,而分片 1.0 方案無法解決 MEV 帶來的一系列問題。

隨着 2021 年末以太坊研究員&开發者 Dankrad Feist 提出以太坊新分片方案 Danksharding 後,Danksharding 被以太坊社區一致認爲是實現分片擴容的最佳方案,甚至可能會給以太坊帶來一場全新的革命。

三、什么是以太坊新分片方案 Danksharding?

Danksharding 使用了一套新的分片思路去解決以太坊的擴容問題,即圍繞着 Layer2 的 Rollup 進行擴容的分片方案,這套新的分片方案可以在不大量增加節點負擔且保證去中心化和安全性的同時解決可擴展性問題,同時也解決了 MEV 帶來的負面影響。

我們可以從下圖看到接下來的以太坊升級階段”The Surge“和”The Scourge“的目標分別爲:在 Rollup 中實現 10 萬+的 TPS 和避免 MEV 帶來的中心化以及其他協議上的風險。

圖 / 來源:vitalik.eth 翻譯:ethereum.cn

那么 Danksharding 到底是如何去解決以太坊的擴容問題的呢?讓我們先從 Danksharding 的前置方案 EIP-4844:Proto-Danksharding 开始講起。

前置方案 EIP-4844:Proto-Danksharding—新的交易類型 Blob

EIP-4844 給以太坊引入了一種新的交易類型—Blob Transcation,這種新的交易類型 Blob 可以爲以太坊提供了一個額外的外掛數據庫:

  • 一個 Blob 的大小約爲 128KB

  • 一個交易可以最多攜帶兩個 Blob-256KB

  • 每一個區塊的 Target Blob 爲 8 個-1MB,最大可承載 16 個 Blob-2MB(Target 的概念在擴容背景中有提及)

  • Blob 的數據是臨時存儲的,一段時間後會被清除(目前社區建議爲 30 天)

目前以太坊每個區塊平均大小只有 85KB 左右,Blob 給以太坊帶來的額外存儲空間是巨大的,要知道以太坊所有账本的總數據量大小從以太坊誕生至今也只有大約 1TB 左右,而 Blob 每年可以爲以太坊帶來 2.5TB~5TB 的額外數據量,是整個以太坊账本數據量的好幾倍。

EIP-4844 引入的 Blob 交易可以說是爲 Rollup 量身定制的,Rollup 的數據以 Blob 的形式上傳至以太坊,額外的數據空間可以使 Rollup 實現更高的 TPS 和更低的成本,同時也將原本 Rollup 佔據的區塊空間釋放給了更多用戶。

由於 Blob 的數據是臨時存儲的,數據量的暴增並不會對節點的存儲性能造成越來越重的負擔,如果只是臨時存儲一個月的 Blob 數據量的話,從同步的數據量來看每一個區塊節點需要多下載 1MB~2MB 的數據量,對於節點的帶寬要求來說似乎不是什么負擔。那么從數據的存儲量來看,對於節點來說只需要多下載並保存固定的 200~400GB 左右的數據量(一個月的數據量),在保證去中心化和安全性的同時只付出了增加一點點節點負擔的代價的情況下,換來的 TPS 的提高和成本的降低則是以數十甚至上百倍來計算的,這對於解決以太坊的可擴展性問題來說簡直是絕佳的方案。

如果數據被清除了用戶想訪問以前的數據怎么辦?

首先以太坊共識協議的目的不是爲了保證所有歷史數據的永遠存儲。相反,其目的是提供一個高度安全的實時公告板,並爲其他去中心化協議留出長期存儲空間。而公告板的存在是爲了確保在公告板上發布的數據有足夠長的時間停留,任何想要這些數據的用戶或者協議,都有足夠的時間來抓取數據這些數據並進行保存,所以保存這些 Blob 數據的職責就交給了其他角色比如 Layer2 的項目方、去中心化存儲協議等。[3]

Danksharding—完整擴容方案

EIP-4844 實現了以太坊圍繞 Rollup 進行擴容的第一步,但對於以太坊來說 EIP-4844 達到的擴容效果是遠遠不夠的。完整的 Danksharding 方案將 Blob 可以承載的數據量從每個區塊 1~2MB 進一步擴充至 16MB~32MB,並且提出了新的機制出塊者-打包者分離(PBS)去解決 MEV 帶來的問題。

那么我們需要知道要在 EIP-4844 的基礎上繼續進行擴容會存在哪些難題:

  • 節點負擔過大:我們知道 EIP-4844 中只有 1~2MB 大小的 Blob 對節點增加的負擔是完全可以接受的,但如果將 Blob 的數據量擴大 16 倍至 16~32MB 的話,不管是在數據同步還是數據存儲上的負擔都會使得節點的負擔過大從而以太坊的去中心化程度降低。

  • 數據可用性問題: 如果節點不去下載全部的 Blob 數據,就會面臨數據可用性問題,因爲數據不在鏈上开放且隨時可訪問,比如以太坊節點對 Optimism Rollup 上的某筆交易存疑想發起挑战,但 Optimism Rollup 不交出這段數據,那么拿不到原始數據就無法證明這個交易是有問題的,所以要解決數據可用性問題就必須確保數據是隨時开放且可訪問。

那么 Danksharding 是如何解決這些問題的呢?

數據可用性採樣(Data Availability Sampling)

Danksharding 提出了一個方案—數據可用性採樣(Data Availability Sampling)來實現降低節點負擔的同時也保證了數據可用性。

數據可用性採樣(DAS)的思想是將 Blob 中的數據切割成數據碎片,並且讓節點由下載 Blob 數據轉變爲隨機抽查 Blob 數據碎片,讓 Blob 的數據碎片分散在以太坊的每個節點中,但是完整的 Blob 數據卻保存在整個以太坊账本中,前提是節點需要足夠多且去中心化。

舉個例子:比如 Blob 的數據被切割成了 10 個碎片,全網有 100 個節點,每個節點都會隨機抽查下載一個數據碎片並且將抽查的碎片編號提交到區塊中,只要一個區塊中可以湊齊所有編號的碎片,那么以太坊就會默認這個 Blob 的數據是可用的,只要將碎片拼湊起來就可以還原出原始數據。但也會有極低的概率出現 100 個節點都沒有抽到某一個編號的碎片的情況,這樣數據就會缺失,在一定程度上降低了安全性,但在概率上是可以接受的。

Danksharding 爲了實現數據可用性採樣(DAS)採用了兩個技術:糾刪碼(Erasure Coding)和 KZG 多項式承諾(KZG Commitment)

糾刪碼(Erasure Coding)

糾刪碼(Erasure Coding)是一種編碼容錯技術,使用糾刪碼切割數據可以使得所有以太坊節點在只擁有 50% 以上數據碎片的情況下就可以還原出原始數據,這樣就大大減少了數據缺失的概率,具體的實現原理會比較復雜,這裏用一個數學公式來舉例子大概解釋一下原理:[2]

→首先構造一個函數 f(x) = ax + b,隨便取 4 個 x 值

→設 m = f(0) = b、n = f(1) = a + b,可以得出 a = n – b、b = m

→再設 p = f(2)、q = f(3),可以得出 p = 2a + b = 2n – m, q = 3a + b = 3n – 2m

→然後 m、n、p、q 四個碎片分散在全網的節點中

→根據數學公式,我們只需要找到其中兩個碎片就可以算出另外兩個碎片是什么

→如果找到 n 和 m,直接可以算出 q=3n-2m 和 p=2n-m

→如果找到 q 和 p,可以將(2p=4n-2m)-(q=3n-2m)得出 2p-q=n 然後就可以直接算出 m 了

簡單來說就是糾刪碼利用數學原理將 Blob 數據切割成很多個數據碎片,以太坊的節點不需要收集所有的數據碎片,只需要收集 50% 以上的碎片就可以還原出 Blob 的原始數據,這樣極大的降低了碎片收集不夠的概率,其概率可以忽略不計。

KZG 多項式承諾(KZG Commitment)

KZG 多項式承諾(KZG Commitment)是一種密碼學技術,用來解決糾刪碼的數據完整性問題。由於節點只抽查被糾刪碼進行切割後的數據碎片,節點並不知道這個數據碎片是不是真的來源於 Blob 的原始數據,所以負責編碼的角色還需要生成一個 KZG 多項式承諾來證明這個糾刪碼的數據碎片確實是原始數據中的一部分,KZG 的作用有點類似於默克爾樹但形狀不同,KZG 所有的證明都在同一個多項式上。

Danksharding 通過糾刪碼和 KZG 多項式承諾實現了數據可用性採樣(DAS)使得在 Blob 額外攜帶數據量擴充至 16MB~32MB 的情況下大幅的降低了節點的負擔,目前以太坊社區還提出了一種叫 2D KZG scheme 的方案去進一步切割數據碎片降低帶寬和計算量的要求,但最終具體使用的算法社區仍在熱烈討論中,包括 DAS 的設計上也在不斷地優化完善。

對於以太坊來說數據可用性採樣(DAS)解決了實現 Blob 數據量 16MB~32MB 擴容的同時降低了節點的負擔,但似乎還存在一個問題:誰來對原始數據進行編碼?

如果要對 Blob 原始數據進行編碼的話前提是進行編碼的節點手裏必須有完整的原始數據,要做到這一點的話就會對節點有較高的要求。那么菠菜之前提到,Danksharding 提出了一個新的機制**出塊者-打包者分離(PBS)**去解決 MEV 帶來的問題,那么其實這個方案在解決 MEV 問題的同時,其實也解決了編碼的問題。

提議者-打包者分離(Proposer/Builder Separation)

首先我們知道數據可用性採樣(DAS)降低了節點驗證 Blob 的負擔,實現了低配置和去中心化的驗證,但創建這個區塊的話就需要去擁有完整的 Blob 數據並進行編碼處理,這提高了許多對以太坊全節點的要求,提議者-打包者分離(PBS)則提出將節點分爲打包者(Builder)和提議者(Proposer)兩個角色,性能高的節點可以成爲打包者(Builder),而性能低的節點則成爲提議者(Proposer)。

目前以太坊的節點分爲兩種:全節點和輕節點。全節點需要同步以太坊上所有的數據比如交易列表和區塊 Body 等,全節點擔任着區塊打包和驗證出塊兩個角色。由於全節點可以看見區塊內所有的信息,所以全節點可以對區塊的交易進行重新順序或添加刪除來獲取 MEV 價值。輕節點則不需要同步所有的數據,只需要同步區塊頭負責驗證出塊即可。[1]

在實現提議者-打包者分離(PBS)之後:

→性能配置高的節點可以成爲打包者(Builder),打包者只需要負責下載 Blob 數據進行編碼並創建區塊(Block),然後廣播給其他的節點來進行抽查,對於打包者(Builder)來說,因爲同步數據量和帶寬要求較高,所以會相對中心化。

→性能配置較低的節點可以成爲提議者(Proposer),提議者只需要驗證數據的有效性並創建和廣播區塊頭(Block Header),但對於提議者(Proposer)來說,同步數據量和帶寬要求較低,所以會去中心化。

PBS 通過將打包和驗證的角色進行分離實現了節點的工作分工,讓性能配置高的節點負責下載全部數據進行編碼分發,讓性能配置低的節點來負責抽查驗證,那么 MEV 問題是如何解決的呢?

抗審查清單(crList)

由於 PBS 分離了打包和驗證的工作,所以對於打包者(Builder)來說其實是擁有了更大的審查交易的能力,打包者可以故意忽略掉某些交易並且隨意排序並插入自己想插入的交易去獲取 MEV,但抗審查清單(crList)解決了這些問題。

抗審查清單(crList)的機制:[1]

→在打包者(Builder)打包區塊交易之前,提議者(Proposer)會先公布一個抗審查清單(crList),這個 crList 中包含着 mempool 中的所有交易

→打包者(Builder)只能選擇打包並對 crList 裏的交易進行排序,這意味着打包者不能插入自己的私有交易去獲取 MEV,也不能去故意拒絕某個交易(除非 Gas limit 滿了)

→打包者(Builder)打包好之後將最終版本的交易列表 Hash 廣播給提議者(Proposer),提議者選擇其中一個交易列表生成區塊頭(Block Header)並廣播

→節點同步數據時會從提議者(Proposer)那獲取區塊頭,然後從打包者(Builder)那獲取區塊 Body,確保區塊 Body 是最終選擇的版本

通過抗審查清單(crList)解決了像「三明治攻擊」這種 MEV 帶來的負面影響,節點無法再通過插入私有交易來獲取類似的 MEV。

以太坊關於 PBS 具體的實現方案仍在探討中,目前可能初步實現的方案爲雙槽 PBS。

雙槽 PBS(Two-slot Proposer-Builder Separation)

雙槽 PBS 採用競標的模式來決定出塊:[2]

1、打包者(Builder)拿到 crList 後創建交易列表的區塊頭並出價

2、提議者(Proposer)選擇最終競標成功的區塊頭和打包者(Builder),提議者無條件獲得中標費(不管是否生成有效區塊)

3、驗證委員會(Committees)確認中標的區塊頭

4、打包者(Builder)披露中標的區塊 Body

5、驗證委員會(Committees)確認中標的區塊 Body 並進行驗證投票(通過則出塊,如果打包者故意不給區塊 Body 則視爲區塊不存在)

雖然打包者(Builder)仍然可以通過調整交易順序來獲取 MEV,但雙槽 PBS 的競標機制使得這些打包者之間开始 “內卷”。在大家都要出價競爭出塊的情況下,中心化的打包者們通過 MEV 獲取的利潤就會被不斷擠壓,最終的利潤則會分配給去中心化的提議者(Proposer)們,這解決了中心化的打包者通過獲取 MEV 越來越中心化的問題。

但雙槽 PBS 有一個設計缺陷:我們看這個設計的名字中有 “雙槽(Two-slot)”,就是有兩個插槽 slot,這意味着在這個方案中進行一次有效的出塊時間被延長至了 24 秒(一個 slot=12 秒),如何解決這個問題以太坊社區也一直在熱烈討論中。

總結

Danksharding 爲以太坊解決 “區塊鏈不可能三角” 提供了一種變革性的解決方案,即在確保以太坊去中心化和安全性的同時實現可擴展性:

  • 通過前置方案 EIP-4844:Proto-Danksharding 引入了新的交易類型 Blob,Blob 攜帶的 1MB~2MB 額外數據量可以幫助以太坊在 Rollup 上實現更高的 TPS 和更低的成本

  • 通過糾刪碼和 KZG 多項式承諾實現了數據可用性採樣(DAS),讓節點只需要抽查部分數據碎片即可驗證數據的可用性並降低了節點的負擔

  • 通過實現了數據可用性採樣(DAS),Blob 的額外數據量擴充至 16MB~32MB,讓擴容效果更上一層樓

  • 通過提議者-打包者分離(PBS)將驗證-打包區塊的工作分離爲兩個節點角色,實現了打包節點偏去中心化、驗證節點去中心化

  • 通過抗審查清單(crList)和雙槽 PBS 極大降低了 MEV 帶來的負面影響問題,打包者無法插入私有交易或審查某一筆交易

如果不出意外的話 Danksharding 的前置方案 EIP-4844 將會在以太坊上海升級之後的坎昆升級中正式落地,在 EIP-4844 方案落地實現後最直接的利好便是 Layer2 中的 Rollup 以及 Rollup 上的生態。更高的 TPS 和更低的成本十分適合鏈上的高頻應用,我們不妨想象可能會誕生出一些 “殺手級應用”。

Danksharding 實現的中心化出塊+去中心化驗證+抗審查將會給以太坊帶來一輪全新的公鏈敘事,除了 Layer2 之外,模塊化區塊鏈與 Danksharding 後的以太坊又會碰撞出什么樣的化學反應呢?

菠菜相信 Danksharding 的落地將會改寫整個遊戲規則,以太坊將會引領區塊鏈行業走向一個新的時代!

參考文獻

[1] Data Availability,區塊鏈的存儲擴容

[2] 一文讀懂以太坊新升級方案 Danksharding

[3] Proto-Danksharding FAQ – HackMD

[4] V 神科普的「Danksharding」到底是什么?

[5] V 神推薦丨深入了解以太坊的分片路线圖,看這一份報告就足夠

[6] Buidler DAO 文章:如何在錢包被盜後從黑客手裏搶救 NFT?

[7] 歷史重演?詳解以太坊 2.0 與硬分叉

標題:Danksharding、4844 萬字研報:白話解讀「不可能三角」的變革性解決方案

地址:https://www.coinsdeep.com/article/10358.html

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。

你可能還喜歡
熱門資訊