From e8fd8bd1d8196afabf976aea0f123a109648ac0e Mon Sep 17 00:00:00 2001 From: wborgeaud Date: Tue, 25 Oct 2022 22:51:24 +0200 Subject: [PATCH] Add type hints --- plonky2/src/recursion/cyclic_recursion.rs | 35 ++++++++++++----------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/plonky2/src/recursion/cyclic_recursion.rs b/plonky2/src/recursion/cyclic_recursion.rs index 8a70e28a..10fe9dd0 100644 --- a/plonky2/src/recursion/cyclic_recursion.rs +++ b/plonky2/src/recursion/cyclic_recursion.rs @@ -25,7 +25,7 @@ pub struct CyclicRecursionData< > { proof: &'a Option>, verifier_data: &'a VerifierOnlyCircuitData, - common_data: &'a CommonCircuitData, + common_data: &'a CommonCircuitData, } pub struct CyclicRecursionTarget { @@ -49,7 +49,7 @@ pub struct CyclicPublicInputs< impl, C: GenericConfig, const D: usize> CyclicPublicInputs { - fn from_slice(slice: &[F], common_data: &CommonCircuitData) -> Result + fn from_slice(slice: &[F], common_data: &CommonCircuitData) -> Result where C::Hasher: AlgebraicHasher, { @@ -90,7 +90,7 @@ pub struct CyclicPublicInputsTarget { impl CyclicPublicInputsTarget { fn from_slice, C: GenericConfig, const D: usize>( slice: &[Target], - common_data: &CommonCircuitData, + common_data: &CommonCircuitData, ) -> Result { let cap_len = common_data.config.fri_config.num_cap_elements(); let len = slice.len(); @@ -120,7 +120,7 @@ impl, const D: usize> CircuitBuilder { mut self, previous_virtual_public_inputs: &[Target], previous_base_case: Target, - mut common_data: CommonCircuitData, + mut common_data: CommonCircuitData, ) -> Result<(CircuitData, CyclicRecursionTarget)> where C::Hasher: AlgebraicHasher, @@ -153,10 +153,11 @@ impl, const D: usize> CircuitBuilder { common_data.num_public_inputs = self.num_public_inputs(); - let proof = self.add_virtual_proof_with_pis(&common_data); - let dummy_proof = self.add_virtual_proof_with_pis(&common_data); + let proof = self.add_virtual_proof_with_pis::(&common_data); + let dummy_proof = self.add_virtual_proof_with_pis::(&common_data); - let pis = CyclicPublicInputsTarget::from_slice(&proof.public_inputs, &common_data)?; + let pis = + CyclicPublicInputsTarget::from_slice::(&proof.public_inputs, &common_data)?; // Check that the previous base case flag was boolean. self.assert_bool(pis.base_case); // Check that we cannot go from a non-base case to a base case by checking `previous_base_case - base_case \in {0,1}`. @@ -182,7 +183,7 @@ impl, const D: usize> CircuitBuilder { } // Verify the dummy proof if `base_case` is set to true, otherwise verify the "real" proof. - self.conditionally_verify_proof( + self.conditionally_verify_proof::( base_case, &dummy_proof, &dummy_verifier_data, @@ -250,7 +251,7 @@ where cyclic_recursion_data.verifier_data, ); } else { - let (dummy_proof, dummy_data) = dummy_proof(cyclic_recursion_data.common_data)?; + let (dummy_proof, dummy_data) = dummy_proof::(cyclic_recursion_data.common_data)?; pw.set_bool_target(cyclic_recursion_data_target.base_case, true); let mut proof = dummy_proof.clone(); proof.public_inputs[0..public_inputs.len()].copy_from_slice(public_inputs); @@ -298,12 +299,12 @@ pub fn check_cyclic_proof_verifier_data< >( proof: &ProofWithPublicInputs, verifier_data: &VerifierOnlyCircuitData, - common_data: &CommonCircuitData, + common_data: &CommonCircuitData, ) -> Result<()> where C::Hasher: AlgebraicHasher, { - let pis = CyclicPublicInputs::from_slice(&proof.public_inputs, common_data)?; + let pis = CyclicPublicInputs::::from_slice(&proof.public_inputs, common_data)?; if !pis.base_case { ensure!(verifier_data.constants_sigmas_cap == pis.constants_sigmas_cap); ensure!(verifier_data.circuit_digest == pis.circuit_digest); @@ -338,7 +339,7 @@ mod tests { F: RichField + Extendable, C: GenericConfig, const D: usize, - >() -> CommonCircuitData + >() -> CommonCircuitData where C::Hasher: AlgebraicHasher, [(); C::Hasher::HASH_SIZE]:, @@ -348,22 +349,22 @@ mod tests { let data = builder.build::(); let config = CircuitConfig::standard_recursion_config(); let mut builder = CircuitBuilder::::new(config); - let proof = builder.add_virtual_proof_with_pis(&data.common); + let proof = builder.add_virtual_proof_with_pis::(&data.common); let verifier_data = VerifierCircuitTarget { constants_sigmas_cap: builder.add_virtual_cap(data.common.config.fri_config.cap_height), circuit_digest: builder.add_virtual_hash(), }; - builder.verify_proof(proof, &verifier_data, &data.common); + builder.verify_proof::(proof, &verifier_data, &data.common); let data = builder.build::(); let config = CircuitConfig::standard_recursion_config(); let mut builder = CircuitBuilder::::new(config); - let proof = builder.add_virtual_proof_with_pis(&data.common); + let proof = builder.add_virtual_proof_with_pis::(&data.common); let verifier_data = VerifierCircuitTarget { constants_sigmas_cap: builder.add_virtual_cap(data.common.config.fri_config.cap_height), circuit_digest: builder.add_virtual_hash(), }; - builder.verify_proof(proof, &verifier_data, &data.common); + builder.verify_proof::(proof, &verifier_data, &data.common); while builder.num_gates() < 1 << 12 { builder.add_gate(NoopGate, vec![]); } @@ -414,7 +415,7 @@ mod tests { // Add cyclic recursion gadget. let (cyclic_circuit_data, cyclic_data_target) = - builder.cyclic_recursion(&old_pis, old_base_case, common_data)?; + builder.cyclic_recursion::(&old_pis, old_base_case, common_data)?; let cyclic_recursion_data = CyclicRecursionData { proof: &None, // Base case: We don't have a proof to put here yet.