PPCoin: Separate newmint value from stake in RPC 'getinfo' output
[novacoin.git] / src / checkpoints.h
index 32094fd..c984798 100644 (file)
@@ -1,10 +1,20 @@
 // Copyright (c) 2011 The Bitcoin developers
+// Copyright (c) 2011-2012 The PPCoin developers
 // Distributed under the MIT/X11 software license, see the accompanying
 // file license.txt or http://www.opensource.org/licenses/mit-license.php.
 #ifndef BITCOIN_CHECKPOINT_H
 #define  BITCOIN_CHECKPOINT_H
 
+#include <map>
+#include "util.h"
+
+// ppcoin: auto checkpoint min at 8 hours; max at 16 hours
+#define AUTO_CHECKPOINT_MIN_SPAN   (60 * 60 * 8)
+#define AUTO_CHECKPOINT_MAX_SPAN   (60 * 60 * 16)
+#define AUTO_CHECKPOINT_TRUST_SPAN (60 * 60 * 24)
+
 class uint256;
+class CBlockIndex;
 
 //
 // Block-chain checkpoints are compiled-in sanity checks.
@@ -12,11 +22,23 @@ class uint256;
 //
 namespace Checkpoints
 {
+    extern int nAutoCheckpoint;
+    extern int nBranchPoint;
+
     // Returns true if block passes checkpoint checks
-    bool CheckBlock(int nHeight, const uint256& hash);
+    bool CheckHardened(int nHeight, const uint256& hash);
+    bool CheckAuto(const CBlockIndex *pindex);
+
+    int  GetNextChainCheckpoint(const CBlockIndex *pindex);
+    int  GetNextAutoCheckpoint(int nCheckpoint);
+    void AdvanceAutoCheckpoint(int nCheckpoint);
+    bool ResetAutoCheckpoint(int nCheckpoint);
 
     // Return conservative estimate of total number of blocks, 0 if unknown
     int GetTotalBlocksEstimate();
+
+    // Returns last CBlockIndex* in mapBlockIndex that is a checkpoint
+    CBlockIndex* GetLastCheckpoint(const std::map<uint256, CBlockIndex*>& mapBlockIndex);
 }
 
 #endif