From 3fef29299381500ae2f1c8b16a2299882134c826 Mon Sep 17 00:00:00 2001 From: LayerVault Date: Sat, 23 May 2026 15:54:26 +0000 Subject: [PATCH 1/2] force: NonceManagerKind::Safe --- packages/wavs/src/subsystems/aggregator.rs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/wavs/src/subsystems/aggregator.rs b/packages/wavs/src/subsystems/aggregator.rs index e8f66bb04..ad3ec18c4 100644 --- a/packages/wavs/src/subsystems/aggregator.rs +++ b/packages/wavs/src/subsystems/aggregator.rs @@ -16,7 +16,8 @@ use layer_climb::prelude::*; use tracing::instrument; use utils::{ async_transaction::AsyncTransaction, config::EvmChainConfigExt, context::AppContext, - evm_client::EvmSigningClient, storage::db::WavsDb, telemetry::AggregatorMetrics, + evm_client::{EvmSigningClient, NonceManagerKind}, storage::db::WavsDb, + telemetry::AggregatorMetrics, }; use wavs_engine::bindings::aggregator::world::AnyTxHash; use wavs_types::{ @@ -718,7 +719,16 @@ impl Aggregator { } }; - let client_config = chain_config.signing_client_config(credential.clone())?; + let mut client_config = chain_config.signing_client_config(credential.clone())?; + // [vault patch 2.0.0-vault.1] Force SafeNonceManager for on-chain submissions. + // The default FastNonceManager caches an in-memory nonce counter that increments on + // every send attempt (including failures) and only re-seeds from chain at client + // construction. A sustained run of failed sends (e.g. gas exhaustion) desyncs it far + // past the on-chain nonce and wedges submission until the process is restarted. + // SafeNonceManager queries the chain nonce per send, removing that failure mode. + // Submissions are already serialized per-chain (chain_transaction), so there is no + // concurrent-tx nonce-collision risk. Cost: one extra eth_getTransactionCount per tx. + client_config.nonce_manager_kind = NonceManagerKind::Safe; let client = EvmSigningClient::new(client_config) .await From f749de5137791d05e2e6caaad8451719df64def7 Mon Sep 17 00:00:00 2001 From: Jakub Date: Mon, 25 May 2026 10:20:27 +0200 Subject: [PATCH 2/2] Fix fmt --- packages/wavs/src/subsystems/aggregator.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/wavs/src/subsystems/aggregator.rs b/packages/wavs/src/subsystems/aggregator.rs index ad3ec18c4..421d6b410 100644 --- a/packages/wavs/src/subsystems/aggregator.rs +++ b/packages/wavs/src/subsystems/aggregator.rs @@ -15,8 +15,11 @@ use std::{ use layer_climb::prelude::*; use tracing::instrument; use utils::{ - async_transaction::AsyncTransaction, config::EvmChainConfigExt, context::AppContext, - evm_client::{EvmSigningClient, NonceManagerKind}, storage::db::WavsDb, + async_transaction::AsyncTransaction, + config::EvmChainConfigExt, + context::AppContext, + evm_client::{EvmSigningClient, NonceManagerKind}, + storage::db::WavsDb, telemetry::AggregatorMetrics, }; use wavs_engine::bindings::aggregator::world::AnyTxHash;