Module 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§

PoseidonParams
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.

Functions§

apply_permutation
Apply the whole permutation of Poseidon to the state. The environment has to be initialized with the input values.
poseidon_circuit
Populates and checks one poseidon invocation.