diff --git a/plonky2/src/gates/arithmetic_base.rs b/plonky2/src/gates/arithmetic_base.rs index 1f46db5e..d34e5d7f 100644 --- a/plonky2/src/gates/arithmetic_base.rs +++ b/plonky2/src/gates/arithmetic_base.rs @@ -65,6 +65,10 @@ impl, const D: usize> Gate for ArithmeticGate format!("{self:?}") } + fn short_id(&self) -> String { + format!("ArithmeticGate:{}",self.num_ops) + } + fn serialize(&self, dst: &mut Vec, _common_data: &CommonCircuitData) -> IoResult<()> { dst.write_usize(self.num_ops) } diff --git a/plonky2/src/gates/arithmetic_extension.rs b/plonky2/src/gates/arithmetic_extension.rs index bb110cd9..8b953aa0 100644 --- a/plonky2/src/gates/arithmetic_extension.rs +++ b/plonky2/src/gates/arithmetic_extension.rs @@ -61,6 +61,10 @@ impl, const D: usize> Gate for ArithmeticExte format!("{self:?}") } + fn short_id(&self) -> String { + format!("ArithmeticExtensionGate:{}",self.num_ops) + } + fn serialize(&self, dst: &mut Vec, _common_data: &CommonCircuitData) -> IoResult<()> { dst.write_usize(self.num_ops) } diff --git a/plonky2/src/gates/base_sum.rs b/plonky2/src/gates/base_sum.rs index 1101bd96..231bf605 100644 --- a/plonky2/src/gates/base_sum.rs +++ b/plonky2/src/gates/base_sum.rs @@ -56,6 +56,10 @@ impl, const D: usize, const B: usize> Gate fo format!("{self:?} + Base: {B}") } + fn short_id(&self) -> String { + format!("BaseSumGate:{}",self.num_limbs) + } + fn serialize(&self, dst: &mut Vec, _common_data: &CommonCircuitData) -> IoResult<()> { dst.write_usize(self.num_limbs) } diff --git a/plonky2/src/gates/constant.rs b/plonky2/src/gates/constant.rs index cbbcae37..3bc3c6da 100644 --- a/plonky2/src/gates/constant.rs +++ b/plonky2/src/gates/constant.rs @@ -46,6 +46,10 @@ impl, const D: usize> Gate for ConstantGate { format!("{self:?}") } + fn short_id(&self) -> String { + format!("ConstantGate:{}",self.num_consts) + } + fn serialize(&self, dst: &mut Vec, _common_data: &CommonCircuitData) -> IoResult<()> { dst.write_usize(self.num_consts) } diff --git a/plonky2/src/gates/coset_interpolation.rs b/plonky2/src/gates/coset_interpolation.rs index 0b19a173..b6c8bb6d 100644 --- a/plonky2/src/gates/coset_interpolation.rs +++ b/plonky2/src/gates/coset_interpolation.rs @@ -178,6 +178,10 @@ impl, const D: usize> Gate for CosetInterpola format!("{self:?}") } + fn short_id(&self) -> String { + format!("CosetInterpolationGate:{}",self.subgroup_bits) + } + fn serialize(&self, dst: &mut Vec, _common_data: &CommonCircuitData) -> IoResult<()> { dst.write_usize(self.subgroup_bits)?; dst.write_usize(self.degree)?; diff --git a/plonky2/src/gates/exponentiation.rs b/plonky2/src/gates/exponentiation.rs index a93d1af7..9b5d6943 100644 --- a/plonky2/src/gates/exponentiation.rs +++ b/plonky2/src/gates/exponentiation.rs @@ -82,6 +82,10 @@ impl, const D: usize> Gate for Exponentiation format!("{self:?}") } + fn short_id(&self) -> String { + format!("ExponentiationGate:{}",self.num_power_bits) + } + fn serialize(&self, dst: &mut Vec, _common_data: &CommonCircuitData) -> IoResult<()> { dst.write_usize(self.num_power_bits) } diff --git a/plonky2/src/gates/gate.rs b/plonky2/src/gates/gate.rs index 9bc8d1dc..eac2b368 100644 --- a/plonky2/src/gates/gate.rs +++ b/plonky2/src/gates/gate.rs @@ -56,6 +56,11 @@ pub trait Gate, const D: usize>: 'static + Send + S /// This is used as differentiating tag in gate serializers. fn id(&self) -> String; + /// Another, more friendly identifier for easier interop with third-party tooling + fn short_id(&self) -> String { + self.id() + } + /// Serializes this custom gate to the targeted byte buffer, with the provided [`CommonCircuitData`]. fn serialize(&self, dst: &mut Vec, common_data: &CommonCircuitData) -> IoResult<()>; diff --git a/plonky2/src/gates/lookup.rs b/plonky2/src/gates/lookup.rs index 6a28745c..7069113b 100644 --- a/plonky2/src/gates/lookup.rs +++ b/plonky2/src/gates/lookup.rs @@ -78,6 +78,10 @@ impl, const D: usize> Gate for LookupGate { ) } + fn short_id(&self) -> String { + format!("LookupGate:{}",self.num_slots) + } + fn serialize(&self, dst: &mut Vec, common_data: &CommonCircuitData) -> IoResult<()> { dst.write_usize(self.num_slots)?; for (i, lut) in common_data.luts.iter().enumerate() { diff --git a/plonky2/src/gates/lookup_table.rs b/plonky2/src/gates/lookup_table.rs index 97b49595..f28c9f8f 100644 --- a/plonky2/src/gates/lookup_table.rs +++ b/plonky2/src/gates/lookup_table.rs @@ -91,6 +91,10 @@ impl, const D: usize> Gate for LookupTableGat ) } + fn short_id(&self) -> String { + format!("LookupTableGate:{}",self.num_slots) + } + fn serialize(&self, dst: &mut Vec, common_data: &CommonCircuitData) -> IoResult<()> { dst.write_usize(self.num_slots)?; dst.write_usize(self.last_lut_row)?; diff --git a/plonky2/src/gates/multiplication_extension.rs b/plonky2/src/gates/multiplication_extension.rs index f604c9eb..5178b060 100644 --- a/plonky2/src/gates/multiplication_extension.rs +++ b/plonky2/src/gates/multiplication_extension.rs @@ -58,6 +58,10 @@ impl, const D: usize> Gate for MulExtensionGa format!("{self:?}") } + fn short_id(&self) -> String { + format!("MulExtensionGenerator:{}",self.num_ops) + } + fn serialize(&self, dst: &mut Vec, _common_data: &CommonCircuitData) -> IoResult<()> { dst.write_usize(self.num_ops) } diff --git a/plonky2/src/gates/noop.rs b/plonky2/src/gates/noop.rs index f2387f6b..a7015a0a 100644 --- a/plonky2/src/gates/noop.rs +++ b/plonky2/src/gates/noop.rs @@ -20,6 +20,10 @@ impl, const D: usize> Gate for NoopGate { "NoopGate".into() } + fn short_id(&self) -> String { + "NoopGate".into() + } + fn serialize( &self, _dst: &mut Vec, diff --git a/plonky2/src/gates/poseidon.rs b/plonky2/src/gates/poseidon.rs index cf34e7bc..625e15d6 100644 --- a/plonky2/src/gates/poseidon.rs +++ b/plonky2/src/gates/poseidon.rs @@ -106,6 +106,10 @@ impl, const D: usize> Gate for PoseidonGate") } + fn short_id(&self) -> String { + format!("PoseidonGate:{}",SPONGE_WIDTH) + } + fn serialize( &self, _dst: &mut Vec, diff --git a/plonky2/src/gates/poseidon_mds.rs b/plonky2/src/gates/poseidon_mds.rs index 801879a3..b6a6f3f8 100644 --- a/plonky2/src/gates/poseidon_mds.rs +++ b/plonky2/src/gates/poseidon_mds.rs @@ -125,6 +125,10 @@ impl + Poseidon, const D: usize> Gate for Pos format!("{self:?}") } + fn short_id(&self) -> String { + format!("PoseidonMdsGate:{}",SPONGE_WIDTH) + } + fn serialize( &self, _dst: &mut Vec, diff --git a/plonky2/src/gates/public_input.rs b/plonky2/src/gates/public_input.rs index e066e45e..e06b13f0 100644 --- a/plonky2/src/gates/public_input.rs +++ b/plonky2/src/gates/public_input.rs @@ -33,6 +33,10 @@ impl, const D: usize> Gate for PublicInputGat "PublicInputGate".into() } + fn short_id(&self) -> String { + "PublicInputGate".into() + } + fn serialize( &self, _dst: &mut Vec, diff --git a/plonky2/src/gates/random_access.rs b/plonky2/src/gates/random_access.rs index 5815c908..a4b04713 100644 --- a/plonky2/src/gates/random_access.rs +++ b/plonky2/src/gates/random_access.rs @@ -127,6 +127,10 @@ impl, const D: usize> Gate for RandomAccessGa format!("{self:?}") } + fn short_id(&self) -> String { + format!("RandomAccessGate:{}",self.bits) + } + fn serialize(&self, dst: &mut Vec, _common_data: &CommonCircuitData) -> IoResult<()> { dst.write_usize(self.bits)?; dst.write_usize(self.num_copies)?; diff --git a/plonky2/src/gates/reducing.rs b/plonky2/src/gates/reducing.rs index 96368509..0b84c3b6 100644 --- a/plonky2/src/gates/reducing.rs +++ b/plonky2/src/gates/reducing.rs @@ -67,6 +67,10 @@ impl, const D: usize> Gate for ReducingGate String { + format!("ReducingGate:{}",self.num_coeffs) + } + fn serialize(&self, dst: &mut Vec, _common_data: &CommonCircuitData) -> IoResult<()> { dst.write_usize(self.num_coeffs)?; Ok(()) diff --git a/plonky2/src/gates/reducing_extension.rs b/plonky2/src/gates/reducing_extension.rs index 1fd0865e..edbf7ed6 100644 --- a/plonky2/src/gates/reducing_extension.rs +++ b/plonky2/src/gates/reducing_extension.rs @@ -70,6 +70,10 @@ impl, const D: usize> Gate for ReducingExtens format!("{self:?}") } + fn short_id(&self) -> String { + format!("ReducingExtensionGate:{}",self.num_coeffs) + } + fn serialize(&self, dst: &mut Vec, _common_data: &CommonCircuitData) -> IoResult<()> { dst.write_usize(self.num_coeffs)?; Ok(())