shard blob transaction是什么

简介: 文章讨论了Rollup技术中数据可用性(DA)的概念,解释了为什么Rollup需要将数据上传到Layer1,并介绍了EIP-4844引入的shard blob transaction,这是一种为Rollup设计的新型交易,具有数据不可被合约访问和有保存期限的特点。

在 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、PlasmaRollup,中间其实有几个关键的改进,我习惯把 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,所有节点就必须要永远保存它。

相关文章
|
7月前
|
存储 SQL 缓存
MySQL `innodb_flush_log_at_trx_commit` 参数
MySQL `innodb_flush_log_at_trx_commit` 参数
|
存储 SQL 关系型数据库
PG中的blob cleanup
PG中的blob cleanup
107 0
|
测试技术
pg_rewind实例--could not find previous WAL record at %X/%X
pg_rewind实例--could not find previous WAL record at %X/%X
127 0
|
弹性计算 关系型数据库 测试技术
为什么高并发小事务, unlogged table不比logged table快多少? - commit wal log
标签 PostgreSQL , unlogged table , logged table , wal writer 背景 unlogged table,这些表的写操作不记录WAL日志。那么这种表的高并发写入一定比logged table快,快很多吗? 实际上一个事务,在事务结束时,也会记录一笔commit或rollback xlog,所以如果是高并发的小事务,commit xlog的
859 0
|
监控 安全 关系型数据库