Попытка понять значение 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
Другие вопросы по тегам