|
|
|
@ -362,8 +362,6 @@ void IncrementExtraNonce(CBlock* pblock, CBlockIndex* pindexPrev, unsigned int&
|
|
|
|
|
//
|
|
|
|
|
// Internal miner
|
|
|
|
|
//
|
|
|
|
|
double dHashesPerSec = 0.0;
|
|
|
|
|
int64_t nHPSTimerStart = 0;
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
// ScanHash scans nonces looking for a hash with at least some zero bits.
|
|
|
|
@ -393,10 +391,8 @@ bool static ScanHash(const CBlockHeader *pblock, uint32_t& nNonce, uint256 *phas
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
|
|
// If nothing found after trying for a while, return -1
|
|
|
|
|
if ((nNonce & 0xffff) == 0)
|
|
|
|
|
return false;
|
|
|
|
|
if ((nNonce & 0xfff) == 0)
|
|
|
|
|
boost::this_thread::interruption_point();
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -483,14 +479,9 @@ void static BitcoinMiner(CWallet *pwallet)
|
|
|
|
|
arith_uint256 hashTarget = arith_uint256().SetCompact(pblock->nBits);
|
|
|
|
|
uint256 hash;
|
|
|
|
|
uint32_t nNonce = 0;
|
|
|
|
|
uint32_t nOldNonce = 0;
|
|
|
|
|
while (true) {
|
|
|
|
|
bool fFound = ScanHash(pblock, nNonce, &hash);
|
|
|
|
|
uint32_t nHashesDone = nNonce - nOldNonce;
|
|
|
|
|
nOldNonce = nNonce;
|
|
|
|
|
|
|
|
|
|
// Check if something found
|
|
|
|
|
if (fFound)
|
|
|
|
|
if (ScanHash(pblock, nNonce, &hash))
|
|
|
|
|
{
|
|
|
|
|
if (UintToArith256(hash) <= hashTarget)
|
|
|
|
|
{
|
|
|
|
@ -512,35 +503,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
|
|
|
|
|
boost::this_thread::interruption_point();
|
|
|
|
|
// Regtest mode doesn't require peers
|
|
|
|
|