rpc: skip bootstrap nodes that are lower than last checkpoint

This commit is contained in:
selsta 2022-08-20 00:40:46 +02:00
parent 57e57c239b
commit 93db74a91e
No known key found for this signature in database
GPG key ID: 2EA0A99A8B07AE5E
4 changed files with 24 additions and 0 deletions

View file

@ -158,6 +158,13 @@ namespace cryptonote
*/
bool deinit();
/**
* @brief get a set of blockchain checkpoint hashes
*
* @return set of blockchain checkpoint hashes
*/
const checkpoints& get_checkpoints() const { return m_checkpoints; }
/**
* @brief assign a set of blockchain checkpoint hashes
*

View file

@ -252,6 +252,10 @@ namespace cryptonote
m_pprotocol = &m_protocol_stub;
}
//-----------------------------------------------------------------------------------
const checkpoints& core::get_checkpoints() const
{
return m_blockchain_storage.get_checkpoints();
}
void core::set_checkpoints(checkpoints&& chk_pts)
{
m_blockchain_storage.set_checkpoints(std::move(chk_pts));

View file

@ -436,6 +436,13 @@ namespace cryptonote
*/
void set_cryptonote_protocol(i_cryptonote_protocol* pprotocol);
/**
* @copydoc Blockchain::get_checkpoints
*
* @note see Blockchain::get_checkpoints()
*/
const checkpoints& get_checkpoints() const;
/**
* @copydoc Blockchain::set_checkpoints
*

View file

@ -2290,6 +2290,12 @@ namespace cryptonote
return m_bootstrap_daemon->handle_result(false, {});
}
if (bootstrap_daemon_height < m_core.get_checkpoints().get_max_height())
{
MINFO("Bootstrap daemon height is lower than the latest checkpoint");
return m_bootstrap_daemon->handle_result(false, {});
}
if (!m_p2p.get_payload_object().no_sync())
{
uint64_t top_height = m_core.get_current_blockchain_height();