mina_poseidon/
constants.rs1pub 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}