织梦CMS - 轻松建站从此开始!

我的网站

当前位置: 主页 > 比特币 > 比特币资讯

一文读懂比特币新区块产生过程 (3)

时间:2020-07-07 17:56来源:未知 作者:admin 点击:
在比特币区块中,区块头是最为关键的一个信息。它包含整个区块的所有特征信息: 区块版本号 。创建区块的比特币节点的版本信息,用于追踪比特币协

  在比特币区块中,区块头是最为关键的一个信息。它包含整个区块的所有特征信息:

  区块版本号。创建区块的比特币节点的版本信息,用于追踪比特币协议的升级和更新情况;

  前一个区块的哈希值。又叫做父区块哈希,用来定位上一个区块。每一个区块都包含它的上一个区块的哈希值,针对任何一个区块的任何一个微小的改动,都会使后续区块的哈希值产生巨大的变化,如此环环相扣,确保比特币所有区块形成一条单一的链式结构,可以有效防止恶意篡改比特币区块数据的行为。

  MerkleRoot 哈希。在区块的交易数据列表中,取所有交易数据的哈希值,构建 Merkle 树,这个 Merkle 树的根哈希值,即为 MerkleRoot 哈希(如下图)。

  由于哈希算法的敏感性,整个交易的 Merkle 树中任何一个交易数据有微小的改动,都会产生联动效果,导致 Merkle 树的根哈希值出现巨大变化。因此交易数据的 Merkle 树根哈希值(MerkleRoot Hash)可以看作是整个交易的指纹,用来指代区块中的交易数据。

  时间戳。创建预备区块的时间。

  当前目标哈希值。比特币协议规定,矿工创建的预备区块的哈希值小于目标哈希值时,这个区块才算有效。

  目标哈希值由挖矿难度确定,当挖矿难度变大时,目标哈希值变小,矿工要找到符合比特币网络要求的哈希值就越困难。按照当前的挖矿难度,要找到低于目标哈希值的哈希值,理论上需要一台 S17 矿机连续工作42 年时间。因此,现在基本不存在个人自建节点挖比特币的情况。

  随机数。又叫 Nonce。我们可以发现,区块头信息中,区块版本号,前一个区块的哈希值,MerkleRoot 哈希值,时间戳,以及当前目标哈希,都是已知信息,相对固定,不便随意更改。因此,如果要调整预备区块的哈希值,就需要引入一个可变的数据——随机数。修改随机数,就可以调整预备区块的哈希值。

  挖矿节点构建好预备区块后,就会将区块头信息下发给矿工,矿工通过不断调整区块头中随机数来变更预备区块的哈希值,当预备区块的哈希值低于比特币网络当前目标哈希值时,这个区块就是一个合法新区块。

  挖矿节点会及时地向比特币网络广播新区块,比特币网络中其他比特币节点在接到广播信息后,对新区块进行验证,验证通过后,将新区块加入本地。此时,新区块创建并确认完毕,对应交易也完成了。

  参考资料:

  1. 比特币源码分析

  2. 比特币区块头结构

  3. 比特币目标哈希值

  4. 比特币区块结构

  5. 精通比特币

(责任编辑:admin1)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容