2014-02-27 43 views
6

我正在查看stratum protocol,并且遇到了mining.notify方法的nbits值的问题。我很难计算它,我认为这是货币难度。试图理解层协议的nbits值

我从一个狗币池中取出一个通知,它返回1b3cc366,当时的难度是1078.52975077。

我在这里假设1b3cc366在转换时应该给我1078.52975077。但我似乎无法完成转换权。

我看了here,here,并且还尝试了.NET函数BitConverter.Int64BitsToDouble

有人能帮我理解nbits值是什么意思吗?

回答

10

你是对的,nbits是目前的网络难度。

难度编码是全文描述here

0x1b3cc366

十六进制表示由两个部分组成:

  • 0x1b - 字节中的目标数
  • 0x3cc366 - 目标前缀

这意味着,有效散列应该少比0x3cc366000000000000000000000000000000000000000000000000(确切地说0x1b = 27字节长)。

浮点难度表示显示目前的目标比起始块中使用的目标更难。

Satoshi决定使用0x1d00ffff作为创建区块的难度,所以目标是 0x00ffff0000000000000000000000000000000000000000000000000000

而且1078.52975077很多当前的目标是如何比初始一个更大:

$ echo 'ibase=16;FFFF0000000000000000000000000000000000000000000000000000/3CC366000000000000000000000000000000000000000000000000' | bc -l 
1078.52975077482646448605