X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=src%2Fkernel.h;h=4d143ab20cca20b25a2f247b06246b604a8cc488;hb=0107626378023a97a87d5d6011278964f9a6c289;hp=c76c00d4c44f7673ee23bc2889e43bf3cfec3d40;hpb=fe038d999ac1d67fa617f0a0e7aeae96a4d4cd04;p=novacoin.git diff --git a/src/kernel.h b/src/kernel.h index c76c00d..4d143ab 100644 --- a/src/kernel.h +++ b/src/kernel.h @@ -4,41 +4,48 @@ #ifndef PPCOIN_KERNEL_H #define PPCOIN_KERNEL_H -#include "main.h" -#include "wallet.h" +#include -using namespace std; +#include "uint256.h" + +class CBlock; +class CBlockIndex; +class CTransaction; +class COutPoint; + +extern uint32_t nStakeMinAge; +extern uint32_t nStakeMaxAge; // ChainDB upgrade time -extern unsigned int nModifierUpgradeTime; +extern uint32_t nModifierUpgradeTime; // MODIFIER_INTERVAL: time to elapse before new modifier is computed -extern unsigned int nModifierInterval; +extern uint32_t nModifierInterval; // MODIFIER_INTERVAL_RATIO: // ratio of group interval length between the last group and the first group static const int MODIFIER_INTERVAL_RATIO = 3; // Whether the given block is subject to new modifier protocol -bool IsFixedModifierInterval(unsigned int nTimeBlock); +bool IsFixedModifierInterval(uint32_t nTimeBlock); // Compute the hash modifier for proof-of-stake bool ComputeNextStakeModifier(const CBlockIndex* pindexCurrent, uint64_t& nStakeModifier, bool& fGeneratedStakeModifier); // The stake modifier used to hash for a stake kernel is chosen as the stake // modifier about a selection interval later than the coin generating the kernel -bool GetKernelStakeModifier(uint256 hashBlockFrom, uint64_t& nStakeModifier); +bool GetKernelStakeModifier(const uint256 &hashBlockFrom, uint64_t& nStakeModifier); // Check whether stake kernel meets hash target // Sets hashProofOfStake on success return -bool CheckStakeKernelHash(unsigned int nBits, const CBlock& blockFrom, uint32_t nTxPrevOffset, const CTransaction& txPrev, const COutPoint& prevout, uint32_t nTimeTx, uint256& hashProofOfStake, uint256& targetProofOfStake, bool fPrintProofOfStake=false); +bool CheckStakeKernelHash(uint32_t nBits, const CBlock& blockFrom, uint32_t nTxPrevOffset, const CTransaction& txPrev, const COutPoint& prevout, uint32_t nTimeTx, uint256& hashProofOfStake, uint256& targetProofOfStake, bool fPrintProofOfStake=false); // Scan given kernel for solutions bool ScanKernelForward(unsigned char *kernel, uint32_t nBits, uint32_t nInputTxTime, int64_t nValueIn, std::pair &SearchInterval, std::vector > &solutions); // Check kernel hash target and coinstake signature // Sets hashProofOfStake on success return -bool CheckProofOfStake(const CTransaction& tx, unsigned int nBits, uint256& hashProofOfStake, uint256& targetProofOfStake); +bool CheckProofOfStake(const CTransaction& tx, uint32_t nBits, uint256& hashProofOfStake, uint256& targetProofOfStake); // Get stake modifier checksum uint32_t GetStakeModifierChecksum(const CBlockIndex* pindex); @@ -55,8 +62,7 @@ inline int64_t GetWeight(int64_t nIntervalBeginning, int64_t nIntervalEnd) // // Maximum TimeWeight is 90 days. - return min(nIntervalEnd - nIntervalBeginning - nStakeMinAge, (int64_t)nStakeMaxAge); + return std::min(nIntervalEnd - nIntervalBeginning - nStakeMinAge, (int64_t)nStakeMaxAge); } - #endif // PPCOIN_KERNEL_H