31 execute_preamble_round();
32 execute_wire_commitments_round();
33 execute_sorted_list_accumulator_round();
34 execute_log_derivative_inverse_round();
35 execute_grand_product_computation_round();
37 verifier_instance->witness_commitments = witness_comms;
38 verifier_instance->relation_parameters = relation_parameters;
39 verifier_instance->alphas = generate_alphas_round();
40 verifier_instance->is_complete =
true;
49 auto vk = verifier_instance->get_vk();
51 FF vk_hash =
vk->hash_through_transcript(domain_separator, *transcript);
52 transcript->add_to_hash_buffer(domain_separator +
"vk_hash", vk_hash);
53 vinfo(
"vk hash in Oink verifier: ", vk_hash);
57 vinfo(
"expected vk hash: ", verifier_instance->vk_and_hash->hash);
58 verifier_instance->vk_and_hash->hash.assert_equal(vk_hash);
61 size_t num_public_inputs = get_num_public_inputs();
63 std::vector<FF> public_inputs;
64 for (
size_t i = 0; i < num_public_inputs; ++i) {
66 transcript->template receive_from_prover<FF>(domain_separator +
"public_input_" +
std::to_string(i));
67 public_inputs.emplace_back(public_input_i);
69 verifier_instance->public_inputs =
std::move(public_inputs);
80 witness_comms.w_l = transcript->template receive_from_prover<Commitment>(domain_separator + comm_labels.w_l);
81 witness_comms.w_r = transcript->template receive_from_prover<Commitment>(domain_separator + comm_labels.w_r);
82 witness_comms.w_o = transcript->template receive_from_prover<Commitment>(domain_separator + comm_labels.w_o);
87 for (
auto [commitment, label] :
zip_view(witness_comms.get_ecc_op_wires(), comm_labels.get_ecc_op_wires())) {
88 commitment = transcript->template receive_from_prover<Commitment>(domain_separator + label);
92 for (
auto [commitment, label] :
93 zip_view(witness_comms.get_databus_entities(), comm_labels.get_databus_entities())) {
94 commitment = transcript->template receive_from_prover<Commitment>(domain_separator + label);
106 auto [eta, eta_two, eta_three] = transcript->template get_challenges<FF>(
107 domain_separator +
"eta", domain_separator +
"eta_two", domain_separator +
"eta_three");
108 relation_parameters.eta = eta;
109 relation_parameters.eta_two = eta_two;
110 relation_parameters.eta_three = eta_three;
113 witness_comms.lookup_read_counts =
114 transcript->template receive_from_prover<Commitment>(domain_separator + comm_labels.lookup_read_counts);
115 witness_comms.lookup_read_tags =
116 transcript->template receive_from_prover<Commitment>(domain_separator + comm_labels.lookup_read_tags);
117 witness_comms.w_4 = transcript->template receive_from_prover<Commitment>(domain_separator + comm_labels.w_4);
127 auto [beta, gamma] = transcript->template get_challenges<FF>(domain_separator +
"beta", domain_separator +
"gamma");
128 relation_parameters.beta = beta;
129 relation_parameters.gamma = gamma;
131 witness_comms.lookup_inverses =
132 transcript->template receive_from_prover<Commitment>(domain_separator + comm_labels.lookup_inverses);
136 for (
auto [commitment, label] :
137 zip_view(witness_comms.get_databus_inverses(), comm_labels.get_databus_inverses())) {
138 commitment = transcript->template receive_from_prover<Commitment>(domain_separator + label);
149 auto vk = verifier_instance->get_vk();
151 const FF public_input_delta = compute_public_input_delta<Flavor>(
152 verifier_instance->public_inputs, relation_parameters.beta, relation_parameters.gamma,
vk->pub_inputs_offset);
154 relation_parameters.public_input_delta = public_input_delta;
157 witness_comms.z_perm = transcript->template receive_from_prover<Commitment>(domain_separator + comm_labels.z_perm);
166 challenge_labels[idx] = domain_separator +
"alpha_" +
std::to_string(idx);
178#ifdef STARKNET_GARAGA_FLAVORS
std::array< FF, NUM_SUBRELATIONS - 1 > SubrelationSeparators
static constexpr size_t NUM_SUBRELATIONS
Verifier class for all the presumcheck rounds, which are shared between the folding verifier and ultr...
void execute_wire_commitments_round()
Get the wire polynomials (part of the witness), with the exception of the fourth wire,...
void execute_preamble_round()
Get circuit size, public input size, and public inputs from transcript.
void verify()
Oink Verifier function that runs all the rounds of the verifier.
SubrelationSeparators generate_alphas_round()
void execute_log_derivative_inverse_round()
Get log derivative inverse polynomial and its commitment, if MegaFlavor.
typename Flavor::SubrelationSeparators SubrelationSeparators
void execute_grand_product_computation_round()
Compute lookup grand product delta and get permutation and lookup grand product commitments.
void execute_sorted_list_accumulator_round()
Get sorted witness-table accumulator and fourth wire commitments.
Entry point for Barretenberg command-line interface.
VerifierCommitmentKey< Curve > vk
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
std::string to_string(bb::avm2::ValueTag tag)