From a6ce55c1e89eedc1ceb07ce7d1c9e03300a8d1e5 Mon Sep 17 00:00:00 2001 From: Uncle Stretch Date: Thu, 4 Dec 2025 18:21:58 +0300 Subject: [PATCH] rearrange offchain worker execution sequence Signed-off-by: Uncle Stretch --- Cargo.lock | 2 +- pallets/slow-clap/Cargo.toml | 2 +- pallets/slow-clap/src/lib.rs | 45 +++++++++++++++--------------------- 3 files changed, 21 insertions(+), 28 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9f509b0..58f1c05 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3837,7 +3837,7 @@ dependencies = [ [[package]] name = "ghost-slow-clap" -version = "0.4.6" +version = "0.4.7" dependencies = [ "frame-benchmarking", "frame-support", diff --git a/pallets/slow-clap/Cargo.toml b/pallets/slow-clap/Cargo.toml index b8daee7..e074cca 100644 --- a/pallets/slow-clap/Cargo.toml +++ b/pallets/slow-clap/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ghost-slow-clap" -version = "0.4.6" +version = "0.4.7" description = "Applause protocol for the EVM bridge" license.workspace = true authors.workspace = true diff --git a/pallets/slow-clap/src/lib.rs b/pallets/slow-clap/src/lib.rs index 7366fc0..a32c0c5 100644 --- a/pallets/slow-clap/src/lib.rs +++ b/pallets/slow-clap/src/lib.rs @@ -788,34 +788,18 @@ impl Pallet { fn start_slow_clapping(block_number: BlockNumberFor) -> OffchainResult { let session_index = T::ValidatorSet::session_index(); - let networks_len = T::NetworkDataHandler::iter().count(); - let network_in_use = T::NetworkDataHandler::iter() - .nth( - block_number - .into() - .as_usize() - .checked_rem(networks_len) - .unwrap_or_default(), - ) + let networks = T::NetworkDataHandler::iter().collect::>(); + let network_index = block_number + .into() + .as_usize() + .checked_rem(networks.len()) + .unwrap_or_default(); + + let network_in_use = networks + .iter() + .nth(network_index) .ok_or(OffchainErr::NoStoredNetworks)?; - let network_id_encoded = network_in_use.0.encode(); - - let rate_limit_delay_key = Self::create_storage_key(b"rate-limit-", &network_id_encoded); - let rate_limit_delay = Self::read_persistent_offchain_storage( - &rate_limit_delay_key, - network_in_use.1.rate_limit_delay, - ); - - let network_lock_key = Self::create_storage_key(b"network-lock-", &network_id_encoded); - let block_until = - rt_offchain::Duration::from_millis(rate_limit_delay.max(MIN_LOCK_GUARD_PERIOD)); - let mut network_lock = StorageLock::