PoseidonParams

Trait PoseidonParams 

Source
pub trait PoseidonParams<F: PrimeField> {
    const T: usize;
    const D: u8;
    const CAPACITY: usize;
    const ROUNDS_F: usize;
    const ROUNDS_P: usize;
    const MAT_INTERNAL_DIAG_M_1: &'static [F];
    const ROUND_CONSTANTS: &'static [&'static [F]];
}
Expand description

Poseidon hash parameters.

Required Associated Constants§

Source

const T: usize

State size.

Source

const D: u8

Sbox degree.

Source

const CAPACITY: usize

Capacity of the sponge construction. Determines the number of elements not affected directly by input or not reflected in the output of the sponge hash function.

Source

const ROUNDS_F: usize

Number of full rounds.

Source

const ROUNDS_P: usize

Number of partial rounds.

Source

const MAT_INTERNAL_DIAG_M_1: &'static [F]

MDS (Maximum Distance Separable) matrix used in the Poseidon permutation.

Source

const ROUND_CONSTANTS: &'static [&'static [F]]

The round constants used in the full and partial rounds of the Poseidon permutation.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl PoseidonParams<Fp<BLS12Param, { usize::div_ceil( $bits, $crate::arithmetic::limb::Limb::BITS as usize, ) }>> for BLS2Params

Source§

const T: usize = 2usize

Source§

const D: u8 = 5u8

Source§

const CAPACITY: usize = 1usize

Source§

const ROUNDS_F: usize = 8usize

Source§

const ROUNDS_P: usize = 56usize

Source§

const MAT_INTERNAL_DIAG_M_1: &'static [FpBLS12]

Source§

const ROUND_CONSTANTS: &'static [&'static [FpBLS12]]

Source§

impl PoseidonParams<Fp<BLS12Param, { usize::div_ceil( $bits, $crate::arithmetic::limb::Limb::BITS as usize, ) }>> for BLS3Params

Source§

const T: usize = 3usize

Source§

const D: u8 = 5u8

Source§

const CAPACITY: usize = 1usize

Source§

const ROUNDS_F: usize = 8usize

Source§

const ROUNDS_P: usize = 56usize

Source§

const MAT_INTERNAL_DIAG_M_1: &'static [FpBLS12]

Source§

const ROUND_CONSTANTS: &'static [&'static [FpBLS12]]

Source§

impl PoseidonParams<Fp<BLS12Param, { usize::div_ceil( $bits, $crate::arithmetic::limb::Limb::BITS as usize, ) }>> for BLS4Params

Source§

const T: usize = 4usize

Source§

const D: u8 = 5u8

Source§

const CAPACITY: usize = 1usize

Source§

const ROUNDS_F: usize = 8usize

Source§

const ROUNDS_P: usize = 56usize

Source§

const MAT_INTERNAL_DIAG_M_1: &'static [FpBLS12]

Source§

const ROUND_CONSTANTS: &'static [&'static [FpBLS12]]

Source§

impl PoseidonParams<Fp<BN256Param, { usize::div_ceil( $bits, $crate::arithmetic::limb::Limb::BITS as usize, ) }>> for BN256Params

Source§

const T: usize = 3usize

Source§

const D: u8 = 5u8

Source§

const CAPACITY: usize = 1usize

Source§

const ROUNDS_F: usize = 8usize

Source§

const ROUNDS_P: usize = 56usize

Source§

const MAT_INTERNAL_DIAG_M_1: &'static [FpBN256]

Source§

const ROUND_CONSTANTS: &'static [&'static [FpBN256]]

Source§

impl PoseidonParams<Fp<BabyBearParam, { usize::div_ceil( $bits, $crate::arithmetic::limb::Limb::BITS as usize, ) }>> for BabyBear24Params

Source§

const T: usize = 24usize

Source§

const D: u8 = 7u8

Source§

const CAPACITY: usize = 4usize

Source§

const ROUNDS_F: usize = 8usize

Source§

const ROUNDS_P: usize = 21usize

Source§

const MAT_INTERNAL_DIAG_M_1: &'static [FpBabyBear]

Source§

const ROUND_CONSTANTS: &'static [&'static [FpBabyBear]]

Source§

impl PoseidonParams<Fp<GoldiLocksParam, { usize::div_ceil( $bits, $crate::arithmetic::limb::Limb::BITS as usize, ) }>> for Goldilocks12Params

Source§

const T: usize = 12usize

Source§

const D: u8 = 7u8

Source§

const CAPACITY: usize = 4usize

Source§

const ROUNDS_F: usize = 8usize

Source§

const ROUNDS_P: usize = 22usize

Source§

const MAT_INTERNAL_DIAG_M_1: &'static [FpGoldiLocks]

Source§

const ROUND_CONSTANTS: &'static [&'static [FpGoldiLocks]]

Source§

impl PoseidonParams<Fp<PallasParam, { usize::div_ceil( $bits, $crate::arithmetic::limb::Limb::BITS as usize, ) }>> for PallasParams

Source§

const T: usize = 3usize

Source§

const D: u8 = 5u8

Source§

const CAPACITY: usize = 1usize

Source§

const ROUNDS_F: usize = 8usize

Source§

const ROUNDS_P: usize = 56usize

Source§

const MAT_INTERNAL_DIAG_M_1: &'static [FpPallas]

Source§

const ROUND_CONSTANTS: &'static [&'static [FpPallas]]

Source§

impl PoseidonParams<Fp<VestaParam, { usize::div_ceil( $bits, $crate::arithmetic::limb::Limb::BITS as usize, ) }>> for VestaParams

Source§

const T: usize = 3usize

Source§

const D: u8 = 5u8

Source§

const CAPACITY: usize = 1usize

Source§

const ROUNDS_F: usize = 8usize

Source§

const ROUNDS_P: usize = 56usize

Source§

const MAT_INTERNAL_DIAG_M_1: &'static [FpVesta]

Source§

const ROUND_CONSTANTS: &'static [&'static [FpVesta]]