From b640bf6381eb8eb95ca083bf1d62360cb7c48415 Mon Sep 17 00:00:00 2001 From: Nicholas Ward Date: Wed, 26 Apr 2023 16:03:43 -0700 Subject: [PATCH] serialize ProofChallenges --- plonky2/examples/fibonacci_serialization.rs | 12 +++++++++++- plonky2/src/plonk/get_challenges.rs | 2 +- plonky2/src/plonk/proof.rs | 5 +++-- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/plonky2/examples/fibonacci_serialization.rs b/plonky2/examples/fibonacci_serialization.rs index a252884c..68943457 100644 --- a/plonky2/examples/fibonacci_serialization.rs +++ b/plonky2/examples/fibonacci_serialization.rs @@ -42,7 +42,7 @@ fn main() -> Result<()> { pw.set_target(initial_a, F::ZERO); pw.set_target(initial_b, F::ONE); - let data = builder.build_without_randomizing::(); + let data = builder.build::(); let common_circuit_data_serialized = serde_json::to_string(&data.common).unwrap(); fs::write("common_circuit_data.json", common_circuit_data_serialized) @@ -60,6 +60,16 @@ fn main() -> Result<()> { let proof_serialized = serde_json::to_string(&proof).unwrap(); fs::write("proof_with_public_inputs.json", proof_serialized).expect("Unable to write file"); + let proof_challenges = proof + .get_challenges( + proof.get_public_inputs_hash(), + &data.verifier_only.circuit_digest, + &data.common, + ) + .unwrap(); + let proof_challenges_serialized = serde_json::to_string(&proof_challenges).unwrap(); + fs::write("proof_challenges.json", proof_challenges_serialized).expect("Unable to write file"); + println!( "100th Fibonacci number mod |F| (starting with {}, {}) is: {}", proof.public_inputs[0], proof.public_inputs[1], proof.public_inputs[2] diff --git a/plonky2/src/plonk/get_challenges.rs b/plonky2/src/plonk/get_challenges.rs index d0682572..0e90b398 100644 --- a/plonky2/src/plonk/get_challenges.rs +++ b/plonky2/src/plonk/get_challenges.rs @@ -94,7 +94,7 @@ impl, C: GenericConfig, const D: usize> } /// Computes all Fiat-Shamir challenges used in the Plonk proof. - pub(crate) fn get_challenges( + pub fn get_challenges( &self, public_inputs_hash: <>::InnerHasher as Hasher>::Hash, circuit_digest: &<>::Hasher as Hasher>::Hash, diff --git a/plonky2/src/plonk/proof.rs b/plonky2/src/plonk/proof.rs index 90a7ea86..fe4a0511 100644 --- a/plonky2/src/plonk/proof.rs +++ b/plonky2/src/plonk/proof.rs @@ -102,7 +102,7 @@ impl, C: GenericConfig, const D: usize> }) } - pub(crate) fn get_public_inputs_hash( + pub fn get_public_inputs_hash( &self, ) -> <>::InnerHasher as Hasher>::Hash where @@ -276,7 +276,8 @@ impl, C: GenericConfig, const D: usize> } } -pub(crate) struct ProofChallenges, const D: usize> { +#[derive(Serialize)] +pub struct ProofChallenges, const D: usize> { /// Random values used in Plonk's permutation argument. pub plonk_betas: Vec,