Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
keccak_constraint.cpp
Go to the documentation of this file.
1// === AUDIT STATUS ===
2// internal: { status: Complete, auditors: [Nishat], commit: }
3// external_1: { status: not started, auditors: [], commit: }
4// external_2: { status: not started, auditors: [], commit: }
5// =====================
6
10
11namespace acir_format {
12
13template <typename Builder> void create_keccak_permutations_constraints(Builder& builder, const Keccakf1600& constraint)
14{
16
17 // Create the array containing the permuted state
19
20 // Write the witness assignment to the state
21 for (size_t i = 0; i < constraint.state.size(); ++i) {
22 state[i] = to_field_ct(constraint.state[i], builder);
23 }
24
27
28 for (size_t i = 0; i < output_state.size(); ++i) {
29 output_state[i].assert_equal(field_ct::from_witness_index(&builder, constraint.result[i]));
30 }
31}
32
34 const Keccakf1600& constraint);
35
37 const Keccakf1600& constraint);
38
39} // namespace acir_format
static field_t from_witness_index(Builder *ctx, uint32_t witness_index)
Definition field.cpp:62
static std::array< field_ct, NUM_KECCAK_LANES > permutation_opcode(std::array< field_ct, NUM_KECCAK_LANES > state, Builder *context)
Definition keccak.cpp:498
AluTraceBuilder builder
Definition alu.test.cpp:124
void create_keccak_permutations_constraints(Builder &builder, const Keccakf1600 &constraint)
template void create_keccak_permutations_constraints< bb::UltraCircuitBuilder >(bb::UltraCircuitBuilder &builder, const Keccakf1600 &constraint)
template void create_keccak_permutations_constraints< bb::MegaCircuitBuilder >(bb::MegaCircuitBuilder &builder, const Keccakf1600 &constraint)
bb::stdlib::field_t< Builder > to_field_ct(const WitnessOrConstant< typename Builder::FF > &input, Builder &builder)
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
Definition tuple.hpp:13
std::array< uint32_t, 25 > result
std::array< WitnessOrConstant< bb::fr >, 25 > state