diff --git a/src/gadgets/arithmetic_u32.rs b/src/gadgets/arithmetic_u32.rs index 7fc686e..4019911 100644 --- a/src/gadgets/arithmetic_u32.rs +++ b/src/gadgets/arithmetic_u32.rs @@ -1,23 +1,13 @@ -use alloc::string::{String, ToString}; -use alloc::vec; use alloc::vec::Vec; -use anyhow::Result; -use core::marker::PhantomData; -use plonky2::plonk::circuit_data::CommonCircuitData; -use plonky2::util::serialization::{Buffer, IoResult, Read, Write}; use plonky2::field::extension::Extendable; use plonky2::hash::hash_types::RichField; -use plonky2::iop::generator::{GeneratedValues, SimpleGenerator}; use plonky2::iop::target::Target; -use plonky2::iop::witness::{PartitionWitness, Witness}; use plonky2::plonk::circuit_builder::CircuitBuilder; use crate::gates::add_many_u32::U32AddManyGate; use crate::gates::arithmetic_u32::U32ArithmeticGate; use crate::gates::subtraction_u32::U32SubtractionGate; -use crate::serialization::{ReadU32, WriteU32}; -use crate::witness::GeneratedValuesU32; #[derive(Clone, Copy, Debug)] pub struct U32Target(pub Target); @@ -235,58 +225,6 @@ impl, const D: usize> CircuitBuilderU32 } } -#[derive(Clone, Debug)] -struct SplitToU32Generator, const D: usize> { - x: Target, - low: U32Target, - high: U32Target, - _phantom: PhantomData, -} - -impl, const D: usize> SimpleGenerator - for SplitToU32Generator -{ - fn id(&self) -> String { - "SplitToU32Generator".to_string() - } - - fn serialize(&self, dst: &mut Vec, _common_data: &CommonCircuitData) -> IoResult<()> { - dst.write_target(self.x)?; - dst.write_target_u32(self.low)?; - dst.write_target_u32(self.high) - } - - fn deserialize(src: &mut Buffer, _common_data: &CommonCircuitData) -> IoResult { - let x = src.read_target()?; - let low = src.read_target_u32()?; - let high = src.read_target_u32()?; - Ok(Self { - x, - low, - high, - _phantom: PhantomData, - }) - } - - fn dependencies(&self) -> Vec { - vec![self.x] - } - - fn run_once( - &self, - witness: &PartitionWitness, - out_buffer: &mut GeneratedValues, - ) -> Result<()> { - let x = witness.get_target(self.x); - let x_u64 = x.to_canonical_u64(); - let low = x_u64 as u32; - let high = (x_u64 >> 32) as u32; - - out_buffer.set_u32_target(self.low, low)?; - out_buffer.set_u32_target(self.high, high) - } -} - #[cfg(test)] mod tests { use anyhow::Result;