Skip to content

Commit

Permalink
chore: check genesis block during startup
Browse files Browse the repository at this point in the history
  • Loading branch information
Cifko committed Jan 31, 2022
1 parent 7502c02 commit b842862
Showing 1 changed file with 15 additions and 1 deletion.
16 changes: 15 additions & 1 deletion base_layer/core/src/chain_storage/blockchain_database.rs
Original file line number Diff line number Diff line change
Expand Up @@ -214,9 +214,9 @@ where B: BlockchainBackend
difficulty_calculator: Arc::new(difficulty_calculator),
disable_add_block_flag: Arc::new(AtomicBool::new(false)),
};
let genesis_block = Arc::new(blockchain_db.consensus_manager.get_genesis_block());
if is_empty {
info!(target: LOG_TARGET, "Blockchain db is empty. Adding genesis block.");
let genesis_block = Arc::new(blockchain_db.consensus_manager.get_genesis_block());
blockchain_db.insert_block(genesis_block.clone())?;
let mut txn = DbTransaction::new();
let body = &genesis_block.block().body;
Expand All @@ -230,6 +230,20 @@ where B: BlockchainBackend
txn.set_horizon_data(kernel_sum, utxo_sum);
blockchain_db.write(txn)?;
blockchain_db.store_pruning_horizon(config.pruning_horizon)?;
} else if !blockchain_db.block_exists(genesis_block.accumulated_data().hash.clone())? {
// Check the genesis block in the DB.
error!(
target: LOG_TARGET,
"Genesis block in database does not match the supllied genesis block in the code! Hash in the code \
{:?}, hash in the database {:?}",
blockchain_db.fetch_chain_header(0)?.hash(),
genesis_block.accumulated_data().hash
);
return Err(ChainStorageError::CorruptedDatabase(
"Genesis block in database does not match the supplied genesis block in the code! Please delete and \
resync your blockchain database."
.into(),
));
}
if cleanup_orphans_at_startup {
match blockchain_db.cleanup_all_orphans() {
Expand Down

0 comments on commit b842862

Please sign in to comment.