31 auto setup = this->generate_claim_data({ MAX_POLY_DEGREE, MAX_POLY_DEGREE / 2 });
34 auto prover_opening_claims = ClaimData::prover_opening_claims(setup);
35 const auto batched_opening_claim = ShplonkProver::prove(this->
ck(), prover_opening_claims, prover_transcript);
37 this->verify_opening_pair(batched_opening_claim.opening_pair, batched_opening_claim.polynomial);
43 const auto batched_verifier_claim = ShplonkVerifier::reduce_verification(
44 this->
vk().get_g1_identity(), ClaimData::verifier_opening_claims(setup), verifier_transcript);
46 this->verify_opening_claim(batched_verifier_claim, batched_opening_claim.polynomial);
55 using Fr =
typename TypeParam::ScalarField;
60 auto setup = this->generate_claim_data({ MAX_POLY_DEGREE, MAX_POLY_DEGREE / 2 });
63 auto commitments = ClaimData::polynomial_commitments(setup);
66 auto [coefficients, evals] = this->combine_claims(setup);
69 auto prover_opening_claims = ClaimData::prover_opening_claims(setup);
70 const auto batched_opening_claim = ShplonkProver::prove(this->
ck(), prover_opening_claims, prover_transcript);
72 this->verify_opening_pair(batched_opening_claim.opening_pair, batched_opening_claim.polynomial);
75 auto verifier_opening_claims = ClaimData::verifier_opening_claims(setup);
77 { { 0 }, {
Fr(1) }, verifier_opening_claims[0].opening_pair },
78 { { 1 }, {
Fr(1) }, verifier_opening_claims[1].opening_pair },
79 { { 0, 1 }, coefficients, verifier_opening_claims[2].opening_pair },
82 ShplonkVerifier verifier(commitments, verifier_transcript, verifier_opening_claims.size());
85 const auto batched_verifier_claim =
86 verifier.reduce_verification_vector_claims(this->
vk().get_g1_identity(), update_data);
88 this->verify_opening_claim(batched_verifier_claim, batched_opening_claim.polynomial);
101 auto setup = this->generate_claim_data({ MAX_POLY_DEGREE, MAX_POLY_DEGREE / 2 });
104 auto prover_opening_claims = ClaimData::prover_opening_claims(setup);
105 const auto batched_opening_claim = ShplonkProver::prove(this->
ck(), prover_opening_claims, prover_transcript);
107 this->verify_opening_pair(batched_opening_claim.opening_pair, batched_opening_claim.polynomial);
120 auto verifier_opening_claims = ClaimData::verifier_opening_claims(setup);
121 auto verifier = ShplonkVerifier::reduce_verification_no_finalize(verifier_opening_claims, verifier_transcript);
124 const auto batched_verifier_claim = verifier.export_batch_opening_claim(this->
vk().get_g1_identity());
128 auto final_proof_points =
130 ASSERT_TRUE(this->
vk().pairing_check(final_proof_points[0], final_proof_points[1]));
133 auto vk = create_verifier_commitment_key<VerifierCommitmentKey<curve::Grumpkin>>();
135 batched_verifier_claim,
vk, verifier_transcript);
static VerifierAccumulator reduce_verify_batch_opening_claim(BatchOpeningClaim< Curve > batch_opening_claim, const std::shared_ptr< Transcript > &transcript)
Computes the input points for the pairing check needed to verify a KZG opening claim obtained from a ...
static void compute_opening_proof(const CK &ck, const ProverOpeningClaim< Curve > &opening_claim, const std::shared_ptr< Transcript > &prover_trancript)
Computes the KZG commitment to an opening proof polynomial at a single evaluation point.