From 1d0fa16b28f04780f340ccfea0c96d40a108d8c3 Mon Sep 17 00:00:00 2001 From: radik878 Date: Mon, 1 Sep 2025 12:05:19 +0300 Subject: [PATCH 1/2] chore(transcript): make sample_u64 advancing via sample bytes --- crates/crypto/src/fiat_shamir/default_transcript.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/crates/crypto/src/fiat_shamir/default_transcript.rs b/crates/crypto/src/fiat_shamir/default_transcript.rs index 766c84447..63c09c710 100644 --- a/crates/crypto/src/fiat_shamir/default_transcript.rs +++ b/crates/crypto/src/fiat_shamir/default_transcript.rs @@ -68,7 +68,9 @@ where } fn sample_u64(&mut self, upper_bound: u64) -> u64 { - u64::from_be_bytes(self.state()[..8].try_into().unwrap()) % upper_bound + let mut bytes = [0u8; 8]; + bytes.copy_from_slice(&self.sample()[..8]); + u64::from_be_bytes(bytes) % upper_bound } } From 823c83d8f3eef5bff2ba09c50a7b27f04c21703b Mon Sep 17 00:00:00 2001 From: radik878 Date: Mon, 1 Sep 2025 12:05:55 +0300 Subject: [PATCH 2/2] chore(transcript): make sample_u64 advancing via sample bytes --- crates/provers/winterfell_adapter/src/adapter/mod.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/crates/provers/winterfell_adapter/src/adapter/mod.rs b/crates/provers/winterfell_adapter/src/adapter/mod.rs index 032280846..72b84b354 100644 --- a/crates/provers/winterfell_adapter/src/adapter/mod.rs +++ b/crates/provers/winterfell_adapter/src/adapter/mod.rs @@ -46,7 +46,10 @@ impl IsStarkTranscript for FeltTranscript { } fn sample_u64(&mut self, upper_bound: u64) -> u64 { - u64::from_be_bytes(self.state()[..8].try_into().unwrap()) % upper_bound + let bytes = self.sample(8); + let mut arr = [0u8; 8]; + arr.copy_from_slice(&bytes); + u64::from_be_bytes(arr) % upper_bound } } @@ -82,6 +85,9 @@ impl IsStarkTranscript for QuadFeltTranscript { } fn sample_u64(&mut self, upper_bound: u64) -> u64 { - u64::from_be_bytes(self.state()[..8].try_into().unwrap()) % upper_bound + let bytes = self.felt_transcript.sample(8); + let mut arr = [0u8; 8]; + arr.copy_from_slice(&bytes); + u64::from_be_bytes(arr) % upper_bound } }