From 9fb07dc4aeeeae6d62acf9f678092fada144517b Mon Sep 17 00:00:00 2001 From: Tim Tickel Date: Fri, 24 Jan 2025 17:22:14 -0800 Subject: [PATCH] implement `Packable` for ContractClassId --- .../crates/types/src/contract_class_id.nr | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/contract_class_id.nr b/noir-projects/noir-protocol-circuits/crates/types/src/contract_class_id.nr index c70783fd035c..2ff06c1d8e4f 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/contract_class_id.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/contract_class_id.nr @@ -1,5 +1,5 @@ use crate::constants::GENERATOR_INDEX__CONTRACT_LEAF; -use crate::traits::{Deserialize, FromField, Serialize, ToField}; +use crate::traits::{Deserialize, FromField, Packable, Serialize, ToField}; pub struct ContractClassId { pub inner: Field, @@ -35,6 +35,17 @@ impl Deserialize<1> for ContractClassId { } } +// Implement the Packable trait so ContractClassId can be stored in contract's storage. +impl Packable<1> for ContractClassId { + fn pack(self) -> [Field; 1] { + self.serialize() + } + + fn unpack(fields: [Field; 1]) -> Self { + Self::deserialize(fields) + } +} + impl ContractClassId { pub fn compute( artifact_hash: Field,