|
|
@ -364,8 +364,6 @@ void IncrementExtraNonce(CBlock* pblock, CBlockIndex* pindexPrev, unsigned int& |
|
|
|
//
|
|
|
|
//
|
|
|
|
// Internal miner
|
|
|
|
// Internal miner
|
|
|
|
//
|
|
|
|
//
|
|
|
|
double dHashesPerSec = 0.0; |
|
|
|
|
|
|
|
int64_t nHPSTimerStart = 0; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
//
|
|
|
|
// ScanHash scans nonces looking for a hash with at least some zero bits.
|
|
|
|
// ScanHash scans nonces looking for a hash with at least some zero bits.
|
|
|
@ -395,10 +393,8 @@ bool static ScanHash(const CBlockHeader *pblock, uint32_t& nNonce, uint256 *phas |
|
|
|
return true; |
|
|
|
return true; |
|
|
|
|
|
|
|
|
|
|
|
// If nothing found after trying for a while, return -1
|
|
|
|
// If nothing found after trying for a while, return -1
|
|
|
|
if ((nNonce & 0xffff) == 0) |
|
|
|
|
|
|
|
return false; |
|
|
|
|
|
|
|
if ((nNonce & 0xfff) == 0) |
|
|
|
if ((nNonce & 0xfff) == 0) |
|
|
|
boost::this_thread::interruption_point(); |
|
|
|
return false; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -485,14 +481,9 @@ void static BitcoinMiner(CWallet *pwallet) |
|
|
|
uint256 hashTarget = uint256().SetCompact(pblock->nBits); |
|
|
|
uint256 hashTarget = uint256().SetCompact(pblock->nBits); |
|
|
|
uint256 hash; |
|
|
|
uint256 hash; |
|
|
|
uint32_t nNonce = 0; |
|
|
|
uint32_t nNonce = 0; |
|
|
|
uint32_t nOldNonce = 0; |
|
|
|
|
|
|
|
while (true) { |
|
|
|
while (true) { |
|
|
|
bool fFound = ScanHash(pblock, nNonce, &hash); |
|
|
|
|
|
|
|
uint32_t nHashesDone = nNonce - nOldNonce; |
|
|
|
|
|
|
|
nOldNonce = nNonce; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Check if something found
|
|
|
|
// Check if something found
|
|
|
|
if (fFound) |
|
|
|
if (ScanHash(pblock, nNonce, &hash)) |
|
|
|
{ |
|
|
|
{ |
|
|
|
if (hash <= hashTarget) |
|
|
|
if (hash <= hashTarget) |
|
|
|
{ |
|
|
|
{ |
|
|
@ -514,35 +505,6 @@ void static BitcoinMiner(CWallet *pwallet) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Meter hashes/sec
|
|
|
|
|
|
|
|
static int64_t nHashCounter; |
|
|
|
|
|
|
|
if (nHPSTimerStart == 0) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
nHPSTimerStart = GetTimeMillis(); |
|
|
|
|
|
|
|
nHashCounter = 0; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
nHashCounter += nHashesDone; |
|
|
|
|
|
|
|
if (GetTimeMillis() - nHPSTimerStart > 4000) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
static CCriticalSection cs; |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
LOCK(cs); |
|
|
|
|
|
|
|
if (GetTimeMillis() - nHPSTimerStart > 4000) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
dHashesPerSec = 1000.0 * nHashCounter / (GetTimeMillis() - nHPSTimerStart); |
|
|
|
|
|
|
|
nHPSTimerStart = GetTimeMillis(); |
|
|
|
|
|
|
|
nHashCounter = 0; |
|
|
|
|
|
|
|
static int64_t nLogTime; |
|
|
|
|
|
|
|
if (GetTime() - nLogTime > 30 * 60) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
nLogTime = GetTime(); |
|
|
|
|
|
|
|
LogPrintf("hashmeter %6.0f khash/s\n", dHashesPerSec/1000.0); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Check for stop or if block needs to be rebuilt
|
|
|
|
// Check for stop or if block needs to be rebuilt
|
|
|
|
boost::this_thread::interruption_point(); |
|
|
|
boost::this_thread::interruption_point(); |
|
|
|
// Regtest mode doesn't require peers
|
|
|
|
// Regtest mode doesn't require peers
|
|
|
|