以太坊的整个实现机制比比特币复杂得多,所以它的区块结构也比比特币的复杂,而且它的存储不止区块这一种方式,咱们花几天的时间来好好学习一下以太坊的区块和存储。
先从区块开始。跟比特币一样,以太坊的区块结构也分为区块头和区块体,这一篇我们先讲区块头。以太坊的区块头包含15个字段:
ParentHash
这是上一个区块的哈希值,跟比特币一样,我们可以把它看成一个指针,指向上一个区块,正是有这个指针,区块和区块才串联起来,才有区块链。
Coinbase
在比特币里也有一个coinbase,但那个coinbase是指一笔特殊的交易,就是系统奖励比特币给区块创建者的那笔交易。但在以太坊这里,是区块创建者留下的以太坊地址,用于接收系统奖励和交易手续费。
数据:以太坊桥TVL达到247.3亿美元:金色财经报道,DuneAnalytics数据显示,以太坊桥当前TVL达到247.3亿美元。其中锁仓量最高的5个桥分别是AvalancheBridge(62.85亿美元)、PolygonBridges(53.26亿美元)、FantomAnyswapBridge(46.78亿美元),ArbitrumBridges(33.62亿美元),RoninBridge(31.95亿美元)。[2022/3/3 13:33:43]
UncleHash
以太坊有一个独特的东西,叫叔区块,咱们下一篇会仔细讲讲。现在只要知道这个字段就是所有叔区块用RLP编码后再哈希出来的值即可。
ADA创始人:与以太坊竞争就像和96岁老人打空手道比赛:2月15日消息,Cardano创始人Charles Hoskinson表示,并不认为以太坊是Cardano的重要竞争对手。他称,当人们说“如何赶上以太坊的网络效应?”时,我笑道,它不存在。在2020年部署的新DApp中,只有31%在以太坊上。做任何事情,比如甚至发送一笔交易的成本为50美元。我必须与之竞争吗?这就像空手道比赛,对方96岁,坐在轮椅上。(Crypto News Flash)[2021/2/15 19:49:40]
Root
这是一棵MPT树的根哈希,这棵树存储了所有以太坊账户。
以太坊2.0测试网Medalla参与率已达到66%:Beaconscan官方监测数据显示,截至目前以太坊2.0测试网Medalla参与率已达到66.65%,网络或将开始正常运行。[2020/8/20]
TxHash
这也是一棵MPT树的根哈希,这棵树存储了所有的交易信息。
ReceiptHash
这还是一棵MPT树的根哈希。对于以太坊账户和交易我们都已讲过,MPT我们也讲过,用MPT树来存储它们好理解。那这棵树又是存什么的呢?其实,这棵树存储的是收据信息。什么是收据?就是交易完成后会提供一个清单给你,告诉你一些信息:比如这笔交易被哪个区块打包了,这笔交易最终花费了多少gas、执行交易时创建的一些日志等等。
动态 | 以太坊链上活跃度有所下降:据Tokenview数据显示,以太坊近24小时内链上交易额为3042931.03 ETH,同比24小时前上升83.85%,近24小时内链上交易数为892395笔,同比上升1.62%。近24小时以太坊单笔超过1000 ETH的大额转账共计340笔,较前日上升136.11%。活跃地址数较前日下降9.04%,新增地址数较前日上升14.41%。受大额转账影响,以太坊链上交易额激增,但整体活跃和新入流量较七日均值有所下降,后市需盘整蓄力方可向上突破。[2019/6/4]
Bloom
我们可以在合约中通过定义“事件”来生成日志。上面说了,在收据树里会存储一些日志,这个bloom其实是一个过滤器,通过这个过滤器可以快速搜索和判断某个日志是不是存在于收据中。
Difficulty、Nonce、mixHash
这三个字段都和以太坊的挖矿有关,以太坊和比特币一样,也是POW模式,所以它也有一个挖矿难度系数,这个系数会根据出块速度来进行调整。以太坊第一个区块的难度是131,072,后面区块的难度会根据前面区块出块的速度调整,出得快难度就调高一点,出得慢就调低一点。
Difficulty就是区块的难度系数,Nonce是目标值,Nonce值小于等于2^256/Difficulty。所以,难度值越高,目标值的范围越窄,要找到符合的就越难。以太坊具体的挖矿计算比比特币复杂得多,但大概的流程就是不断尝试不同的mixHash来获得符合条件的Nonce。所以,mixHash可以简单理解为比特币区块头里的随机值。
Number
区块的序号,每个区块的序号就是在父区块的序号上加1。
Time
区块生成的时间。这个时间不是那么精确地就是区块真正生成的时间,有可能就是父区块的生成时间加上10秒,有可能就是区块产生时的“大概”时间。
GasLimit
区块内所有Gas消耗的理论上限。这个理论值与父区块有关,它允许打包区块的矿工根据父区块的情况对这些值做些微调。每个区块在产生时就必须设定这么一个gas消耗的理论上限,这个上限值限定了一个区块打包交易的总量,比如一个区块的上限值设定为10000,现在有3笔交易的gas设定分别都是5000,那么这个区块就最多打包其中的两笔交易,如果硬要打包3笔,其他节点就不会认这个区块的。
可以这么说,这个字段限定了一个区块的存储规模,但仍保有一定弹性。这一点与比特币不同,比特币的一个区块是多大,直接写死在比特币软件里,要更改的话只能通过硬分叉。
GasUsed
区块内所有交易执行完后所实际消耗的gas总量。
extraData
这个字段是留给区块的创建者,让他可以记录一些与该区块有关的信息,长度小于等于32字节即可。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。