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)
|
||||
}
|
||||
|
||||
/// We need to run `hash_fields` before
|
||||
/// This will just take all the hash value and produces a merkle tree
|
||||
fn create_merkle_tree(fields2hash: &Value) -> Result<MerkleTree<Sha256>> {
|
||||
let leaves: Vec<[u8; 32]> = fields2hash
|
||||
.as_object()
|
||||
.unwrap()
|
||||
/// We run this on the result of `hash_fields`
|
||||
fn create_merkle_tree(&self) -> Result<MerkleTree<Sha256>> {
|
||||
let map = self.to_value_object()?;
|
||||
let leaves: Result<Vec<[u8; 32]>> = map
|
||||
.iter()
|
||||
.map(|(_, value)| {
|
||||
let mut res = [0u8; 32];
|
||||
res.copy_from_slice(&Vec::from_hex(value.as_str().unwrap()).unwrap());
|
||||
res
|
||||
if !value.is_string() {
|
||||
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();
|
||||
|
||||
let merkle_tree = MerkleTree::<Sha256>::from_leaves(&leaves);
|
||||
let merkle_tree = MerkleTree::<Sha256>::from_leaves(&leaves?);
|
||||
|
||||
Ok(merkle_tree)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user