37 using InnerFF =
typename InnerFlavor::FF;
38 static constexpr size_t FIRST_WITNESS_INDEX = InnerFlavor::NUM_PRECOMPUTED_ENTITIES;
41 auto num_public_inputs = inner_prover.proving_key->num_public_inputs();
42 inner_prover.transcript->deserialize_full_transcript(num_public_inputs);
47 InnerFF random_value = InnerFF::random_element();
50 if constexpr (!InnerFlavor::HasZK) {
51 inner_prover.transcript->sumcheck_univariates[0].value_at(0) += random_value;
52 inner_prover.transcript->sumcheck_univariates[0].value_at(1) -= random_value;
54 inner_prover.transcript->zk_sumcheck_univariates[0].value_at(0) += random_value;
55 inner_prover.transcript->zk_sumcheck_univariates[0].value_at(1) -= random_value;
63 inner_prover.transcript->sumcheck_evaluations[FIRST_WITNESS_INDEX] = InnerFF::random_element();
68 inner_prover.transcript->z_perm_comm = inner_prover.transcript->z_perm_comm * InnerFF::random_element();
72 InnerFF random_scalar = InnerFF::random_element();
74 inner_prover.transcript->gemini_fold_comms[0] = inner_prover.transcript->gemini_fold_comms[0] * random_scalar;
75 inner_prover.transcript->gemini_fold_evals[0] *= 0;
89 inner_prover.transcript->serialize_full_transcript();
90 inner_prover.transcript->proof_start = 0;
91 inner_prover.transcript->num_frs_written = InnerFlavor::PROOF_LENGTH_WITHOUT_PUB_INPUTS() + num_public_inputs;
94 inner_prover.transcript->num_frs_written -= IPA_PROOF_LENGTH;
98 inner_proof = inner_prover.export_proof();
109 using Commitment =
typename InnerFlavor::Curve::AffineElement;
110 using FF =
typename InnerFlavor::FF;
113 for (
auto& val : inner_proof) {
121 static constexpr size_t num_frs_comm = bb::field_conversion::calc_num_bn254_frs<Commitment>();
122 size_t offset = inner_proof.size() - num_frs_comm;
124 auto element_frs = std::span{ inner_proof }.subspan(
offset, num_frs_comm);
125 auto last_commitment = NativeTranscriptParams::template deserialize<Commitment>(element_frs);
126 last_commitment = last_commitment *
FF(2);
128 std::copy(last_commitment_reserialized.begin(),
129 last_commitment_reserialized.end(),
void tamper_with_proof(InnerProver &inner_prover, ProofType &inner_proof, TamperType type)
Test method that provides several ways to tamper with a proof. TODO(https://github....