commit
4851d09603
@ -127,7 +127,7 @@ namespace Checkpoints {
|
|||||||
} else {
|
} else {
|
||||||
double nCheapBefore = data.nTransactionsLastCheckpoint;
|
double nCheapBefore = data.nTransactionsLastCheckpoint;
|
||||||
double nExpensiveBefore = pindex->nChainTx - data.nTransactionsLastCheckpoint;
|
double nExpensiveBefore = pindex->nChainTx - data.nTransactionsLastCheckpoint;
|
||||||
double nExpensiveAfter = (nNow - pindex->nTime)/86400.0*data.fTransactionsPerDay;
|
double nExpensiveAfter = (nNow - pindex->GetBlockTime())/86400.0*data.fTransactionsPerDay;
|
||||||
fWorkBefore = nCheapBefore + nExpensiveBefore*fSigcheckVerificationFactor;
|
fWorkBefore = nCheapBefore + nExpensiveBefore*fSigcheckVerificationFactor;
|
||||||
fWorkAfter = nExpensiveAfter*fSigcheckVerificationFactor;
|
fWorkAfter = nExpensiveAfter*fSigcheckVerificationFactor;
|
||||||
}
|
}
|
||||||
|
@ -1786,7 +1786,7 @@ bool ConnectBlock(CBlock& block, CValidationState& state, CBlockIndex* pindex, C
|
|||||||
|
|
||||||
// BIP16 didn't become active until Apr 1 2012
|
// BIP16 didn't become active until Apr 1 2012
|
||||||
int64_t nBIP16SwitchTime = 1333238400;
|
int64_t nBIP16SwitchTime = 1333238400;
|
||||||
bool fStrictPayToScriptHash = (pindex->nTime >= nBIP16SwitchTime);
|
bool fStrictPayToScriptHash = (pindex->GetBlockTime() >= nBIP16SwitchTime);
|
||||||
|
|
||||||
unsigned int flags = SCRIPT_VERIFY_NOCACHE |
|
unsigned int flags = SCRIPT_VERIFY_NOCACHE |
|
||||||
(fStrictPayToScriptHash ? SCRIPT_VERIFY_P2SH : SCRIPT_VERIFY_NONE);
|
(fStrictPayToScriptHash ? SCRIPT_VERIFY_P2SH : SCRIPT_VERIFY_NONE);
|
||||||
@ -2435,7 +2435,7 @@ bool AcceptBlockHeader(CBlockHeader& block, CValidationState& state, CBlockIndex
|
|||||||
if (pcheckpoint && block.hashPrevBlock != (chainActive.Tip() ? chainActive.Tip()->GetBlockHash() : uint256(0)))
|
if (pcheckpoint && block.hashPrevBlock != (chainActive.Tip() ? chainActive.Tip()->GetBlockHash() : uint256(0)))
|
||||||
{
|
{
|
||||||
// Extra checks to prevent "fill up memory by spamming with bogus blocks"
|
// Extra checks to prevent "fill up memory by spamming with bogus blocks"
|
||||||
int64_t deltaTime = block.GetBlockTime() - pcheckpoint->nTime;
|
int64_t deltaTime = block.GetBlockTime() - pcheckpoint->GetBlockTime();
|
||||||
if (deltaTime < 0)
|
if (deltaTime < 0)
|
||||||
{
|
{
|
||||||
return state.DoS(100, error("CheckBlockHeader() : block with timestamp before last checkpoint"),
|
return state.DoS(100, error("CheckBlockHeader() : block with timestamp before last checkpoint"),
|
||||||
@ -2546,7 +2546,7 @@ bool AcceptBlock(CBlock& block, CValidationState& state, CBlockIndex** ppindex,
|
|||||||
CDiskBlockPos blockPos;
|
CDiskBlockPos blockPos;
|
||||||
if (dbp != NULL)
|
if (dbp != NULL)
|
||||||
blockPos = *dbp;
|
blockPos = *dbp;
|
||||||
if (!FindBlockPos(state, blockPos, nBlockSize+8, nHeight, block.nTime, dbp != NULL))
|
if (!FindBlockPos(state, blockPos, nBlockSize+8, nHeight, block.GetBlockTime(), dbp != NULL))
|
||||||
return error("AcceptBlock() : FindBlockPos failed");
|
return error("AcceptBlock() : FindBlockPos failed");
|
||||||
if (dbp == NULL)
|
if (dbp == NULL)
|
||||||
if (!WriteBlockToDisk(block, blockPos))
|
if (!WriteBlockToDisk(block, blockPos))
|
||||||
@ -3144,7 +3144,7 @@ bool InitBlockIndex() {
|
|||||||
unsigned int nBlockSize = ::GetSerializeSize(block, SER_DISK, CLIENT_VERSION);
|
unsigned int nBlockSize = ::GetSerializeSize(block, SER_DISK, CLIENT_VERSION);
|
||||||
CDiskBlockPos blockPos;
|
CDiskBlockPos blockPos;
|
||||||
CValidationState state;
|
CValidationState state;
|
||||||
if (!FindBlockPos(state, blockPos, nBlockSize+8, 0, block.nTime))
|
if (!FindBlockPos(state, blockPos, nBlockSize+8, 0, block.GetBlockTime()))
|
||||||
return error("LoadBlockIndex() : FindBlockPos failed");
|
return error("LoadBlockIndex() : FindBlockPos failed");
|
||||||
if (!WriteBlockToDisk(block, blockPos))
|
if (!WriteBlockToDisk(block, blockPos))
|
||||||
return error("LoadBlockIndex() : writing genesis block to disk failed");
|
return error("LoadBlockIndex() : writing genesis block to disk failed");
|
||||||
|
@ -26,7 +26,7 @@ unsigned int GetNextWorkRequired(const CBlockIndex* pindexLast, const CBlockHead
|
|||||||
// Special difficulty rule for testnet:
|
// Special difficulty rule for testnet:
|
||||||
// If the new block's timestamp is more than 2* 10 minutes
|
// If the new block's timestamp is more than 2* 10 minutes
|
||||||
// then allow mining of a min-difficulty block.
|
// then allow mining of a min-difficulty block.
|
||||||
if (pblock->nTime > pindexLast->nTime + Params().TargetSpacing()*2)
|
if (pblock->GetBlockTime() > pindexLast->GetBlockTime() + Params().TargetSpacing()*2)
|
||||||
return nProofOfWorkLimit;
|
return nProofOfWorkLimit;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -85,7 +85,7 @@ QDateTime ClientModel::getLastBlockDate() const
|
|||||||
if (chainActive.Tip())
|
if (chainActive.Tip())
|
||||||
return QDateTime::fromTime_t(chainActive.Tip()->GetBlockTime());
|
return QDateTime::fromTime_t(chainActive.Tip()->GetBlockTime());
|
||||||
else
|
else
|
||||||
return QDateTime::fromTime_t(Params().GenesisBlock().nTime); // Genesis block's time of current network
|
return QDateTime::fromTime_t(Params().GenesisBlock().GetBlockTime()); // Genesis block's time of current network
|
||||||
}
|
}
|
||||||
|
|
||||||
double ClientModel::getVerificationProgress() const
|
double ClientModel::getVerificationProgress() const
|
||||||
|
@ -157,7 +157,7 @@ Value importwallet(const Array& params, bool fHelp)
|
|||||||
if (!file.is_open())
|
if (!file.is_open())
|
||||||
throw JSONRPCError(RPC_INVALID_PARAMETER, "Cannot open wallet dump file");
|
throw JSONRPCError(RPC_INVALID_PARAMETER, "Cannot open wallet dump file");
|
||||||
|
|
||||||
int64_t nTimeBegin = chainActive.Tip()->nTime;
|
int64_t nTimeBegin = chainActive.Tip()->GetBlockTime();
|
||||||
|
|
||||||
bool fGood = true;
|
bool fGood = true;
|
||||||
|
|
||||||
@ -215,7 +215,7 @@ Value importwallet(const Array& params, bool fHelp)
|
|||||||
pwalletMain->ShowProgress("", 100); // hide progress dialog in GUI
|
pwalletMain->ShowProgress("", 100); // hide progress dialog in GUI
|
||||||
|
|
||||||
CBlockIndex *pindex = chainActive.Tip();
|
CBlockIndex *pindex = chainActive.Tip();
|
||||||
while (pindex && pindex->pprev && pindex->nTime > nTimeBegin - 7200)
|
while (pindex && pindex->pprev && pindex->GetBlockTime() > nTimeBegin - 7200)
|
||||||
pindex = pindex->pprev;
|
pindex = pindex->pprev;
|
||||||
|
|
||||||
if (!pwalletMain->nTimeFirstKey || nTimeBegin < pwalletMain->nTimeFirstKey)
|
if (!pwalletMain->nTimeFirstKey || nTimeBegin < pwalletMain->nTimeFirstKey)
|
||||||
@ -301,7 +301,7 @@ Value dumpwallet(const Array& params, bool fHelp)
|
|||||||
file << strprintf("# Wallet dump created by Bitcoin %s (%s)\n", CLIENT_BUILD, CLIENT_DATE);
|
file << strprintf("# Wallet dump created by Bitcoin %s (%s)\n", CLIENT_BUILD, CLIENT_DATE);
|
||||||
file << strprintf("# * Created on %s\n", EncodeDumpTime(GetTime()));
|
file << strprintf("# * Created on %s\n", EncodeDumpTime(GetTime()));
|
||||||
file << strprintf("# * Best block at time of backup was %i (%s),\n", chainActive.Height(), chainActive.Tip()->GetBlockHash().ToString());
|
file << strprintf("# * Best block at time of backup was %i (%s),\n", chainActive.Height(), chainActive.Tip()->GetBlockHash().ToString());
|
||||||
file << strprintf("# mined on %s\n", EncodeDumpTime(chainActive.Tip()->nTime));
|
file << strprintf("# mined on %s\n", EncodeDumpTime(chainActive.Tip()->GetBlockTime()));
|
||||||
file << "\n";
|
file << "\n";
|
||||||
for (std::vector<std::pair<int64_t, CKeyID> >::const_iterator it = vKeyBirth.begin(); it != vKeyBirth.end(); it++) {
|
for (std::vector<std::pair<int64_t, CKeyID> >::const_iterator it = vKeyBirth.begin(); it != vKeyBirth.end(); it++) {
|
||||||
const CKeyID &keyid = it->second;
|
const CKeyID &keyid = it->second;
|
||||||
|
@ -442,7 +442,7 @@ Value getblocktemplate(const Array& params, bool fHelp)
|
|||||||
result.push_back(Pair("noncerange", "00000000ffffffff"));
|
result.push_back(Pair("noncerange", "00000000ffffffff"));
|
||||||
result.push_back(Pair("sigoplimit", (int64_t)MAX_BLOCK_SIGOPS));
|
result.push_back(Pair("sigoplimit", (int64_t)MAX_BLOCK_SIGOPS));
|
||||||
result.push_back(Pair("sizelimit", (int64_t)MAX_BLOCK_SIZE));
|
result.push_back(Pair("sizelimit", (int64_t)MAX_BLOCK_SIZE));
|
||||||
result.push_back(Pair("curtime", (int64_t)pblock->nTime));
|
result.push_back(Pair("curtime", pblock->GetBlockTime()));
|
||||||
result.push_back(Pair("bits", strprintf("%08x", pblock->nBits)));
|
result.push_back(Pair("bits", strprintf("%08x", pblock->nBits)));
|
||||||
result.push_back(Pair("height", (int64_t)(pindexPrev->nHeight+1)));
|
result.push_back(Pair("height", (int64_t)(pindexPrev->nHeight+1)));
|
||||||
|
|
||||||
|
@ -99,8 +99,8 @@ void TxToJSON(const CTransaction& tx, const uint256 hashBlock, Object& entry)
|
|||||||
if (chainActive.Contains(pindex))
|
if (chainActive.Contains(pindex))
|
||||||
{
|
{
|
||||||
entry.push_back(Pair("confirmations", 1 + chainActive.Height() - pindex->nHeight));
|
entry.push_back(Pair("confirmations", 1 + chainActive.Height() - pindex->nHeight));
|
||||||
entry.push_back(Pair("time", (int64_t)pindex->nTime));
|
entry.push_back(Pair("time", pindex->GetBlockTime()));
|
||||||
entry.push_back(Pair("blocktime", (int64_t)pindex->nTime));
|
entry.push_back(Pair("blocktime", pindex->GetBlockTime()));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
entry.push_back(Pair("confirmations", 0));
|
entry.push_back(Pair("confirmations", 0));
|
||||||
|
@ -50,7 +50,7 @@ void WalletTxToJSON(const CWalletTx& wtx, Object& entry)
|
|||||||
{
|
{
|
||||||
entry.push_back(Pair("blockhash", wtx.hashBlock.GetHex()));
|
entry.push_back(Pair("blockhash", wtx.hashBlock.GetHex()));
|
||||||
entry.push_back(Pair("blockindex", wtx.nIndex));
|
entry.push_back(Pair("blockindex", wtx.nIndex));
|
||||||
entry.push_back(Pair("blocktime", (int64_t)(mapBlockIndex[wtx.hashBlock]->nTime)));
|
entry.push_back(Pair("blocktime", mapBlockIndex[wtx.hashBlock]->GetBlockTime()));
|
||||||
}
|
}
|
||||||
uint256 hash = wtx.GetHash();
|
uint256 hash = wtx.GetHash();
|
||||||
entry.push_back(Pair("txid", hash.GetHex()));
|
entry.push_back(Pair("txid", hash.GetHex()));
|
||||||
|
@ -515,8 +515,8 @@ bool CWallet::AddToWallet(const CWalletTx& wtxIn, bool fFromLoadWallet)
|
|||||||
{
|
{
|
||||||
if (mapBlockIndex.count(wtxIn.hashBlock))
|
if (mapBlockIndex.count(wtxIn.hashBlock))
|
||||||
{
|
{
|
||||||
unsigned int latestNow = wtx.nTimeReceived;
|
int64_t latestNow = wtx.nTimeReceived;
|
||||||
unsigned int latestEntry = 0;
|
int64_t latestEntry = 0;
|
||||||
{
|
{
|
||||||
// Tolerate times up to the last timestamp in the wallet not more than 5 minutes into the future
|
// Tolerate times up to the last timestamp in the wallet not more than 5 minutes into the future
|
||||||
int64_t latestTolerated = latestNow + 300;
|
int64_t latestTolerated = latestNow + 300;
|
||||||
@ -547,7 +547,7 @@ bool CWallet::AddToWallet(const CWalletTx& wtxIn, bool fFromLoadWallet)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned int& blocktime = mapBlockIndex[wtxIn.hashBlock]->nTime;
|
int64_t blocktime = mapBlockIndex[wtxIn.hashBlock]->GetBlockTime();
|
||||||
wtx.nTimeSmart = std::max(latestEntry, std::min(blocktime, latestNow));
|
wtx.nTimeSmart = std::max(latestEntry, std::min(blocktime, latestNow));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -889,7 +889,7 @@ int CWallet::ScanForWalletTransactions(CBlockIndex* pindexStart, bool fUpdate)
|
|||||||
|
|
||||||
// no need to read and scan block, if block was created before
|
// no need to read and scan block, if block was created before
|
||||||
// our wallet birthday (as adjusted for block time variability)
|
// our wallet birthday (as adjusted for block time variability)
|
||||||
while (pindex && nTimeFirstKey && (pindex->nTime < (nTimeFirstKey - 7200)))
|
while (pindex && nTimeFirstKey && (pindex->GetBlockTime() < (nTimeFirstKey - 7200)))
|
||||||
pindex = chainActive.Next(pindex);
|
pindex = chainActive.Next(pindex);
|
||||||
|
|
||||||
ShowProgress(_("Rescanning..."), 0); // show rescan progress in GUI as dialog or on splashscreen, if -rescan on startup
|
ShowProgress(_("Rescanning..."), 0); // show rescan progress in GUI as dialog or on splashscreen, if -rescan on startup
|
||||||
@ -2087,7 +2087,7 @@ void CWallet::GetKeyBirthTimes(std::map<CKeyID, int64_t> &mapKeyBirth) const {
|
|||||||
|
|
||||||
// Extract block timestamps for those keys
|
// Extract block timestamps for those keys
|
||||||
for (std::map<CKeyID, CBlockIndex*>::const_iterator it = mapKeyFirstBlock.begin(); it != mapKeyFirstBlock.end(); it++)
|
for (std::map<CKeyID, CBlockIndex*>::const_iterator it = mapKeyFirstBlock.begin(); it != mapKeyFirstBlock.end(); it++)
|
||||||
mapKeyBirth[it->first] = it->second->nTime - 7200; // block times can be 2h off
|
mapKeyBirth[it->first] = it->second->GetBlockTime() - 7200; // block times can be 2h off
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CWallet::AddDestData(const CTxDestination &dest, const std::string &key, const std::string &value)
|
bool CWallet::AddDestData(const CTxDestination &dest, const std::string &key, const std::string &value)
|
||||||
|
Loading…
Reference in New Issue
Block a user