mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-11-12 15:09:59 +01:00
Merge pull request #4076
397668eDeduplicate uint* comparison operator logic (Pieter Wuille)df9eb5eMove {Get,Set}Compact from bignum to uint256 (Pieter Wuille)a703150Add multiplication and division to uint160/uint256 (Pieter Wuille)4d480c8Exception instead of assigning 0 in case of wrong vector length (Pieter Wuille)eb2cbd7Deduplicate shared code between uint160 and uint256 (Pieter Wuille)
This commit is contained in:
17
src/main.h
17
src/main.h
@@ -10,7 +10,6 @@
|
||||
#include "bitcoin-config.h"
|
||||
#endif
|
||||
|
||||
#include "bignum.h"
|
||||
#include "chainparams.h"
|
||||
#include "coins.h"
|
||||
#include "core.h"
|
||||
@@ -814,13 +813,19 @@ public:
|
||||
return (int64_t)nTime;
|
||||
}
|
||||
|
||||
CBigNum GetBlockWork() const
|
||||
uint256 GetBlockWork() const
|
||||
{
|
||||
CBigNum bnTarget;
|
||||
bnTarget.SetCompact(nBits);
|
||||
if (bnTarget <= 0)
|
||||
uint256 bnTarget;
|
||||
bool fNegative;
|
||||
bool fOverflow;
|
||||
bnTarget.SetCompact(nBits, &fNegative, &fOverflow);
|
||||
if (fNegative || fOverflow || bnTarget == 0)
|
||||
return 0;
|
||||
return (CBigNum(1)<<256) / (bnTarget+1);
|
||||
// We need to compute 2**256 / (bnTarget+1), but we can't represent 2**256
|
||||
// as it's too large for a uint256. However, as 2**256 is at least as large
|
||||
// as bnTarget+1, it is equal to ((2**256 - bnTarget - 1) / (bnTarget+1)) + 1,
|
||||
// or ~bnTarget / (nTarget+1) + 1.
|
||||
return (~bnTarget / (bnTarget + 1)) + 1;
|
||||
}
|
||||
|
||||
bool CheckIndex() const
|
||||
|
||||
Reference in New Issue
Block a user