@@ -156,9 +156,11 @@ impl IvcSnarkProverSetup {
156156
157157 /// Builds an [`IvcSnarkProverSetup`] from a deterministic, oversized unsafe SRS, exercising the
158158 /// real `load` path without the production SRS. Shared by the slow IVC tests through a
159- /// content-keyed cache keyed by the protocol parameters, Merkle-tree depth, the unsafe SRS identity
160- /// (degree and seed), and the production verifying keys as a circuit-version salt, so the recursive
161- /// keys — the dominant cost — are computed once and reused across tests and runs.
159+ /// content-keyed cache keyed by the protocol parameters, Merkle-tree depth, the unsafe SRS seed,
160+ /// and the production verifying keys as a circuit-version salt — not the SRS degree, since `load`
161+ /// always downsizes to `RECURSIVE_CIRCUIT_DEGREE` before deriving keys, so any `unsafe_srs_degree`
162+ /// reproduces the same recursive keys — the dominant cost — letting calls at different degrees
163+ /// share one already-computed key cache instead of each paying for keygen separately.
162164 #[ cfg( test) ]
163165 pub ( crate ) fn build_for_test (
164166 parameters : & crate :: Parameters ,
@@ -182,7 +184,6 @@ impl IvcSnarkProverSetup {
182184 ) -> StmResult < Self > {
183185 let parameters_bytes = parameters. to_bytes ( ) ?;
184186 let depth_bytes = merkle_tree_depth. to_le_bytes ( ) ;
185- let degree_bytes = unsafe_srs_degree. to_le_bytes ( ) ;
186187 let seed_bytes = UNSAFE_SRS_SEED . to_le_bytes ( ) ;
187188 let cache = FileMutex :: for_shared_cache (
188189 "ivc-setup" ,
@@ -191,7 +192,6 @@ impl IvcSnarkProverSetup {
191192 RECURSIVE_CIRCUIT_VERIFICATION_KEY_FOR_PRODUCTION ,
192193 & parameters_bytes,
193194 & depth_bytes,
194- & degree_bytes,
195195 & seed_bytes,
196196 ] ,
197197 ) ;
0 commit comments