|
|
|
@ -35,27 +35,32 @@ namespace Checkpoints
|
|
|
|
|
(168000, uint256("0x000000000000099e61ea72015e79632f216fe6cb33d7899acb35b75c8303b763"))
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
static MapCheckpoints mapCheckpointsTestnet =
|
|
|
|
|
boost::assign::map_list_of
|
|
|
|
|
( 546, uint256("000000002a936ca763904c3c35fce2f3556c559c0214345d31b1bcebf76acb70"))
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
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);
|
|
|
|
|
if (i == mapCheckpoints.end()) return true;
|
|
|
|
|
MapCheckpoints::const_iterator i = checkpoints.find(nHeight);
|
|
|
|
|
if (i == checkpoints.end()) return true;
|
|
|
|
|
return hash == i->second;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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)
|
|
|
|
|
{
|
|
|
|
|
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;
|
|
|
|
|
std::map<uint256, CBlockIndex*>::const_iterator t = mapBlockIndex.find(hash);
|
|
|
|
|