|
|
|
@ -922,6 +922,15 @@ void static InvalidChainFound(CBlockIndex* pindexNew)
@@ -922,6 +922,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); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -3168,7 +3177,7 @@ CBlock* CreateNewBlock(CReserveKey& reservekey)
@@ -3168,7 +3177,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; |
|
|
|
|
|
|
|
|
@ -3326,6 +3335,7 @@ void static BitcoinMiner(CWallet *pwallet)
@@ -3326,6 +3335,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); |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -3413,8 +3423,14 @@ void static BitcoinMiner(CWallet *pwallet)
@@ -3413,8 +3423,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(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|