mirror of
https://github.com/darkrenaissance/darkfi.git
synced 2026-04-28 03:00:18 -04:00
validator: fixed not saving PoW module updates to db
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user