mina_poseidon/
constants.rs

1pub trait SpongeConstants {
2    const SPONGE_CAPACITY: usize = 1;
3    const SPONGE_WIDTH: usize = 3;
4    const SPONGE_RATE: usize = 2;
5    const PERM_ROUNDS_FULL: usize;
6    const PERM_ROUNDS_PARTIAL: usize;
7    const PERM_HALF_ROUNDS_FULL: usize;
8    const PERM_SBOX: u32;
9    const PERM_FULL_MDS: bool;
10    const PERM_INITIAL_ARK: bool;
11}
12
13#[derive(Clone)]
14pub struct PlonkSpongeConstantsLegacy {}
15
16impl SpongeConstants for PlonkSpongeConstantsLegacy {
17    const SPONGE_CAPACITY: usize = 1;
18    const SPONGE_WIDTH: usize = 3;
19    const SPONGE_RATE: usize = 2;
20    const PERM_ROUNDS_FULL: usize = 63;
21    const PERM_ROUNDS_PARTIAL: usize = 0;
22    const PERM_HALF_ROUNDS_FULL: usize = 0;
23    const PERM_SBOX: u32 = 5;
24    const PERM_FULL_MDS: bool = true;
25    const PERM_INITIAL_ARK: bool = true;
26}
27
28#[derive(Clone)]
29pub struct PlonkSpongeConstantsKimchi {}
30
31impl SpongeConstants for PlonkSpongeConstantsKimchi {
32    const SPONGE_CAPACITY: usize = 1;
33    const SPONGE_WIDTH: usize = 3;
34    const SPONGE_RATE: usize = 2;
35    const PERM_ROUNDS_FULL: usize = 55;
36    const PERM_ROUNDS_PARTIAL: usize = 0;
37    const PERM_HALF_ROUNDS_FULL: usize = 0;
38    const PERM_SBOX: u32 = 7;
39    const PERM_FULL_MDS: bool = true;
40    const PERM_INITIAL_ARK: bool = false;
41}