From 7bb5f548e9d65cf42e1ec5c6a271fa207a8bf1e6 Mon Sep 17 00:00:00 2001 From: olegfomenko Date: Tue, 14 Jan 2025 03:04:39 +0200 Subject: [PATCH] fix implementing GrindingChallenger, CanSampleBits and CanObserve for HashChallenger --- challenger/src/grinding_challenger.rs | 6 +++--- challenger/src/hash_challenger.rs | 22 +++++++++------------- 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/challenger/src/grinding_challenger.rs b/challenger/src/grinding_challenger.rs index fdf1b3931..02e2029b0 100644 --- a/challenger/src/grinding_challenger.rs +++ b/challenger/src/grinding_challenger.rs @@ -1,7 +1,7 @@ use core::cmp::min; use p3_field::{Field, PrimeField, PrimeField32, PrimeField64}; use p3_maybe_rayon::prelude::*; -use p3_symmetric::CryptographicPermutation; +use p3_symmetric::{CryptographicHasher, CryptographicPermutation}; use tracing::instrument; use crate::{CanObserve, CanSampleBits, DuplexChallenger, HashChallenger, MultiField32Challenger}; @@ -63,8 +63,8 @@ where impl GrindingChallenger for HashChallenger where - F: Field, - P: CryptographicPermutation<[F; WIDTH]>, + F: PrimeField, + P: CryptographicHasher + Sync, { type Witness = F; diff --git a/challenger/src/hash_challenger.rs b/challenger/src/hash_challenger.rs index f681fd14e..a96f40882 100644 --- a/challenger/src/hash_challenger.rs +++ b/challenger/src/hash_challenger.rs @@ -1,7 +1,7 @@ use alloc::vec; use alloc::vec::Vec; -use p3_field::Field; -use p3_symmetric::{CryptographicHasher, CryptographicPermutation}; +use p3_field::{Field, PrimeField}; +use p3_symmetric::CryptographicHasher; use crate::{CanObserve, CanSample, CanSampleBits, FieldChallenger}; @@ -83,23 +83,19 @@ where impl CanSampleBits for HashChallenger where - F: Field, - P: CryptographicPermutation<[F; OUT_LEN]>, + F: PrimeField, + P: CryptographicHasher, { fn sample_bits(&mut self, bits: usize) -> usize { let rand_f: F = self.sample(); - let rand_usize = rand_f.as_canonical_u32() as usize; + let rand_usize = *rand_f + .as_canonical_biguint() + .to_u64_digits() + .first() + .unwrap() as usize; rand_usize & ((1 << bits) - 1) } } -impl CanObserve for HashChallenger -where - P: CryptographicPermutation<[T; OUT_LEN]>, -{ - fn observe(&mut self, v: T) { - self.observe(v); - } -} impl CanObserve> for HashChallenger where