aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/cryptonote_core/blockchain_storage.cpp6
-rw-r--r--src/cryptonote_core/cryptonote_core.cpp4
-rw-r--r--src/daemon/daemon.cpp2
3 files changed, 10 insertions, 2 deletions
diff --git a/src/cryptonote_core/blockchain_storage.cpp b/src/cryptonote_core/blockchain_storage.cpp
index 5dfda08ba..1165a9035 100644
--- a/src/cryptonote_core/blockchain_storage.cpp
+++ b/src/cryptonote_core/blockchain_storage.cpp
@@ -1793,6 +1793,12 @@ bool blockchain_storage::update_checkpoints(const std::string& file_path)
for (const auto& pt : points)
{
+ // if the checkpoint is for a block we don't have yet, move on
+ if (pt.first >= m_blocks.size())
+ {
+ continue;
+ }
+
if (!m_checkpoints.check_block(pt.first, get_block_hash(m_blocks[pt.first].bl)))
{
// if we're enforcing dns checkpoints, roll back to a couple of blocks before the checkpoint
diff --git a/src/cryptonote_core/cryptonote_core.cpp b/src/cryptonote_core/cryptonote_core.cpp
index 1dbc7bf52..d14be252b 100644
--- a/src/cryptonote_core/cryptonote_core.cpp
+++ b/src/cryptonote_core/cryptonote_core.cpp
@@ -150,6 +150,10 @@ namespace cryptonote
r = m_blockchain_storage.init(m_config_folder, testnet);
CHECK_AND_ASSERT_MES(r, false, "Failed to initialize blockchain storage");
+ // load json & DNS checkpoints, and verify them
+ // with respect to what blocks we already have
+ update_checkpoints();
+
r = m_miner.init(vm, testnet);
CHECK_AND_ASSERT_MES(r, false, "Failed to initialize blockchain storage");
diff --git a/src/daemon/daemon.cpp b/src/daemon/daemon.cpp
index 8e915fb1d..da09acfd4 100644
--- a/src/daemon/daemon.cpp
+++ b/src/daemon/daemon.cpp
@@ -221,8 +221,6 @@ int main(int argc, char* argv[])
} else {
ccore.set_checkpoints(std::move(checkpoints));
ccore.set_checkpoints_file_path(checkpoint_json_hashfile_fullpath.string());
- res = ccore.update_checkpoints();
- CHECK_AND_ASSERT_MES(res, 1, "Failed to load initial checkpoints");
}
cryptonote::t_cryptonote_protocol_handler<cryptonote::core> cprotocol(ccore, NULL);