区块链-构造区块链头,构造区块


目录:https://blog.csdn.net/qq_40452317/article/details/89646633

为了构造区块头,挖矿节点需要填充六个字段。

版本号的字段值长度为4字节。

 接着,挖矿节点需要填充“前区块哈希”,这个值为节点从网络上接收到的区块头哈希值。

 为了向区块头填充merkle根字段,要将全部的交易组成一个merkle树。创币交易作为区块中的首个交易,后将余下的交易添至其后。在之前,我们已经见到过“Merkle 树”,树中必须有偶数个叶子节 点,所以如果时奇数交易时需要复制最后一个交易叶子节点,每个叶子节点是对应交易的哈希值。这些交易的哈希值逐层地、成对地组合,直到最终组合并成一个根节点。merkle 数的根节点将全部交易数据摘要为一个32字节长度的值,当前(2019-05-24 01:13:52)区块merkel根的值如下:

b5f5e1d3a09a8a8470fe1c5963dfc7a52b5b89c149d6b2945a60f925c4a5de66

 挖矿节点会继续添加一个4字节的时间戳,以Unix 纪元时间编 码,即自1970年1月1日0点到当下总共流逝的秒数。

接下来,节点需要填充Target字段(难度目标值),为了使得该区块有效, 这个字段定义了所需满足的工作量证明的难度。难度在区块中以“尾数-指数”的格 式,编码并存储,这种格式称作 targetbits(难度位)。这种编码的首字节表示指 数,后面的 3 字节表示尾数(系 数)。

最后一个字段是nonce,初始值为 0。

区块头完成全部的字段填充后,挖矿就可以开始进行了。挖矿的目标是找到一个使区块头哈希值小于难度目标的nonce

挖矿节点通常需要尝试数十亿甚至数万亿个不同的nonce 取值,直到找到一个满足条件的nonce值。

相关内容

    暂无相关文章