主页 > imtoken钱包苹果手机怎么下载 > 比特币挖矿计算什么问题?人工验证区块链给出答案

比特币挖矿计算什么问题?人工验证区块链给出答案

采矿过程的简要回顾。

首先,我们要验证所有的交易,排除有问题的交易,然后通过一套自定义的标准,比如提供的交易费用,占用的交易等,选择哪些交易要打包进区块。交易。在此类交易被视为有利可图之前,字节大小的比率超过了某个阈值。当然,节点也可以故意选择加入一个交易,或者故意忽略某些交易。如果通过矿池进行挖矿,矿池服务器会对交易进行筛选,并为每个参与的矿工分配独立的任务。

一旦交易数据经过层层筛选和缩减,就可以通过这些交易计算出一棵Merkle树,并确定一个唯一的汇总,即Merkl树的根。

然后我们依次获取挖矿所需的其他信息,构成区块头。

区块头的字节分配

区块头只有80个字节,挖矿只需要对区块头进行操作即可。交易数据通过默克尔树固定,不需要包含。

比特币挖矿需要准备哪些

比特币区块链示意图

大部分信息已经固定或可计算。

我们以277316区块为例,其信息来源于网站

比特币区块#277316blockchain.info

之所以选择这个区块,是在《精通比特币》一书中,中文社区翻译和英文原版在这部分的介绍上有所不同,而作者Antonopoulos没有提到一个重点,那就是字节顺序问题。相信很多人可能会踩到这个坑。此处还原的细节可以帮助读者与本书相互参照。

比特币挖矿需要准备哪些

比特币区块 277316 的信息

比特币区块277316的哈希值

请注意下面的每一步,注意每一个变化,这是比特币的核心算法。

第一步,准备数据,转换时间

2 (版本号的十进制)
0000000000000002a7bbd25a417c0374cc55261021e8a9ca74442b01284f0569 (前一区块hash值的16进制)
c91c008c26e50763e9f548bb8b2fc323735f73577effbc55502c51eb4cc7cf2e  (merkle root的16进制)
2013-12-27 23:11:54 (utc时间)
419668748  (难度目标的十进制)
924591752  (随机数的十进制)

比特币挖矿需要准备哪些

转换时间,切记,一定要转换成utc时间戳,这里有坑,小心。

>>> import datetime
>>> from datetime import timezone
>>> datetime.datetime.strptime('2013-12-27 23:11:54', '%Y-%m-%d %H:%M:%S').replace(tzinfo=timezone.utc).timestamp()
1388185914.0

第二步,全部转为十六进制

00000002
0000000000000002a7bbd25a417c0374cc55261021e8a9ca74442b01284f0569
c91c008c26e50763e9f548bb8b2fc323735f73577effbc55502c51eb4cc7cf2e
52be093a
1903a30c
371c2688

第三步,从大端到小端

这一步的发现难度极大,要查询很多次比特币挖矿需要准备哪些,大坑,大坑,切记。发明者中本聪可能为了让机器计算更快,改变了更接近机器的编码方式。

比特币挖矿需要准备哪些

02000000
69054f28012b4474caa9e821102655cc74037c415ad2bba70200000000000000
2ecfc74ceb512c5055bcff7e57735f7323c32f8bbb48f5e96307e5268c001cc9
3a09be52
0ca30319
88261c37

第四步,拼接String,开始验证

import binascii
from hashlib import sha256 as s
k = '0200000069054f28012b4474caa9e821102655cc74037c415ad2bba702000000000000002ecfc74ceb512c5055bcff7e57735f7323c32f8bbb48f5e96307e5268c001cc93a09be520ca3031988261c37'
hk = binascii.unhexlify(k)
res = binascii.hexlify(s(s(hk).digest()).digest()[::-1])

最终结果是

0000000000000001b6b9a13b095e96db41c4a928b97ef2d944a9b31b2cc7bdc4

16 输入前 15 个 0,然后是 1;而难度目标对应的数字是

比特币挖矿需要准备哪些

0000000000000003a30c00000000000000000000000000000000000000000000

十六进制前15个0,然后3.计算结果小于难度目标,满足要求。这一结果与网站上公布的数据一致。

正确的哈希值

挖矿时,nonce随机数是未知的,所以尝试从0到2^32,但这个数字其实并不大,只有4294967296。以目前每秒14T的挖矿算力,一秒就能搞定完成计算到上限。刚刚提到,这种情况下,需要用到token创建交易中的附加信息,多余的字符串就变成了多余的nonce。

另外比特币挖矿需要准备哪些,创世块也可以通过上述方法验证,好奇的朋友可以试试。

提示: