Move UpdateTime to pow
This commit is contained in:
parent
92b3d3630d
commit
c2c02f3fa9
6 changed files with 15 additions and 33 deletions
28
src/main.cpp
28
src/main.cpp
|
@ -1419,25 +1419,6 @@ void static InvalidBlockFound(CBlockIndex *pindex, const CValidationState &state
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateTime(CBlockHeader& block, const CBlockIndex* pindexPrev)
|
|
||||||
{
|
|
||||||
block.nTime = max(pindexPrev->GetMedianTimePast()+1, GetAdjustedTime());
|
|
||||||
|
|
||||||
// Updating time can change work required on testnet:
|
|
||||||
if (Params().AllowMinDifficultyBlocks())
|
|
||||||
block.nBits = GetNextWorkRequired(pindexPrev, &block);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void UpdateCoins(const CTransaction& tx, CValidationState &state, CCoinsViewCache &inputs, CTxUndo &txundo, int nHeight)
|
void UpdateCoins(const CTransaction& tx, CValidationState &state, CCoinsViewCache &inputs, CTxUndo &txundo, int nHeight)
|
||||||
{
|
{
|
||||||
bool ret;
|
bool ret;
|
||||||
|
@ -3291,15 +3272,6 @@ bool LoadExternalBlockFile(FILE* fileIn, CDiskBlockPos *dbp)
|
||||||
return nLoaded > 0;
|
return nLoaded > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
// CAlert
|
// CAlert
|
||||||
|
|
|
@ -163,8 +163,6 @@ bool GetTransaction(const uint256 &hash, CTransaction &tx, uint256 &hashBlock, b
|
||||||
bool ActivateBestChain(CValidationState &state);
|
bool ActivateBestChain(CValidationState &state);
|
||||||
int64_t GetBlockValue(int nHeight, int64_t nFees);
|
int64_t GetBlockValue(int nHeight, int64_t nFees);
|
||||||
|
|
||||||
void UpdateTime(CBlockHeader& block, const CBlockIndex* pindexPrev);
|
|
||||||
|
|
||||||
/** Create a new block index entry for a given block hash */
|
/** Create a new block index entry for a given block hash */
|
||||||
CBlockIndex * InsertBlockIndex(uint256 hash);
|
CBlockIndex * InsertBlockIndex(uint256 hash);
|
||||||
/** Verify a signature */
|
/** Verify a signature */
|
||||||
|
|
|
@ -305,7 +305,7 @@ CBlockTemplate* CreateNewBlock(const CScript& scriptPubKeyIn)
|
||||||
|
|
||||||
// Fill in header
|
// Fill in header
|
||||||
pblock->hashPrevBlock = pindexPrev->GetBlockHash();
|
pblock->hashPrevBlock = pindexPrev->GetBlockHash();
|
||||||
UpdateTime(*pblock, pindexPrev);
|
UpdateTime(pblock, pindexPrev);
|
||||||
pblock->nBits = GetNextWorkRequired(pindexPrev, pblock);
|
pblock->nBits = GetNextWorkRequired(pindexPrev, pblock);
|
||||||
pblock->nNonce = 0;
|
pblock->nNonce = 0;
|
||||||
pblocktemplate->vTxSigOps[0] = GetLegacySigOpCount(pblock->vtx[0]);
|
pblocktemplate->vTxSigOps[0] = GetLegacySigOpCount(pblock->vtx[0]);
|
||||||
|
@ -538,7 +538,7 @@ void static BitcoinMiner(CWallet *pwallet)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// Update nTime every few seconds
|
// Update nTime every few seconds
|
||||||
UpdateTime(*pblock, pindexPrev);
|
UpdateTime(pblock, pindexPrev);
|
||||||
if (Params().AllowMinDifficultyBlocks())
|
if (Params().AllowMinDifficultyBlocks())
|
||||||
{
|
{
|
||||||
// Changing pblock->nTime can change work required on testnet:
|
// Changing pblock->nTime can change work required on testnet:
|
||||||
|
|
10
src/pow.cpp
10
src/pow.cpp
|
@ -8,6 +8,7 @@
|
||||||
#include "chainparams.h"
|
#include "chainparams.h"
|
||||||
#include "core.h"
|
#include "core.h"
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
|
#include "timedata.h"
|
||||||
#include "uint256.h"
|
#include "uint256.h"
|
||||||
|
|
||||||
unsigned int GetNextWorkRequired(const CBlockIndex* pindexLast, const CBlockHeader *pblock)
|
unsigned int GetNextWorkRequired(const CBlockIndex* pindexLast, const CBlockHeader *pblock)
|
||||||
|
@ -117,3 +118,12 @@ unsigned int ComputeMinWork(unsigned int nBase, int64_t nTime)
|
||||||
bnResult = bnLimit;
|
bnResult = bnLimit;
|
||||||
return bnResult.GetCompact();
|
return bnResult.GetCompact();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void UpdateTime(CBlockHeader* pblock, const CBlockIndex* pindexPrev)
|
||||||
|
{
|
||||||
|
pblock->nTime = std::max(pindexPrev->GetMedianTimePast()+1, GetAdjustedTime());
|
||||||
|
|
||||||
|
// Updating time can change work required on testnet:
|
||||||
|
if (Params().AllowMinDifficultyBlocks())
|
||||||
|
pblock->nBits = GetNextWorkRequired(pindexPrev, pblock);
|
||||||
|
}
|
||||||
|
|
|
@ -20,4 +20,6 @@ bool CheckProofOfWork(uint256 hash, unsigned int nBits);
|
||||||
/** Calculate the minimum amount of work a received block needs, without knowing its direct parent */
|
/** Calculate the minimum amount of work a received block needs, without knowing its direct parent */
|
||||||
unsigned int ComputeMinWork(unsigned int nBase, int64_t nTime);
|
unsigned int ComputeMinWork(unsigned int nBase, int64_t nTime);
|
||||||
|
|
||||||
|
void UpdateTime(CBlockHeader* block, const CBlockIndex* pindexPrev);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -457,7 +457,7 @@ Value getblocktemplate(const Array& params, bool fHelp)
|
||||||
CBlock* pblock = &pblocktemplate->block; // pointer for convenience
|
CBlock* pblock = &pblocktemplate->block; // pointer for convenience
|
||||||
|
|
||||||
// Update nTime
|
// Update nTime
|
||||||
UpdateTime(*pblock, pindexPrev);
|
UpdateTime(pblock, pindexPrev);
|
||||||
pblock->nNonce = 0;
|
pblock->nNonce = 0;
|
||||||
|
|
||||||
Array transactions;
|
Array transactions;
|
||||||
|
|
Loading…
Reference in a new issue