Skip to content

Commit 5778a5c

Browse files
committed
fix(ledger): only keep staking/next epoch ledgers for best tip, not every block
1 parent bce875a commit 5778a5c

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

node/src/ledger/write/mod.rs

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -195,12 +195,21 @@ impl LedgersToKeep {
195195
impl<'a> FromIterator<&'a ArcBlockWithHash> for LedgersToKeep {
196196
fn from_iter<T: IntoIterator<Item = &'a ArcBlockWithHash>>(iter: T) -> Self {
197197
let mut res = Self::new();
198-
for block in iter {
198+
let best_tip = iter.into_iter().fold(None, |best_tip, block| {
199199
res.add_snarked(block.snarked_ledger_hash().clone());
200-
res.add_snarked(block.staking_epoch_ledger_hash().clone());
201-
res.add_snarked(block.next_epoch_ledger_hash().clone());
202200
res.add_staged(Arc::new(block.staged_ledger_hashes().clone()));
201+
match best_tip {
202+
None => Some(block),
203+
Some(tip) if tip.height() < block.height() => Some(block),
204+
old => old,
205+
}
206+
});
207+
208+
if let Some(best_tip) = best_tip {
209+
res.add_snarked(best_tip.staking_epoch_ledger_hash().clone());
210+
res.add_snarked(best_tip.next_epoch_ledger_hash().clone());
203211
}
212+
204213
res
205214
}
206215
}

0 commit comments

Comments
 (0)