X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=src%2Fkernel.cpp;h=fe9d1bfad599d65a9a50cc98f2f77a9cc4636b78;hb=94a288b2048a488e86934497175966eb4d253b47;hp=a8f4f5d6398e923f4e9044122ceee9d95e2654e0;hpb=4577465fb947bce73cfabd791d4c02ecc0adbb63;p=novacoin.git diff --git a/src/kernel.cpp b/src/kernel.cpp index a8f4f5d..fe9d1bf 100644 --- a/src/kernel.cpp +++ b/src/kernel.cpp @@ -9,7 +9,7 @@ #include "kernel.h" #include "kernel_worker.h" -#include "txdb.h" +#include "txdb-leveldb.h" extern unsigned int nStakeMaxAge; extern unsigned int nStakeTargetSpacing; @@ -31,13 +31,17 @@ 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 ) + ( 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) @@ -162,13 +166,13 @@ static bool SelectBlockFromCandidates(vector >& vSortedBy if (fSelected && hashSelection < hashBest) { hashBest = hashSelection; - *pindexSelected = (const CBlockIndex*) pindex; + *pindexSelected = pindex; } else if (!fSelected) { fSelected = true; hashBest = hashSelection; - *pindexSelected = (const CBlockIndex*) pindex; + *pindexSelected = pindex; } } if (fDebug && GetBoolArg("-printstakemodifier")) @@ -434,9 +438,13 @@ bool ScanKernelForward(unsigned char *kernel, uint32_t nBits, uint32_t nInputTxT // TODO: custom threads amount uint32_t nThreads = boost::thread::hardware_concurrency(); + if (nThreads == 0) + { + nThreads = 1; + printf("Warning: hardware_concurrency() failed in %s:%d\n", __FILE__, __LINE__); + } uint32_t nPart = (SearchInterval.second - SearchInterval.first) / nThreads; - KernelWorker *workers = new KernelWorker[nThreads]; boost::thread_group group; @@ -485,10 +493,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()));