Update create_merkle_tree
This commit is contained in:
parent
d19abaf653
commit
2fadc2e39c
23
src/pcd.rs
23
src/pcd.rs
@ -118,21 +118,26 @@ pub trait Pcd<'a>: Serialize + Deserialize<'a> {
|
|||||||
Ok(field2hash)
|
Ok(field2hash)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// We need to run `hash_fields` before
|
/// We run this on the result of `hash_fields`
|
||||||
/// This will just take all the hash value and produces a merkle tree
|
fn create_merkle_tree(&self) -> Result<MerkleTree<Sha256>> {
|
||||||
fn create_merkle_tree(fields2hash: &Value) -> Result<MerkleTree<Sha256>> {
|
let map = self.to_value_object()?;
|
||||||
let leaves: Vec<[u8; 32]> = fields2hash
|
let leaves: Result<Vec<[u8; 32]>> = map
|
||||||
.as_object()
|
|
||||||
.unwrap()
|
|
||||||
.iter()
|
.iter()
|
||||||
.map(|(_, value)| {
|
.map(|(_, value)| {
|
||||||
let mut res = [0u8; 32];
|
let mut res = [0u8; 32];
|
||||||
res.copy_from_slice(&Vec::from_hex(value.as_str().unwrap()).unwrap());
|
if !value.is_string() {
|
||||||
res
|
return Err(Error::msg("value is not a string"));
|
||||||
|
}
|
||||||
|
let vec = Vec::from_hex(value.as_str().unwrap())?;
|
||||||
|
if vec.len() != 32 {
|
||||||
|
return Err(Error::msg("value must be 32B length"));
|
||||||
|
}
|
||||||
|
res.copy_from_slice(&vec);
|
||||||
|
Ok(res)
|
||||||
})
|
})
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
let merkle_tree = MerkleTree::<Sha256>::from_leaves(&leaves);
|
let merkle_tree = MerkleTree::<Sha256>::from_leaves(&leaves?);
|
||||||
|
|
||||||
Ok(merkle_tree)
|
Ok(merkle_tree)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user