89 static_assert(MAX_APPS_PER_KERNEL == 5,
"Update pinned transcript counts if MAX_APPS_PER_KERNEL changes");
90 constexpr size_t EXPECTED_TOTAL_TRANSCRIPTS = 11;
91 constexpr size_t EXPECTED_NUM_CIRCUITS = 10;
92 constexpr std::array<size_t, EXPECTED_NUM_CIRCUITS> EXPECTED_CIRCUIT_TRANSCRIPTS = { 0, 0, 0, 0, 0, 3, 0, 3, 2, 3 };
98 std::vector<size_t> indices_before_accumulation;
99 std::vector<size_t> indices_after_accumulation;
102 constexpr size_t NUM_APP_CIRCUITS = MAX_APPS_PER_KERNEL + 1;
103 PrivateFunctionExecutionMockCircuitProducer circuit_producer(NUM_APP_CIRCUITS);
104 const size_t num_circuits = circuit_producer.total_num_circuits;
105 ASSERT_EQ(num_circuits, EXPECTED_NUM_CIRCUITS) <<
"Circuit count mismatch - test assumptions invalid";
109 for (
size_t j = 0; j < num_circuits; ++j) {
111 circuit_producer.construct_and_accumulate_next_circuit(ivc);
116 size_t total_transcripts = index_after_ivc - index_before_ivc;
119 EXPECT_EQ(total_transcripts, EXPECTED_TOTAL_TRANSCRIPTS)
120 <<
"Total transcript count during 4-app IVC accumulation changed. "
121 <<
"If intentional, update EXPECTED_TOTAL_TRANSCRIPTS. "
122 <<
"Unexpected changes may indicate security-relevant transcript isolation issues.";
125 for (
size_t i = 0; i < num_circuits; ++i) {
126 size_t circuit_transcripts = indices_after_accumulation[i] - indices_before_accumulation[i];
127 EXPECT_EQ(circuit_transcripts, EXPECTED_CIRCUIT_TRANSCRIPTS[i])
128 <<
"Circuit " << i <<
" transcript count changed from " << EXPECTED_CIRCUIT_TRANSCRIPTS[i] <<
" to "
129 << circuit_transcripts;
133 auto proof = ivc.prove();
134 auto vk_and_hash = ivc.get_hiding_kernel_vk_and_hash();
136 EXPECT_TRUE(verifier.
verify(proof)) <<
"IVC proof should verify";
155 constexpr size_t NUM_APP_CIRCUITS = 1;
156 PrivateFunctionExecutionMockCircuitProducer circuit_producer(NUM_APP_CIRCUITS);
157 const size_t num_circuits = circuit_producer.total_num_circuits;
160 for (
size_t j = 0; j < num_circuits; ++j) {
161 circuit_producer.construct_and_accumulate_next_circuit(ivc);
164 auto proof = ivc.prove();
165 auto vk_and_hash = ivc.get_hiding_kernel_vk_and_hash();
175 RecursiveVerifier verifier(stdlib_vk_and_hash);
177 [[maybe_unused]]
auto output = verifier.verify(stdlib_proof);
180 size_t transcripts_created = index_after_verify - index_before_verify;
183 constexpr size_t EXPECTED_TRANSCRIPTS_DURING_RECURSIVE_VERIFY = 2;
184 EXPECT_EQ(transcripts_created, EXPECTED_TRANSCRIPTS_DURING_RECURSIVE_VERIFY)
185 <<
"ChonkRecursiveVerifier transcript count changed. "
186 <<
"If intentional, update EXPECTED_TRANSCRIPTS_DURING_RECURSIVE_VERIFY. "
187 <<
"Unexpected changes may indicate security-relevant transcript isolation issues.";