aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjtimon <jtimon@monetize.io>2014-07-05 12:05:33 +0200
committerjtimon <jtimon@monetize.io>2014-08-23 13:21:51 +0200
commitb343c1a1e34f851e70649ad1f49855a7d878f9ef (patch)
treeb7c15e98c8a631420c186dd0acec51af4a02a061
parentc2c02f3fa99385f5a5be722fda6f71522c93bdaa (diff)
downloadbitcoin-b343c1a1e34f851e70649ad1f49855a7d878f9ef.tar.xz
Move CBlockIndex::GetBlockWork() to pow::GetProofIncrement(nBits)
-rw-r--r--src/main.h13
-rw-r--r--src/pow.cpp15
-rw-r--r--src/pow.h2
3 files changed, 19 insertions, 11 deletions
diff --git a/src/main.h b/src/main.h
index adb7d68bcf..a15a0e16d0 100644
--- a/src/main.h
+++ b/src/main.h
@@ -14,6 +14,7 @@
#include "coins.h"
#include "core.h"
#include "net.h"
+#include "pow.h"
#include "script.h"
#include "sync.h"
#include "txmempool.h"
@@ -792,17 +793,7 @@ public:
uint256 GetBlockWork() const
{
- uint256 bnTarget;
- bool fNegative;
- bool fOverflow;
- bnTarget.SetCompact(nBits, &fNegative, &fOverflow);
- if (fNegative || fOverflow || bnTarget == 0)
- return 0;
- // 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;
+ return GetProofIncrement(nBits);
}
enum { nMedianTimeSpan=11 };
diff --git a/src/pow.cpp b/src/pow.cpp
index a99c582d7d..d76928bda2 100644
--- a/src/pow.cpp
+++ b/src/pow.cpp
@@ -127,3 +127,18 @@ void UpdateTime(CBlockHeader* pblock, const CBlockIndex* pindexPrev)
if (Params().AllowMinDifficultyBlocks())
pblock->nBits = GetNextWorkRequired(pindexPrev, pblock);
}
+
+uint256 GetProofIncrement(unsigned int nBits)
+{
+ uint256 bnTarget;
+ bool fNegative;
+ bool fOverflow;
+ bnTarget.SetCompact(nBits, &fNegative, &fOverflow);
+ if (fNegative || fOverflow || bnTarget == 0)
+ return 0;
+ // 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;
+}
diff --git a/src/pow.h b/src/pow.h
index 9880621788..6aea713fc4 100644
--- a/src/pow.h
+++ b/src/pow.h
@@ -22,4 +22,6 @@ unsigned int ComputeMinWork(unsigned int nBase, int64_t nTime);
void UpdateTime(CBlockHeader* block, const CBlockIndex* pindexPrev);
+uint256 GetProofIncrement(unsigned int nBits);
+
#endif