@@ -586,7 +586,7 @@ pub fn pad_circuit(builder: &mut CircuitBuilder<F, D>, common_data: &CommonCircu
586586 }
587587}
588588
589- fn hash_verifier_data_gadget (
589+ pub fn hash_verifier_data_gadget (
590590 builder : & mut CircuitBuilder < F , D > ,
591591 verifier_data : & VerifierCircuitTarget ,
592592) -> HashOutTarget {
@@ -618,6 +618,37 @@ pub fn hash_verifier_data(verifier_only_data: &VerifierOnlyCircuitData<C, D>) ->
618618 PoseidonHash :: hash_no_pad ( & f)
619619}
620620
621+ // Build an dummy empty circuit that uses common_data and make a proof from it.
622+ pub fn dummy (
623+ common_data : & CommonCircuitData < F , D > ,
624+ num_public_inputs : usize ,
625+ ) -> Result < (
626+ VerifierOnlyCircuitData < C , D > ,
627+ ProofWithPublicInputs < F , C , D > ,
628+ ) > {
629+ let config = common_data. config . clone ( ) ;
630+ let mut builder = CircuitBuilder :: new ( config. clone ( ) ) ;
631+
632+ let public_inputs = ( 0 ..num_public_inputs)
633+ . map ( |_| {
634+ let target = builder. add_virtual_target ( ) ;
635+ builder. register_public_input ( target) ;
636+ target
637+ } )
638+ . collect_vec ( ) ;
639+ pad_circuit ( & mut builder, common_data) ;
640+
641+ let circuit_data = builder. build :: < C > ( ) ;
642+ assert_eq ! ( * common_data, circuit_data. common) ;
643+
644+ let mut pw = PartialWitness :: < F > :: new ( ) ;
645+ for target in & public_inputs {
646+ pw. set_target ( * target, F :: ZERO ) ?;
647+ }
648+ let proof = circuit_data. prove ( pw) ?;
649+ Ok ( ( circuit_data. verifier_only , proof) )
650+ }
651+
621652#[ cfg( test) ]
622653mod tests {
623654 use std:: time:: Instant ;
@@ -800,37 +831,6 @@ mod tests {
800831 Ok ( ( ) )
801832 }
802833
803- // Build an dummy empty circuit that uses common_data and make a proof from it.
804- fn dummy (
805- common_data : & CommonCircuitData < F , D > ,
806- num_public_inputs : usize ,
807- ) -> Result < (
808- VerifierOnlyCircuitData < C , D > ,
809- ProofWithPublicInputs < F , C , D > ,
810- ) > {
811- let config = common_data. config . clone ( ) ;
812- let mut builder = CircuitBuilder :: new ( config. clone ( ) ) ;
813-
814- let public_inputs = ( 0 ..num_public_inputs)
815- . map ( |_| {
816- let target = builder. add_virtual_target ( ) ;
817- builder. register_public_input ( target) ;
818- target
819- } )
820- . collect_vec ( ) ;
821- pad_circuit ( & mut builder, common_data) ;
822-
823- let circuit_data = builder. build :: < C > ( ) ;
824- assert_eq ! ( * common_data, circuit_data. common) ;
825-
826- let mut pw = PartialWitness :: < F > :: new ( ) ;
827- for target in & public_inputs {
828- pw. set_target ( * target, F :: ZERO ) ?;
829- }
830- let proof = circuit_data. prove ( pw) ?;
831- Ok ( ( circuit_data. verifier_only , proof) )
832- }
833-
834834 // test that recurses with arity=2, with the following shape:
835835 // proof_1d
836836 // ▲ ▲
0 commit comments