12 #include <boost/assign/list_of.hpp>
13 #include <boost/foreach.hpp>
41 boost::assign::map_list_of
42 ( 11111,
uint256(
"0x0000000069e244f73d78e8fd29ba2fd2ed618bd6fa2ee92559f542fdb26e7c1d"))
43 ( 33333,
uint256(
"0x000000002dd5588a74784eaa7ab0507a18ad16a236e7b1ce69f00d7ddfb5d0a6"))
44 ( 74000,
uint256(
"0x0000000000573993a3c9e41ce34471c079dcf5f52a0e824a81e7f953b8661a20"))
45 (105000,
uint256(
"0x00000000000291ce28027faea320c8d2b054b2e0fe44a773f3eefb151d6bdc97"))
46 (134444,
uint256(
"0x00000000000005b12ffd4cd315cd34ffd4a594f430ac814c91184a0d42d2b0fe"))
47 (168000,
uint256(
"0x000000000000099e61ea72015e79632f216fe6cb33d7899acb35b75c8303b763"))
48 (193000,
uint256(
"0x000000000000059f452a5f7340de6682a977387c17010ff6e6c3bd83ca8b1317"))
49 (210000,
uint256(
"0x000000000000048b95347e83192f69cf0366076336c639f9b7228e9ba171342e"))
50 (216116,
uint256(
"0x00000000000001b4f4b433e81ee46494af945cf96014816a4e2370f11b23df4e"))
51 (225430,
uint256(
"0x00000000000001c108384350f74090433e7fcf79a606b8e797f065b130575932"))
52 (250000,
uint256(
"0x000000000000003887df1f29024b06fc2200b55f8af8f35453d7be294df2d214"))
53 (279000,
uint256(
"0x0000000000000001ae8c72a0b0c301f67e3afca10e819efa9041e458e9bd7e40"))
54 (295000,
uint256(
"0x00000000000000004d9b4ef50f0f9d686fd69db2e03af35a100370c64632a983"))
65 boost::assign::map_list_of
66 ( 546,
uint256(
"000000002a936ca763904c3c35fce2f3556c559c0214345d31b1bcebf76acb70"))
76 boost::assign::map_list_of
77 ( 0,
uint256(
"0f9188f13cb7b2c71f2a335e3a4fc328bf5beb436012afca590b1a11466e2206"))
102 MapCheckpoints::const_iterator i = checkpoints.find(nHeight);
103 if (i == checkpoints.end())
return true;
104 return hash == i->second;
112 int64_t nNow = time(NULL);
114 double fSigcheckVerificationFactor = fSigchecks ? SIGCHECK_VERIFICATION_FACTOR : 1.0;
115 double fWorkBefore = 0.0;
116 double fWorkAfter = 0.0;
123 double nCheapBefore = pindex->
nChainTx;
126 fWorkBefore = nCheapBefore;
127 fWorkAfter = nCheapAfter + nExpensiveAfter*fSigcheckVerificationFactor;
132 fWorkBefore = nCheapBefore + nExpensiveBefore*fSigcheckVerificationFactor;
133 fWorkAfter = nExpensiveAfter*fSigcheckVerificationFactor;
136 return fWorkBefore / (fWorkBefore + fWorkAfter);
146 return checkpoints.rbegin()->first;
156 BOOST_REVERSE_FOREACH(
const MapCheckpoints::value_type& i, checkpoints)
158 const uint256& hash = i.second;
159 std::map<uint256, CBlockIndex*>::const_iterator t = mapBlockIndex.find(hash);
160 if (t != mapBlockIndex.end())
int64_t nTransactionsLastCheckpoint
static MapCheckpoints mapCheckpointsTestnet
CBlockIndex * GetLastCheckpoint(const std::map< uint256, CBlockIndex * > &mapBlockIndex)
std::map< int, uint256 > MapCheckpoints
const MapCheckpoints * mapCheckpoints
static const CCheckpointData dataTestnet
static MapCheckpoints mapCheckpointsRegtest
Block-chain checkpoints are compiled-in sanity checks.
const CCheckpointData & Checkpoints()
int GetTotalBlocksEstimate()
static const CCheckpointData dataRegtest
bool CheckBlock(int nHeight, const uint256 &hash)
double GuessVerificationProgress(CBlockIndex *pindex, bool fSigchecks)
double fTransactionsPerDay
static const double SIGCHECK_VERIFICATION_FACTOR
The block chain is a tree shaped structure starting with the genesis block at the root...
const CChainParams & Params()
Return the currently selected parameters.
static MapCheckpoints mapCheckpoints
int64_t nTimeLastCheckpoint
static const CCheckpointData data
map< uint256, CBlockIndex * > mapBlockIndex