diff --git a/examples/demo-stf/src/genesis_config.rs b/examples/demo-stf/src/genesis_config.rs index 899cc11356..819a01ec52 100644 --- a/examples/demo-stf/src/genesis_config.rs +++ b/examples/demo-stf/src/genesis_config.rs @@ -45,6 +45,7 @@ pub fn create_demo_genesis_config( amount: LOCKED_AMOUNT, token_address, }, + preferred_sequencer: None, }; let value_setter_config = ValueSetterConfig { diff --git a/module-system/module-implementations/sov-sequencer-registry/src/lib.rs b/module-system/module-implementations/sov-sequencer-registry/src/lib.rs index c398f3a124..a7631828d7 100644 --- a/module-system/module-implementations/sov-sequencer-registry/src/lib.rs +++ b/module-system/module-implementations/sov-sequencer-registry/src/lib.rs @@ -13,6 +13,7 @@ pub struct SequencerConfig { pub seq_rollup_address: C::Address, pub seq_da_address: Vec, pub coins_to_lock: sov_bank::Coins, + pub preferred_sequencer: Option, } #[derive(ModuleInfo)] @@ -31,6 +32,12 @@ pub struct SequencerRegistry { #[state] pub(crate) allowed_sequencers: StateMap, C::Address>, + /// Optional preferred sequencer + /// If set, batches from this sequencer will be processed first in block, + /// So this sequencer can guarantee soft confirmation time for transactions + #[state] + pub(crate) preferred_sequencer: StateValue, + /// Coin's that will be slashed if the sequencer is malicious. /// The coins will be transferred from `self.seq_rollup_address` to `self.address` /// and locked forever, until sequencer decides to exit @@ -108,4 +115,12 @@ impl SequencerRegistry { Ok(()) } + + /// Return preferred sequencer if it was set + pub fn get_preferred_sequencer( + &self, + working_set: &mut WorkingSet, + ) -> Option { + self.preferred_sequencer.get(working_set) + } } diff --git a/module-system/module-implementations/sov-sequencer-registry/tests/helpers/mod.rs b/module-system/module-implementations/sov-sequencer-registry/tests/helpers/mod.rs index b9f2442c02..37f26fa617 100644 --- a/module-system/module-implementations/sov-sequencer-registry/tests/helpers/mod.rs +++ b/module-system/module-implementations/sov-sequencer-registry/tests/helpers/mod.rs @@ -94,6 +94,7 @@ pub fn create_sequencer_config( amount: LOCKED_AMOUNT, token_address, }, + preferred_sequencer: None, } }