以太坊区块查询(以太坊的区块结构)
以太坊的区块结构和比特币的类似,每个区块也是包含区块头和区块体两部分。在比特币系统中,区块头中包含了一个梅克尔根,它指向区块体的数据,本质上是区块体数据的哈希值。而在以太坊中,由于需要记录状态,所以以太坊的区块头中包含了多个梅克尔帕特里夏树根,分别指向区块体的不同部分,如图 13。5 所示。
图 13。5│ 以太坊区块结构示意图
区块头中主要包含了区块的一些基本参数。
①parentHash:这个参数是父区块头的哈希值,相当于比特币系统的哈希指针。所谓父区块,就是指主链中的前一个区块。
②nonce:一个哈希值,当与 mixHash 组合时,证明此区块已经完成了工作量证明。
③timestamp:此区块成立时的 Unix 的时间戳,这和比特币中的是一样的。
④OmmersHash:当前区块 ommers 列表的哈希值。所谓的 ommers,就是指叔区块,区块链平台即那些被矿工挖出,但未能最终竞争进入主链的区块。
⑤beneficiary:这是接收挖此区块「费用」的账户地址,当区块进入主链后,奖励会发送到这个地址。如果该区块成为叔块,也会有部分奖励发送到这个地址。
⑥logsBloom:这是由日志信息组成的一个布隆过滤器(Bloom Filter),布隆过滤器是一种存储效率非常高的数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合。
⑦difficulty:这表示本区块的难度级别。创世区块的难度是 131 072,有一个特殊的公式用来计算之后的每个块的难度。如果某个区块比前一个区块验证得更快,以太坊协议就会增加区块的难度,以保证平均每 15 秒一个块。反之,以太坊就会降低区块难度。增加和降低难度的主要目标是维持出块速度的稳定性。
⑧extraData:表示与此区块相关的附加数据。
⑨number:当前区块的编号。以太坊中每个区块都是有编号的,从创世区块开始,创世区块编号为 0,此后每个后续区块的编号都增加 1。
⑩gasLimit:每个区块的当前 gas limit 值。以太坊中区块包含的 gas 是有上限的,这就决定了每个区块能容纳多少条记录。一个区块中所有交易的 gas 值累计不能超过本区块的 gas limit(注意,这里区块的 gas limit 和前文所讲交易的 gas limit 是不同的)。
⑪gasUsed:此区块中交易所用的 gas 总量,显然 gasUsed 应该小于 gas limit。
⑫mixHash:一个哈希值,当与 nonce 组合时,证明此区块已经完成了工作量证明。
⑬stateRoot:这是指向状态树的哈希值,也就是状态树的梅克尔帕特里夏树根。以太坊的 world state 是以梅克尔帕特里夏树的数据结构进行保存的,其称为状态树。
⑭transactionsRoot:这是指向交易树的哈希值,也就是交易树的梅克尔帕特里夏树根。在以太坊区块体中,该区块中的所有交易数据以梅克尔帕特里夏树的数据结构进行保存,其称为交易树。
⑮receiptsRoot:这是指向交易收据数的哈希值,也就是收据树的梅克尔帕特里夏树根。在以太坊区块体中,该区块中的所有交易收据以梅克尔帕特里夏树的数据结构进行保存,其称为收据树。所谓的交易收据,是指一笔交易处理完成后,该交易改变了哪些状态的记录。以太坊建立交易收据的主要目的是便于查询和检索。
把上述区块头参数代表的意思弄懂,再结合前文讲到的以太坊的基本概念和比特币系统的原理,就可以对以太坊的数据结构和运作机制有一个较为全面的了解。
okex以太坊今日行情
","content_hash"!"dca0a3b0
评论