mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-01-21 07:39:08 +01:00
Fix issue #848 : broken mining on testnet
This commit is contained in:
committed by
Luke Dashjr
parent
ffef16404d
commit
91aadbdacf
20
src/main.cpp
20
src/main.cpp
@@ -807,6 +807,15 @@ void static InvalidChainFound(CBlockIndex* pindexNew)
|
||||
printf("InvalidChainFound: WARNING: Displayed transactions may not be correct! You may need to upgrade, or other nodes may need to upgrade.\n");
|
||||
}
|
||||
|
||||
void CBlock::UpdateTime(const CBlockIndex* pindexPrev)
|
||||
{
|
||||
nTime = max(pindexPrev->GetMedianTimePast()+1, GetAdjustedTime());
|
||||
|
||||
// Updating time can change work required on testnet:
|
||||
if (fTestNet)
|
||||
nBits = GetNextWorkRequired(pindexPrev, this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -2896,7 +2905,7 @@ CBlock* CreateNewBlock(CReserveKey& reservekey)
|
||||
// Fill in header
|
||||
pblock->hashPrevBlock = pindexPrev->GetBlockHash();
|
||||
pblock->hashMerkleRoot = pblock->BuildMerkleTree();
|
||||
pblock->nTime = max(pindexPrev->GetMedianTimePast()+1, GetAdjustedTime());
|
||||
pblock->UpdateTime(pindexPrev);
|
||||
pblock->nBits = GetNextWorkRequired(pindexPrev, pblock.get());
|
||||
pblock->nNonce = 0;
|
||||
|
||||
@@ -3053,6 +3062,7 @@ void static BitcoinMiner(CWallet *pwallet)
|
||||
FormatHashBuffers(pblock.get(), pmidstate, pdata, phash1);
|
||||
|
||||
unsigned int& nBlockTime = *(unsigned int*)(pdata + 64 + 4);
|
||||
unsigned int& nBlockBits = *(unsigned int*)(pdata + 64 + 8);
|
||||
unsigned int& nBlockNonce = *(unsigned int*)(pdata + 64 + 12);
|
||||
|
||||
|
||||
@@ -3140,8 +3150,14 @@ void static BitcoinMiner(CWallet *pwallet)
|
||||
break;
|
||||
|
||||
// Update nTime every few seconds
|
||||
pblock->nTime = max(pindexPrev->GetMedianTimePast()+1, GetAdjustedTime());
|
||||
pblock->UpdateTime(pindexPrev);
|
||||
nBlockTime = ByteReverse(pblock->nTime);
|
||||
if (fTestNet)
|
||||
{
|
||||
// Changing pblock->nTime can change work required on testnet:
|
||||
nBlockBits = ByteReverse(pblock->nBits);
|
||||
hashTarget = CBigNum().SetCompact(pblock->nBits).getuint256();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -846,6 +846,8 @@ public:
|
||||
return n;
|
||||
}
|
||||
|
||||
void UpdateTime(const CBlockIndex* pindexPrev);
|
||||
|
||||
|
||||
uint256 BuildMerkleTree() const
|
||||
{
|
||||
|
||||
@@ -1548,7 +1548,7 @@ Value getwork(const Array& params, bool fHelp)
|
||||
}
|
||||
|
||||
// Update nTime
|
||||
pblock->nTime = max(pindexPrev->GetMedianTimePast()+1, GetAdjustedTime());
|
||||
pblock->UpdateTime(pindexPrev);
|
||||
pblock->nNonce = 0;
|
||||
|
||||
// Update nExtraNonce
|
||||
|
||||
Reference in New Issue
Block a user