mirror of
https://github.com/logos-storage/plonky2.git
synced 2026-01-07 16:23:12 +00:00
PR feedback
This commit is contained in:
parent
f7256a6efc
commit
736b65b0a7
@ -12,16 +12,6 @@ pub(crate) const SPONGE_RATE: usize = 8;
|
|||||||
pub(crate) const SPONGE_CAPACITY: usize = 4;
|
pub(crate) const SPONGE_CAPACITY: usize = 4;
|
||||||
pub const SPONGE_WIDTH: usize = SPONGE_RATE + SPONGE_CAPACITY;
|
pub const SPONGE_WIDTH: usize = SPONGE_RATE + SPONGE_CAPACITY;
|
||||||
|
|
||||||
/// Hash the slice if necessary to reduce its length to ~256 bits. If it already fits, this is a
|
|
||||||
/// no-op.
|
|
||||||
pub fn hash_or_noop<F: RichField, P: PlonkyPermutation<F>>(inputs: &[F]) -> HashOut<F> {
|
|
||||||
if inputs.len() <= 4 {
|
|
||||||
HashOut::from_partial(inputs)
|
|
||||||
} else {
|
|
||||||
hash_n_to_hash_no_pad::<F, P>(inputs)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<F: RichField + Extendable<D>, const D: usize> CircuitBuilder<F, D> {
|
impl<F: RichField + Extendable<D>, const D: usize> CircuitBuilder<F, D> {
|
||||||
pub fn hash_or_noop<H: AlgebraicHasher<F>>(&mut self, inputs: Vec<Target>) -> HashOutTarget {
|
pub fn hash_or_noop<H: AlgebraicHasher<F>>(&mut self, inputs: Vec<Target>) -> HashOutTarget {
|
||||||
let zero = self.zero();
|
let zero = self.zero();
|
||||||
|
|||||||
@ -3,6 +3,7 @@ use std::fmt::Debug;
|
|||||||
use plonky2_field::extension_field::quadratic::QuadraticExtension;
|
use plonky2_field::extension_field::quadratic::QuadraticExtension;
|
||||||
use plonky2_field::extension_field::{Extendable, FieldExtension};
|
use plonky2_field::extension_field::{Extendable, FieldExtension};
|
||||||
use plonky2_field::goldilocks_field::GoldilocksField;
|
use plonky2_field::goldilocks_field::GoldilocksField;
|
||||||
|
use plonky2_util::ceil_div_usize;
|
||||||
use serde::{de::DeserializeOwned, Serialize};
|
use serde::{de::DeserializeOwned, Serialize};
|
||||||
|
|
||||||
use crate::hash::hash_types::HashOut;
|
use crate::hash::hash_types::HashOut;
|
||||||
@ -49,8 +50,12 @@ pub trait Hasher<F: RichField>: Sized + Clone + Debug + Eq + PartialEq {
|
|||||||
/// Hash the slice if necessary to reduce its length to ~256 bits. If it already fits, this is a
|
/// Hash the slice if necessary to reduce its length to ~256 bits. If it already fits, this is a
|
||||||
/// no-op.
|
/// no-op.
|
||||||
fn hash_or_noop(inputs: &[F]) -> Self::Hash {
|
fn hash_or_noop(inputs: &[F]) -> Self::Hash {
|
||||||
if inputs.len() <= 4 {
|
if inputs.len() * ceil_div_usize(F::BITS, 8) <= Self::HASH_SIZE {
|
||||||
let inputs_bytes = HashOut::from_partial(inputs).to_bytes();
|
let mut inputs_bytes = inputs
|
||||||
|
.iter()
|
||||||
|
.flat_map(|x| x.to_canonical_u64().to_le_bytes())
|
||||||
|
.collect::<Vec<_>>();
|
||||||
|
inputs_bytes.resize(Self::HASH_SIZE, 0);
|
||||||
Self::Hash::from_bytes(&inputs_bytes)
|
Self::Hash::from_bytes(&inputs_bytes)
|
||||||
} else {
|
} else {
|
||||||
Self::hash_no_pad(inputs)
|
Self::hash_no_pad(inputs)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user