Functions to create and manage Orchard commitment trees #99
3 changed files with 24 additions and 1 deletions
|
@ -36,7 +36,8 @@ use incrementalmerkletree::{
|
|||
frontier::{
|
||||
CommitmentTree,
|
||||
Frontier,
|
||||
NonEmptyFrontier
|
||||
NonEmptyFrontier,
|
||||
PathFiller
|
||||
},
|
||||
witness::IncrementalWitness
|
||||
};
|
||||
|
@ -1618,6 +1619,17 @@ pub extern "C" fn rust_wrapper_combine_orchard_nodes(
|
|||
}
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub extern "C" fn rust_wrapper_get_orchard_root(
|
||||
level: u8,
|
||||
out: *mut u8,
|
||||
out_len: &mut usize
|
||||
){
|
||||
let tree: CommitmentTree<MerkleHashOrchard, 32> = CommitmentTree::empty();
|
||||
let root = tree.root_at_depth(level, PathFiller::empty());
|
||||
let h = Hhex { bytes: root.to_bytes().to_vec() };
|
||||
marshall_to_haskell_var(&h, out, out_len, RW);
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub extern "C" fn rust_wrapper_read_orchard_commitment_tree(
|
||||
|
|
|
@ -276,6 +276,13 @@ import ZcashHaskell.Types
|
|||
-> `()'
|
||||
#}
|
||||
|
||||
{# fun unsafe rust_wrapper_get_orchard_root as rustWrapperGetOrchardRootTest
|
||||
{ `Int8'
|
||||
, getVarBuffer `Buffer HexString'&
|
||||
}
|
||||
-> `()'
|
||||
#}
|
||||
|
||||
{# fun unsafe rust_wrapper_read_orchard_commitment_tree as rustWrapperReadOrchardCommitmentTree
|
||||
{ toBorshVar* `OrchardFrontier'&
|
||||
, toBorshVar* `BS.ByteString'&
|
||||
|
|
|
@ -218,6 +218,10 @@ getOrchardWitnessAnchor wit =
|
|||
withPureBorshVarBuffer $
|
||||
rustWrapperReadOrchardWitnessAnchor $ toBytes $ orchWit wit
|
||||
|
||||
getOrchardRootTest :: Int -> HexString
|
||||
getOrchardRootTest level =
|
||||
withPureBorshVarBuffer $ rustWrapperGetOrchardRootTest $ fromIntegral level
|
||||
|
||||
-- | Update a Orchard commitment tree
|
||||
updateOrchardCommitmentTree ::
|
||||
OrchardFrontier -- ^ the base tree
|
||||
|
|
Loading…
Reference in a new issue