From 5de5bfb5e496b5f9c29608ca036d14691fa5a69f Mon Sep 17 00:00:00 2001 From: Robin Salen Date: Tue, 4 Apr 2023 15:23:19 -0400 Subject: [PATCH] Move serialization files into dedicated module --- evm/src/fixed_recursive_verifier.rs | 6 +++--- evm/src/recursive_verifier.rs | 6 +++--- evm/tests/empty_txn_list.rs | 3 +-- plonky2/examples/bench_recursion.rs | 2 +- plonky2/src/plonk/circuit_data.rs | 6 +++--- plonky2/src/util/mod.rs | 5 ----- .../util/{ => serialization}/gate_serialization.rs | 6 +++++- .../{ => serialization}/generator_serialization.rs | 4 ++-- .../util/{serialization.rs => serialization/mod.rs} | 12 ++++++++++-- 9 files changed, 28 insertions(+), 22 deletions(-) rename plonky2/src/util/{ => serialization}/gate_serialization.rs (92%) rename plonky2/src/util/{ => serialization}/generator_serialization.rs (98%) rename plonky2/src/util/{serialization.rs => serialization/mod.rs} (99%) diff --git a/evm/src/fixed_recursive_verifier.rs b/evm/src/fixed_recursive_verifier.rs index d85f42c4..2e6f01aa 100644 --- a/evm/src/fixed_recursive_verifier.rs +++ b/evm/src/fixed_recursive_verifier.rs @@ -20,9 +20,9 @@ use plonky2::plonk::config::{AlgebraicHasher, GenericConfig, Hasher}; use plonky2::plonk::proof::{ProofWithPublicInputs, ProofWithPublicInputsTarget}; use plonky2::recursion::cyclic_recursion::check_cyclic_proof_verifier_data; use plonky2::recursion::dummy_circuit::cyclic_base_proof; -use plonky2::util::gate_serialization::GateSerializer; -use plonky2::util::generator_serialization::WitnessGeneratorSerializer; -use plonky2::util::serialization::{Buffer, IoResult, Read, Write}; +use plonky2::util::serialization::{ + Buffer, GateSerializer, IoResult, Read, WitnessGeneratorSerializer, Write, +}; use plonky2::util::timing::TimingTree; use plonky2_util::log2_ceil; diff --git a/evm/src/recursive_verifier.rs b/evm/src/recursive_verifier.rs index 5f4c5538..9da9281a 100644 --- a/evm/src/recursive_verifier.rs +++ b/evm/src/recursive_verifier.rs @@ -18,10 +18,10 @@ use plonky2::plonk::circuit_builder::CircuitBuilder; use plonky2::plonk::circuit_data::{CircuitConfig, CircuitData, VerifierCircuitData}; use plonky2::plonk::config::{AlgebraicHasher, GenericConfig}; use plonky2::plonk::proof::{ProofWithPublicInputs, ProofWithPublicInputsTarget}; -use plonky2::util::gate_serialization::GateSerializer; -use plonky2::util::generator_serialization::WitnessGeneratorSerializer; use plonky2::util::reducing::ReducingFactorTarget; -use plonky2::util::serialization::{Buffer, IoResult, Read, Write}; +use plonky2::util::serialization::{ + Buffer, GateSerializer, IoResult, Read, WitnessGeneratorSerializer, Write, +}; use plonky2::with_context; use plonky2_util::log2_ceil; diff --git a/evm/tests/empty_txn_list.rs b/evm/tests/empty_txn_list.rs index 66367ac6..ec2d999b 100644 --- a/evm/tests/empty_txn_list.rs +++ b/evm/tests/empty_txn_list.rs @@ -10,8 +10,7 @@ use keccak_hash::keccak; use log::info; use plonky2::field::goldilocks_field::GoldilocksField; use plonky2::plonk::config::PoseidonGoldilocksConfig; -use plonky2::util::gate_serialization::default::DefaultGateSerializer; -use plonky2::util::generator_serialization::default::DefaultGeneratorSerializer; +use plonky2::util::serialization::{DefaultGateSerializer, DefaultGeneratorSerializer}; use plonky2::util::timing::TimingTree; use plonky2_evm::all_stark::AllStark; use plonky2_evm::config::StarkConfig; diff --git a/plonky2/examples/bench_recursion.rs b/plonky2/examples/bench_recursion.rs index c5635a1d..a6fe9c37 100644 --- a/plonky2/examples/bench_recursion.rs +++ b/plonky2/examples/bench_recursion.rs @@ -22,7 +22,7 @@ use plonky2::plonk::circuit_data::{CircuitConfig, CommonCircuitData, VerifierOnl use plonky2::plonk::config::{AlgebraicHasher, GenericConfig, PoseidonGoldilocksConfig}; use plonky2::plonk::proof::{CompressedProofWithPublicInputs, ProofWithPublicInputs}; use plonky2::plonk::prover::prove; -use plonky2::util::gate_serialization::default::DefaultGateSerializer; +use plonky2::util::serialization::DefaultGateSerializer; use plonky2::util::timing::TimingTree; use plonky2_field::extension::Extendable; use plonky2_maybe_rayon::rayon; diff --git a/plonky2/src/plonk/circuit_data.rs b/plonky2/src/plonk/circuit_data.rs index 7bbf8971..fa9af818 100644 --- a/plonky2/src/plonk/circuit_data.rs +++ b/plonky2/src/plonk/circuit_data.rs @@ -30,9 +30,9 @@ use crate::plonk::plonk_common::PlonkOracle; use crate::plonk::proof::{CompressedProofWithPublicInputs, ProofWithPublicInputs}; use crate::plonk::prover::prove; use crate::plonk::verifier::verify; -use crate::util::gate_serialization::GateSerializer; -use crate::util::generator_serialization::WitnessGeneratorSerializer; -use crate::util::serialization::{Buffer, IoResult, Read, Write}; +use crate::util::serialization::{ + Buffer, GateSerializer, IoResult, Read, WitnessGeneratorSerializer, Write, +}; use crate::util::timing::TimingTree; #[derive(Clone, Debug, Eq, PartialEq)] diff --git a/plonky2/src/util/mod.rs b/plonky2/src/util/mod.rs index be4fab4d..dfc32fd8 100644 --- a/plonky2/src/util/mod.rs +++ b/plonky2/src/util/mod.rs @@ -9,11 +9,6 @@ use crate::field::types::Field; pub(crate) mod context_tree; pub(crate) mod partial_products; - -#[macro_use] -pub mod gate_serialization; -#[macro_use] -pub mod generator_serialization; pub mod reducing; pub mod serialization; pub mod strided_view; diff --git a/plonky2/src/util/gate_serialization.rs b/plonky2/src/util/serialization/gate_serialization.rs similarity index 92% rename from plonky2/src/util/gate_serialization.rs rename to plonky2/src/util/serialization/gate_serialization.rs index 3df74049..351fa76b 100644 --- a/plonky2/src/util/gate_serialization.rs +++ b/plonky2/src/util/serialization/gate_serialization.rs @@ -41,6 +41,10 @@ macro_rules! get_gate_tag_impl { } #[macro_export] +/// Macro implementing the `GateSerializer` trait. +/// To serialize a list of gates used for a circuit, +/// this macro should be called with a struct on which to implement +/// this as first argument, followed by all the targeted gates. macro_rules! impl_gate_serializer { ($target:ty, $($gate_types:ty),+) => { fn read_gate(&self, buf: &mut $crate::util::serialization::Buffer) -> $crate::util::serialization::IoResult<$crate::gates::gate::GateRef> { @@ -76,7 +80,7 @@ pub mod default { use crate::gates::reducing::ReducingGate; use crate::gates::reducing_extension::ReducingExtensionGate; use crate::hash::hash_types::RichField; - use crate::util::gate_serialization::GateSerializer; + use crate::util::serialization::GateSerializer; pub struct DefaultGateSerializer; impl, const D: usize> GateSerializer for DefaultGateSerializer { diff --git a/plonky2/src/util/generator_serialization.rs b/plonky2/src/util/serialization/generator_serialization.rs similarity index 98% rename from plonky2/src/util/generator_serialization.rs rename to plonky2/src/util/serialization/generator_serialization.rs index 4020e993..6566a897 100644 --- a/plonky2/src/util/generator_serialization.rs +++ b/plonky2/src/util/serialization/generator_serialization.rs @@ -115,7 +115,7 @@ pub mod default { }; use crate::plonk::config::{AlgebraicHasher, GenericConfig}; use crate::recursion::dummy_circuit::DummyProofGenerator; - use crate::util::generator_serialization::WitnessGeneratorSerializer; + use crate::util::serialization::WitnessGeneratorSerializer; pub struct DefaultGeneratorSerializer, const D: usize> { pub _phantom: PhantomData, @@ -128,7 +128,7 @@ pub mod default { C::Hasher: AlgebraicHasher, { impl_generator_serializer! { - DefaultGateSerializer, + DefaultGeneratorSerializer, DummyProofGenerator, ArithmeticBaseGenerator, ArithmeticExtensionGenerator, diff --git a/plonky2/src/util/serialization.rs b/plonky2/src/util/serialization/mod.rs similarity index 99% rename from plonky2/src/util/serialization.rs rename to plonky2/src/util/serialization/mod.rs index 488cbd61..5a92afb5 100644 --- a/plonky2/src/util/serialization.rs +++ b/plonky2/src/util/serialization/mod.rs @@ -1,3 +1,9 @@ +#[macro_use] +pub mod generator_serialization; + +#[macro_use] +pub mod gate_serialization; + use alloc::collections::BTreeMap; use alloc::vec; use alloc::vec::Vec; @@ -6,10 +12,12 @@ use core::fmt::{Debug, Display, Formatter}; use core::mem::size_of; use core::ops::Range; +pub use gate_serialization::default::DefaultGateSerializer; +pub use gate_serialization::GateSerializer; +pub use generator_serialization::default::DefaultGeneratorSerializer; +pub use generator_serialization::WitnessGeneratorSerializer; use hashbrown::HashMap; -use super::gate_serialization::GateSerializer; -use super::generator_serialization::WitnessGeneratorSerializer; use crate::field::extension::{Extendable, FieldExtension}; use crate::field::polynomial::PolynomialCoeffs; use crate::field::types::{Field64, PrimeField64};