314 ipa_transcript->enable_manifest();
315 ECCVMFlavor::PCS::compute_opening_proof(prover.
key->commitment_key, opening_claim, ipa_transcript);
318 auto manifest_expected = this->construct_eccvm_honk_manifest();
319 auto prover_manifest = prover.
transcript->get_manifest();
322 ASSERT_GT(manifest_expected.size(), 0);
323 for (
size_t round = 0; round < manifest_expected.size(); ++round) {
324 ASSERT_EQ(prover_manifest[round], manifest_expected[round]) <<
"Prover manifest discrepency in round " << round;
327 auto ipa_manifest_expected = this->construct_eccvm_ipa_manifest();
328 auto prover_ipa_manifest = ipa_transcript->get_manifest();
331 ASSERT_GT(ipa_manifest_expected.size(), 0);
332 for (
size_t round = 0; round < ipa_manifest_expected.size(); ++round) {
333 ASSERT_EQ(prover_ipa_manifest[round], ipa_manifest_expected[round])
334 <<
"IPA prover manifest discrepency in round " << round;
351 prover_transcript->enable_manifest();
356 prover_ipa_transcript->enable_manifest();
357 ECCVMFlavor::PCS::compute_opening_proof(prover.
key->commitment_key, opening_claim, prover_ipa_transcript);
367 verifier_ipa_transcript->enable_manifest();
368 ECCVMFlavor::PCS::reduce_verify(
369 verifier.
key->pcs_verification_key, verifier_opening_claim, verifier_ipa_transcript);
372 auto prover_manifest = prover.
transcript->get_manifest();
373 auto verifier_manifest = verifier.
transcript->get_manifest();
379 ASSERT_GT(prover_manifest.size(), 0);
380 for (
size_t round = 0; round < prover_manifest.size() - 1; ++round) {
381 ASSERT_EQ(prover_manifest[round], verifier_manifest[round])
382 <<
"Prover/Verifier manifest discrepency in round " << round;
386 auto prover_ipa_manifest = prover_ipa_transcript->get_manifest();
387 auto verifier_ipa_manifest = verifier_ipa_transcript->get_manifest();
388 ASSERT_GT(prover_ipa_manifest.size(), 0);
389 for (
size_t round = 0; round < prover_ipa_manifest.size(); ++round) {
390 ASSERT_EQ(prover_ipa_manifest[round], verifier_ipa_manifest[round])
391 <<
"Prover/Verifier IPA manifest discrepency in round " << round;
403 auto transcript = Flavor::Transcript::prover_init_empty();
405 std::vector<std::string> challenge_labels{
"a",
"b",
"c",
"d",
"e",
"f" };
406 auto challenges = transcript->template get_challenges<FF>(challenge_labels);
408 for (
size_t i = 0; i < challenges.size(); ++i) {
409 ASSERT_NE(challenges[i], 0) <<
"Challenge " << i <<
" is 0";
411 constexpr uint32_t random_val{ 17 };
412 transcript->send_to_verifier(
"random val", random_val);
414 challenge_labels = {
"a",
"b",
"c" };
415 challenges = transcript->template get_challenges<FF>(challenge_labels);
417 ASSERT_NE(challenges[0], 0) <<
"Challenge a is 0";
418 ASSERT_NE(challenges[1], 0) <<
"Challenge b is 0";
419 ASSERT_NE(challenges[2], 0) <<
"Challenge c is 0";