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.