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.

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.