X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=src%2Fkernel.cpp;h=ea2b43e91c0f879f1ef97c5d0818f22cdf9b7b6c;hb=15e9a03687e99d6b1a7a90e56e69a37faa6bb9b8;hp=e554aff15395b4ff4746c0cacaa50cf50d4b5ef8;hpb=5d466098ff30f0dece5d7e64e1b8b701aa088649;p=novacoin.git diff --git a/src/kernel.cpp b/src/kernel.cpp index e554aff..ea2b43e 100644 --- a/src/kernel.cpp +++ b/src/kernel.cpp @@ -37,6 +37,7 @@ static std::map mapStakeModifierCheckpoints = (149000, 0x48f2bdc4u ) (160000, 0x789df0f0u ) (200000, 0x01ec1503u ) + (221047, 0x0b39ef50u ) ; // Hard checkpoints of stake modifiers to ensure they are deterministic (testNet) @@ -161,13 +162,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")) @@ -468,53 +469,6 @@ bool ScanKernelForward(unsigned char *kernel, uint32_t nBits, uint32_t nInputTxT return true; } -// Scan given midstate for solution -bool ScanContextBackward(SHA256_CTX &ctx, uint32_t nBits, uint32_t nInputTxTime, int64_t nValueIn, std::pair &SearchInterval, std::pair &solution) -{ - CBigNum bnTargetPerCoinDay; - bnTargetPerCoinDay.SetCompact(nBits); - - // Get maximum possible target to filter out the majority of obviously insufficient hashes - CBigNum bnMaxTargetPerCoinDay = bnTargetPerCoinDay * CBigNum(nValueIn) * nStakeMaxAge / COIN / nOneDay; - uint256 maxTarget = bnMaxTargetPerCoinDay.getuint256(); - - SHA256_CTX ctxCopy = ctx; - - // Search backward in time from the given timestamp - // Stopping search in case of shutting down - for (uint32_t nTimeTx=SearchInterval.first; nTimeTx>SearchInterval.second && !fShutdown; nTimeTx--) - { - // Complete first hashing iteration - uint256 hash1; - SHA256_Update(&ctxCopy, (unsigned char*)&nTimeTx, 4); - SHA256_Final((unsigned char*)&hash1, &ctxCopy); - - // Restore context - ctxCopy = ctx; - - // Finally, calculate kernel hash - uint256 hashProofOfStake; - SHA256((unsigned char*)&hash1, sizeof(hashProofOfStake), (unsigned char*)&hashProofOfStake); - - // Skip if hash doesn't satisfy the maximum target - if (hashProofOfStake > maxTarget) - continue; - - CBigNum bnCoinDayWeight = CBigNum(nValueIn) * GetWeight((int64_t)nInputTxTime, (int64_t)nTimeTx) / COIN / nOneDay; - CBigNum bnTargetProofOfStake = bnCoinDayWeight * bnTargetPerCoinDay; - - if (bnTargetProofOfStake >= CBigNum(hashProofOfStake)) - { - solution.first = hashProofOfStake; - solution.second = nTimeTx; - - return true; - } - } - - return false; -} - // Check kernel hash target and coinstake signature bool CheckProofOfStake(const CTransaction& tx, unsigned int nBits, uint256& hashProofOfStake, uint256& targetProofOfStake) {