From 6fb1984cbdc0522031c5e1c46e4c83b5b8f794d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Zemanovi=C4=8D?= Date: Wed, 18 Oct 2023 11:29:03 +0200 Subject: [PATCH] core/storage/epochs: Change pred `Epochs` default to be empty --- apps/src/lib/node/ledger/storage/mod.rs | 1 + core/src/ledger/storage/mod.rs | 8 ++++++-- core/src/types/storage.rs | 14 ++++---------- ethereum_bridge/src/test_utils.rs | 6 ++++++ 4 files changed, 17 insertions(+), 12 deletions(-) diff --git a/apps/src/lib/node/ledger/storage/mod.rs b/apps/src/lib/node/ledger/storage/mod.rs index db6d10e23fd..537d4e9ad48 100644 --- a/apps/src/lib/node/ledger/storage/mod.rs +++ b/apps/src/lib/node/ledger/storage/mod.rs @@ -510,6 +510,7 @@ mod tests { .expect("write failed"); storage.block.epoch = storage.block.epoch.next(); + storage.block.pred_epochs.new_epoch(new_epoch_start); let batch = PersistentStorage::batch(); storage.commit_block(batch).expect("commit failed"); diff --git a/core/src/ledger/storage/mod.rs b/core/src/ledger/storage/mod.rs index ef8ba38f339..658ab81e701 100644 --- a/core/src/ledger/storage/mod.rs +++ b/core/src/ledger/storage/mod.rs @@ -963,8 +963,6 @@ where } = parameters.epoch_duration; self.next_epoch_min_start_height = initial_height + min_num_of_blocks; self.next_epoch_min_start_time = genesis_time + min_duration; - // The default start height in `Epochs` is set to 1, we override it - // here in case it differs at genesis self.block.pred_epochs = Epochs { first_block_heights: vec![initial_height], }; @@ -1302,6 +1300,12 @@ mod tests { minimum_gas_price: BTreeMap::default(), }; parameters.init_storage(&mut wl_storage).unwrap(); + // Initialize pred_epochs to the current height + wl_storage + .storage + .block + .pred_epochs + .new_epoch(wl_storage.storage.block.height); let epoch_before = wl_storage.storage.last_epoch; assert_eq!(epoch_before, wl_storage.storage.block.epoch); diff --git a/core/src/types/storage.rs b/core/src/types/storage.rs index 79fd83223b4..8a56d16d4a0 100644 --- a/core/src/types/storage.rs +++ b/core/src/types/storage.rs @@ -1165,6 +1165,7 @@ impl Mul for Epoch { #[derive( Clone, Debug, + Default, PartialEq, Eq, PartialOrd, @@ -1178,15 +1179,6 @@ pub struct Epochs { /// Invariant: the values must be sorted in ascending order. pub first_block_heights: Vec, } -impl Default for Epochs { - /// Initialize predecessor epochs, assuming start of the first epoch at - /// block height 1. - fn default() -> Self { - Self { - first_block_heights: vec![BlockHeight(1)], - } - } -} impl Epochs { /// Record start of a new epoch at the given block height @@ -1630,7 +1622,9 @@ mod tests { #[test] fn test_predecessor_epochs_and_heights() { - let mut epochs = Epochs::default(); + let mut epochs = Epochs { + first_block_heights: vec![BlockHeight::first()], + }; println!("epochs {:#?}", epochs); assert_eq!( epochs.get_start_height_of_epoch(Epoch(0)), diff --git a/ethereum_bridge/src/test_utils.rs b/ethereum_bridge/src/test_utils.rs index 9c24e9edfa7..b8c580f137b 100644 --- a/ethereum_bridge/src/test_utils.rs +++ b/ethereum_bridge/src/test_utils.rs @@ -227,6 +227,12 @@ pub fn init_storage_with_validators( .write(&protocol_pk_key(validator), protocol_key) .expect("Test failed"); } + // Initialize pred_epochs to the current height + wl_storage + .storage + .block + .pred_epochs + .new_epoch(wl_storage.storage.block.height); wl_storage.commit_block().expect("Test failed"); all_keys