在 Rollup 的语境下, DA(Data Availability)指什么,为什么 Rollup 需要上传 DA 到 Layer1?
Nic Lin:如果目前我们已经熟悉 Layer1 这条链,那其实根本不会意识到 DA 这个问题。因为资料本身就是全都在链上,我们每个区块、每一笔交易的资料在每个节点都可以看到,所以我们根本不会意识到资料不可用这个问题。
但是,比如说 Layer1 的区块时间是固定的 12 秒、13 秒,它的 Gas limit 就像现在是 3,000 万,最多就是这样。所以如果你想扩容的话,不可能让所有 DApp 和团队都把交易在 Layer1 执行。
所以,从很早以前就讲的 Scaling solution 就是我们进到 Layer2,把执行和资料等搬到链下去,而不是在 Layer1,因为 Layer1 太贵太慢,要跟大家去竞争,资源很稀少。过去就有很多不同的扩容方案,比如 Sidechain、Plasma 和 Rollup,中间其实有几个关键的改进,我习惯把 Sidechain、Plasma 和 Rollup 看作一个演进的路线图。
相比来说,Sidechain 现在是最不安全的,Plasma 针对 Sidechain 的改变就是它把中心化权力很大的 operator 的角色去掉并换成了智能合约。而 Rollup 针对 Plasma 解决的是资料不可用的问题。
Plasma 其实把资料都是交给 operator,operator 虽然不能随意地把钱拿走,或者说它如果做坏事的话,你可以自己离开 Plasma,这是它的优点,因为它把这些规则都写在了智能合约里面。但是如果 operator 今天把资料藏起来的话,你就不能自己来产生一些证明。比如在 Plasma 上有多少钱,因为你需要通过实际的交易资料,才能计算出现在有多少钱,但如果这些资料都在一个中心化角色手上的话,还是有攻击的风险。
Rollup 的解决方法就是把资料都上传到 Layer1,但并不在 Layer1 上去执行交易,而是把交易的执行搬到链下,即搬到 Layer2。
EIP-4844 所引入的 shard blob transaction 有什么特点?
Nic Lin:基本上 shard blob transaction 就是为了 Rollup 所设计的。由于 calldata 的目的不符合 Rollup 的目的,成本又太高,因此对 Rollup 来说,设计一个新的交易类型,专门给 Rollup 来存放他们的资料。
所以在 shard blob transaction 里面,它比一般的 transaction 多了一个 blob 栏位,用于让 Rollup 来存放它们的资料。这个 blob 有以下两个特性:
blob 的资料不像 calldata 一样能够被合约存取到;
blob 的资料有一个保存期限,它不会像 calldata 一样,只要资料存放到 calldata,所有节点就必须要永远保存它。