Skip to content

Commit 4c76048

Browse files
authored
feat!: share transcript between pg and decider (#16642)
Closes AztecProtocol/barretenberg#1453. Shares the transcript between PG/Merge and the Decider protocols for hiding kernel soundness. We want to make sure that we can't pick the accumulator that the Decider runs on without affecting the challenges in the Decider. This mitigates an origin tag check failure as we had values from two different transcripts interacting in Decider.
1 parent 2b676c2 commit 4c76048

File tree

4 files changed

+10
-7
lines changed

4 files changed

+10
-7
lines changed

barretenberg/cpp/scripts/test_civc_standalone_vks_havent_changed.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ cd ..
1111
# - Generate a hash for versioning: sha256sum bb-civc-inputs.tar.gz
1212
# - Upload the compressed results: aws s3 cp bb-civc-inputs.tar.gz s3://aztec-ci-artifacts/protocol/bb-civc-inputs-[hash(0:8)].tar.gz
1313
# Note: In case of the "Test suite failed to run ... Unexpected token 'with' " error, need to run: docker pull aztecprotocol/build:3.0
14-
pinned_short_hash="d1e22fdb"
14+
pinned_short_hash="f22d116f"
1515
pinned_civc_inputs_url="https://aztec-ci-artifacts.s3.us-east-2.amazonaws.com/protocol/bb-civc-inputs-${pinned_short_hash}.tar.gz"
1616

1717
function compress_and_upload {

barretenberg/cpp/src/barretenberg/client_ivc/client_ivc.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ ClientIVC::perform_recursive_verification_and_databus_consistency_checks(
205205
prev_accum_hash,
206206
verifier_inputs.is_kernel);
207207
// Perform recursive decider verification
208-
DeciderRecursiveVerifier decider{ &circuit, final_verifier_accumulator };
208+
DeciderRecursiveVerifier decider{ &circuit, final_verifier_accumulator, accumulation_recursive_transcript };
209209
decider_pairing_points = decider.verify_proof(decider_proof);
210210

211211
BB_ASSERT_EQ(output_verifier_accumulator, nullptr);
@@ -496,7 +496,7 @@ void ClientIVC::accumulate(ClientCircuit& circuit, const std::shared_ptr<MegaVer
496496
break;
497497
case QUEUE_TYPE::PG_FINAL:
498498
proof = construct_pg_proof(proving_key, honk_vk, prover_accumulation_transcript, is_kernel);
499-
decider_proof = construct_decider_proof();
499+
decider_proof = construct_decider_proof(prover_accumulation_transcript);
500500
break;
501501
case QUEUE_TYPE::MEGA:
502502
proof = construct_mega_proof_for_hiding_kernel(circuit);
@@ -614,11 +614,11 @@ bool ClientIVC::verify(const Proof& proof) const
614614
*
615615
* @return HonkProof
616616
*/
617-
HonkProof ClientIVC::construct_decider_proof()
617+
HonkProof ClientIVC::construct_decider_proof(const std::shared_ptr<Transcript>& transcript)
618618
{
619619
vinfo("prove decider...");
620620
fold_output.accumulator->commitment_key = bn254_commitment_key;
621-
MegaDeciderProver decider_prover(fold_output.accumulator);
621+
MegaDeciderProver decider_prover(fold_output.accumulator, transcript);
622622
decider_prover.construct_proof();
623623
return decider_prover.export_proof();
624624
}

barretenberg/cpp/src/barretenberg/client_ivc/client_ivc.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,7 @@ class ClientIVC {
279279

280280
bool prove_and_verify();
281281

282-
HonkProof construct_decider_proof();
282+
HonkProof construct_decider_proof(const std::shared_ptr<Transcript>& transcript);
283283

284284
VerificationKey get_vk() const;
285285

barretenberg/cpp/src/barretenberg/stdlib/honk_verifier/decider_recursive_verifier.hpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,11 @@ template <typename Flavor> class DeciderRecursiveVerifier_ {
4242
* @param builder
4343
* @param accumulator
4444
*/
45-
explicit DeciderRecursiveVerifier_(Builder* builder, std::shared_ptr<RecursiveDeciderVK> accumulator)
45+
explicit DeciderRecursiveVerifier_(Builder* builder,
46+
std::shared_ptr<RecursiveDeciderVK> accumulator,
47+
const std::shared_ptr<Transcript>& transcript)
4648
: builder(builder)
49+
, transcript(transcript)
4750
{
4851
if (this->builder == accumulator->builder) {
4952
this->accumulator = std::move(accumulator);

0 commit comments

Comments
 (0)