From 1f852544cf37cc4190057487cfcf175f2ac5f00e Mon Sep 17 00:00:00 2001 From: therealyingtong Date: Fri, 13 Aug 2021 14:47:02 +0800 Subject: [PATCH] poseidon::Domain: Remove Spec trait bound. The methods in the Domain trait are not generic over Spec. --- src/circuit/gadget/poseidon.rs | 14 +++++++------- src/circuit/gadget/poseidon/pow5t3.rs | 4 ++-- src/primitives/poseidon.rs | 14 ++++++-------- 3 files changed, 15 insertions(+), 17 deletions(-) diff --git a/src/circuit/gadget/poseidon.rs b/src/circuit/gadget/poseidon.rs index 0c77f2b1..8e6cd7c0 100644 --- a/src/circuit/gadget/poseidon.rs +++ b/src/circuit/gadget/poseidon.rs @@ -43,14 +43,14 @@ pub trait PoseidonDuplexInstructions< fn initial_state( &self, layouter: &mut impl Layouter, - domain: &impl Domain, + domain: &impl Domain, ) -> Result, Error>; /// Pads the given input (according to the specified domain) and adds it to the state. fn pad_and_add( &self, layouter: &mut impl Layouter, - domain: &impl Domain, + domain: &impl Domain, initial_state: &State, input: &SpongeState, ) -> Result, Error>; @@ -91,7 +91,7 @@ fn poseidon_duplex< F: FieldExt, PoseidonChip: PoseidonDuplexInstructions, S: Spec, - D: Domain, + D: Domain, const T: usize, const RATE: usize, >( @@ -111,7 +111,7 @@ pub struct Duplex< F: FieldExt, PoseidonChip: PoseidonDuplexInstructions, S: Spec, - D: Domain, + D: Domain, const T: usize, const RATE: usize, > { @@ -125,7 +125,7 @@ impl< F: FieldExt, PoseidonChip: PoseidonDuplexInstructions, S: Spec, - D: Domain, + D: Domain, const T: usize, const RATE: usize, > Duplex @@ -215,7 +215,7 @@ pub struct Hash< F: FieldExt, PoseidonChip: PoseidonDuplexInstructions, S: Spec, - D: Domain, + D: Domain, const T: usize, const RATE: usize, > { @@ -226,7 +226,7 @@ impl< F: FieldExt, PoseidonChip: PoseidonDuplexInstructions, S: Spec, - D: Domain, + D: Domain, const T: usize, const RATE: usize, > Hash diff --git a/src/circuit/gadget/poseidon/pow5t3.rs b/src/circuit/gadget/poseidon/pow5t3.rs index 833adfd0..ec0a9cc1 100644 --- a/src/circuit/gadget/poseidon/pow5t3.rs +++ b/src/circuit/gadget/poseidon/pow5t3.rs @@ -273,7 +273,7 @@ impl> PoseidonDuplexInstructions, - domain: &impl Domain, + domain: &impl Domain, ) -> Result, Error> { let config = self.config(); layouter.assign_region( @@ -304,7 +304,7 @@ impl> PoseidonDuplexInstructions, - domain: &impl Domain, + domain: &impl Domain, initial_state: &State, input: &SpongeState, ) -> Result, Error> { diff --git a/src/primitives/poseidon.rs b/src/primitives/poseidon.rs index 911df2e8..8c2115f6 100644 --- a/src/primitives/poseidon.rs +++ b/src/primitives/poseidon.rs @@ -242,9 +242,7 @@ impl, const T: usize, const RATE: usize> Duplex } /// A domain in which a Poseidon hash function is being used. -pub trait Domain, const T: usize, const RATE: usize>: - Copy + fmt::Debug -{ +pub trait Domain: Copy + fmt::Debug { /// The initial capacity element, encoding this domain. fn initial_capacity_element(&self) -> F; @@ -262,8 +260,8 @@ pub trait Domain, const T: usize, const RATE: u #[derive(Clone, Copy, Debug)] pub struct ConstantLength; -impl, const T: usize, const RATE: usize, const L: usize> - Domain for ConstantLength +impl Domain + for ConstantLength { fn initial_capacity_element(&self) -> F { // Capacity value is $length \cdot 2^64 + (o-1)$ where o is the output length. @@ -300,7 +298,7 @@ impl, const T: usize, const RATE: usize, const pub struct Hash< F: FieldExt, S: Spec, - D: Domain, + D: Domain, const T: usize, const RATE: usize, > { @@ -311,7 +309,7 @@ pub struct Hash< impl< F: FieldExt, S: Spec, - D: Domain, + D: Domain, const T: usize, const RATE: usize, > fmt::Debug for Hash @@ -330,7 +328,7 @@ impl< impl< F: FieldExt, S: Spec, - D: Domain, + D: Domain, const T: usize, const RATE: usize, > Hash