Checkpoints valudation, PoW reward calculation and continue working on block index.
[NovacoinLibrary.git] / Novacoin / NetInfo.cs
1 \feffusing System;
2
3 namespace Novacoin
4 {
5     /// <summary>
6     /// Basic network params.
7     /// </summary>
8     internal class NetInfo
9     {
10         /// <summary>
11         /// "standard" scrypt target limit for proof of work, results with 0,000244140625 proof-of-work difficulty
12         /// </summary>
13         public static uint256 nProofOfWorkLimit = ~(new uint256(0)) >> 20;
14
15         /// <summary>
16         /// Proof of stake target limit from block #15000 and until 20 June 2013, results with 0,00390625 proof of stake difficulty
17         /// </summary>
18         public static uint256 nProofOfStakeLegacyLimit = ~(new uint256(0)) >> 24;
19
20         /// <summary>
21         /// Proof of stake target limit since 20 June 2013, equal to 0.03125  proof of stake difficulty
22         /// </summary>
23         public static uint256 nProofOfStakeLimit = ~(new uint256(0)) >> 27;
24
25         /// <summary>
26         /// Disabled temporarily, will be used in the future to fix minimal proof of stake difficulty at 0.25
27         /// </summary>
28         public static uint256 nProofOfStakeHardLimit = ~(new uint256(0)) >> 30;
29
30         /// <summary>
31         /// Difficulty-1 target
32         /// </summary>
33         public static uint256 nPoWBase = new uint256("00000000ffff0000000000000000000000000000000000000000000000000000");
34
35         /// <summary>
36         /// Fri, 20 Sep 2013 00:00:00 GMT
37         /// </summary>
38         public static uint nChainChecksSwitchTime = 1379635200;
39
40         /// <summary>
41         /// Hash of block #0
42         /// </summary>
43         public static uint256 nHashGenesisBlock = new uint256("00000a060336cbb72fe969666d337b87198b1add2abaa59cca226820b32933a4");
44
45         public static readonly uint nLockTimeThreshold = 500000000;
46
47         /// <summary>
48         /// Allowed clock drift.
49         /// </summary>
50         private static readonly uint nDrift = 7200;
51
52         /// <summary>
53         /// Maximum possible proof-of-work reward.
54         /// </summary>
55         public const ulong nMaxMintProofOfWork = CTransaction.nCoin * 100;
56
57         public static uint GetAdjustedTime()
58         {
59             return Interop.GetTime();
60         }
61
62         public static uint FutureDrift(uint nTime)
63         {
64             return nTime + nDrift; // up to 2 hours from the future
65         }
66
67         public static uint PastDrift(uint nTime)
68         {
69             return nTime - nDrift; // up to 2 hours from the past
70         }
71     }
72 }