Conversation
| transcript->template receive_from_prover<FF>(domain_separator + "_public_input_" + std::to_string(i)); | ||
| inst->verification_key->public_inputs.emplace_back(public_input_i); | ||
| public_inputs.emplace_back(public_input_i); | ||
| ASSERT(public_input_i == inst->verification_key->public_inputs[i]); |
There was a problem hiding this comment.
actually check that the public inputs match the verification key.
There was a problem hiding this comment.
this uncovered the ivc test bug
| // Accumulate function circuit | ||
| Builder function_circuit = create_mock_circuit(ivc); | ||
| FoldProof function_fold_proof = ivc.accumulate(function_circuit); | ||
| function_vk_with_merge = std::make_shared<VerificationKey>(ivc.prover_instance->proving_key); |
There was a problem hiding this comment.
we used to never reset function_vk_with_merge, so we were using the same vk for all function circuits, which worked generally since all of our function circuits were the same except for the public inputs and the witness values
There was a problem hiding this comment.
I believe there is no need to reset the vk? the witness values and public inputs are not relevant for the vk. Am I missing something?
There was a problem hiding this comment.
oh, right, the VerificationKey contains the public inputs.. but still the number of those should not change across function circuits in this test, hmm.. Also are we certain we want the PIs to be part of the VK?
| ivc.prover_fold_output.accumulator, kernel_fold_proof, foo_verifier_instance, kernel_vk); | ||
|
|
||
| VerifierFoldData kernel_fold_output = { kernel_fold_proof, function_vk_with_merge }; | ||
| VerifierFoldData kernel_fold_output = { kernel_fold_proof, kernel_vk }; |
There was a problem hiding this comment.
kernel_vk is the same as function_vk_with_merge here but its the correct one name-wise
Benchmark resultsMetrics with a significant change:
Detailed resultsAll benchmarks are run on txs on the This benchmark source data is available in JSON format on S3 here. Values are compared against data from master at commit L2 block published to L1Each column represents the number of txs on an L2 block published to L1.
L2 chain processingEach column represents the number of blocks on the L2 chain where each block has 16 txs.
Circuits statsStats on running time and I/O sizes collected for every circuit run across all benchmarks.
Tree insertion statsThe duration to insert a fixed batch of leaves into each tree type.
MiscellaneousTransaction sizes based on how many contract classes are registered in the tx.
Transaction processing duration by data writes.
|
| auto public_input_i = transcript->template receive_from_prover<FF>("public_input_" + std::to_string(i)); | ||
| public_inputs.emplace_back(public_input_i); | ||
| if (public_input_i != key->public_inputs[i]) { | ||
| return false; |
| // Accumulate function circuit | ||
| Builder function_circuit = create_mock_circuit(ivc); | ||
| FoldProof function_fold_proof = ivc.accumulate(function_circuit); | ||
| function_vk_with_merge = std::make_shared<VerificationKey>(ivc.prover_instance->proving_key); |
There was a problem hiding this comment.
I believe there is no need to reset the vk? the witness values and public inputs are not relevant for the vk. Am I missing something?
| // Accumulate function circuit | ||
| Builder function_circuit = create_mock_circuit(ivc); | ||
| FoldProof function_fold_proof = ivc.accumulate(function_circuit); | ||
| function_vk_with_merge = std::make_shared<VerificationKey>(ivc.prover_instance->proving_key); |
There was a problem hiding this comment.
oh, right, the VerificationKey contains the public inputs.. but still the number of those should not change across function circuits in this test, hmm.. Also are we certain we want the PIs to be part of the VK?
|
Replaced by #5315. Instead of comparing verification key public inputs with transcript public inputs, we just use the transcript ones. The verification key public inputs shouldn't exist. |
This fix sets the verification key in client_ivc.test.cpp correctly for function circuits. Previously, the verification key was not being updated properly for the new function circuits.
Please read contributing guidelines and remove this line.