Module ivc::poseidon_55_0_7_3_7::interpreter
source · Expand description
Implement an interpreter for a specific instance of the Poseidon inner permutation.
The Poseidon construction is defined in the paper “Poseidon: A New Hash
Function”.
The Poseidon instance works on a state of size STATE_SIZE
and is designed
to work only with full rounds. As a reminder, the Poseidon permutation is a
mapping from F^STATE_SIZE
to F^STATE_SIZE
.
The user is responsible to provide the correct number of full rounds for the
given field and the state.
Also, it is hard-coded that the substitution is 7
. The user must verify
that 7
is coprime with p - 1
where p
is the order the field.
The constants and matrix can be generated the file
poseidon/src/pasta/params.sage
Traits
- Represents the parameters of the instance of the Poseidon permutation. Constants are the round constants for each round, and MDS is the matrix used by the linear layer. The type is parametrized by the field, the state size, and the number of full rounds. Note that the parameters are only for instances using full rounds.
Functions
- Apply the whole permutation of Poseidon to the state. The environment has to be initialized with the input values.
- Populates and checks one poseidon invocation.