7

我正在查看地层协议,我对 mine.notify 方法的 nbits 值有疑问。我无法计算它,我认为这是货币困难。

我从狗狗币池中提取通知,它返回 1b3cc366,当时难度为 1078.52975077。

我在这里假设 1b3cc366 在转换时应该给我 1078.52975077 。但我似乎无法正确进行转换。

我看过这里这里也尝试过.NET 函数BitConverter.Int64BitsToDouble

有人可以帮我理解 nbits 值的含义吗?

4

1 回答 1

13

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

这里详细描述了难度编码。

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

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

这意味着有效哈希应该小于0x3cc366000000000000000000000000000000000000000000000000(它正好0x1b= 27 字节长)。

难度的浮点表示显示当前目标比创世块中使用的目标难多少。

中本聪决定0x1d00ffff将创世区块用作难度,因此目标是 0x00ffff0000000000000000000000000000000000000000000000000000.

而 1078.52975077 是当前目标比初始目标大多少:

$ echo 'ibase=16;FFFF0000000000000000000000000000000000000000000000000000 / 3CC366000000000000000000000000000000000000000000000000' | bc -l
1078.52975077482646448605
于 2014-03-04T01:19:26.770 回答