以太坊的整个实现机制比比特币复杂得多,所以它的区块结构也比比特币的复杂,而且它的存储不止区块这一种方式,咱们花几天的时间来好好学习一下以太坊的区块和存储。
先从区块开始。跟比特币一样,以太坊的区块结构也分为区块头和区块体,这一篇我们先讲区块头。以太坊的区块头包含15个字段:
ParentHash
这是上一个区块的哈希值,跟比特币一样,我们可以把它看成一个指针,指向上一个区块,正是有这个指针,区块和区块才串联起来,才有区块链。
Coinbase
在比特币里也有一个coinbase,但那个coinbase是指一笔特殊的交易,就是系统奖励比特币给区块创建者的那笔交易。但在以太坊这里,是区块创建者留下的以太坊地址,用于接收系统奖励和交易手续费。
以太坊网络当前已销毁194.75万枚ETH:金色财经报道,据Ultrasound数据显示,截止目前,以太坊网络总共销毁1947512.11枚ETH。其中,OpenSea销毁231120.52枚ETH,ETHtransfers销毁184854.25枚ETH,UniswapV2销毁125752.41枚。注:自以太坊伦敦升级引入EIP-1559后,以太坊网络会根据交易需求和区块大小动态调整每笔交易的BaseFee,而这部分的费用将直接燃烧销毁。[2022/3/5 13:38:55]
UncleHash
以太坊有一个独特的东西,叫叔区块,咱们下一篇会仔细讲讲。现在只要知道这个字段就是所有叔区块用RLP编码后再哈希出来的值即可。
动态 | 以太坊社区和众多以太坊开发人员反对推进ProgPoW:以太坊核心开发人员正在推进ProgPoW,该更新可以使以太坊挖矿更具ASIC抗性。ASIC的引入使配备了昂贵而复杂的采矿设备的专业矿工占据了主导地位。根据一些以太坊开发人员的说法,这一事实对权力下放和网络安全构成了威胁,因此应在推出以太坊(ETH)2.0之前将其删除。
自从Bitmain和Canaan发布用于ETH挖矿的第一个专用集成电路(ASIC)以来,开发社区在过去两年中一直在讨论以太坊(ETH)将其算法转换为ProgPoW的问题。根据最初的加密货币白皮书,最好使网络针对低成本和易于访问的软件进行优化,以保持必要的分散级别。
目前,Spankchain的Ameen Soleimani,Gnosis的MartinK?ppelmann,Uniswap的Hayden Adams,ConsenSys的Igor Lilic以及众多以太坊(ETH)开发人员均表示反对ProgPoW。?(u.today)[2020/2/24]
Root
动态 | 朝鲜不同政见者团体出售基于以太坊的签证:据bitcoinexchangeguide报道,被称为Cheollima Civil Defense的朝鲜不同政见者团体正在通过发售基于以太坊的签证筹集资金。目前,大约有20万个代币化签证G-Visa正在以太坊区块链上出售。托管G-Visas注册的服务器遇到了无法预料的大量流量,因此不得不延迟12小时。据报道,推出签证背后的根本原因以及该团体是否有权发布签证尚不清楚。[2019/3/27]
这是一棵MPT树的根哈希,这棵树存储了所有以太坊账户。
TxHash
这也是一棵MPT树的根哈希,这棵树存储了所有的交易信息。
动态 | EOS公链上DApp活跃度逐渐赶超以太坊:据DAppReview数据,截至10月23日,EOS和ETH上的DApp总量分别是111个和839个,但DApp的最高日活EOS达32130,ETH仅有1768。日活高于1千的DApp EOS上有5个,ETH仅有1个。分析认为,EOS上的DApp呈现出少而精的特点,虽然以太坊拥有近千款的DApp数量基数,但以EOS近期的发展速度而言,DApp总量超越以太坊也指日可待。[2018/10/24]
ReceiptHash
这还是一棵MPT树的根哈希。对于以太坊账户和交易我们都已讲过,MPT我们也讲过,用MPT树来存储它们好理解。那这棵树又是存什么的呢?其实,这棵树存储的是收据信息。什么是收据?就是交易完成后会提供一个清单给你,告诉你一些信息:比如这笔交易被哪个区块打包了,这笔交易最终花费了多少gas、执行交易时创建的一些日志等等。
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字节即可。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。