То, что я хотел бы знать, если существует метод расчета трудности без использования точки математики с плавающей, и то, что этот метод.
Но трудность представляет собой число с плавающей точкой, так что я не знаю, как вы можете получить там, не делая математику с плавающей точкой. Самый простой способ я знаю, это просто то, что в исходном коде клиента:
Защиту difficultyBits_to_float (б):
я = binary_to_int (б)
nShift = (я >> 24) & 0xff
dDiff = поплавок (0x0000ffff) / поплавок (я & 0x00FFFFFF)
в то время как nShift < 29:
dDiff * = 256,0
nShift + 1 =
в то время как nShift > 29:
dDiff / = 256,0
nShift - = 1
вернуться dDiff
Даже я не совсем понимаю, расчета, но я думаю, что это так же просто, как он получает, используя некоторую битовую математику (перешвартовки, бит и). Имейте в виду, что сложность обычно представляет собой 32-разрядное число, которое выглядит как 1DAABBCC. Первые 8 бит (1D) являются "nShift" выше, и последние 24 битов (AABBCC) способствуют числа dDiff. Похоже мне, что "nShift" является сырым количество нулевых байтов, необходимых на передней хэша (кратные восьми 0-бит), а остальные 24 бита дают вам поправочный коэффициент. Что-то вроде того...
Образом рассчитать самую длинную цепочку, чтобы начать с пулом неорганизованных блоков, доступом к хэшу. Я иду через все блоки один за одним, и следовать за ними вниз к блоку генеза (или первому блоку, который я уже вычисленным), следуя "предыдущая-хэш" поле, накапливая все трудности значения, как я иду. Когда я к "конец", Я иду обратно вверх по цепочке в том же порядке, и аккумулировать сложности-суммы назначая их к каждому блоку, как я иду. После этого, я просто найти блок с наивысшей суммой.
Причина, почему я не могу просто начать в блоке генеза и подойдите, что "следующего хэш" первоначально не определен. А если блок цепь разветвляется в любом месте, вы на самом деле есть два "следующего хэш" значения, и вы не будете знать, какая ветвь следовать, не зная, самую длинную цепочку ... но это то, что мы пытаемся найти!
Но, конечно, вы будете нуждаться, что расчет сложности выше, чтобы заставить его работать.