我正在查看地层协议,我对 mine.notify 方法的 nbits 值有疑问。我无法计算它,我认为这是货币困难。
我从狗狗币池中提取通知,它返回 1b3cc366,当时难度为 1078.52975077。
我在这里假设 1b3cc366 在转换时应该给我 1078.52975077 。但我似乎无法正确进行转换。
我看过这里,这里也尝试过.NET 函数BitConverter.Int64BitsToDouble。
有人可以帮我理解 nbits 值的含义吗?
我正在查看地层协议,我对 mine.notify 方法的 nbits 值有疑问。我无法计算它,我认为这是货币困难。
我从狗狗币池中提取通知,它返回 1b3cc366,当时难度为 1078.52975077。
我在这里假设 1b3cc366 在转换时应该给我 1078.52975077 。但我似乎无法正确进行转换。
我看过这里,这里也尝试过.NET 函数BitConverter.Int64BitsToDouble。
有人可以帮我理解 nbits 值的含义吗?
你是对的,nbits
是当前的网络难度。
这里详细描述了难度编码。
十六进制表示0x1b3cc366
由两部分组成:
0x1b
-- 目标中的字节数0x3cc366
-- 目标前缀这意味着有效哈希应该小于0x3cc366000000000000000000000000000000000000000000000000
(它正好0x1b
= 27 字节长)。
难度的浮点表示显示当前目标比创世块中使用的目标难多少。
中本聪决定0x1d00ffff
将创世区块用作难度,因此目标是
0x00ffff0000000000000000000000000000000000000000000000000000
.
而 1078.52975077 是当前目标比初始目标大多少:
$ echo 'ibase=16;FFFF0000000000000000000000000000000000000000000000000000 / 3CC366000000000000000000000000000000000000000000000000' | bc -l
1078.52975077482646448605