Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
poseidon2.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <array>
4#include <stdexcept>
5#include <string>
6#include <vector>
7
10
11namespace bb::avm2::simulation {
12
13// Forward declarations
14class MemoryInterface;
15
16struct Poseidon2Exception : public std::runtime_error {
17 Poseidon2Exception(const std::string& message)
18 : std::runtime_error("Poseidon2Exception: " + message)
19 {}
20};
21
23 public:
24 virtual ~Poseidon2Interface() = default;
25 virtual FF hash(const std::vector<FF>& input) = 0;
26 virtual std::array<FF, 4> permutation(const std::array<FF, 4>& input) = 0;
27 // Overload for opcode execution that takes memory addresses
29};
30
31} // namespace bb::avm2::simulation
virtual void permutation(MemoryInterface &memory, MemoryAddress src_address, MemoryAddress dst_address)=0
virtual FF hash(const std::vector< FF > &input)=0
virtual std::array< FF, 4 > permutation(const std::array< FF, 4 > &input)=0
AVM range check gadget for witness generation.
AvmFlavorSettings::FF FF
Definition field.hpp:10
uint32_t MemoryAddress
STL namespace.
Poseidon2Exception(const std::string &message)
Definition poseidon2.hpp:17