33//! This module manages different proof verification systems based on prover type.
44//! Each verifier implements cryptographic proof verification for a specific zkVM or proof system.
55
6+ pub mod fallback;
67pub mod pico;
78pub mod sp1_hypercube;
89pub mod zisk;
@@ -19,24 +20,42 @@ pub type VerificationResult = Result<bool, String>;
1920/// Ethproofs demo prover UUIDs - hardcoded mapping for demo testing
2021/// These constants define the relationship between internal proof_ids (0, 1, 2, etc.)
2122/// and Ethproofs prover UUIDs.
23+ ///
24+ /// Proof ID Mapping:
25+ /// - proof_id 0 → Fallback verifier (used when Ethproofs API fails/times out)
26+ /// - proof_id 1 → Brevis/Pico Prism verifier
27+ /// - proof_id 2 → ZisK verifier
28+ /// - proof_id 3 → ZkCloud verifier
29+ /// - proof_id 4 → ZKM verifier
30+ /// - proof_id 5 → SP1-Hypercube verifier
31+ /// - proof_id 6-7 → reserved for future use
2232pub mod ethproofs_ids {
2333 use uuid:: Uuid ;
2434
25- /// Brevis/Pico Prism verifier UUID (proof_id = 0)
35+ /// Fallback verifier UUID (proof_id = 0)
36+ /// Used for dummy proofs when Ethproofs API fails or times out
37+ pub const FALLBACK_UUID : & str = "00000000-0000-0000-0000-000000000000" ;
38+
39+ /// Brevis/Pico Prism verifier UUID (proof_id = 1)
2640 pub const BREVIS_UUID : & str = "79041a5b-ee8d-49b3-8207-86c7debf8e13" ;
2741
28- /// ZisK verifier UUID (proof_id = 1 )
42+ /// ZisK verifier UUID (proof_id = 2 )
2943 pub const ZISK_UUID : & str = "33f14a82-47b7-42d7-9bc1-b81a46eea4fe" ;
3044
31- /// ZkCloud verifier UUID (proof_id = 2 )
45+ /// ZkCloud verifier UUID (proof_id = 3 )
3246 pub const ZKCLOUD_UUID : & str = "884fcc21-d522-4b4a-b535-7cfde199485c" ;
3347
34- /// ZKM verifier UUID (proof_id = 3 )
48+ /// ZKM verifier UUID (proof_id = 4 )
3549 pub const ZKM_UUID : & str = "84a01f4b-8078-44cf-b463-90ddcd124960" ;
3650
37- /// SP1-Hypercube verifier UUID (proof_id = 4 )
51+ /// SP1-Hypercube verifier UUID (proof_id = 5 )
3852 pub const SP1_HYPERCUBE_UUID : & str = "9d0bd54d-69f9-4404-8f30-020516a8155d" ;
3953
54+ /// Parse a Fallback UUID
55+ pub fn fallback ( ) -> Uuid {
56+ Uuid :: parse_str ( FALLBACK_UUID ) . expect ( "Valid UUID" )
57+ }
58+
4059 /// Parse a Brevis UUID
4160 pub fn brevis ( ) -> Uuid {
4261 Uuid :: parse_str ( BREVIS_UUID ) . expect ( "Valid UUID" )
@@ -134,19 +153,21 @@ impl VerifierStore {
134153 /// Get the prover UUID corresponding to a proof_id (Ethproofs demo mapping)
135154 ///
136155 /// For Ethproofs demo testing, this provides a hardcoded mapping of proof_ids to prover UUIDs:
137- /// - proof_id 0 → brevis (Pico verifier)
138- /// - proof_id 1 → zisk (ZisK verifier)
139- /// - proof_id 2 → zkcloud (ZkCloud verifier)
140- /// - proof_id 3 → zkm (ZKM verifier)
141- /// - proof_id 4 → sp1-hypercube (SP1-Hypercube verifier)
156+ /// - proof_id 0 → fallback (Fallback verifier)
157+ /// - proof_id 1 → brevis (Pico verifier)
158+ /// - proof_id 2 → zisk (ZisK verifier)
159+ /// - proof_id 3 → zkcloud (ZkCloud verifier)
160+ /// - proof_id 4 → zkm (ZKM verifier)
161+ /// - proof_id 5 → sp1-hypercube (SP1-Hypercube verifier)
142162 pub fn get_prover_uuid_for_proof_id ( & self , proof_id : ExecutionProofId ) -> Option < Uuid > {
143163 let id = proof_id. as_u8 ( ) as u32 ;
144164 match id {
145- 0 => Some ( ethproofs_ids:: brevis ( ) ) ,
146- 1 => Some ( ethproofs_ids:: zisk ( ) ) ,
147- 2 => Some ( ethproofs_ids:: zkcloud ( ) ) ,
148- 3 => Some ( ethproofs_ids:: zkm ( ) ) ,
149- 4 => Some ( ethproofs_ids:: sp1_hypercube ( ) ) ,
165+ 0 => Some ( ethproofs_ids:: fallback ( ) ) ,
166+ 1 => Some ( ethproofs_ids:: brevis ( ) ) ,
167+ 2 => Some ( ethproofs_ids:: zisk ( ) ) ,
168+ 3 => Some ( ethproofs_ids:: zkcloud ( ) ) ,
169+ 4 => Some ( ethproofs_ids:: zkm ( ) ) ,
170+ 5 => Some ( ethproofs_ids:: sp1_hypercube ( ) ) ,
150171 _ => None ,
151172 }
152173 }
@@ -157,6 +178,13 @@ impl VerifierStore {
157178 pub fn with_defaults ( ) -> Self {
158179 let mut store = Self :: new ( ) ;
159180
181+ // Register Fallback verifier
182+ store. register (
183+ ethproofs_ids:: fallback ( ) ,
184+ fallback:: FallbackVerifier :: name ( ) ,
185+ fallback:: FallbackVerifier :: verify,
186+ ) ;
187+
160188 // Register Pico verifier for brevis
161189 store. register (
162190 ethproofs_ids:: brevis ( ) ,
0 commit comments