diff --git a/plonky2/src/iop/challenger.rs b/plonky2/src/iop/challenger.rs index 499538a9..6a39b351 100644 --- a/plonky2/src/iop/challenger.rs +++ b/plonky2/src/iop/challenger.rs @@ -35,10 +35,7 @@ impl> Challenger where [(); HC::WIDTH]:, { - pub fn new() -> Challenger - where - [(); HC::WIDTH]:, - { + pub fn new() -> Challenger { Challenger { sponge_state: [F::ZERO; HC::WIDTH], input_buffer: Vec::with_capacity(HC::RATE), @@ -47,10 +44,7 @@ where } } - pub fn observe_element(&mut self, element: F) - where - [(); HC::WIDTH]:, - { + pub fn observe_element(&mut self, element: F) { // Any buffered outputs are now invalid, since they wouldn't reflect this input. self.output_buffer.clear(); @@ -64,15 +58,11 @@ where pub fn observe_extension_element(&mut self, element: &F::Extension) where F: RichField + Extendable, - [(); HC::WIDTH]:, { self.observe_elements(&element.to_basefield_array()); } - pub fn observe_elements(&mut self, elements: &[F]) - where - [(); HC::WIDTH]:, - { + pub fn observe_elements(&mut self, elements: &[F]) { for &element in elements { self.observe_element(element); } @@ -88,26 +78,20 @@ where } } - pub fn observe_hash>(&mut self, hash: OH::Hash) - where - [(); OHC::WIDTH]:, - { + pub fn observe_hash>(&mut self, hash: OH::Hash) { self.observe_elements(&hash.to_vec()) } - pub fn observe_cap>(&mut self, cap: &MerkleCap) - where - [(); OHC::WIDTH]:, - { + pub fn observe_cap>( + &mut self, + cap: &MerkleCap, + ) { for &hash in &cap.0 { self.observe_hash::(hash); } } - pub fn get_challenge(&mut self) -> F - where - [(); HC::WIDTH]:, - { + pub fn get_challenge(&mut self) -> F { // If we have buffered inputs, we must perform a duplexing so that the challenge will // reflect them. Or if we've run out of outputs, we must perform a duplexing to get more. if !self.input_buffer.is_empty() || self.output_buffer.is_empty() { @@ -119,17 +103,11 @@ where .expect("Output buffer should be non-empty") } - pub fn get_n_challenges(&mut self, n: usize) -> Vec - where - [(); HC::WIDTH]:, - { + pub fn get_n_challenges(&mut self, n: usize) -> Vec { (0..n).map(|_| self.get_challenge()).collect() } - pub fn get_hash(&mut self) -> HashOut - where - [(); HC::WIDTH]:, - { + pub fn get_hash(&mut self) -> HashOut { HashOut { elements: [ self.get_challenge(), @@ -143,7 +121,6 @@ where pub fn get_extension_challenge(&mut self) -> F::Extension where F: RichField + Extendable, - [(); HC::WIDTH]:, { let mut arr = [F::ZERO; D]; arr.copy_from_slice(&self.get_n_challenges(D)); @@ -153,7 +130,6 @@ where pub fn get_n_extension_challenges(&mut self, n: usize) -> Vec where F: RichField + Extendable, - [(); HC::WIDTH]:, { (0..n) .map(|_| self.get_extension_challenge::()) @@ -162,10 +138,7 @@ where /// Absorb any buffered inputs. After calling this, the input buffer will be empty, and the /// output buffer will be full. - fn duplexing(&mut self) - where - [(); HC::WIDTH]:, - { + fn duplexing(&mut self) { assert!(self.input_buffer.len() <= HC::RATE); // Overwrite the first r elements with the inputs. This differs from a standard sponge, @@ -196,10 +169,7 @@ impl> Default for Challe where [(); HC::WIDTH]:, { - fn default() -> Self - where - [(); HC::WIDTH]:, - { + fn default() -> Self { Self::new() } } @@ -226,10 +196,7 @@ impl, HC: HashConfig, H: AlgebraicHasher, co where [(); HC::WIDTH]:, { - pub fn new(builder: &mut CircuitBuilder) -> Self - where - [(); HC::WIDTH]:, - { + pub fn new(builder: &mut CircuitBuilder) -> Self { let zero = builder.zero(); Self { sponge_state: [zero; HC::WIDTH], @@ -248,61 +215,40 @@ where } } - pub(crate) fn observe_element(&mut self, target: Target) - where - [(); HC::WIDTH]:, - { + pub(crate) fn observe_element(&mut self, target: Target) { // Any buffered outputs are now invalid, since they wouldn't reflect this input. self.output_buffer.clear(); self.input_buffer.push(target); } - pub fn observe_elements(&mut self, targets: &[Target]) - where - [(); HC::WIDTH]:, - { + pub fn observe_elements(&mut self, targets: &[Target]) { for &target in targets { self.observe_element(target); } } - pub fn observe_hash(&mut self, hash: &HashOutTarget) - where - [(); HC::WIDTH]:, - { + pub fn observe_hash(&mut self, hash: &HashOutTarget) { self.observe_elements(&hash.elements) } - pub fn observe_cap(&mut self, cap: &MerkleCapTarget) - where - [(); HC::WIDTH]:, - { + pub fn observe_cap(&mut self, cap: &MerkleCapTarget) { for hash in &cap.0 { self.observe_hash(hash) } } - pub fn observe_extension_element(&mut self, element: ExtensionTarget) - where - [(); HC::WIDTH]:, - { + pub fn observe_extension_element(&mut self, element: ExtensionTarget) { self.observe_elements(&element.0); } - pub fn observe_extension_elements(&mut self, elements: &[ExtensionTarget]) - where - [(); HC::WIDTH]:, - { + pub fn observe_extension_elements(&mut self, elements: &[ExtensionTarget]) { for &element in elements { self.observe_extension_element(element); } } - pub fn get_challenge(&mut self, builder: &mut CircuitBuilder) -> Target - where - [(); HC::WIDTH]:, - { + pub fn get_challenge(&mut self, builder: &mut CircuitBuilder) -> Target { self.absorb_buffered_inputs(builder); if self.output_buffer.is_empty() { @@ -316,17 +262,15 @@ where .expect("Output buffer should be non-empty") } - pub fn get_n_challenges(&mut self, builder: &mut CircuitBuilder, n: usize) -> Vec - where - [(); HC::WIDTH]:, - { + pub fn get_n_challenges( + &mut self, + builder: &mut CircuitBuilder, + n: usize, + ) -> Vec { (0..n).map(|_| self.get_challenge(builder)).collect() } - pub fn get_hash(&mut self, builder: &mut CircuitBuilder) -> HashOutTarget - where - [(); HC::WIDTH]:, - { + pub fn get_hash(&mut self, builder: &mut CircuitBuilder) -> HashOutTarget { HashOutTarget { elements: [ self.get_challenge(builder), @@ -340,19 +284,13 @@ where pub fn get_extension_challenge( &mut self, builder: &mut CircuitBuilder, - ) -> ExtensionTarget - where - [(); HC::WIDTH]:, - { + ) -> ExtensionTarget { self.get_n_challenges(builder, D).try_into().unwrap() } /// Absorb any buffered inputs. After calling this, the input buffer will be empty, and the /// output buffer will be full. - fn absorb_buffered_inputs(&mut self, builder: &mut CircuitBuilder) - where - [(); HC::WIDTH]:, - { + fn absorb_buffered_inputs(&mut self, builder: &mut CircuitBuilder) { if self.input_buffer.is_empty() { return; }