diff --git a/common/src/merkle_tree_public/merkle_tree.rs b/common/src/merkle_tree_public/merkle_tree.rs index 16d185ec..d5fd72da 100644 --- a/common/src/merkle_tree_public/merkle_tree.rs +++ b/common/src/merkle_tree_public/merkle_tree.rs @@ -12,6 +12,24 @@ pub struct HashStorageMerkleTree { tree: MerkleTree, } +impl Serialize for HashStorageMerkleTree { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + let mut vector = self.leaves.iter().collect::>(); + vector.sort_by(|a, b| a.0.cmp(b.0)); + + let mut seq = serializer.serialize_seq(Some(self.leaves.len()))?; + for element in vector.iter() { + seq.serialize_element(element.1)?; + } + seq.end() + } +} + + + pub type PublicTransactionMerkleTree = HashStorageMerkleTree; pub type UTXOCommitmentsMerkleTree = HashStorageMerkleTree;