#include "kernel.h"
#include "kernel_worker.h"
-#include "txdb.h"
+#include "txdb-leveldb.h"
extern unsigned int nStakeMaxAge;
extern unsigned int nStakeTargetSpacing;
// Hard checkpoints of stake modifiers to ensure they are deterministic
static std::map<int, unsigned int> mapStakeModifierCheckpoints =
boost::assign::map_list_of
- ( 0, 0x0e00670bu )
+ ( 0, 0x0e00670bu )
( 12661, 0x5d84115du )
(143990, 0x9c592c78u )
(149000, 0x48f2bdc4u )
(200000, 0x01ec1503u )
(221047, 0x0b39ef50u )
(243100, 0xe928d83au )
+ (532000, 0x3e5c2b81u )
+ (561108, 0x9c1860b0u )
+ (712891, 0xee193895u )
;
// Hard checkpoints of stake modifiers to ensure they are deterministic (testNet)
// 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;
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()));