blockchain: fix off by 1 in timestamp median calculations

The height function apparently used to return the index of
the last block, rather than the height of the chain. This now
seems to be incorrect, judging the the code, so we remove the
now wrong comment, as well as a couple +/- 1 adjustments
which now cause the median calculation to differ from the
original blockchain_storage version.
This commit is contained in:
moneromooo-monero 2015-08-15 12:37:23 +01:00
parent f7c27f81af
commit 769d5ef0e6
No known key found for this signature in database
GPG key ID: 686F07454D6CEFC3

View file

@ -2218,7 +2218,7 @@ bool Blockchain::check_block_timestamp(const block& b) const
} }
// if not enough blocks, no proper median yet, return true // if not enough blocks, no proper median yet, return true
if(m_db->height() < BLOCKCHAIN_TIMESTAMP_CHECK_WINDOW + 1) if(m_db->height() < BLOCKCHAIN_TIMESTAMP_CHECK_WINDOW)
{ {
return true; return true;
} }
@ -2227,9 +2227,7 @@ bool Blockchain::check_block_timestamp(const block& b) const
auto h = m_db->height(); auto h = m_db->height();
// need most recent 60 blocks, get index of first of those // need most recent 60 blocks, get index of first of those
// using +1 because BlockchainDB::height() returns the index of the top block, size_t offset = h - BLOCKCHAIN_TIMESTAMP_CHECK_WINDOW;
// not the size of the blockchain (0-indexed)
size_t offset = h - BLOCKCHAIN_TIMESTAMP_CHECK_WINDOW - 1;
for(;offset < h; ++offset) for(;offset < h; ++offset)
{ {
timestamps.push_back(m_db->get_block_timestamp(offset)); timestamps.push_back(m_db->get_block_timestamp(offset));