namespace Novacoin { /// /// Basic network params. /// internal class NetInfo { /// /// Minimal depth for spending coinbase and coinstake transactions. /// public const int nGeneratedMaturity = 500; /// /// "standard" scrypt target limit for proof of work, results with 0,000244140625 proof-of-work difficulty /// public static uint256 nProofOfWorkLimit = ~(new uint256(0)) >> 20; /// /// Proof of stake target limit from block #15000 and until 20 June 2013, results with 0,00390625 proof of stake difficulty /// public static uint256 nProofOfStakeLegacyLimit = ~(new uint256(0)) >> 24; /// /// Proof of stake target limit since 20 June 2013, equal to 0.03125 proof of stake difficulty /// public static uint256 nProofOfStakeLimit = ~(new uint256(0)) >> 27; /// /// Disabled temporarily, will be used in the future to fix minimal proof of stake difficulty at 0.25 /// public static uint256 nProofOfStakeHardLimit = ~(new uint256(0)) >> 30; /// /// Difficulty-1 target /// public static uint256 nPoWBase = new uint256("00000000ffff0000000000000000000000000000000000000000000000000000"); /// /// Sat, 20 Jul 2013 00:00:00 GMT /// public const uint nTargetsSwitchTime = 1374278400; /// /// Wed, 20 Aug 2014 00:00:00 GMT /// public const uint nStakeValidationSwitchTime = 1408492800; /// /// Hash of block #0 /// public static uint256 nHashGenesisBlock = new uint256("00000a060336cbb72fe969666d337b87198b1add2abaa59cca226820b32933a4"); public const uint nLockTimeThreshold = 500000000; /// /// Allowed clock drift. /// private const uint nDrift = 7200; /// /// Maximum possible proof-of-work reward. /// public const long nMaxMintProofOfWork = CTransaction.nCoin * 100; /// /// Maximum possible proof-of-stake reward per coin*year. /// public const long nMaxMintProofOfStake = CTransaction.nCoin * 100; public static uint GetAdjustedTime() { return Interop.GetTime(); } public static uint FutureDrift(uint nTime) { return nTime + nDrift; // up to 2 hours from the future } public static uint PastDrift(uint nTime) { return nTime - nDrift; // up to 2 hours from the past } internal static uint256 GetProofOfStakeLimit(uint nHeight, uint nTime) { if (nTime > nTargetsSwitchTime) // 27 bits since 20 July 2013 return nProofOfStakeLimit; if (nHeight + 1 > 15000) // 24 bits since block 15000 return nProofOfStakeLegacyLimit; if (nHeight + 1 > 14060) // 31 bits since block 14060 until 15000 return nProofOfStakeHardLimit; return nProofOfWorkLimit; // return bnProofOfWorkLimit of none matched } } }