|
|
@ -35,27 +35,32 @@ namespace Checkpoints |
|
|
|
(168000, uint256("0x000000000000099e61ea72015e79632f216fe6cb33d7899acb35b75c8303b763")) |
|
|
|
(168000, uint256("0x000000000000099e61ea72015e79632f216fe6cb33d7899acb35b75c8303b763")) |
|
|
|
; |
|
|
|
; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static MapCheckpoints mapCheckpointsTestnet = |
|
|
|
|
|
|
|
boost::assign::map_list_of |
|
|
|
|
|
|
|
( 546, uint256("000000002a936ca763904c3c35fce2f3556c559c0214345d31b1bcebf76acb70")) |
|
|
|
|
|
|
|
; |
|
|
|
|
|
|
|
|
|
|
|
bool CheckBlock(int nHeight, const uint256& hash) |
|
|
|
bool CheckBlock(int nHeight, const uint256& hash) |
|
|
|
{ |
|
|
|
{ |
|
|
|
if (fTestNet) return true; // Testnet has no checkpoints
|
|
|
|
MapCheckpoints& checkpoints = (fTestNet ? mapCheckpointsTestnet : mapCheckpoints); |
|
|
|
|
|
|
|
|
|
|
|
MapCheckpoints::const_iterator i = mapCheckpoints.find(nHeight); |
|
|
|
MapCheckpoints::const_iterator i = checkpoints.find(nHeight); |
|
|
|
if (i == mapCheckpoints.end()) return true; |
|
|
|
if (i == checkpoints.end()) return true; |
|
|
|
return hash == i->second; |
|
|
|
return hash == i->second; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
int GetTotalBlocksEstimate() |
|
|
|
int GetTotalBlocksEstimate() |
|
|
|
{ |
|
|
|
{ |
|
|
|
if (fTestNet) return 0; |
|
|
|
MapCheckpoints& checkpoints = (fTestNet ? mapCheckpointsTestnet : mapCheckpoints); |
|
|
|
|
|
|
|
|
|
|
|
return mapCheckpoints.rbegin()->first; |
|
|
|
return checkpoints.rbegin()->first; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
CBlockIndex* GetLastCheckpoint(const std::map<uint256, CBlockIndex*>& mapBlockIndex) |
|
|
|
CBlockIndex* GetLastCheckpoint(const std::map<uint256, CBlockIndex*>& mapBlockIndex) |
|
|
|
{ |
|
|
|
{ |
|
|
|
if (fTestNet) return NULL; |
|
|
|
MapCheckpoints& checkpoints = (fTestNet ? mapCheckpointsTestnet : mapCheckpoints); |
|
|
|
|
|
|
|
|
|
|
|
BOOST_REVERSE_FOREACH(const MapCheckpoints::value_type& i, mapCheckpoints) |
|
|
|
BOOST_REVERSE_FOREACH(const MapCheckpoints::value_type& i, checkpoints) |
|
|
|
{ |
|
|
|
{ |
|
|
|
const uint256& hash = i.second; |
|
|
|
const uint256& hash = i.second; |
|
|
|
std::map<uint256, CBlockIndex*>::const_iterator t = mapBlockIndex.find(hash); |
|
|
|
std::map<uint256, CBlockIndex*>::const_iterator t = mapBlockIndex.find(hash); |
|
|
|