From 8b7fc34586933e1e036c4cd6921ca497208e247d Mon Sep 17 00:00:00 2001 From: maximopalopoli Date: Tue, 11 Nov 2025 14:05:35 -0300 Subject: [PATCH 01/10] Add a disabled verifiers field to the batcher yaml config --- config-files/config-batcher.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/config-files/config-batcher.yaml b/config-files/config-batcher.yaml index 7b6065677a..1ec6f2809b 100644 --- a/config-files/config-batcher.yaml +++ b/config-files/config-batcher.yaml @@ -28,6 +28,8 @@ batcher: pre_verification_is_enabled: true metrics_port: 9093 telemetry_ip_port_address: localhost:4001 + # The specific name for each verifier should match the ProvingSystemId string representation + disabled_verifiers: ["CircomGroth16Bn256"] non_paying: address: '0xa0Ee7A142d267C1f36714E4a8F75612F20a79720' # Anvil address 9 replacement_private_key: ac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 # Anvil address 1 From d59877f583a741032c3288c00a2b83cfd25dbb06 Mon Sep 17 00:00:00 2001 From: maximopalopoli Date: Tue, 11 Nov 2025 14:07:03 -0300 Subject: [PATCH 02/10] Add the disabled verifiers field to the Batcher config struct --- crates/batcher/src/config/mod.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/crates/batcher/src/config/mod.rs b/crates/batcher/src/config/mod.rs index 29f478dd25..c86f9ea776 100644 --- a/crates/batcher/src/config/mod.rs +++ b/crates/batcher/src/config/mod.rs @@ -54,6 +54,7 @@ pub struct BatcherConfigFromYaml { pub amount_of_proofs_for_min_max_fee: usize, pub min_bump_percentage: u64, pub balance_unlock_polling_interval_seconds: u64, + pub disabled_verifiers: Vec, } #[derive(Debug, Deserialize)] From aa5c3c2af0ddb0b2906190bf3ee96f8403e6e50e Mon Sep 17 00:00:00 2001 From: maximopalopoli Date: Tue, 11 Nov 2025 14:08:14 -0300 Subject: [PATCH 03/10] Add the config disabled verifiers to the batcher struct --- crates/batcher/src/lib.rs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/crates/batcher/src/lib.rs b/crates/batcher/src/lib.rs index 0f9d099880..11091635b2 100644 --- a/crates/batcher/src/lib.rs +++ b/crates/batcher/src/lib.rs @@ -134,6 +134,10 @@ pub struct Batcher { disabled_verifiers: Mutex, + // The list of disabled verifiers from the config file. Note that this is separate from the + // contract's disabled verifiers, and is updated only when the batcher is restarted. + config_disabled_verifiers: Vec, + // Observability and monitoring pub metrics: metrics::BatcherMetrics, pub telemetry: TelemetrySender, @@ -298,12 +302,14 @@ impl Batcher { None }; - let disabled_verifiers = match service_manager.disabled_verifiers().call().await { - Ok(disabled_verifiers) => Ok(disabled_verifiers), + let contract_disabled_verifiers = match service_manager.disabled_verifiers().call().await { + Ok(contract_disabled_verifiers) => Ok(contract_disabled_verifiers), Err(_) => service_manager_fallback.disabled_verifiers().call().await, } .expect("Failed to get disabled verifiers"); + let config_disabled_verifiers = config.batcher.disabled_verifiers.clone(); + let telemetry = TelemetrySender::new(format!( "http://{}", config.batcher.telemetry_ip_port_address @@ -347,7 +353,8 @@ impl Batcher { posting_batch: Mutex::new(false), batch_state: Mutex::new(batch_state), user_states, - disabled_verifiers: Mutex::new(disabled_verifiers), + disabled_verifiers: Mutex::new(contract_disabled_verifiers), + config_disabled_verifiers: config_disabled_verifiers, current_min_max_fee: RwLock::new(U256::zero()), metrics, telemetry, From 91e06797f67952a430aa75332e13514199a2cfd9 Mon Sep 17 00:00:00 2001 From: maximopalopoli Date: Tue, 11 Nov 2025 14:08:54 -0300 Subject: [PATCH 04/10] Check if the proving system is disabled on batcher --- crates/batcher/src/lib.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/crates/batcher/src/lib.rs b/crates/batcher/src/lib.rs index 11091635b2..ddefc82128 100644 --- a/crates/batcher/src/lib.rs +++ b/crates/batcher/src/lib.rs @@ -1491,6 +1491,13 @@ impl Batcher { } async fn is_verifier_disabled(&self, verifier: ProvingSystemId) -> bool { + // Check if the verifier is disabled in the configuration first + if self + .config_disabled_verifiers + .contains(&verifier.to_string()) + { + return true; + } let disabled_verifiers = self.disabled_verifiers.lock().await; zk_utils::is_verifier_disabled(*disabled_verifiers, verifier) } From d4d202730831ee51251fec56c54b58cb625e6e88 Mon Sep 17 00:00:00 2001 From: maximopalopoli Date: Tue, 11 Nov 2025 14:21:03 -0300 Subject: [PATCH 05/10] Clean the disabled_verifiers array --- config-files/config-batcher.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config-files/config-batcher.yaml b/config-files/config-batcher.yaml index 1ec6f2809b..524cb2d761 100644 --- a/config-files/config-batcher.yaml +++ b/config-files/config-batcher.yaml @@ -29,7 +29,7 @@ batcher: metrics_port: 9093 telemetry_ip_port_address: localhost:4001 # The specific name for each verifier should match the ProvingSystemId string representation - disabled_verifiers: ["CircomGroth16Bn256"] + disabled_verifiers: [] non_paying: address: '0xa0Ee7A142d267C1f36714E4a8F75612F20a79720' # Anvil address 9 replacement_private_key: ac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 # Anvil address 1 From 06464366b19cf2dfa082d9869281f8d0fb692164 Mon Sep 17 00:00:00 2001 From: maximopalopoli Date: Tue, 11 Nov 2025 15:02:12 -0300 Subject: [PATCH 06/10] fix clippy lint warning --- crates/batcher/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/batcher/src/lib.rs b/crates/batcher/src/lib.rs index ddefc82128..4306fdb20c 100644 --- a/crates/batcher/src/lib.rs +++ b/crates/batcher/src/lib.rs @@ -354,7 +354,7 @@ impl Batcher { batch_state: Mutex::new(batch_state), user_states, disabled_verifiers: Mutex::new(contract_disabled_verifiers), - config_disabled_verifiers: config_disabled_verifiers, + config_disabled_verifiers, current_min_max_fee: RwLock::new(U256::zero()), metrics, telemetry, From 33bc700eb5fc21888dd9d6f4ff7b10490d5358cb Mon Sep 17 00:00:00 2001 From: maximopalopoli Date: Tue, 11 Nov 2025 15:56:19 -0300 Subject: [PATCH 07/10] Add the disabled_verifiers field to the other batcher configs --- config-files/config-batcher-docker.yaml | 2 ++ config-files/config-batcher-ethereum-package.yaml | 2 ++ 2 files changed, 4 insertions(+) diff --git a/config-files/config-batcher-docker.yaml b/config-files/config-batcher-docker.yaml index cc1fdbaa78..a3641ce8b0 100644 --- a/config-files/config-batcher-docker.yaml +++ b/config-files/config-batcher-docker.yaml @@ -28,6 +28,8 @@ batcher: pre_verification_is_enabled: true metrics_port: 9093 telemetry_ip_port_address: localhost:4001 + # The specific name for each verifier should match the ProvingSystemId string representation + disabled_verifiers: [] non_paying: address: '0xa0Ee7A142d267C1f36714E4a8F75612F20a79720' # Anvil address 9 replacement_private_key: ac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 # Anvil address 1 diff --git a/config-files/config-batcher-ethereum-package.yaml b/config-files/config-batcher-ethereum-package.yaml index b525c04068..2550e3cf37 100644 --- a/config-files/config-batcher-ethereum-package.yaml +++ b/config-files/config-batcher-ethereum-package.yaml @@ -26,6 +26,8 @@ batcher: pre_verification_is_enabled: true metrics_port: 9093 telemetry_ip_port_address: localhost:4001 + # The specific name for each verifier should match the ProvingSystemId string representation + disabled_verifiers: [] non_paying: address: '0xa0Ee7A142d267C1f36714E4a8F75612F20a79720' # Anvil address 9 replacement_private_key: ac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 # Anvil address 1 From 308412b626504bfb8292b579407d050879cb3bad Mon Sep 17 00:00:00 2001 From: maximopalopoli Date: Tue, 11 Nov 2025 16:49:38 -0300 Subject: [PATCH 08/10] Add the possible values to the config batcher file to make it easier --- config-files/config-batcher-docker.yaml | 1 + config-files/config-batcher-ethereum-package.yaml | 1 + config-files/config-batcher.yaml | 1 + 3 files changed, 3 insertions(+) diff --git a/config-files/config-batcher-docker.yaml b/config-files/config-batcher-docker.yaml index a3641ce8b0..d092eb5d57 100644 --- a/config-files/config-batcher-docker.yaml +++ b/config-files/config-batcher-docker.yaml @@ -29,6 +29,7 @@ batcher: metrics_port: 9093 telemetry_ip_port_address: localhost:4001 # The specific name for each verifier should match the ProvingSystemId string representation + # Possible values: GnarkPlonkBls12_381, GnarkPlonkBn254, GnarkGroth16Bn254, SP1, Risc0, CircomGroth16Bn256, Mina, MinaAccount disabled_verifiers: [] non_paying: address: '0xa0Ee7A142d267C1f36714E4a8F75612F20a79720' # Anvil address 9 diff --git a/config-files/config-batcher-ethereum-package.yaml b/config-files/config-batcher-ethereum-package.yaml index 2550e3cf37..783f7b1924 100644 --- a/config-files/config-batcher-ethereum-package.yaml +++ b/config-files/config-batcher-ethereum-package.yaml @@ -27,6 +27,7 @@ batcher: metrics_port: 9093 telemetry_ip_port_address: localhost:4001 # The specific name for each verifier should match the ProvingSystemId string representation + # Possible values: GnarkPlonkBls12_381, GnarkPlonkBn254, GnarkGroth16Bn254, SP1, Risc0, CircomGroth16Bn256, Mina, MinaAccount disabled_verifiers: [] non_paying: address: '0xa0Ee7A142d267C1f36714E4a8F75612F20a79720' # Anvil address 9 diff --git a/config-files/config-batcher.yaml b/config-files/config-batcher.yaml index 524cb2d761..0867cb4ad1 100644 --- a/config-files/config-batcher.yaml +++ b/config-files/config-batcher.yaml @@ -29,6 +29,7 @@ batcher: metrics_port: 9093 telemetry_ip_port_address: localhost:4001 # The specific name for each verifier should match the ProvingSystemId string representation + # Possible values: GnarkPlonkBls12_381, GnarkPlonkBn254, GnarkGroth16Bn254, SP1, Risc0, CircomGroth16Bn256, Mina, MinaAccount disabled_verifiers: [] non_paying: address: '0xa0Ee7A142d267C1f36714E4a8F75612F20a79720' # Anvil address 9 From 26cf279525f0bd741c7e1f07e98e59bc569a5269 Mon Sep 17 00:00:00 2001 From: maximopalopoli Date: Tue, 11 Nov 2025 17:10:21 -0300 Subject: [PATCH 09/10] Make the disabled verifiers to be a provingSystemId instead of Strings --- crates/batcher/src/config/mod.rs | 3 ++- crates/batcher/src/lib.rs | 7 ++----- crates/sdk/src/common/types.rs | 18 ++++++++++++++++++ 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/crates/batcher/src/config/mod.rs b/crates/batcher/src/config/mod.rs index c86f9ea776..282d6bf8fd 100644 --- a/crates/batcher/src/config/mod.rs +++ b/crates/batcher/src/config/mod.rs @@ -1,3 +1,4 @@ +use aligned_sdk::common::types::ProvingSystemId; use ethers::{core::k256::ecdsa::SigningKey, signers::Wallet, types::Address}; use serde::Deserialize; @@ -54,7 +55,7 @@ pub struct BatcherConfigFromYaml { pub amount_of_proofs_for_min_max_fee: usize, pub min_bump_percentage: u64, pub balance_unlock_polling_interval_seconds: u64, - pub disabled_verifiers: Vec, + pub disabled_verifiers: Vec, } #[derive(Debug, Deserialize)] diff --git a/crates/batcher/src/lib.rs b/crates/batcher/src/lib.rs index 4306fdb20c..703ffb74ae 100644 --- a/crates/batcher/src/lib.rs +++ b/crates/batcher/src/lib.rs @@ -136,7 +136,7 @@ pub struct Batcher { // The list of disabled verifiers from the config file. Note that this is separate from the // contract's disabled verifiers, and is updated only when the batcher is restarted. - config_disabled_verifiers: Vec, + config_disabled_verifiers: Vec, // Observability and monitoring pub metrics: metrics::BatcherMetrics, @@ -1492,10 +1492,7 @@ impl Batcher { async fn is_verifier_disabled(&self, verifier: ProvingSystemId) -> bool { // Check if the verifier is disabled in the configuration first - if self - .config_disabled_verifiers - .contains(&verifier.to_string()) - { + if self.config_disabled_verifiers.contains(&verifier) { return true; } let disabled_verifiers = self.disabled_verifiers.lock().await; diff --git a/crates/sdk/src/common/types.rs b/crates/sdk/src/common/types.rs index 9c753f49fc..9a868c83ce 100644 --- a/crates/sdk/src/common/types.rs +++ b/crates/sdk/src/common/types.rs @@ -70,6 +70,24 @@ impl Display for ProvingSystemId { } } +impl FromStr for ProvingSystemId { + type Err = String; + + fn from_str(s: &str) -> Result { + match s { + "GnarkPlonkBls12_381" => Ok(ProvingSystemId::GnarkPlonkBls12_381), + "GnarkPlonkBn254" => Ok(ProvingSystemId::GnarkPlonkBn254), + "GnarkGroth16Bn254" => Ok(ProvingSystemId::GnarkGroth16Bn254), + "SP1" => Ok(ProvingSystemId::SP1), + "Risc0" => Ok(ProvingSystemId::Risc0), + "CircomGroth16Bn256" => Ok(ProvingSystemId::CircomGroth16Bn256), + "Mina" => Ok(ProvingSystemId::Mina), + "MinaAccount" => Ok(ProvingSystemId::MinaAccount), + _ => Err(format!("Invalid ProvingSystemId: {}", s)), + } + } +} + #[derive(Debug, Serialize, Deserialize, Clone)] pub struct VerificationData { pub proving_system: ProvingSystemId, From 9b97a8dbb2a95dcfcae285f62d9b20932ca50446 Mon Sep 17 00:00:00 2001 From: JuArce <52429267+JuArce@users.noreply.github.com> Date: Wed, 12 Nov 2025 13:50:53 -0300 Subject: [PATCH 10/10] log disabled verifiers at startup --- crates/batcher/src/lib.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/crates/batcher/src/lib.rs b/crates/batcher/src/lib.rs index 703ffb74ae..3345243fc8 100644 --- a/crates/batcher/src/lib.rs +++ b/crates/batcher/src/lib.rs @@ -309,6 +309,10 @@ impl Batcher { .expect("Failed to get disabled verifiers"); let config_disabled_verifiers = config.batcher.disabled_verifiers.clone(); + info!( + "Disabled verifiers from config: {:?}", + config_disabled_verifiers + ); let telemetry = TelemetrySender::new(format!( "http://{}",