validator: fixed not saving PoW module updates to db

This commit is contained in:
skoupidi
2024-03-21 20:54:40 +02:00
parent 23d49cd158
commit c15facda1c
2 changed files with 19 additions and 4 deletions

View File

@@ -26,7 +26,10 @@ use sled_overlay::database::SledDbOverlayState;
use smol::lock::RwLock;
use crate::{
blockchain::{BlockInfo, Blockchain, BlockchainOverlay, BlockchainOverlayPtr, Header},
blockchain::{
block_store::BlockDifficulty, BlockInfo, Blockchain, BlockchainOverlay,
BlockchainOverlayPtr, Header,
},
tx::Transaction,
util::time::Timestamp,
validator::{
@@ -539,8 +542,16 @@ impl Fork {
// Calculate block rank
let (target_distance_sq, hash_distance_sq) = block_rank(&proposal.block, &next_target)?;
// Update PoW module
self.module.append(proposal.block.header.timestamp, &next_difficulty);
// Generate block difficulty and update PoW module
let cummulative_difficulty =
self.module.cummulative_difficulty.clone() + next_difficulty.clone();
let block_difficulty = BlockDifficulty::new(
proposal.block.header.height,
proposal.block.header.timestamp,
next_difficulty,
cummulative_difficulty,
);
self.module.append_difficulty(&self.overlay, block_difficulty)?;
// Update fork ranks
self.targets_rank += target_distance_sq;

View File

@@ -358,12 +358,16 @@ impl Validator {
let finalized_blocks =
fork.overlay.lock().unwrap().get_blocks_by_hash(&finalized_proposals)?;
// Apply finalized proposals diffs
// Apply finalized proposals diffs and update PoW module
let mut module = self.consensus.module.write().await;
info!(target: "validator::finalization", "Finalizing proposals:");
for (index, proposal) in finalized_proposals.iter().enumerate() {
info!(target: "validator::finalization", "\t{} - {}", proposal, finalized_blocks[index].header.height);
fork.overlay.lock().unwrap().overlay.lock().unwrap().apply_diff(&mut diffs[index])?;
let next_difficulty = module.next_difficulty()?;
module.append(finalized_blocks[index].header.timestamp, &next_difficulty);
}
drop(module);
drop(forks);
// Reset forks starting with the finalized blocks