Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
ecc_bools_relation_impl.hpp
Go to the documentation of this file.
1// === AUDIT STATUS ===
2// internal: { status: Complete, auditors: [Raju], commit: 2a49eb6 }
3// external_1: { status: not started, auditors: [], commit: }
4// external_2: { status: not started, auditors: [], commit: }
5// =====================
6
7#pragma once
8#include <array>
9#include <tuple>
10
12
13namespace bb {
14
25template <typename FF>
26template <typename ContainerOverSubrelations, typename AllEntities, typename Parameters>
27void ECCVMBoolsRelationImpl<FF>::accumulate(ContainerOverSubrelations& accumulator,
28 const AllEntities& in,
29 const Parameters& /*unused*/,
30 const FF& scaling_factor)
31{
32 using Accumulator = typename std::tuple_element_t<0, ContainerOverSubrelations>;
33 using View = typename Accumulator::View;
34
35 auto z1_zero = View(in.transcript_z1zero);
36 auto z2_zero = View(in.transcript_z2zero);
37 auto msm_count_zero_at_transition = View(in.transcript_msm_count_zero_at_transition);
38 auto q_add = View(in.transcript_add);
39 auto q_mul = View(in.transcript_mul);
40 auto q_eq = View(in.transcript_eq);
41 auto transcript_msm_transition = View(in.transcript_msm_transition);
42 auto is_accumulator_not_empty = View(in.transcript_accumulator_not_empty);
43 auto q_reset_accumulator = View(in.transcript_reset_accumulator);
44 auto transcript_Pinfinity = View(in.transcript_base_infinity);
45 auto transcript_msm_infinity = View(in.transcript_msm_infinity);
46 auto transcript_add_x_equal = View(in.transcript_add_x_equal);
47 auto transcript_add_y_equal = View(in.transcript_add_y_equal);
48 auto precompute_point_transition = View(in.precompute_point_transition);
49 auto msm_transition = View(in.msm_transition);
50 auto msm_add = View(in.msm_add);
51 auto msm_double = View(in.msm_double);
52 auto msm_skew = View(in.msm_skew);
53 auto precompute_select = View(in.precompute_select);
54 auto msm_add1 = View(in.msm_add1);
55 auto msm_add2 = View(in.msm_add2);
56 auto msm_add3 = View(in.msm_add3);
57 auto msm_add4 = View(in.msm_add4);
58
59 std::get<BOOL_Q_EQ>(accumulator) += q_eq * (q_eq - 1) * scaling_factor;
60 std::get<BOOL_Q_ADD>(accumulator) += q_add * (q_add - 1) * scaling_factor;
61 std::get<BOOL_Q_MUL>(accumulator) += q_mul * (q_mul - 1) * scaling_factor;
62 std::get<BOOL_Q_RESET_ACCUMULATOR>(accumulator) += q_reset_accumulator * (q_reset_accumulator - 1) * scaling_factor;
63 std::get<BOOL_MSM_TRANSITION>(accumulator) +=
64 transcript_msm_transition * (transcript_msm_transition - 1) * scaling_factor;
66 is_accumulator_not_empty * (is_accumulator_not_empty - 1) * scaling_factor;
67 std::get<BOOL_Z1_ZERO>(accumulator) += z1_zero * (z1_zero - 1) * scaling_factor;
68 std::get<BOOL_Z2_ZERO>(accumulator) += z2_zero * (z2_zero - 1) * scaling_factor;
69 std::get<BOOL_ADD_X_EQUAL>(accumulator) += transcript_add_x_equal * (transcript_add_x_equal - 1) * scaling_factor;
70 std::get<BOOL_ADD_Y_EQUAL>(accumulator) += transcript_add_y_equal * (transcript_add_y_equal - 1) * scaling_factor;
71 std::get<BOOL_BASE_INFINITY>(accumulator) += transcript_Pinfinity * (transcript_Pinfinity - 1) * scaling_factor;
72 std::get<BOOL_MSM_INFINITY>(accumulator) +=
73 transcript_msm_infinity * (transcript_msm_infinity - 1) * scaling_factor;
75 msm_count_zero_at_transition * (msm_count_zero_at_transition - 1) * scaling_factor;
76 std::get<BOOL_MSM_TRANSITION_MSM>(accumulator) += msm_transition * (msm_transition - 1) * scaling_factor;
78 precompute_point_transition * (precompute_point_transition - 1) * scaling_factor;
79 std::get<BOOL_MSM_ADD>(accumulator) += msm_add * (msm_add - 1) * scaling_factor;
80 std::get<BOOL_MSM_DOUBLE>(accumulator) += msm_double * (msm_double - 1) * scaling_factor;
81 std::get<BOOL_MSM_SKEW>(accumulator) += msm_skew * (msm_skew - 1) * scaling_factor;
82 std::get<BOOL_PRECOMPUTE_SELECT>(accumulator) += precompute_select * (precompute_select - 1) * scaling_factor;
83 std::get<BOOL_MSM_ADD1>(accumulator) += msm_add1 * (msm_add1 - 1) * scaling_factor;
84 std::get<BOOL_MSM_ADD2>(accumulator) += msm_add2 * (msm_add2 - 1) * scaling_factor;
85 std::get<BOOL_MSM_ADD3>(accumulator) += msm_add3 * (msm_add3 - 1) * scaling_factor;
86 std::get<BOOL_MSM_ADD4>(accumulator) += msm_add4 * (msm_add4 - 1) * scaling_factor;
87}
88} // namespace bb
static void accumulate(ContainerOverSubrelations &accumulator, const AllEntities &in, const Parameters &, const FF &scaling_factor)
ECCVMBoolsRelationImpl evaluates the correctness of ECCVM boolean checks.
Entry point for Barretenberg command-line interface.
Definition api.hpp:5
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
Definition tuple.hpp:13