Skip to content

Commit 91ef45f

Browse files
committed
Refactor verify function
1 parent c63a41f commit 91ef45f

File tree

1 file changed

+57
-80
lines changed

1 file changed

+57
-80
lines changed

crates/batcher/src/lib.rs

Lines changed: 57 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -893,44 +893,11 @@ impl Batcher {
893893
return Ok(());
894894
}
895895

896-
// When pre-verification is enabled, batcher will verify proofs for faster feedback with clients
897-
if self.pre_verification_is_enabled {
898-
let verification_data = &nonced_verification_data.verification_data;
899-
if self
900-
.is_verifier_disabled(verification_data.proving_system)
901-
.await
902-
{
903-
warn!(
904-
"Verifier for proving system {} is disabled, skipping verification",
905-
verification_data.proving_system
906-
);
907-
send_message(
908-
ws_conn_sink.clone(),
909-
SubmitProofResponseMessage::InvalidProof(ProofInvalidReason::DisabledVerifier(
910-
verification_data.proving_system,
911-
)),
912-
)
913-
.await;
914-
self.metrics.user_error(&[
915-
"disabled_verifier",
916-
&format!("{}", verification_data.proving_system),
917-
]);
918-
return Ok(());
919-
}
920-
921-
if !zk_utils::verify(verification_data).await {
922-
error!("Invalid proof detected. Verification failed");
923-
send_message(
924-
ws_conn_sink.clone(),
925-
SubmitProofResponseMessage::InvalidProof(ProofInvalidReason::RejectedProof),
926-
)
927-
.await;
928-
self.metrics.user_error(&[
929-
"rejected_proof",
930-
&format!("{}", verification_data.proving_system),
931-
]);
932-
return Ok(());
933-
}
896+
if !self.verify_proof_if_enabled(
897+
&nonced_verification_data.verification_data,
898+
ws_conn_sink.clone(),
899+
).await {
900+
return Ok(());
934901
}
935902

936903
// * ---------------------------------------------------------------------*
@@ -1134,48 +1101,13 @@ impl Batcher {
11341101

11351102
info!("Replacing message for address {addr} with nonce {nonce} and max fee {replacement_max_fee}");
11361103

1137-
// When pre-verification is enabled, verify the replacement proof
1138-
if self.pre_verification_is_enabled {
1139-
let verification_data = &nonced_verification_data.verification_data;
1140-
if self
1141-
.is_verifier_disabled(verification_data.proving_system)
1142-
.await
1143-
{
1144-
drop(batch_state_guard);
1145-
drop(user_state_guard);
1146-
warn!(
1147-
"Verifier for proving system {} is disabled for replacement message",
1148-
verification_data.proving_system
1149-
);
1150-
send_message(
1151-
ws_conn_sink.clone(),
1152-
SubmitProofResponseMessage::InvalidProof(ProofInvalidReason::DisabledVerifier(
1153-
verification_data.proving_system,
1154-
)),
1155-
)
1156-
.await;
1157-
self.metrics.user_error(&[
1158-
"disabled_verifier",
1159-
&format!("{}", verification_data.proving_system),
1160-
]);
1161-
return;
1162-
}
1163-
1164-
if !zk_utils::verify(verification_data).await {
1165-
drop(batch_state_guard);
1166-
drop(user_state_guard);
1167-
error!("Invalid replacement proof detected. Verification failed");
1168-
send_message(
1169-
ws_conn_sink.clone(),
1170-
SubmitProofResponseMessage::InvalidProof(ProofInvalidReason::RejectedProof),
1171-
)
1172-
.await;
1173-
self.metrics.user_error(&[
1174-
"rejected_proof",
1175-
&format!("{}", verification_data.proving_system),
1176-
]);
1177-
return;
1178-
}
1104+
if !self.verify_proof_if_enabled(
1105+
&nonced_verification_data.verification_data,
1106+
ws_conn_sink.clone(),
1107+
).await {
1108+
drop(batch_state_guard);
1109+
drop(user_state_guard);
1110+
return;
11791111
}
11801112

11811113
// The replacement entry is built from the old entry and validated for then to be replaced
@@ -1240,6 +1172,51 @@ impl Batcher {
12401172
user_state_guard.total_fees_in_queue += fee_difference;
12411173
}
12421174

1175+
async fn verify_proof_if_enabled(
1176+
&self,
1177+
verification_data: &aligned_sdk::common::types::VerificationData,
1178+
ws_conn_sink: WsMessageSink,
1179+
) -> bool {
1180+
if !self.pre_verification_is_enabled {
1181+
return true;
1182+
}
1183+
1184+
if self
1185+
.is_verifier_disabled(verification_data.proving_system)
1186+
.await
1187+
{
1188+
warn!("Verifier for proving system {} is disabled", verification_data.proving_system);
1189+
send_message(
1190+
ws_conn_sink,
1191+
SubmitProofResponseMessage::InvalidProof(ProofInvalidReason::DisabledVerifier(
1192+
verification_data.proving_system,
1193+
)),
1194+
)
1195+
.await;
1196+
self.metrics.user_error(&[
1197+
"disabled_verifier",
1198+
&format!("{}", verification_data.proving_system),
1199+
]);
1200+
return false;
1201+
}
1202+
1203+
if !zk_utils::verify(verification_data).await {
1204+
error!("Invalid proof detected. Verification failed");
1205+
send_message(
1206+
ws_conn_sink,
1207+
SubmitProofResponseMessage::InvalidProof(ProofInvalidReason::RejectedProof),
1208+
)
1209+
.await;
1210+
self.metrics.user_error(&[
1211+
"rejected_proof",
1212+
&format!("{}", verification_data.proving_system),
1213+
]);
1214+
return false;
1215+
}
1216+
1217+
true
1218+
}
1219+
12431220
async fn disabled_verifiers(&self) -> Result<U256, ContractError<SignerMiddlewareT>> {
12441221
match self.service_manager.disabled_verifiers().call().await {
12451222
Ok(disabled_verifiers) => Ok(disabled_verifiers),

0 commit comments

Comments
 (0)