Попытка понять значение nbits из протокола stratum
-
23-12-2019 - |
Вопрос
я смотрю на протокол слоя и у меня возникла проблема со значением nbits метода Mining.notify.У меня проблемы с расчетами, я предполагаю, что это сложность с валютой.
Я извлекаю уведомление из пула dogecoin, и оно возвращает 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