首页 > 热点资讯 > 正文

比特币挖矿揭秘:寻找神秘的哈希值

2024-03-02 06:02
来源:网络

传统挖矿如采金,需准备好各种设备,才可开展工作。而比特币生产过程类似挖黄金,因此也被叫做挖矿。想生产比特币,首先需要构建一个区块头。

比特币挖矿揭秘:寻找神秘的哈希值

△区块头






































长度

字段

描述

4字节

版本

版本号,即版本序号

32字节

前区块哈希

可在上一区块找到

32字节

Merkle根

由区块内所有交易构成的Merkle树的哈希值

4字节

时间戳

从1970.1.1起至当前秒数,用于记录该区块生成时间

4字节

难度目标

挖矿的标准校验目标

4字节

Nonce

挖矿时需找到该随机数


矿工们在完成上述信息填充后,将生成一个区块头,但比特币系统暂未承认该区块头。要使区块头被比特币系统认可,需找到本区块的哈希值,并将其广播给整个网络。当全网认可该区块后,它会被连接到现有的区块链上,形成一个新的区块链。这种反复循环的过程就称为挖矿。

简而言之,任何矿工都可进行信息填充,此时每位矿工所填写的区块都是“假区块”。当某位矿工找到了该区块的哈希值后,“假区块”变为真正的区块,得到了比特币系统的认可并获得比特币奖励。

因此,挖矿的核心在于找到本区块的哈希值,找到该哈希值的矿工将获得比特币奖励。

如何找到区块的哈希值?

您猜猜看!

实际上,找到哈希值的过程就像猜谜一般。那么该如何猜呢?

我们需要找到区块头中的Nonce的哈希值,使其小于难度目标的哈希值。难度目标是固定的,我们需要猜测的就是这个随机数Nonce。区块的哈希值就是Nonce哈希运算后的哈希值。

以277316区块为例,其难度目标为0x1745fb53,哈希计算后的哈希值为:

0x0000000000000003A30C00000000000000000000000000000000000000000000

*关于哈希计算方法,请参考《精通比特币》8.7.2章节:难度表示

我们要找到一个小于目标哈希值A的哈希值B,通过将Nonce代入公式,我们会得到一个哈希值B。将该哈希值与目标哈希值A进行比较,若小于A,则寻找到合适的Nonce。

为了便于理解,我对涉及Nonce的公式进行了简化。您还可以查阅《精通比特币》,8.7.1章节:工作量证明算法,查看原始公式。


公式如下:

听风很帅=》1ce654cf64656ba43247

听风很帅(1)=》512198e52aa12427531

听风很帅(2)=》101654c68d5321c9647

听风很帅(3)=》0cb82dq9846fa6c48647

听风很帅(4)=》0465464ce20cc21e7541

听风很帅气(5)=》14edc1cad25121e25487


()内的数字即为Nonce,公式的右侧为哈希值。通过不断增加Nonce的值并将其代入公式进行哈希运算,得出右侧的哈希值。

接下来,我们将哈希值与目标哈希值进行比较。通常我们认为A+1 < A+2,但在哈希运算过程中,A+1的运算结果可能会大于A+2。由于哈希值与其输入之间没有明显的规律,只需稍微更改输入,就会产生完全不同的哈希值。因此,我们需要不断尝试新的Nonce值,直至找到满足条件的Nonce。

通过不断尝试Nonce值,这一过程也被称为哈希碰撞,即试图找到满足条件的Nonce。

当我们尝试到924591752时,我们得到了以下哈希值:

0000000000000001b6b9a13b095e96db41c4a928b97ef2d944a9b31b2cc7bdc4

我们将该哈希值与目标值进行比较:

0000000000000003A30C00000000000000000000000000000000000000000000

左右两边0的数量相同,1小于3,表明这是我们正在寻找的Nonce。

接着,矿工将找到的Nonce值填入,并将区块添加到区块链中。之后,将区块广播给其他节点进行验证。当其他节点验证通过时,该区块将被添加到区块链中。

验证过程相对简单,只需将找到的Nonce值代入公式,即可得到相同的哈希值输出。只有相同的输入才会产生相同的输出。

比特币的挖矿需要进行数十亿次计算,以确认答案是否正确。然而,验证答案是否正确仅需一次计算。

这就是比特币的挖矿过程:不断尝试新的Nonce值,直至找到满足条件的Nonce,随后进行哈希运算,并将哈希值添加到区块中,最后广播给全网验证并获得比特币奖励。

举报
关注公众号“多特资源号”
内容来源于网络,不代表本站观点,侵删
热搜资讯