From 2e4bea59eecb59eabc48181a68934370f80f0d6d Mon Sep 17 00:00:00 2001 From: wborgeaud Date: Mon, 20 Dec 2021 16:16:05 +0100 Subject: [PATCH] Multi-hash test --- src/plonk/recursive_verifier.rs | 60 ++++++++++++++++++++++++++++++++- 1 file changed, 59 insertions(+), 1 deletion(-) diff --git a/src/plonk/recursive_verifier.rs b/src/plonk/recursive_verifier.rs index a5f5c7dd..c71cb14c 100644 --- a/src/plonk/recursive_verifier.rs +++ b/src/plonk/recursive_verifier.rs @@ -137,7 +137,9 @@ mod tests { use crate::hash::merkle_proofs::MerkleProofTarget; use crate::iop::witness::{PartialWitness, Witness}; use crate::plonk::circuit_data::VerifierOnlyCircuitData; - use crate::plonk::config::{GenericConfig, KeccakGoldilocksConfig, PoseidonGoldilocksConfig}; + use crate::plonk::config::{ + GMiMCGoldilocksConfig, GenericConfig, KeccakGoldilocksConfig, PoseidonGoldilocksConfig, + }; use crate::plonk::proof::{ CompressedProofWithPublicInputs, OpeningSetTarget, Proof, ProofTarget, ProofWithPublicInputs, @@ -485,6 +487,62 @@ mod tests { Ok(()) } + #[test] + #[ignore] + fn test_recursive_verifier_multi_hash() -> Result<()> { + init_logger(); + const D: usize = 2; + type C = PoseidonGoldilocksConfig; + type GC = GMiMCGoldilocksConfig; + type KC = KeccakGoldilocksConfig; + type F = >::F; + + let config = CircuitConfig::standard_recursion_config(); + let (proof, vd, cd) = dummy_proof::(&config, 4_000)?; + + let (proof, vd, cd) = + recursive_proof::(proof, vd, cd, &config, &config, Some(13), false, false)?; + test_serialization(&proof, &cd)?; + + let (proof, vd, cd) = recursive_proof::( + proof, + vd, + cd, + &config, + &config, + Some(13), + false, + false, + )?; + test_serialization(&proof, &cd)?; + + let (proof, vd, cd) = recursive_proof::( + proof, + vd, + cd, + &config, + &config, + Some(13), + false, + false, + )?; + test_serialization(&proof, &cd)?; + + let (proof, vd, cd) = recursive_proof::( + proof, + vd, + cd, + &config, + &config, + Some(13), + false, + false, + )?; + test_serialization(&proof, &cd)?; + + Ok(()) + } + /// Creates a dummy proof which should have roughly `num_dummy_gates` gates. fn dummy_proof, C: GenericConfig, const D: usize>( config: &CircuitConfig,