17 std::vector<fr> to_hash;
18 read(inputs_buffer, to_hash);
25 std::vector<fr> to_hash;
26 read(inputs_buffer, to_hash);
27 const size_t numHashes = to_hash.size() / 2;
28 std::vector<fr> results;
30 while (count < numHashes) {
32 { to_hash[count * 2], to_hash[count * 2 + 1] });
36 write(output, results);
44 std::vector<fr> to_permute;
45 read(inputs_buffer, to_permute);
49 std::copy(to_permute.begin(), to_permute.end(), input_state.data());
53 const std::vector<fr> results(results_array.begin(), results_array.end());
59 std::vector<fr> to_hash;
60 read(inputs_buffer, to_hash);
61 const size_t numHashes = to_hash.size();
62 fr result = to_hash[0];
64 while (count < numHashes) {
68 write(output, result);
Applies the Poseidon2 permutation function from https://eprint.iacr.org/2023/323 ....
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.
WASM_EXPORT void poseidon2_hashes(fr::vec_in_buf inputs_buffer, fr::out_buf output)
WASM_EXPORT void poseidon2_hash_accumulate(fr::vec_in_buf inputs_buffer, fr::out_buf output)
WASM_EXPORT void poseidon2_hash(fr::vec_in_buf inputs_buffer, fr::out_buf output)
WASM_EXPORT void poseidon2_permutation(fr::vec_in_buf inputs_buffer, fr::vec_out_buf output)
Entry point for Barretenberg command-line interface.
void read(B &it, field2< base_field, Params > &value)
void write(B &buf, field2< base_field, Params > const &value)
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
uint8_t * to_heap_buffer(T const &value)
static void serialize_to_buffer(const field &value, uint8_t *buffer)
const uint8_t * vec_in_buf