拆解坎昆升級(jí)( Danksharding 和 EIP4844 )

Hacker?Dōjō Web3前沿技術(shù) workshop文稿
Workshop回顧:https://b23.tv/PCOubDB
內(nèi)容貢獻(xiàn)者:Syshems 北郵在讀碩士
本項(xiàng)目由Hacker Dōjō 資助,文章轉(zhuǎn)載請(qǐng)注明出處。
??學(xué)習(xí)量子計(jì)算、密碼學(xué)、Space等Web3前沿技術(shù)
??認(rèn)領(lǐng)Bounty,賺取賞金
??參與Hackathon,獲得資助
更多Web3精彩技術(shù)分享盡在Dōjō??
WeChat: @HackerDojo0

研究主題:拆解坎昆升級(jí)( Danksharding 和 EIP4844 )
內(nèi)容提要:1.?以太坊擴(kuò)容背景和歷史; 2.?EIP-4844 為什么很重要; 3. Danksharding 方案
擴(kuò)容背景

單個(gè)區(qū)塊的 Gas 有上限。以太坊是按照 Gas 費(fèi)來(lái)規(guī)定一個(gè)區(qū)塊的數(shù)據(jù)量上限的,一個(gè)區(qū)塊最高可以承載 3000 萬(wàn) GAS 的數(shù)據(jù)量
大區(qū)塊的代價(jià)是犧牲了去中心化。以太坊不希望每個(gè)區(qū)塊的數(shù)據(jù)量都太大,所以每個(gè)區(qū)塊都有一個(gè) Gas Target(目標(biāo) Gas)為 1500 萬(wàn) Gas 的數(shù)據(jù)量
Gas 自動(dòng)化調(diào)節(jié)機(jī)制。一個(gè)區(qū)塊的 Gas 消耗一旦超過(guò)了 Gas Target (也就是 1500 萬(wàn) Gas),那么下一個(gè)區(qū)塊的基礎(chǔ)費(fèi)用就會(huì)貴 12.5%,如果低于的話就會(huì)降低基礎(chǔ)費(fèi)用。這樣可以在交易高峰時(shí)一直增加成本去緩解擁堵,同時(shí)在交易低迷時(shí)降低成本來(lái)吸引更多交易。
歷史擴(kuò)容方案(Layer2+Sharding)

Layer2:
Optimism Rollup:假設(shè)所有交易都是誠(chéng)實(shí)可信的,把許多筆交易壓縮成一筆交易提交給以太坊,在提交后會(huì)有一段時(shí)間窗口(挑戰(zhàn)期-目前是一周),任何人都可以質(zhì)疑發(fā)起挑戰(zhàn)來(lái)驗(yàn)證交易的真實(shí)性,但用戶如果要將 OP Rollup 上的 ETH 轉(zhuǎn)到以太坊上則需要等待挑戰(zhàn)期結(jié)束后才可以得到最終確認(rèn)。
ZK Rollup:只需要上傳一個(gè)零知識(shí)證明和最終的狀態(tài)變化的數(shù)據(jù)即可,意味著在可擴(kuò)展性上可以比 OP Rollup 壓縮更多的數(shù)據(jù),并且也不需要像 OP Rollup 那樣等待長(zhǎng)達(dá)一周的挑戰(zhàn)期。但技術(shù)上開(kāi)發(fā)難度較大。
分片(Sharding):
在講解 Sharding 之前,我們先來(lái)回顧下 ETH 的出塊過(guò)程。
合并后的以太坊從 PoW 轉(zhuǎn)為 PoS ,12 秒出一個(gè)塊(Slot),6.4 分鐘出 32 個(gè)區(qū)塊為一個(gè)周期(Epoch)。當(dāng)?shù)V工質(zhì)押 32 個(gè) ETH 成為驗(yàn)證節(jié)點(diǎn)(Validator)后,信標(biāo)鏈就會(huì)通過(guò)隨機(jī)算法來(lái)選擇驗(yàn)證節(jié)點(diǎn)作為出塊節(jié)點(diǎn)來(lái)打包區(qū)塊,每一個(gè)區(qū)塊都會(huì)隨機(jī)選擇一次出塊節(jié)點(diǎn)。同時(shí)在每一個(gè)周期 Epoch 中,每個(gè)區(qū)塊(Slot)會(huì)被分配所有節(jié)點(diǎn)數(shù)量的 32 分之 1 數(shù)量的驗(yàn)證節(jié)點(diǎn)組成的 “委員會(huì)(Committees)” 委員會(huì)需要對(duì)每個(gè)區(qū)塊出塊節(jié)點(diǎn)打包的區(qū)塊進(jìn)行驗(yàn)證投票。當(dāng)出塊節(jié)點(diǎn)打包區(qū)塊后,超過(guò)三分之二以上的驗(yàn)證節(jié)點(diǎn)投票通過(guò)即可成功出塊。
Sharding 1.0(已廢棄,跳過(guò)不影響)
Sharding 1.0,是對(duì) Danksharding 出現(xiàn)之前的以太坊分片設(shè)計(jì)方案的統(tǒng)稱,對(duì)此做些大概了解是有必要的。在初始的分片方案 Sharding1.0 的設(shè)計(jì)理念中,本質(zhì)上是想實(shí)現(xiàn)「狀態(tài)分片」。
狀態(tài)分片 是區(qū)塊鏈技術(shù)中的一種分片方式,它只存儲(chǔ)部分狀態(tài),而不是完整的區(qū)塊鏈狀態(tài)。狀態(tài)分片可以減少狀態(tài)儲(chǔ)存冗余,是最為理想化的分片方式,但是面臨著跨分片通信、數(shù)據(jù)有效性和數(shù)據(jù)可用性等一系列挑戰(zhàn)。狀態(tài)分片是按照賬戶的地址進(jìn)行分片的,一個(gè)特定的分片只會(huì)保留一部分狀態(tài),而不像是交易分片那樣每個(gè)節(jié)點(diǎn)都保存整個(gè)網(wǎng)絡(luò)中的所有狀態(tài)。狀態(tài)分片是區(qū)塊鏈底層Layer1擴(kuò)容方案之一,可以提高整個(gè)區(qū)塊鏈系統(tǒng)的性能。
以太坊從原本的一條主鏈被設(shè)計(jì)為了最多 64 條分片鏈,通過(guò)增加多條新鏈的方式來(lái)實(shí)現(xiàn)擴(kuò)容。在這個(gè)方案中,每條分片鏈負(fù)責(zé)處理以太坊的數(shù)據(jù)并交給信標(biāo)鏈,信標(biāo)鏈則負(fù)責(zé)整個(gè)以太坊的協(xié)調(diào),每一條分片鏈的出塊節(jié)點(diǎn)和委員會(huì)都是由信標(biāo)鏈來(lái)隨機(jī)分配,但存在的核心問(wèn)題就是「數(shù)據(jù)同步」和「不斷增長(zhǎng)的 MEV 」。

Danksharding(今天的主角)

Danksharding 使用了一套新的分片思路去解決以太坊的擴(kuò)容問(wèn)題,即圍繞著 Layer2 的 Rollup 進(jìn)行擴(kuò)容的分片方案,這套新的分片方案可以在不大量增加節(jié)點(diǎn)負(fù)擔(dān)且保證去中心化和安全性的同時(shí)解決可擴(kuò)展性問(wèn)題,同時(shí)也解決了 MEV 帶來(lái)的負(fù)面影響。

EIP-4844

EIP-4844,也被稱為 proto-danksharding 提案。它的主要目的是在不犧牲去中心化的情況下,降低以太坊 Layer2 費(fèi)用100倍。Proto-danksharding 用于實(shí)現(xiàn)構(gòu)成完整 Danksharding 規(guī)范的大部分邏輯和“腳手架”(例如交易格式 Blob Transcation 、驗(yàn)證規(guī)則等)
一個(gè) Blob 的大小約為 128 KB(平均一個(gè)區(qū)塊是 60~70kb 左右的數(shù)據(jù)大?。?/p>
一個(gè)交易可以最多攜帶兩個(gè) Blob(256KB)
每一個(gè)區(qū)塊的 Target Blob 為 8 個(gè)(1MB),最大可承載 16 個(gè) Blob(2MB)
Blob 不需要像 callData 一樣作為 history log 被永久存儲(chǔ)(目前社區(qū)建議為 30 天)

Blob 給以太坊帶來(lái)的額外存儲(chǔ)空間是巨大的,要知道以太坊所有賬本的總數(shù)據(jù)量大小從以太坊誕生至今也只有大約 1TB 左右,而 Blob 每年可以為以太坊帶來(lái) 2.5TB~5TB 的額外數(shù)據(jù)量,是整個(gè)以太坊賬本數(shù)據(jù)量的好幾倍。
EIP-4844 引入的 Blob 交易可以說(shuō)是為 Rollup 量身定制的,Rollup 的數(shù)據(jù)以 Blob 的形式上傳至以太坊,額外的數(shù)據(jù)空間可以使 Rollup 實(shí)現(xiàn)更高的 TPS 和更低的成本,同時(shí)也將原本 Rollup 占據(jù)的區(qū)塊空間釋放給了更多用戶。
EIP4844存在的問(wèn)題

1. 節(jié)點(diǎn)負(fù)擔(dān)過(guò)大:我們知道 EIP-4844 中只有 1~2MB 大小的 Blob 對(duì)節(jié)點(diǎn)增加的負(fù)擔(dān)是完全可以接受的,但如果將 Blob 的數(shù)據(jù)量擴(kuò)大 16 倍至 16~32MB 的話,不管是在數(shù)據(jù)同步還是數(shù)據(jù)存儲(chǔ)上的負(fù)擔(dān)都會(huì)使得節(jié)點(diǎn)的負(fù)擔(dān)過(guò)大從而以太坊的去中心化程度降低。
2. 數(shù)據(jù)可用性問(wèn)題:如果節(jié)點(diǎn)不去下載全部的 Blob 數(shù)據(jù),就會(huì)面臨數(shù)據(jù)可用性問(wèn)題,因?yàn)閿?shù)據(jù)不在鏈上開(kāi)放且隨時(shí)可訪問(wèn),比如以太坊節(jié)點(diǎn)對(duì) Optimism Rollup 上的某筆交易存疑想發(fā)起挑戰(zhàn),但 Optimism Rollup 不交出這段數(shù)據(jù),那么拿不到原始數(shù)據(jù)就無(wú)法證明這個(gè)交易是有問(wèn)題的,所以要解決數(shù)據(jù)可用性問(wèn)題就必須確保數(shù)據(jù)是隨時(shí)開(kāi)放且可訪問(wèn)。
Danksharding擴(kuò)容方案

完善EIP4844(降低節(jié)點(diǎn)負(fù)擔(dān))& 解決MEV問(wèn)題(出塊者-打包者分離(PBS))
數(shù)據(jù)可用性采樣(DAS)
數(shù)據(jù)可用性采樣(DAS)的思想是將 Blob 中的數(shù)據(jù)切割成數(shù)據(jù)碎片,并且讓節(jié)點(diǎn)由下載 Blob 數(shù)據(jù)轉(zhuǎn)變?yōu)殡S機(jī)抽查 Blob 數(shù)據(jù)碎片,讓 Blob 的數(shù)據(jù)碎片分散在以太坊的每個(gè)節(jié)點(diǎn)中,但是完整的 Blob 數(shù)據(jù)卻保存在整個(gè)以太坊賬本中,前提是節(jié)點(diǎn)需要足夠多且去中心化。
舉個(gè)例子:比如 Blob 的數(shù)據(jù)被切割成了 10 個(gè)碎片,全網(wǎng)有 100 個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)都會(huì)隨機(jī)抽查下載一個(gè)數(shù)據(jù)碎片并且將抽查的碎片編號(hào)提交到區(qū)塊中,只要一個(gè)區(qū)塊中可以湊齊所有編號(hào)的碎片,那么以太坊就會(huì)默認(rèn)這個(gè) Blob 的數(shù)據(jù)是可用的,只要將碎片拼湊起來(lái)就可以還原出原始數(shù)據(jù)。但也會(huì)有極低的概率出現(xiàn) 100 個(gè)節(jié)點(diǎn)都沒(méi)有抽到某一個(gè)編號(hào)的碎片的情況,這樣數(shù)據(jù)就會(huì)缺失,在一定程度上降低了安全性,但在概率上是可以接受的。

簡(jiǎn)單來(lái)說(shuō)就是糾刪碼利用數(shù)學(xué)原理將 Blob 數(shù)據(jù)切割成很多個(gè)數(shù)據(jù)碎片,以太坊的節(jié)點(diǎn)不需要收集所有的數(shù)據(jù)碎片,只需要收集 50% 以上的碎片就可以還原出 Blob 的原始數(shù)據(jù),這樣極大的降低了碎片收集不夠的概率,其概率可以忽略不計(jì)。

KZG 多項(xiàng)式承諾
KZG 多項(xiàng)式承諾(KZG Commitment)是一種密碼學(xué)技術(shù),用來(lái)解決糾刪碼的數(shù)據(jù)完整性問(wèn)題。由于節(jié)點(diǎn)只抽查被糾刪碼進(jìn)行切割后的數(shù)據(jù)碎片,節(jié)點(diǎn)并不知道這個(gè)數(shù)據(jù)碎片是不是真的來(lái)源于 Blob 的原始數(shù)據(jù),所以負(fù)責(zé)編碼的角色還需要生成一個(gè) KZG 多項(xiàng)式承諾來(lái)證明這個(gè)糾刪碼的數(shù)據(jù)碎片確實(shí)是原始數(shù)據(jù)中的一部分,KZG 的作用有點(diǎn)類似于默克爾樹(shù)但形狀不同,KZG 所有的證明都在同一個(gè)多項(xiàng)式上。
出塊者-打包者分離(PBS)解決打包數(shù)據(jù)和分發(fā)數(shù)據(jù)的分工問(wèn)題
對(duì)于以太坊來(lái)說(shuō)數(shù)據(jù)可用性采樣(DAS)解決了實(shí)現(xiàn) Blob 數(shù)據(jù)量 16MB~32MB 擴(kuò)容的同時(shí)降低了節(jié)點(diǎn)的負(fù)擔(dān),但似乎還存在一個(gè)問(wèn)題:誰(shuí)來(lái)對(duì)原始數(shù)據(jù)進(jìn)行編碼?
如果要對(duì) Blob 原始數(shù)據(jù)進(jìn)行編碼的話前提是進(jìn)行編碼的節(jié)點(diǎn)手里必須有完整的原始數(shù)據(jù),要做到這一點(diǎn)的話就會(huì)對(duì)節(jié)點(diǎn)有較高的要求。那么菠菜之前提到,Danksharding 提出了一個(gè)新的機(jī)制出塊者-打包者分離(PBS)去解決 MEV 帶來(lái)的問(wèn)題,那么其實(shí)這個(gè)方案在解決 MEV 問(wèn)題的同時(shí),其實(shí)也解決了編碼的問(wèn)題。
1. 性能配置高的節(jié)點(diǎn)可以成為打包者(Builder),打包者只需要負(fù)責(zé)下載 Blob 數(shù)據(jù)進(jìn)行編碼并創(chuàng)建區(qū)塊(Block),然后廣播給其他的節(jié)點(diǎn)來(lái)進(jìn)行抽查,對(duì)于打包者(Builder)來(lái)說(shuō),因?yàn)橥綌?shù)據(jù)量和帶寬要求較高,所以會(huì)相對(duì)中心化。
2. 性能配置較低的節(jié)點(diǎn)可以成為提議者(Proposer),提議者只需要驗(yàn)證數(shù)據(jù)的有效性并創(chuàng)建和廣播區(qū)塊頭(Block Header),但對(duì)于提議者(Proposer)來(lái)說(shuō),同步數(shù)據(jù)量和帶寬要求較低,所以會(huì)去中心化。

抗審查清單(crList)限制解決出塊者 MEV 的能力
但對(duì)于打包者(Builder)來(lái)說(shuō)其實(shí)是擁有了更大的審查交易的能力,打包者可以故意忽略掉某些交易并且隨意排序并插入自己想插入的交易去獲取 MEV,但抗審查清單(crList)解決了這些問(wèn)題。

抗審查清單(crList)的機(jī)制如下:
在打包者(Builder)打包區(qū)塊交易之前,提議者(Proposer)會(huì)先公布一個(gè)抗審查清單(crList),這個(gè) crList 中包含著 mempool 中的所有交易
打包者(Builder)只能選擇打包并對(duì) crList 里的交易進(jìn)行排序,這意味著打包者不能插入自己的私有交易去獲取 MEV,也不能去故意拒絕某個(gè)交易(除非 Gas limit 滿了)
打包者(Builder)打包好之后將最終版本的交易列表 Hash 廣播給提議者(Proposer),提議者選擇其中一個(gè)交易列表生成區(qū)塊頭(Block Header)并廣播
節(jié)點(diǎn)同步數(shù)據(jù)時(shí)會(huì)從提議者(Proposer)那獲取區(qū)塊頭,然后從打包者(Builder)那獲取區(qū)塊 Body,確保區(qū)塊 Body 是最終選擇的版本
總結(jié)回顧

Danksharding 為以太坊解決 “區(qū)塊鏈不可能三角” 提供了一種變革性的解決方案,即在確保以太坊去中心化和安全性的同時(shí)實(shí)現(xiàn)可擴(kuò)展性:
通過(guò)前置方案 EIP-4844:Proto-Danksharding 引入了新的交易類型 Blob,Blob 攜帶的 1MB~2MB 額外數(shù)據(jù)量可以幫助以太坊在 Rollup 上實(shí)現(xiàn)更高的 TPS 和更低的成本
通過(guò)糾刪碼和 KZG 多項(xiàng)式承諾實(shí)現(xiàn)了數(shù)據(jù)可用性采樣(DAS),讓節(jié)點(diǎn)只需要抽查部分?jǐn)?shù)據(jù)碎片即可驗(yàn)證數(shù)據(jù)的可用性并降低了節(jié)點(diǎn)的負(fù)擔(dān)
通過(guò)實(shí)現(xiàn)了數(shù)據(jù)可用性采樣(DAS),Blob 的額外數(shù)據(jù)量擴(kuò)充至 16MB~32MB,讓擴(kuò)容效果更上一層樓
通過(guò)提議者-打包者分離(PBS)將驗(yàn)證-打包區(qū)塊的工作分離為兩個(gè)節(jié)點(diǎn)角色,實(shí)現(xiàn)了打包節(jié)點(diǎn)偏去中心化、驗(yàn)證節(jié)點(diǎn)去中心化
通過(guò)抗審查清單(crList)和雙槽 PBS 極大降低了 MEV 帶來(lái)的負(fù)面影響問(wèn)題,打包者無(wú)法插入私有交易或?qū)彶槟骋还P交易
如果不出意外的話 Danksharding 的前置方案 EIP-4844 將會(huì)在以太坊上海升級(jí)之后的坎昆升級(jí)中正式落地,在 EIP-4844 方案落地實(shí)現(xiàn)后最直接的利好便是 Layer2 中的 Rollup 以及 Rollup 上的生態(tài)。更高的 TPS 和更低的成本十分適合鏈上的高頻應(yīng)用,我們不妨想象可能會(huì)誕生出一些 “殺手級(jí)應(yīng)用”。
參考:https://research.web3caff.com/zh/archives/6259

??關(guān)于Dorahacks
DoraHacks 是一個(gè)全球范圍內(nèi)的極客運(yùn)動(dòng)、全球黑客馬拉松組織者,也是全球最活躍的多鏈 Web3 開(kāi)發(fā)者平臺(tái)之一。DoraHacks.io平臺(tái)使得世界各地的Hacker和開(kāi)源開(kāi)發(fā)者可以參與黑客馬拉松、Bounty、Grant、Grant DAO,以及公共物品質(zhì)押等加密原生協(xié)議和基礎(chǔ)設(shè)施進(jìn)行協(xié)作并獲得資助。到目前為止,DoraHacks 社區(qū)的 4000 多個(gè)項(xiàng)目已經(jīng)獲得了來(lái)自全球行業(yè)支持者超過(guò) 3000 萬(wàn)美元的資助。大量開(kāi)源社區(qū)、DAO 和 超過(guò)50個(gè)主要區(qū)塊鏈生態(tài)系統(tǒng)正在積極使用 Dora 的基礎(chǔ)設(shè)施(DoraHacks.io)進(jìn)行開(kāi)源融資和社區(qū)治理。
??關(guān)于Dorahacks DAO Bounty
Dorahacks DAO Bounty,為各類DAO和組織賦能!
Bounty計(jì)劃為DAO和組織提供了一個(gè)強(qiáng)大的平臺(tái),通過(guò)社區(qū)激勵(lì)的形式,發(fā)布問(wèn)題,協(xié)調(diào)任務(wù),鼓勵(lì)用戶積極參與。
作為Bounty發(fā)布者,您可以根據(jù)我們的指南,發(fā)布社區(qū)相關(guān)的懸賞任務(wù),解決問(wèn)題的同時(shí),提升社區(qū)活躍度:https://dorahacks.io/blog/guides/publish-a-bounty/
作為賞金獵人,您可以在DAO Bounty計(jì)劃中發(fā)揮自己的專長(zhǎng)和能力,認(rèn)領(lǐng)懸賞,解決問(wèn)題,獲得酬金:https://dorahacks.io/daobounty
??關(guān)于Hacker Dōjō
Hacker Dōjō是由Hacker共建的加密、Web3前沿技術(shù)開(kāi)源知識(shí)社區(qū)。Dōjō會(huì)以直播/音頻/文字等形式定期組織分享session,內(nèi)容包括Web3領(lǐng)域前沿技術(shù)論文解讀、技術(shù)研討、工作坊、技術(shù)領(lǐng)袖研討會(huì)等。歡迎在Hacker Dōjo社區(qū)討論、學(xué)習(xí)和交流:Dora Dōjo - Dora Community Forum: https://community.dorahacks.io/c/buidl-dorahacks-io/6
目前Hacker Dōjō已分享的主題有:
密碼學(xué):基礎(chǔ)專題(對(duì)稱加密算法、哈希函數(shù)、群和公鑰加密、數(shù)字簽名和KZG承諾、零知識(shí)證明、非對(duì)稱密碼算法、分布式密碼學(xué))
密碼學(xué):抗量子計(jì)算破解算法專題
Layer1架構(gòu):Move系列、模塊化公鏈、共識(shí)協(xié)議Bullshark、內(nèi)存池協(xié)議Narwhal和共識(shí)協(xié)議Tusk、Aptos共識(shí)與交易并行執(zhí)行
Layer2架構(gòu):zkSync研究、Layer2的支付通道擴(kuò)容方法、Polygon Hermez、Optimism、StarkWare技術(shù)與生態(tài)梳理
IRS系列:Interest Rate Swap and DeFi Platforms、Interest Rate Swap and Perpetual Swap、The Future Dencentralized Interest Rate Swap
量子計(jì)算系列:量子計(jì)算基礎(chǔ)、Qiskit專題(Qiskit入門、Deutsch-Jozsa算法、Bernstein-Vazirani算法、Simon算法、量子卷積神經(jīng)網(wǎng)絡(luò)、量子傅立葉變換、量子相位)、Pennylane專題(利用變分量子電路擬合傅里葉級(jí)數(shù))、實(shí)驗(yàn)法觀測(cè)宏觀量子疊加態(tài)
加入Dōjō的Hacker可以提出自己的學(xué)習(xí)期望,主動(dòng)提案自己擅長(zhǎng)的技術(shù)話題,由Dōjō組織分享。同時(shí),Hacker Dōjō推出Web3前沿課題研究計(jì)劃,定期選題,由Hacker進(jìn)行研究和講解,并以bounty形式獎(jiǎng)勵(lì)研究貢獻(xiàn)者。歡迎各位Hacker認(rèn)領(lǐng)Bounty:https://dorahacks.io/zh/daobounty
聯(lián)系我們:
Telegram:?@DoraDojo0
WeChat:?@HackerDojo0
E-mail:?hackerdojo0@gmail.com