@@ -60,196 +60,54 @@ pub fn compute_unified_setup_for_machine_configuration<C: MachineConfig>(
6060 )
6161}
6262
63- // #[cfg(any(feature = "verifier_80", feature = "verifier_100"))]
64- // pub fn verify_unrolled_base_layer_for_machine_configuration<C: MachineConfig>(
65- // proof: &UnrolledProgramProof,
66- // setup: &UnrolledProgramSetup,
67- // ) -> Result<[u32; 16], ()> {
68- // for (k, v) in proof.circuit_families_proofs.iter() {
69- // println!("{} proofs for family {}", v.len(), k);
70- // }
71-
72- // let responses = proof.flatten_into_responses(C::ALLOWED_DELEGATION_CSRS);
73-
74- // let params = if setups::is_default_machine_configuration::<C>() {
75- // full_statement_verifier::unrolled_proof_statement::FULL_MACHINE_UNROLLED_CIRCUITS_VERIFICATION_PARAMETERS
76- // } else if setups::is_machine_without_signed_mul_div_configuration::<C>() {
77- // full_statement_verifier::unrolled_proof_statement::FULL_UNSIGNED_MACHINE_UNROLLED_CIRCUITS_VERIFICATION_PARAMETERS
78- // } else if setups::is_reduced_machine_configuration::<C>() {
79- // full_statement_verifier::unrolled_proof_statement::RECURSION_WORD_ONLY_UNSIGNED_MACHINE_UNROLLED_CIRCUITS_VERIFICATION_PARAMETERS
80- // } else {
81- // panic!("Unknown configuration {:?}", std::any::type_name::<C>());
82- // };
83-
84- // println!("Running the verifier");
85-
86- // let families_setups: Vec<_> = setup
87- // .circuit_families_setups
88- // .iter()
89- // .map(|el| *el.1)
90- // .collect();
91- // let inits_and_teardowns_setup = setup.inits_and_teardowns_setup;
92-
93- // let result = std::thread::Builder::new()
94- // .name("verifier thread".to_string())
95- // .stack_size(1 << 27)
96- // .spawn(move || {
97-
98- // let families_setups_refs: Vec<_> = families_setups.iter().map(|el| el).collect();
99- // let it = responses.into_iter();
100- // prover::nd_source_std::set_iterator(it);
101-
102- // #[allow(invalid_value)]
103- // let regs = unsafe {
104- // full_statement_verifier::unrolled_proof_statement::verify_full_statement_for_unrolled_circuits::<true, { setups::inits_and_teardowns::NUM_INIT_AND_TEARDOWN_SETS }>(
105- // &families_setups_refs,
106- // params,
107- // (&inits_and_teardowns_setup, full_statement_verifier::unrolled_proof_statement::INITS_AND_TEARDOWNS_VERIFIER_PTR),
108- // full_statement_verifier::BASE_LAYER_DELEGATION_CIRCUITS_VERIFICATION_PARAMETERS,
109- // )
110- // };
111-
112- // regs
113- // })
114- // .expect("must spawn verifier thread").join();
115-
116- // result.map_err(|_| ())
117- // }
118-
119- // #[cfg(any(feature = "verifier_80", feature = "verifier_100"))]
120- // pub fn verify_unrolled_base_layer_via_full_statement_verifier(
121- // proof: &UnrolledProgramProof,
122- // setup: &UnrolledProgramSetup,
123- // ) -> Result<[u32; 16], ()> {
124- // for (k, v) in proof.circuit_families_proofs.iter() {
125- // println!("{} proofs for family {}", v.len(), k);
126- // }
127-
128- // let mut responses = setup.flatten_for_recursion();
129- // responses.extend(proof.flatten_into_responses(&[
130- // common_constants::delegation_types::blake2s_with_control::BLAKE2S_DELEGATION_CSR_REGISTER,
131- // common_constants::delegation_types::bigint_with_control::BIGINT_OPS_WITH_CONTROL_CSR_REGISTER,
132- // common_constants::delegation_types::keccak_special5::KECCAK_SPECIAL5_CSR_REGISTER,
133- // ]));
134-
135- // println!("Running the verifier");
136-
137- // let result = std::thread::Builder::new()
138- // .name("verifier thread".to_string())
139- // .stack_size(1 << 27)
140- // .spawn(move || {
141- // let it = responses.into_iter();
142- // prover::nd_source_std::set_iterator(it);
143-
144- // #[allow(invalid_value)]
145- // let regs = unsafe {
146- // full_statement_verifier::unrolled_proof_statement::verify_unrolled_base_layer()
147- // };
148-
149- // regs
150- // })
151- // .expect("must spawn verifier thread")
152- // .join();
153-
154- // result.map_err(|_| ())
155- // }
156-
157- #[ cfg( any( feature = "verifier_80" , feature = "verifier_100" ) ) ]
158- pub fn verify_unified_recursion_layer_for_machine_configuration < C : MachineConfig > (
63+ pub fn flatten_proof_into_responses_for_unified_recursion (
15964 proof : & UnrolledProgramProof ,
16065 setup : & UnrolledProgramSetup ,
16166 compiled_layouts : & CompiledCircuitsSet ,
162- ) -> Result < [ u32 ; 16 ] , ( ) > {
163- use crate :: unified_circuit:: common_constants:: REDUCED_MACHINE_CIRCUIT_FAMILY_IDX ;
164- assert_eq ! ( setup. circuit_families_setups. len( ) , 1 ) ;
165- assert ! ( setup
166- . circuit_families_setups
167- . contains_key( & REDUCED_MACHINE_CIRCUIT_FAMILY_IDX ) ) ;
168-
169- assert_eq ! ( proof. circuit_families_proofs. len( ) , 1 ) ;
170- assert ! ( proof. inits_and_teardowns_proofs. is_empty( ) ) ;
171- assert ! ( proof. circuit_families_proofs[ & REDUCED_MACHINE_CIRCUIT_FAMILY_IDX ] . len( ) > 0 ) ;
172-
173- for ( k, v) in proof. circuit_families_proofs . iter ( ) {
174- println ! ( "{} proofs for family {}" , v. len( ) , k) ;
175- }
176-
177- let responses = proof. flatten_into_responses ( C :: ALLOWED_DELEGATION_CSRS , compiled_layouts) ;
178-
179- let params = if setups:: is_default_machine_configuration :: < C > ( ) {
180- panic ! (
181- "Trying to use configuration {:?} at recursion layer" ,
182- std:: any:: type_name:: <C >( )
183- ) ;
184- } else if setups:: is_machine_without_signed_mul_div_configuration :: < C > ( ) {
185- panic ! (
186- "Trying to use configuration {:?} at recursion layer" ,
187- std:: any:: type_name:: <C >( )
188- ) ;
189- } else if setups:: is_reduced_machine_configuration :: < C > ( ) {
190- full_statement_verifier:: unrolled_proof_statement:: RECURSION_WORD_ONLY_UNSIGNED_MACHINE_UNROLLED_CIRCUITS_VERIFICATION_PARAMETERS
67+ input_is_unrolled : bool ,
68+ ) -> Vec < u32 > {
69+ let mut responses = vec ! [ ] ;
70+ let op = if input_is_unrolled {
71+ full_statement_verifier:: definitions:: OP_VERIFY_UNROLLED_RECURSION_LAYER_IN_UNIFIED_CIRCUIT
19172 } else {
192- panic ! ( "Unknown configuration {:?}" , std:: any:: type_name:: <C >( ) ) ;
193- } ;
194-
195- println ! ( "Running the verifier" ) ;
73+ use crate :: unified_circuit:: common_constants:: REDUCED_MACHINE_CIRCUIT_FAMILY_IDX ;
74+ assert_eq ! ( setup. circuit_families_setups. len( ) , 1 ) ;
75+ assert ! ( setup
76+ . circuit_families_setups
77+ . contains_key( & REDUCED_MACHINE_CIRCUIT_FAMILY_IDX ) ) ;
19678
197- let families_setups: Vec < _ > = setup
198- . circuit_families_setups
199- . iter ( )
200- . map ( |el| * el. 1 )
201- . collect ( ) ;
79+ assert_eq ! ( proof. circuit_families_proofs. len( ) , 1 ) ;
80+ assert ! ( proof. inits_and_teardowns_proofs. is_empty( ) ) ;
81+ assert ! ( proof. circuit_families_proofs[ & REDUCED_MACHINE_CIRCUIT_FAMILY_IDX ] . len( ) > 0 ) ;
20282
203- let result = std:: thread:: Builder :: new ( )
204- . name ( "verifier thread" . to_string ( ) )
205- . stack_size ( 1 << 27 )
206- . spawn ( move || {
83+ full_statement_verifier:: definitions:: OP_VERIFY_UNIFIED_RECURSION_LAYER_IN_UNIFIED_CIRCUIT
84+ } ;
85+ responses. push ( op) ;
86+ responses. extend ( setup. flatten_for_recursion ( ) ) ;
87+ responses. extend ( proof. flatten_into_responses ( & [
88+ common_constants:: delegation_types:: blake2s_with_control:: BLAKE2S_DELEGATION_CSR_REGISTER ,
89+ ] , compiled_layouts) ) ;
20790
208- let families_setups_refs: Vec < _ > = families_setups. iter ( ) . map ( |el| el) . collect ( ) ;
209- let it = responses. into_iter ( ) ;
210- prover:: nd_source_std:: set_iterator ( it) ;
211-
212- #[ allow( invalid_value) ]
213- let regs = unsafe {
214- full_statement_verifier:: unified_circuit_statement:: verify_unified_circuit_statement :: < false > (
215- & families_setups_refs[ 0 ] ,
216- full_statement_verifier:: unified_circuit_statement:: REDUCED_UNIFIED_CIRCUIT_CAPACITY ,
217- full_statement_verifier:: unified_circuit_statement:: REDUCED_UNIFIED_CIRCUIT_VERIFIER_PTR ,
218- full_statement_verifier:: BASE_LAYER_DELEGATION_CIRCUITS_VERIFICATION_PARAMETERS ,
219- )
220- } ;
221-
222- regs
223- } )
224- . expect ( "must spawn verifier thread" ) . join ( ) ;
225-
226- result. map_err ( |_| ( ) )
91+ responses
22792}
22893
22994#[ cfg( any( feature = "verifier_80" , feature = "verifier_100" ) ) ]
230- pub fn verify_unrolled_recursion_layer_via_full_statement_verifier (
95+ pub fn verify_proof_in_unified_layer (
23196 proof : & UnrolledProgramProof ,
23297 setup : & UnrolledProgramSetup ,
23398 compiled_layouts : & CompiledCircuitsSet ,
99+ input_is_unrolled : bool ,
234100) -> Result < [ u32 ; 16 ] , ( ) > {
235- use crate :: unified_circuit:: common_constants:: REDUCED_MACHINE_CIRCUIT_FAMILY_IDX ;
236- assert_eq ! ( setup. circuit_families_setups. len( ) , 1 ) ;
237- assert ! ( setup
238- . circuit_families_setups
239- . contains_key( & REDUCED_MACHINE_CIRCUIT_FAMILY_IDX ) ) ;
240-
241- assert_eq ! ( proof. circuit_families_proofs. len( ) , 1 ) ;
242- assert ! ( proof. inits_and_teardowns_proofs. is_empty( ) ) ;
243- assert ! ( proof. circuit_families_proofs[ & REDUCED_MACHINE_CIRCUIT_FAMILY_IDX ] . len( ) > 0 ) ;
244-
245101 for ( k, v) in proof. circuit_families_proofs . iter ( ) {
246102 println ! ( "{} proofs for family {}" , v. len( ) , k) ;
247103 }
248104
249- let mut responses = setup. flatten_unified_for_recursion ( ) ;
250- responses. extend ( proof. flatten_into_responses ( & [
251- common_constants:: delegation_types:: blake2s_with_control:: BLAKE2S_DELEGATION_CSR_REGISTER ,
252- ] , compiled_layouts) ) ;
105+ let mut responses = flatten_proof_into_responses_for_unified_recursion (
106+ proof,
107+ setup,
108+ compiled_layouts,
109+ input_is_unrolled,
110+ ) ;
253111
254112 println ! ( "Running the verifier" ) ;
255113
@@ -259,10 +117,7 @@ pub fn verify_unrolled_recursion_layer_via_full_statement_verifier(
259117 let it = responses. into_iter ( ) ;
260118 prover:: nd_source_std:: set_iterator ( it) ;
261119
262- #[ allow( invalid_value) ]
263- let regs = unsafe {
264- full_statement_verifier:: unified_circuit_statement:: verify_unified_circuit_recursion_layer ( )
265- } ;
120+ let regs = full_statement_verifier:: unified_circuit_statement:: verify_unrolled_or_unified_circuit_recursion_layer ( ) ;
266121
267122 regs
268123 } ) . map_err ( |_| ( ) ) ;
@@ -279,10 +134,7 @@ pub fn verify_unrolled_recursion_layer_via_full_statement_verifier(
279134 let it = responses. into_iter ( ) ;
280135 prover:: nd_source_std:: set_iterator ( it) ;
281136
282- #[ allow( invalid_value) ]
283- let regs = unsafe {
284- full_statement_verifier:: unified_circuit_statement:: verify_unified_circuit_recursion_layer ( )
285- } ;
137+ let regs = full_statement_verifier:: unified_circuit_statement:: verify_unrolled_or_unified_circuit_recursion_layer ( ) ;
286138
287139 regs
288140 } )
0 commit comments