Это будет отображать любого из последних уровней сложностей немного по-другому, хотя. Ранние трудности и трудности testnet не настолько велики, чтобы вызвать эту ошибку.
Ни одна из реальных целей или сжатых целей не меняются, только переход к точке трудности с плавающей изменяются и AFAIK это только когда-либо отображается, никогда не конвертируется обратно, так что патч не влияет на целевые расчеты, двоичные файлы, базы данных, ни двоичного протокол , только программа, которые используют с плавающей запятой отображаемого значения трудности может быть осуществлена. (Бассейны? Я не думаю, что это так, но они могут нуждаться в головах об изменении)
Код:
*** Bitcoin-0.3.21 / SRC / rpc.cpp 2011-04-20 16: 08: +01,000000000 -0600
--- Bitcoin-0.3.21-тест / SRC / rpc.cpp 2011-05-25 18: 20: +48,000000000 -0600
***************
*** 199208 ****
// минимальная сложность = 1,0.
если (pindexBest == NULL)
вернуться 1,0;
! INT nShift = 256 - 32 - 31; // чтобы поместиться в UINT
! двойная dMinimum = (CBigNum (). SetCompact (bnProofOfWorkLimit.GetCompact ()) >> nShift) .getuint ();
! двойная dCurrently = (CBigNum (). SetCompact (pindexBest->Nbits) >> nShift) .getuint ();
! вернуться dMinimum / dCurrently;
}
Значение getdifficulty (сопз массив& PARAMS, BOOL fHelp)
--- 199220 ----
// минимальная сложность = 1,0.
если (pindexBest == NULL)
вернуться 1,0;
! INT = сдвиг (pindexBest->Nbits >> 24) & 0xff;
! двойной дифференциал =
! (Двойной) 0x0000ffff / (двойной) (pindexBest->Nbits & 0x00FFFFFF);
!
! если (сдвиг < 29)
! в то время как (сдвиг < 29) {
! Diff * = 256,0;
! сдвиг ++;
! }
! еще
! в то время как (сдвиг > 29) {
! Diff / = 256,0;
! сдвиг--;
! }
!
! вернуться диф;
}
Значение getdifficulty (сопз массив& PARAMS, BOOL fHelp)