@@ -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