Browse Source

chore: update to winter 0.4.1

al-gkr-basic-workflow
Al-Kindi-0 2 years ago
parent
commit
7cb9f7bfdf
7 changed files with 22 additions and 23 deletions
  1. +3
    -2
      crypto/Cargo.toml
  2. +3
    -4
      crypto/src/hash/rpo/digest.rs
  3. +5
    -5
      crypto/src/hash/rpo/mds_freq.rs
  4. +1
    -1
      crypto/src/hash/rpo/mod.rs
  5. +8
    -6
      crypto/src/lib.rs
  6. +1
    -2
      crypto/src/merkle/merkle_path_set.rs
  7. +1
    -3
      crypto/src/merkle/merkle_tree.rs

+ 3
- 2
crypto/Cargo.toml

@ -11,8 +11,9 @@ keywords = ["miden", "crypto", "hash", "merkle"]
edition = "2021" edition = "2021"
[dependencies] [dependencies]
winterfell = { git = "https://github.com/novifinancial/winterfell"}
winter_utils = { version = "0.4", package = "winter-utils" }
winter_utils = { version = "0.4.1", package = "winter-utils" }
winter_math = { version = "0.4.1", package = "winter-math" }
winter_crypto = { version = "0.4.1", package = "winter-crypto" }
[dev-dependencies] [dev-dependencies]
proptest = "1.0.0" proptest = "1.0.0"

+ 3
- 4
crypto/src/hash/rpo/digest.rs

@ -1,7 +1,7 @@
use super::DIGEST_SIZE; use super::DIGEST_SIZE;
use crate::{ByteReader, ByteWriter, Deserializable, DeserializationError, Serializable};
use crate::{Digest, Felt, StarkField, ZERO}; use crate::{Digest, Felt, StarkField, ZERO};
use core::ops::Deref; use core::ops::Deref;
use winterfell::{ByteReader, ByteWriter, Deserializable, DeserializationError, Serializable};
// DIGEST TRAIT IMPLEMENTATIONS // DIGEST TRAIT IMPLEMENTATIONS
// ================================================================================================ // ================================================================================================
@ -22,7 +22,7 @@ impl RpoDigest256 {
where where
I: Iterator<Item = &'a Self>, I: Iterator<Item = &'a Self>,
{ {
digests.map(|d| d.0.iter()).flatten()
digests.flat_map(|d| d.0.iter())
} }
} }
@ -128,9 +128,8 @@ impl<'a> Iterator for RpoDigest256Iter<'a> {
mod tests { mod tests {
use super::RpoDigest256; use super::RpoDigest256;
use crate::Felt;
use crate::{Deserializable, Felt, Serializable, SliceReader};
use rand_utils::rand_value; use rand_utils::rand_value;
use winterfell::{Deserializable, Serializable, SliceReader};
#[test] #[test]
fn digest_serialization() { fn digest_serialization() {

+ 5
- 5
crypto/src/hash/rpo/mds_freq.rs

@ -158,14 +158,14 @@ const fn block3(x: [i64; 3], y: [i64; 3]) -> [i64; 3] {
mod tests { mod tests {
use super::super::Rpo256; use super::super::Rpo256;
use crate::hash::rpo::MDS; use crate::hash::rpo::MDS;
use crate::{Felt, FieldElement};
use proptest::prelude::*; use proptest::prelude::*;
use winterfell::math::{fields::f64::BaseElement, FieldElement};
const STATE_WIDTH: usize = 12; const STATE_WIDTH: usize = 12;
#[inline(always)] #[inline(always)]
fn apply_mds_naive(state: &mut [BaseElement; STATE_WIDTH]) {
let mut result = [BaseElement::ZERO; STATE_WIDTH];
fn apply_mds_naive(state: &mut [Felt; STATE_WIDTH]) {
let mut result = [Felt::ZERO; STATE_WIDTH];
result.iter_mut().zip(MDS).for_each(|(r, mds_row)| { result.iter_mut().zip(MDS).for_each(|(r, mds_row)| {
state.iter().zip(mds_row).for_each(|(&s, m)| { state.iter().zip(mds_row).for_each(|(&s, m)| {
*r += m * s; *r += m * s;
@ -178,11 +178,11 @@ mod tests {
#[test] #[test]
fn mds_freq_proptest(a in any::<[u64;STATE_WIDTH]>()) { fn mds_freq_proptest(a in any::<[u64;STATE_WIDTH]>()) {
let mut v1 = [BaseElement::ZERO;STATE_WIDTH];
let mut v1 = [Felt::ZERO;STATE_WIDTH];
let mut v2; let mut v2;
for i in 0..STATE_WIDTH { for i in 0..STATE_WIDTH {
v1[i] = BaseElement::new(a[i]);
v1[i] = Felt::new(a[i]);
} }
v2 = v1.clone(); v2 = v1.clone();

+ 1
- 1
crypto/src/hash/rpo/mod.rs

@ -153,7 +153,7 @@ impl HashFn for Rpo256 {
// initialize the state by copying the digest elements into the rate portion of the state // initialize the state by copying the digest elements into the rate portion of the state
// (8 total elements), and set the capacity elements to 0. // (8 total elements), and set the capacity elements to 0.
let mut state = [ZERO; STATE_WIDTH]; let mut state = [ZERO; STATE_WIDTH];
let it = Self::Digest::digests_as_elements(values.into_iter());
let it = Self::Digest::digests_as_elements(values.iter());
for (i, v) in it.enumerate() { for (i, v) in it.enumerate() {
state[RATE_RANGE.start + i] = *v; state[RATE_RANGE.start + i] = *v;
} }

+ 8
- 6
crypto/src/lib.rs

@ -1,10 +1,12 @@
pub use winter_utils::{
ByteReader, ByteWriter, Deserializable, DeserializationError, Serializable,
};
pub use winterfell::crypto::{Digest, ElementHasher, Hasher as HashFn};
pub use winterfell::math::{
pub use winter_crypto::{Digest, ElementHasher, Hasher as HashFn};
pub use winter_math::{
fields::{f64::BaseElement as Felt, QuadExtension}, fields::{f64::BaseElement as Felt, QuadExtension},
ExtensionOf, FieldElement, StarkField,
log2, ExtensionOf, FieldElement, StarkField,
};
pub use winter_utils::{
collections::{BTreeMap, Vec},
uninit_vector, ByteReader, ByteWriter, Deserializable, DeserializationError, Serializable,
SliceReader,
}; };
pub mod hash; pub mod hash;

+ 1
- 2
crypto/src/merkle/merkle_path_set.rs

@ -1,6 +1,5 @@
use super::{MerkleError, Word}; use super::{MerkleError, Word};
use crate::{hash::merge, ZERO};
use winter_utils::collections::{BTreeMap, Vec};
use crate::{hash::merge, BTreeMap, Vec, ZERO};
// MERKLE PATH SET // MERKLE PATH SET
// ================================================================================================ // ================================================================================================

+ 1
- 3
crypto/src/merkle/merkle_tree.rs

@ -1,11 +1,9 @@
use super::MerkleError; use super::MerkleError;
use crate::{ use crate::{
hash::{merge, Digest}, hash::{merge, Digest},
Felt, FieldElement, Word,
log2, uninit_vector, Felt, FieldElement, Word,
}; };
use core::slice; use core::slice;
use winter_utils::uninit_vector;
use winterfell::math::log2;
// MERKLE TREE // MERKLE TREE
// ================================================================================================ // ================================================================================================

Loading…
Cancel
Save