欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

Bitcoin 中的挖矿算法(5) 难度值举例说明

发布时间:2025/3/21 编程问答 59 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Bitcoin 中的挖矿算法(5) 难度值举例说明 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

1. 区块277,316的nBits的值为 0x1903a30c(10进制为419,668,748)

=>0x19为指数,而 0x03a30c为系数target = 0x03a30c * 2^(0x08 * (0x19 - 0x03)) => target = 0x03a30c * 2^(0x08 * 0x16) => target = 0x03a30c * 2^0xB0 => target = 0x03a30c * 2^176=> target = 238,348 * 2^176 => target = 22,829,202,948,393,929,850,749,706,076,701,368,331,072,452,018,388,575,715,328 转换为16进制 => target = 0x0000000000000003A30C00000000000000000000000000000000000000000000 (FFFF后面44个0,共15+5+44=64个16进制数)

2. 计算hash过程
step1. 准备数据

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

step2. 转换为16进制

00000002 0000000000000002a7bbd25a417c0374cc55261021e8a9ca74442b01284f0569 c91c008c26e50763e9f548bb8b2fc323735f73577effbc55502c51eb4cc7cf2e 52be093a 1903a30c 371c2688

step3. 从big-endian转化为little-endian

02000000 69054f28012b4474caa9e821102655cc74037c415ad2bba70200000000000000 2ecfc74ceb512c5055bcff7e57735f7323c32f8bbb48f5e96307e5268c001cc9 3a09be52 0ca30319 88261c37

step4 拼接字符串,开始验证

import binascii from hashlib import sha256 as s k = '0200000069054f28012b4474caa9e821102655cc74037c415ad2bba702000000000000002ecfc74ceb512c5055bcff7e57735f7323c32f8bbb48f5e96307e5268c001cc93a09be520ca3031988261c37' hk = binascii.unhexlify(k) res = binascii.hexlify(s(s(hk).digest()).digest()[::-1])for nonce in range(0, 2**32):block_header = version + previous_block_hash + merkle_root + time + target_bits + nonceif sha256(sha256(block_header)) < target_bits:break

step5:结果为

Hash
0000000000000001b6b9a13b095e96db41c4a928b97ef2d944a9b31b2cc7bdc4(前面15个0,满足target 要求)

3. 算力

算力指的是哈希算法每秒运算次数,单位为Hash/s

一般算力大概为TH/s
2009年为MH/s.

总结

以上是生活随笔为你收集整理的Bitcoin 中的挖矿算法(5) 难度值举例说明的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。