X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=src%2Fkernel.cpp;h=536f821af6f2f3715e2f3c0b1190772872c56f82;hb=HEAD;hp=bd8c35757e09b50a1a54ab030854f3a2f7a5d043;hpb=7483713823cea61963ae0051f3e17ffd4b9be706;p=novacoin.git diff --git a/src/kernel.cpp b/src/kernel.cpp index bd8c357..536f821 100644 --- a/src/kernel.cpp +++ b/src/kernel.cpp @@ -5,13 +5,11 @@ // Distributed under the MIT/X11 software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. -#include - #include "kernel.h" #include "kernel_worker.h" -#include "txdb.h" +#include "txdb-leveldb.h" +#include "main.h" -extern unsigned int nStakeMaxAge; extern unsigned int nStakeTargetSpacing; using namespace std; @@ -30,24 +28,25 @@ typedef std::map MapModifierCheckpoints; // Hard checkpoints of stake modifiers to ensure they are deterministic static std::map mapStakeModifierCheckpoints = - boost::assign::map_list_of - ( 0, 0x0e00670bu ) - ( 12661, 0x5d84115du ) - (143990, 0x9c592c78u ) - (149000, 0x48f2bdc4u ) - (160000, 0x789df0f0u ) - (200000, 0x01ec1503u ) - (221047, 0x0b39ef50u ) - (243100, 0xe928d83au ) - (532000, 0x3e5c2b81u ) - (561108, 0x9c1860b0u ) - ; + { + { 0, 0x0e00670bu }, + { 12661, 0x5d84115du }, + {143990, 0x9c592c78u }, + {149000, 0x48f2bdc4u }, + {160000, 0x789df0f0u }, + {200000, 0x01ec1503u }, + {221047, 0x0b39ef50u }, + {243100, 0xe928d83au }, + {532000, 0x3e5c2b81u }, + {561108, 0x9c1860b0u }, + {712891, 0xee193895u } + }; // Hard checkpoints of stake modifiers to ensure they are deterministic (testNet) static std::map mapStakeModifierCheckpointsTestNet = - boost::assign::map_list_of - ( 0, 0x0e00670bu ) - ; + { + { 0, 0x0e00670bu } + }; // Pregenerated entropy bits table (from genesis to #9689) // @@ -142,7 +141,7 @@ static bool SelectBlockFromCandidates(vector >& vSortedBy bool fSelected = false; uint256 hashBest = 0; *pindexSelected = (const CBlockIndex*) 0; - BOOST_FOREACH(const PAIRTYPE(int64_t, uint256)& item, vSortedByTimestamp) + for (const auto& item : vSortedByTimestamp) { if (!mapBlockIndex.count(item.second)) return error("SelectBlockFromCandidates: failed to find block index for candidate block %s", item.second.ToString().c_str()); @@ -288,7 +287,7 @@ bool ComputeNextStakeModifier(const CBlockIndex* pindexCurrent, uint64_t& nStake strSelectionMap.replace(pindex->nHeight - nHeightFirstCandidate, 1, "="); pindex = pindex->pprev; } - BOOST_FOREACH(const PAIRTYPE(uint256, const CBlockIndex*)& item, mapSelectedBlocks) + for (const auto& item : mapSelectedBlocks) { // 'S' indicates selected proof-of-stake blocks // 'W' indicates selected proof-of-work blocks @@ -492,10 +491,6 @@ bool CheckProofOfStake(const CTransaction& tx, unsigned int nBits, uint256& hash if (!txPrev.ReadFromDisk(txdb, txin.prevout, txindex)) return tx.DoS(1, error("CheckProofOfStake() : INFO: read txPrev failed")); // previous transaction not in main chain, may occur during initial download -#ifndef USE_LEVELDB - txdb.Close(); -#endif - // Verify signature if (!VerifySignature(txPrev, tx, 0, MANDATORY_SCRIPT_VERIFY_FLAGS, 0)) return tx.DoS(100, error("CheckProofOfStake() : VerifySignature failed on coinstake %s", tx.GetHash().ToString().c_str()));