chore: update to winter 0.4.1
This commit is contained in:
parent
84f7a73666
commit
7cb9f7bfdf
7 changed files with 22 additions and 23 deletions
|
@ -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.1", package = "winter-utils" }
|
||||||
winter_utils = { version = "0.4", 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"
|
||||||
|
|
|
@ -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() {
|
||||||
|
|
|
@ -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]) {
|
fn apply_mds_naive(state: &mut [Felt; STATE_WIDTH]) {
|
||||||
let mut result = [BaseElement::ZERO; 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();
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
pub use winter_utils::{
|
pub use winter_crypto::{Digest, ElementHasher, Hasher as HashFn};
|
||||||
ByteReader, ByteWriter, Deserializable, DeserializationError, Serializable,
|
pub use winter_math::{
|
||||||
};
|
|
||||||
pub use winterfell::crypto::{Digest, ElementHasher, Hasher as HashFn};
|
|
||||||
pub use winterfell::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,6 +1,5 @@
|
||||||
use super::{MerkleError, Word};
|
use super::{MerkleError, Word};
|
||||||
use crate::{hash::merge, ZERO};
|
use crate::{hash::merge, BTreeMap, Vec, ZERO};
|
||||||
use winter_utils::collections::{BTreeMap, Vec};
|
|
||||||
|
|
||||||
// MERKLE PATH SET
|
// MERKLE PATH SET
|
||||||
// ================================================================================================
|
// ================================================================================================
|
||||||
|
|
|
@ -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…
Add table
Reference in a new issue