80 builder->create_unconstrained_gate(block,
81 state[0].get_witness_index(),
82 state[1].get_witness_index(),
83 state[2].get_witness_index(),
84 state[3].get_witness_index());
Applies the Poseidon2 permutation function from https://eprint.iacr.org/2023/323 ....
Circuit form of Poseidon2 permutation from https://eprint.iacr.org/2023/323.
static void matrix_multiplication_external(State &state)
In-circuit method to efficiently multiply the inital state by the external matrix ....
static void propagate_current_state_to_next_row(Builder *builder, const State &state, auto &block)
The result of applying a round of Poseidon2 is stored in the next row and is accessed by Poseidon2 In...
static constexpr size_t rounds_p
static constexpr RoundConstantsContainer round_constants
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 constexpr size_t NUM_ROUNDS
std::array< RoundConstants, NUM_ROUNDS > RoundConstantsContainer
std::array< FF, t > NativeState
static constexpr size_t t
static constexpr size_t rounds_f
std::array< FF, t > RoundConstants
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
static constexpr size_t t
static constexpr size_t rounds_f
static constexpr size_t rounds_p
static constexpr std::array< std::array< FF, t >, rounds_f+rounds_p > round_constants