Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
poseidon2_constraint.cpp
Go to the documentation of this file.
1// === AUDIT STATUS ===
2// internal: { status: not started, auditors: [], date: YYYY-MM-DD }
3// external_1: { status: not started, auditors: [], date: YYYY-MM-DD }
4// external_2: { status: not started, auditors: [], date: YYYY-MM-DD }
5// =====================
6
12
13namespace acir_format {
14
15using namespace bb;
16
17template <typename Builder> void create_poseidon2_permutations(Builder& builder, const Poseidon2Constraint& constraint)
18{
21
22 BB_ASSERT_EQ(constraint.state.size(), 4U);
23 BB_ASSERT_EQ(constraint.result.size(), 4U);
24 // Get the witness assignment for each witness index
25 // Write the witness assignment to the byte array state
26 State state;
27 for (size_t i = 0; i < constraint.state.size(); ++i) {
28 state[i] = to_field_ct(constraint.state[i], builder);
29 }
30 State output_state;
32 for (size_t i = 0; i < output_state.size(); ++i) {
33 output_state[i].assert_equal(field_ct::from_witness_index(&builder, constraint.result[i]));
34 }
35}
36
38 const Poseidon2Constraint& constraint);
39
41 const Poseidon2Constraint& constraint);
42} // namespace acir_format
#define BB_ASSERT_EQ(actual, expected,...)
Definition assert.hpp:88
std::array< field_t< Builder >, t > State
static State permutation(Builder *builder, const State &input)
Circuit form of Poseidon2 permutation from https://eprint.iacr.org/2023/323.
static field_t from_witness_index(Builder *ctx, uint32_t witness_index)
Definition field.cpp:61
AluTraceBuilder builder
Definition alu.test.cpp:123
template void create_poseidon2_permutations< MegaCircuitBuilder >(MegaCircuitBuilder &builder, const Poseidon2Constraint &constraint)
bb::stdlib::field_t< Builder > to_field_ct(const WitnessOrConstant< FF > &input, Builder &builder)
template void create_poseidon2_permutations< UltraCircuitBuilder >(UltraCircuitBuilder &builder, const Poseidon2Constraint &constraint)
void create_poseidon2_permutations(Builder &builder, const Poseidon2Constraint &constraint)
Entry point for Barretenberg command-line interface.
std::vector< WitnessOrConstant< bb::fr > > state