主页 > imtoken网址 > 以太坊中的区块与存储(一):区块头

以太坊中的区块与存储(一):区块头

imtoken网址 2023-05-25 06:58:49

以太坊的整个实现机制比比特币复杂得多,所以它的区块结构也比比特币复杂比特币区块体记录了哪些信息,而且它的存储不限于区块。 让我们花几天时间了解一下以太坊区块和存储。

让我们从块开始。 和比特币一样,以太坊的区块结构也分为区块头和区块体。 在本文中,我们将首先讨论区块头。 以太坊的区块头包含 15 个字段:

ParentHash 这是前一个块的哈希值。 和比特币一样,我们可以把它看成是指向前一个区块的指针。 正是有了这个指针,块与块串联起来,它们之间是有区别的。 区块链。

比特币一个区块多少币_比特币区块体记录了哪些信息_比特币创世纪区块

Coinbase在比特币中也有一个coinbase,不过那个coinbase指的是一种特殊的交易,是系统将比特币奖励给区块创建者的交易。 但在以太坊这里,是区块创建者留下的用于接收系统奖励和交易手续费的以太坊地址。

UncleHash 以太坊有一个独特的东西叫做叔叔块,我们将在下一篇文章中详细讨论。 现在你只需要知道这个字段是所有叔块用RLP编码后哈希出来的值即可。

Root 这是存储所有以太坊账户的 MPT 树的根哈希。

比特币创世纪区块_比特币一个区块多少币_比特币区块体记录了哪些信息

TxHash 这也是一棵 MPT 树的根哈希,它存储了所有的交易信息。

ReceiptHash 这也是 MPT 树的根哈希。 我们已经讲过以太坊账户和交易,也讲过MPT。 使用MPT树来存储它们很容易理解。 那么这棵树有什么用呢? 实际上,这棵树存储的是收据信息。 什么是收据? 即交易完成后,会提供一个列表给你,告诉你一些信息:比如交易被打包在哪个区块,交易消耗了多少gas,交易执行时创建的一些日志,等等。

Bloom 我们可以通过在合约中定义“事件”来生成日志。 上面提到,一些日志会存储在receipt tree中。 这种绽放实际上是一个过滤器。 通过这个过滤器,可以快速查询判断回执中是否存在某条日志。

比特币一个区块多少币_比特币创世纪区块_比特币区块体记录了哪些信息

Difficulty、Nonce、mixHash 这三个字段都与以太坊的挖矿有关。 和比特币一样,以太坊也是POW模型,所以它也有挖矿难度系数,会根据出块速度进行调整。 以太坊第一个区块的难度是131072,后面的区块难度会根据前面区块的速度进行调整。

Difficulty是区块的难度系数,Nonce是目标值,Nonce值小于等于2^256/Difficulty。 因此,难度值越高,目标值范围越窄,越难匹配。 以太坊具体的挖矿计算要比比特币复杂的多,但是大体的过程是不断尝试不同的mixHash来获得一个合格的Nonce。 因此,mixHash可以简单理解为比特币区块头中的一个随机值。

Number 区块的序号,每个区块的序号是父区块的序号加1。

比特币区块体记录了哪些信息_比特币一个区块多少币_比特币创世纪区块

时间 区块生成的时间。 这个时间并不是真正生成块的时间。 它可能是父块的生成时间加上 10 秒,也可能是块生成时的“近似”时间。

GasLimit 区块内所有Gas消耗的理论上限。 这个理论值是和父块相关的,可以让打包块的矿工根据父块的情况对这些值做一些微调。 每一个区块产生的时候,都要设置这样一个理论上的gas消耗上限。 这个上限限制了一个区块中打包交易的总量。 例如,一个区块的上限设置为10,000。 现在有 3 笔交易,每笔交易的 gas 设置为 5000比特币区块体记录了哪些信息,那么这个区块将最多打包其中的两笔交易。 如果硬要打包三笔交易,其他节点将无法识别这个区块。

可以说这个字段限制了一个块的存储大小,但是仍然保持了一定的灵活性。 这与比特币不同。 比特币区块的大小直接写入比特币软件。 如果你想改变它,你只能通过硬分叉。

比特币区块体记录了哪些信息_比特币创世纪区块_比特币一个区块多少币

GasUsed 区块内所有交易执行后实际消耗的gas总量。

extraData 这个字段是为区块的创建者保留的,让他记录一些与区块相关的信息,长度小于等于32字节。

这是区块头的完整信息。 明天我们继续学习以太坊的区块结构和其他存储方式。