精通比特币(78):如何计算难度目标?

  • A+
在区块中看到难度目标,其被标为"难度位"或简称"nBits",定义在src/chain.h的CBlockIndex类中。

 

在区块277,316中,它的值为 0x1903a30c。 这个标记的值被存为系数/指数格式,前两位十六进制数字为幂(exponent),接下来的六位为系数(coefficient)。在这个区块里,0x19为幂,而 0x03a30c为系数。
计算难度目标的公式为:
target = coefficient * 2^(8 * (exponent – 3))

 

由此公式及难度位的值 0x1903a30c,可得:
target = 0x03a30c * 2^(0x08 * (0x19 - 0x03))
=> target = 0x03a30c * 2^(0x08 * 0x16)
=> target = 0x03a30c * 2^0xB0
​按十进制计算为:
=> 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
转化为十六进制后为:
=> target = 0x0000000000000003A30C00000000000000000000000000000000000000000000
​也就是说高度为277,316的有效区块的头信息哈希值是小于这个目标值的。这个数字的二进制表示中前60位都是0。在这个难度上,一个每秒可以处理1万亿个哈希计算的矿工(1 tera-hash per second 或 1 TH/sec)平均每8,496个区块才能找到一个正确结果,换句话说,平均每59天,才能为某一个区块找到正确的哈希值。

发表评论

您必须才能发表评论!