diff --git a/common/src/merkle_tree_public/merkle_tree.rs b/common/src/merkle_tree_public/merkle_tree.rs index 0dc3f6b..d769218 100644 --- a/common/src/merkle_tree_public/merkle_tree.rs +++ b/common/src/merkle_tree_public/merkle_tree.rs @@ -1,6 +1,7 @@ use std::collections::HashMap; use rs_merkle::{MerkleProof, MerkleTree}; +use serde::{de::{self, SeqAccess, Visitor}, ser::SerializeSeq, Deserialize, Deserializer, Serialize}; use crate::{transaction::Transaction, utxo_commitment::UTXOCommitment}; @@ -66,7 +67,11 @@ impl<'de, Leav: TreeLeavItem + Clone + Deserialize<'de>> Visitor<'de> for HashSt } } - +impl<'de, Leav: TreeLeavItem + Clone + Deserialize<'de>> serde::Deserialize<'de> for HashStorageMerkleTree { + fn deserialize>(deserializer: D) -> Result { + deserializer.deserialize_seq(HashStorageMerkleTreeDeserializer::new()) + } +} pub type PublicTransactionMerkleTree = HashStorageMerkleTree;