2020 年 10 月,Vitalik 发布了文章《以 Rollup 为中心的以太坊路线图》,确定了为 L2 rollup 扩容协议保驾护航的基本思路:将执行层和数据层分离,以太坊共识层为其提供安全保障。随后,以太坊分片技术也基于这个路线图进行了几次变更。围绕扩容和分片,以太坊社区逐渐浮现出了各种各样的术语与提案:模块化结构、数据可用性、EIP-4844、EIP-4488、data blob、Danksharding 等等让人应接不暇。他们之间的关系是什么?如何提高 rollup 的扩容效率?


在本期节目中,我们邀请了 imToken Labs 的研究员和开发者、前以太坊基金会研究团队开发者 Nic Lin 来为大家介绍 EIP-4844 的基本逻辑,以及它与以太坊分片技术开发路线、Rollup 扩容之间的关系。


注:节目中嘉宾与主持人讨论到的资料/资料可用性指的是 data/data availability。


点击收听 Podcast,了解更多:

ecnpodcast.fireside.fm



﹋﹊﹋﹊﹋﹊﹋﹊﹋﹊﹋﹊﹋﹊﹋﹊﹋﹊


时间戳


00:41 - 引入

01:54 - 嘉宾介绍

04:22 - The Surge

06:29 - 以太坊分片设计发展史

16:07 - 以 rollup 为中心的路线图与模块化

19:26 - 数据可用性/资料可用性与 Calldata

25:45 - EIP-4488

30:09 - Shard blob transaction 的特点

34:31 - Rollup 如何使用 4844

46:50 - Proto-danksharding 为 rollup 和完整分片的发展有什么影响

55:00 - 回顾

56:08 - 对这个提案的疑虑与期待


﹋﹊﹋﹊﹋﹊﹋﹊﹋﹊﹋﹊﹋﹊﹋﹊﹋﹊


精彩摘录


Q:在 Rollup 的语境下, DA 到底指的是什么呢?以及为什么 Rollup 需要上传 DA 到 L1?


A:如果目前我们已经熟悉的 1.0 这条链的话,我们其实根本不会意识到 DA 这个问题,因为资料本身就是全都在链上。我们每个区块、每一笔交易的资料都是在每个节点,都会看到这些资料。所以我们根本不会意识到,资料不可用这个问题。因为我们拿到完整的资料。


但是,比如说 L1 的 Block time 就是固定12秒、13秒,然后它的 gas limit 就像现在 3,000 万,最多就是这样。所以如果你要能够达成扩容的话,你不可能叫所有 dApp、所有的团队都把交易在 L1 执行。所以从很早以前就的 Scaling solution,扩容方案就是说我们进到 L2,我们把执行、把资料搬到链下去,我们不要在 L1,因为 L1 太贵太慢,要跟大家去竞争,资源很稀少。所以我们把交易跟资料都搬到链下去,所以过去就有很多不同的扩容,比如像 sidechain 像 plasma,然后到 Rollup。


中间其实有几个关键的改进,我自己会习惯单看 side chain、plasma 跟 rollup 的话,我把它看作一个演进的路线图,就是 sidechain 是现在相比来说是最不安全的。Plasma 针对 sidechain 的改变就是他把中心化权力很大的 operator 的角色去掉,然后换成智能合约。后来 rollup 相对它而解决的问题就是,plasma 其实把资料都是交给 operator,operator 虽然不能任意的把钱拿走,或者说他如果做坏事的话,你可以自己离开 plasma,这是他的优点,因为他都把这些规则写在智能合约里面。但是他最大的问题就是,你的资料其实是交在 operator 的手上, operator 今天把资料藏起来的话,你就不能自己来产生一些证明,这个证明就是说我在 plasma 上有多少钱,因为你要这些实际的交易资料,你才能算得出来说我现在有多少钱,但是我这些资料都在一个中心化角色手上的话,它就还是有攻击的风险,我把资料藏起来不让你看到。


所以说 rollup 要解决的问题就是说,我们要怎么解决资料不可用的问题。所以它的解决方法就是,我们干脆把资料都上传到 L1,但是它虽然把资料都上传到 L1 上面,但是它不在 L1 上去执行交易,而是在链下去执行交易,所以基本上就是把交易的执行搬到链下,搬到 L1 这样。它是用这个方法去解决资料可能性。


Q:EIP-4844 所引入的 shard blob transaction 有什么特点?


A:基本上这个 shard blob transaction 其实就是为了 rollup 所设计的。因为主要就是 calldata,它的目的不符合rollup 的目的,然后它的成本又太高,对 rollup 来说。所以我们就干脆设计一个新的交易类型,专门给 rollup 来放他们的资料这样。


所以在 shard blob transaction 里面,它比一般的我们熟悉的 transaction 多了一个栏位,就是 Bob 栏位。这个 blob 栏位就是让 rollup 来放它们的资料。这个 blob 有两个特性,第一个就是 blob 的资料不像 calldata 一样能够被合约存取到;然后再就是它是有一个保存期限,它不会像 calldata,你一把资料放到 calldata 之后,所有节点就必须要永远的保存它这样。所以它有两点特性,第一点就是智能合约读取不到,然后另一点就是它有保存期限。


Q:在 Devcon VI 的一场由 Ethereum Magicians 负责的协议路线图会议中,Vitalik 提到 4844 引入了点取值和 blob 的概念,这使得 L2 可以设置代码一次后就能写入并发布……以及无论我们以后如何胡乱设计分片,只要我们符合参数,rollup 都可以轻松做一些调整而不再需要做重新架构。怎么理解他所说到这一点, rollup 方案集成这个交易类型之后会对它有一些什么长期的影响?


A:所以他这边讲的可能就是,proto-danksharding 是 danksharding 的一个准备。当切换到的 danksharding 之后,proto-dansharding 已经为 L2 做好了一些必要的准备,L2 其实不会受影响。

那你未来 L1 不管怎么设计,你做到怎样的 sharding、danksharding 或者是你最后又有新的 sharding 出来,你L1 怎么改变,其实对我 L2 来说没有那么在意,根本就是跟我无关。我只需要你确保这些资料真的可以用就好了。


所以我们今天先在 proto-danksharding 里面先做好了一些改变,这些改变就包含引进 shard blob transaction,让 rollup 知道说,你未来放资料不必再把资料放到 calldata,而是放到 blob 里面就好了。剩下就是,我会帮你确保说这些 blob 都会是可用的。


未来 L1 怎么去改变设计,我只要能确保说 blob 资料是可用的,L2 就不用再做任何改变了,因为你已经提前做好了改变,把资料放到 blob 就好。应该说 L2 就是 future-proof 的,你不必担心说还要搭配未来 sharding 设计,再去看把你的资料上传到哪里,会不会有什么安全性的影响这样。


﹋﹊﹋﹊﹋﹊﹋﹊﹋﹊﹋﹊﹋﹊﹋﹊﹋﹊


订阅 ECN Podcast


访问 ecnpodcast.fireside.fm 收听 Podcast 以及获取节目的其他详细信息。你也可以通过泛用型播客客户端 Apple Podcasts、Pocket Casts、Castro、Google Podcasts、Spotify 等订阅我们的节目。