Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
bb::stdlib::FieldSponge< Builder > Class Template Reference

Implements the circuit form of a cryptographic sponge over prime fields. More...

#include <sponge.hpp>

Static Public Member Functions

static field_t hash_internal (std::span< const field_t > input)
 Use the sponge to hash an input vector.
 

Private Types

using Permutation = Poseidon2Permutation< Builder >
 
using field_t = stdlib::field_t< Builder >
 

Private Member Functions

 FieldSponge (Builder *builder_, size_t in_len)
 
void perform_duplex ()
 
void absorb (const field_t &input)
 
field_t squeeze ()
 

Private Attributes

std::array< field_t, tstate {}
 
std::array< field_t, ratecache {}
 
size_t cache_size = 0
 
Builderbuilder
 

Static Private Attributes

static constexpr size_t t = crypto::Poseidon2Bn254ScalarFieldParams::t
 
static constexpr size_t capacity = 1
 
static constexpr size_t rate = t - capacity
 

Detailed Description

template<typename Builder>
class bb::stdlib::FieldSponge< Builder >

Implements the circuit form of a cryptographic sponge over prime fields.

Template Parameters
BuilderA circuit builder class. Can be Ultra- or MegaCircuitBuilder.

Definition at line 24 of file sponge.hpp.

Member Typedef Documentation

◆ field_t

template<typename Builder >
using bb::stdlib::FieldSponge< Builder >::field_t = stdlib::field_t<Builder>
private

Definition at line 31 of file sponge.hpp.

◆ Permutation

Definition at line 26 of file sponge.hpp.

Constructor & Destructor Documentation

◆ FieldSponge()

template<typename Builder >
bb::stdlib::FieldSponge< Builder >::FieldSponge ( Builder builder_,
size_t  in_len 
)
inlineprivate

Definition at line 41 of file sponge.hpp.

Member Function Documentation

◆ absorb()

template<typename Builder >
void bb::stdlib::FieldSponge< Builder >::absorb ( const field_t input)
inlineprivate

Definition at line 64 of file sponge.hpp.

◆ hash_internal()

template<typename Builder >
static field_t bb::stdlib::FieldSponge< Builder >::hash_internal ( std::span< const field_t input)
inlinestatic

Use the sponge to hash an input vector.

Parameters
inputCircuit witnesses (a_0, ..., a_{N-1})
Returns
Hash of the input, a single witness field element.

Definition at line 93 of file sponge.hpp.

◆ perform_duplex()

template<typename Builder >
void bb::stdlib::FieldSponge< Builder >::perform_duplex ( )
inlineprivate

Definition at line 50 of file sponge.hpp.

◆ squeeze()

template<typename Builder >
field_t bb::stdlib::FieldSponge< Builder >::squeeze ( )
inlineprivate

Definition at line 78 of file sponge.hpp.

Member Data Documentation

◆ builder

template<typename Builder >
Builder* bb::stdlib::FieldSponge< Builder >::builder
private

Definition at line 39 of file sponge.hpp.

◆ cache

template<typename Builder >
std::array<field_t, rate> bb::stdlib::FieldSponge< Builder >::cache {}
private

Definition at line 37 of file sponge.hpp.

◆ cache_size

template<typename Builder >
size_t bb::stdlib::FieldSponge< Builder >::cache_size = 0
private

Definition at line 38 of file sponge.hpp.

◆ capacity

template<typename Builder >
constexpr size_t bb::stdlib::FieldSponge< Builder >::capacity = 1
staticconstexprprivate

Definition at line 28 of file sponge.hpp.

◆ rate

template<typename Builder >
constexpr size_t bb::stdlib::FieldSponge< Builder >::rate = t - capacity
staticconstexprprivate

Definition at line 29 of file sponge.hpp.

◆ state

template<typename Builder >
std::array<field_t, t> bb::stdlib::FieldSponge< Builder >::state {}
private

Definition at line 34 of file sponge.hpp.

◆ t

template<typename Builder >
constexpr size_t bb::stdlib::FieldSponge< Builder >::t = crypto::Poseidon2Bn254ScalarFieldParams::t
staticconstexprprivate

Definition at line 27 of file sponge.hpp.


The documentation for this class was generated from the following file: