区块的数学定义比较简单,Bh:区块头信息;Bt:区块内的交易;Bu:叔叔节点的区块头列表。这里需要解释的是,在本区块B生成的过程中,区块B被矿机甲打包了一批交易记录,比如说是{Tx1,Tx2,Tx3};在矿机选择这几条交易记录尝试打包且没有被全网确认之前,其他的矿机乙也在尝试从交易池中选择交易并打包,假设另一个矿机选择了交易组合是{Tx2,Tx4,Tx5},那么因为算力的问题,甲的数据块被加入到区块链中,但是因为乙也在这个过程中付出了算力,并且与甲打包的数据有共同的交易Tx2,因此为了奖励乙的算力付出,会将乙打包的区块作为叔叔节点记录在区块链上,即Bu。区块的数据结构如下图:
区块头的信息由如下数据项组成:
parentHash:父区块节点的hash值,用公式Hp表示
ommersHash:叔叔节点的Hash值,用公式Ho表示
beneficiary:旷工节点的地址,本区块生成时会给予旷工奖励。Hc
stateRoot:当所有交易处理完毕且区块本区块状态确定后,状态树的树根,公式:Hr
transactionsRoot:当前区块打包的交易的hash树根,公式:Ht
receiptsRoot:交易收据的hash树根公式:He
logsBloom:从交易收据中找出日志的地址和主题,然后对他们进行索引,公式:Hb
difficulty:当前区块的难度,用来调节出块时间间隔的数值,此值的修改可以使的矿机计算难度改变,公式:Hd
number :表示此区块之前区块的个数,可以把此值理解为区块高度,公式:Hi
gasLimit:表示该区块包含交易的gas的最大值,公式:Hl
gasUsed:执行该区块内交易已经消耗的gas的数量,公式:Hg
timestamp:时间戳,区块生成的unix时间,公式Hs
extraData:区块附加数据,最多32字节,公式Hx
mixHash:256比特位的hash值,与nonce一起证明本数据块花费了一定数量的算力,公式:Hm
nonce:64比特位的hash值,与mix一起证明本区块消耗固定数量的算力,公式:Hn
区块头的代码如下:
本节的内容比较简单,这是简单罗列区块的基本构成和区块头的数据内容,并没有讲解器生成逻辑和具体的功能,接下来的章节会对这些信息进行详细讲解。
网友评论