diff --git a/plonky2/src/gates/mod.rs b/plonky2/src/gates/mod.rs index c73eb17c..c1cb1e2a 100644 --- a/plonky2/src/gates/mod.rs +++ b/plonky2/src/gates/mod.rs @@ -39,6 +39,7 @@ pub mod multiplication_extension; pub mod noop; pub mod packed_util; pub mod poseidon; +pub mod poseidon2; pub mod poseidon_mds; pub mod public_input; pub mod random_access; diff --git a/plonky2/src/hash/poseidon2/gate.rs b/plonky2/src/gates/poseidon2.rs similarity index 99% rename from plonky2/src/hash/poseidon2/gate.rs rename to plonky2/src/gates/poseidon2.rs index ff53335e..2e6be679 100644 --- a/plonky2/src/hash/poseidon2/gate.rs +++ b/plonky2/src/gates/poseidon2.rs @@ -4,13 +4,13 @@ use core::marker::PhantomData; use anyhow::Result; -use super::config::*; -use super::hash::Poseidon2; use crate::field::extension::Extendable; use crate::field::types::Field; use crate::gates::gate::Gate; use crate::gates::util::StridedConstraintConsumer; use crate::hash::hash_types::RichField; +use crate::hash::poseidon2::config::*; +use crate::hash::poseidon2::hash::Poseidon2; use crate::iop::ext_target::ExtensionTarget; use crate::iop::generator::{GeneratedValues, SimpleGenerator, WitnessGeneratorRef}; use crate::iop::target::Target; diff --git a/plonky2/src/hash/hash_types.rs b/plonky2/src/hash/hash_types.rs index 9f9d976b..4ec86aa8 100644 --- a/plonky2/src/hash/hash_types.rs +++ b/plonky2/src/hash/hash_types.rs @@ -9,11 +9,12 @@ use serde::{Deserialize, Deserializer, Serialize, Serializer}; use crate::field::goldilocks_field::GoldilocksField; use crate::field::types::{Field, PrimeField64, Sample}; use crate::hash::poseidon::Poseidon; +use crate::hash::poseidon2::hash::Poseidon2; use crate::iop::target::Target; use crate::plonk::config::GenericHashOut; /// A prime order field with the features we need to use it as a base field in our argument system. -pub trait RichField: PrimeField64 + Poseidon {} +pub trait RichField: PrimeField64 + Poseidon + Poseidon2 {} impl RichField for GoldilocksField {} diff --git a/plonky2/src/hash/poseidon2/hash.rs b/plonky2/src/hash/poseidon2/hash.rs index 5f9553fa..d6fb72bf 100644 --- a/plonky2/src/hash/poseidon2/hash.rs +++ b/plonky2/src/hash/poseidon2/hash.rs @@ -3,10 +3,10 @@ use core::fmt::Debug; use plonky2_field::ops::Square; use super::config::*; -use super::gate::Poseidon2Gate; use crate::field::extension::{Extendable, FieldExtension}; use crate::field::goldilocks_field::GoldilocksField as F; use crate::field::types::{Field, PrimeField64}; +use crate::gates::poseidon2::Poseidon2Gate; use crate::hash::hash_types::{HashOut, RichField}; use crate::hash::hashing::{compress, hash_n_to_hash_no_pad, PlonkyPermutation}; use crate::iop::ext_target::ExtensionTarget; diff --git a/plonky2/src/hash/poseidon2/mod.rs b/plonky2/src/hash/poseidon2/mod.rs index 52ede9a4..bddaa67c 100644 --- a/plonky2/src/hash/poseidon2/mod.rs +++ b/plonky2/src/hash/poseidon2/mod.rs @@ -1,5 +1,4 @@ pub mod config; -pub mod gate; pub mod hash; #[cfg(test)] diff --git a/plonky2/src/util/serialization/gate_serialization.rs b/plonky2/src/util/serialization/gate_serialization.rs index 46f60b9f..d48f5ca7 100644 --- a/plonky2/src/util/serialization/gate_serialization.rs +++ b/plonky2/src/util/serialization/gate_serialization.rs @@ -110,12 +110,14 @@ pub mod default { use crate::gates::multiplication_extension::MulExtensionGate; use crate::gates::noop::NoopGate; use crate::gates::poseidon::PoseidonGate; + use crate::gates::poseidon2::Poseidon2Gate; use crate::gates::poseidon_mds::PoseidonMdsGate; use crate::gates::public_input::PublicInputGate; use crate::gates::random_access::RandomAccessGate; use crate::gates::reducing::ReducingGate; use crate::gates::reducing_extension::ReducingExtensionGate; use crate::hash::hash_types::RichField; + use crate::hash::poseidon2::hash::Poseidon2; use crate::util::serialization::GateSerializer; /// A gate serializer that can be used to serialize all default gates supported /// by the `plonky2` library. @@ -128,7 +130,9 @@ pub mod default { /// the `GateSerializer` trait. This can be easily done through the `impl_gate_serializer` macro. #[derive(Debug)] pub struct DefaultGateSerializer; - impl, const D: usize> GateSerializer for DefaultGateSerializer { + impl + Poseidon2, const D: usize> GateSerializer + for DefaultGateSerializer + { impl_gate_serializer! { DefaultGateSerializer, ArithmeticGate, @@ -146,6 +150,7 @@ pub mod default { NoopGate, PoseidonMdsGate, PoseidonGate, + Poseidon2Gate, PublicInputGate, RandomAccessGate, ReducingExtensionGate,