Попытка понять значение nbits из протокола страты
Я смотрю на протокол слоя и у меня возникла проблема со значением nbits метода mining.notify. У меня проблемы с расчетом, я предполагаю, что это валютная сложность.
Я извлекаю уведомление из пула dogecoin, и он возвращает 1b3cc366, и в то время сложность составляла 1078.52975077.
Я предполагаю, что 1b3cc366 должен дать мне 1078,52975077 при конвертации. Но я не могу сделать это правильно.
Я посмотрел здесь, здесь и также попробовал.NET функцию BitConverter.Int64BitsToDouble.
Может кто-нибудь помочь мне понять, что означает значение nbits?
1 ответ
Вы правы, nbits
текущая сложность сети.
Трудность кодирования подробно описана здесь.
Шестнадцатеричное представление типа 0x1b3cc366
состоит из двух частей:
0x1b
- количество байтов в цели0x3cc366
- целевой префикс
Это означает, что действительный хэш должен быть меньше 0x3cc366000000000000000000000000000000000000000000000000
(это точно 0x1b
= 27 байт).
Представление сложности с плавающей запятой показывает, насколько текущая цель сложнее, чем та, которая используется в блоке генезиса.
Сатоши решил использовать 0x1d00ffff
как трудность для блока генезиса, поэтому цель была 0x00ffff0000000000000000000000000000000000000000000000000000
,
И 1078,52975077 - это насколько текущая цель больше, чем исходная:
$ echo 'ibase=16;FFFF0000000000000000000000000000000000000000000000000000 / 3CC366000000000000000000000000000000000000000000000000' | bc -l
1078.52975077482646448605