From 10acd0aaf2a352f4c3edb1a8367349320223807b Mon Sep 17 00:00:00 2001 From: Maico Date: Wed, 28 Feb 2024 20:01:07 -0300 Subject: [PATCH] feat: scaffolding for compatibility with preview and preprod --- src/bin/dolos/eval.rs | 6 ++++++ src/sync/ledger.rs | 13 +++++++++++-- src/sync/mod.rs | 9 ++++++++- src/sync/pparams.rs | 3 +++ 4 files changed, 28 insertions(+), 3 deletions(-) diff --git a/src/bin/dolos/eval.rs b/src/bin/dolos/eval.rs index e37094e3..83bf7714 100644 --- a/src/bin/dolos/eval.rs +++ b/src/bin/dolos/eval.rs @@ -16,6 +16,9 @@ pub struct Args { #[arg(long, short)] epoch: u64, + #[arg(long, short)] + block_slot: u64, + #[arg(long, short)] network_id: u8, } @@ -82,6 +85,9 @@ pub fn run(config: &super::Config, args: &Args) -> miette::Result<()> { }, &ledger, args.epoch, + args.block_slot, + config.upstream.network_magic as u32, + config.upstream.network_id, ) .into_diagnostic() .context("computing protocol params")?; diff --git a/src/sync/ledger.rs b/src/sync/ledger.rs index 069ab0ba..be438868 100644 --- a/src/sync/ledger.rs +++ b/src/sync/ledger.rs @@ -18,6 +18,8 @@ pub struct Stage { ledger: ApplyDB, byron: byron::GenesisFile, shelley: shelley::GenesisFile, + network_magic: u64, + network_id: u8, current_pparams: Option<(u64, Environment)>, @@ -41,6 +43,8 @@ impl Stage { byron: byron::GenesisFile, shelley: shelley::GenesisFile, phase1_validation_enabled: bool, + network_magic: u64, + network_id: u8, ) -> Self { Self { ledger, @@ -50,6 +54,8 @@ impl Stage { .unwrap(), byron, shelley, + network_magic, + network_id, current_pparams: None, phase1_validation_enabled, upstream: Default::default(), @@ -58,7 +64,7 @@ impl Stage { } } - fn ensure_pparams(&mut self, epoch: u64) -> Result<(), WorkerError> { + fn ensure_pparams(&mut self, epoch: u64, block_slot: u64) -> Result<(), WorkerError> { if self .current_pparams .as_ref() @@ -74,6 +80,9 @@ impl Stage { }, &self.ledger, epoch, + block_slot, + self.network_magic as u32, + self.network_id, )?; warn!(?pparams, "pparams for new epoch"); @@ -152,7 +161,7 @@ impl gasket::framework::Worker for Worker { if stage.phase1_validation_enabled { debug!("performing phase-1 validations"); let (epoch, _) = block.epoch(&stage.genesis_values); - stage.ensure_pparams(epoch)?; + stage.ensure_pparams(epoch, block.slot())?; stage.execute_phase1_validation(&block)?; } diff --git a/src/sync/mod.rs b/src/sync/mod.rs index fb562a81..1fbcbbcd 100644 --- a/src/sync/mod.rs +++ b/src/sync/mod.rs @@ -74,7 +74,14 @@ pub fn pipeline( let mut roll = roll::Stage::new(wal, cursor_chain, cursor_ledger); let mut chain = chain::Stage::new(chain); - let mut ledger = ledger::Stage::new(ledger, byron, shelley, config.phase1_validation_enabled); + let mut ledger = ledger::Stage::new( + ledger, + byron, + shelley, + config.phase1_validation_enabled, + config.network_magic, + config.network_id, + ); let (to_roll, from_pull) = gasket::messaging::tokio::mpsc_channel(50); pull.downstream.connect(to_roll); diff --git a/src/sync/pparams.rs b/src/sync/pparams.rs index 0a17b456..11de66c4 100644 --- a/src/sync/pparams.rs +++ b/src/sync/pparams.rs @@ -143,6 +143,9 @@ pub fn compute_pparams( genesis: Genesis, ledger: &ApplyDB, epoch: u64, + block_slot: u64, + prot_magic: u32, + network_id: u8, ) -> Result { if (290..=364).contains(&epoch) { // Alonzo era