EIP-4844-blob 简单说明

2023-11-21 13:13:56 浏览数 (1)

简述

Blob交易是专门为Rollups而设计的特殊交易。 它从 EVM 执行环境中分离出来,并以状态最小化的方式,来促进rollup机制原生嵌入以太坊网络中的实施(包括 optimistic 和 zk)的方式大幅增加交易吞吐量。 大白话就是,为了省钱(手续费)专门设计的一种交易类型。

第一阶段

EIP4844 主要即为第一个阶段所要完成的工作。主要包括:

1.新增一种交易类型,该交易类型新增了一种字段:blob,为该字段设置单独的gas收费标准,且收费较低,rollup 可采用该字段存储数据

2.新增blob会增大区块数据量,新增历史数据清理功能,超过30天的blob数据可以从节点移除,或迁移至第三方去中心化存储

3.blob与 tx 存储分离,并通过一个 commitment 来进行关联,commitment采用 KZG 算法来实现,KZG 算法可以看做类似 merkle 树的证明算法

4.KZG 在 sharding 中扮演着重要的角色,Rollup 校验中除了 KZG,采用别的验证算法都无法达到很好的效果。

数据结构

1.消息与签名

代码语言:javascript复制
class SignedBlobTransaction(Container):
    message: BlobTransaction
    signature: ECDSASignature
    
class BlobTransaction(Container):
    chain_id: uint256
    nonce: uint64
    max_priority_fee_per_gas: uint256
    max_fee_per_gas: uint256
    gas: uint64
    to: Union[None, Address] # Address = Bytes20
    value: uint256
    data: ByteList[MAX_CALLDATA_SIZE]
    access_list: List[AccessTuple, MAX_ACCESS_LIST_SIZE]
    max_fee_per_data_gas: uint256
    blob_versioned_hashes: List[VersionedHash, MAX_OBJECT_LIST_SIZE]

从上面可以看出,BlobTransaction除了新增了blob_versioned_hashes字段和max_fee_per_data_gas字段外,其余字段基本与eip1559里面交易类型是一样的。 blob_versioned_hashes:首先 将blob数据转化为kzg多项式点。然后将kzg多项式电转换为versioned hash。之所以使用VersionedHash 而不是 KZG 是为了向前兼容,以后可以方便更换为STARK。

2.增加了一种新的OPCODE

这个opcodeDATA_HASH,其对应的值为HASH_OPCODE_BYTE。表示这个opcode的gas成本。

一些问题

1.blob存储和数据结构 Blob数据持久化到共识层,而不是在执行层。 2.blob数据内容是什么 Blob的数据是 L2 里的交易集合或者状态变更,由 Rollup 决定。 3.blob如何和合约交互, 在 L1 的 EVM 里不能访问Blob数据。 但是可以通过versioned hash获取Blob,然后校验kzg,以及versioned hash。 4.blob交易中proof存储在哪 5.blob在共识层和应用层的作用

KZG多项式承诺 EIP4844

0 人点赞