mirror of
https://github.com/darkrenaissance/darkfi.git
synced 2026-01-10 07:08:05 -05:00
dao2: final part of DAO::mint() wallet interaction
This commit is contained in:
@@ -334,6 +334,45 @@ async fn main() -> BoxResult<()> {
|
||||
)
|
||||
.expect("validate failed");
|
||||
|
||||
// Wallet stuff
|
||||
|
||||
// In your wallet, wait until you see the tx confirmed before doing anything below
|
||||
// So for example keep track of tx hash
|
||||
//
|
||||
// We also need to loop through all newly added items to the validator node
|
||||
// and repeat the same for our local merkle tree. The order of added items
|
||||
// to local merkle trees must be the same.
|
||||
//
|
||||
// One way to do this would be that .apply() keeps an in-memory per block
|
||||
// list of the order txs were applied. So then we can repeat the same order
|
||||
// for our local wallet trees.
|
||||
//
|
||||
// [ tx1, tx2, ... ]
|
||||
//
|
||||
// So the wallets know these are the new txs and this was the order they
|
||||
// were applied to the state in.
|
||||
// State updates are atomic so this will always be linear.
|
||||
//
|
||||
// When we see our DAO bulla, we call .witness()
|
||||
|
||||
// We need to witness() the value in our local merkle tree
|
||||
let dao_bulla = {
|
||||
assert_eq!(tx.calls.len(), 1);
|
||||
let calldata = &tx.calls[0].data;
|
||||
let params_data = &calldata[1..];
|
||||
let params: DaoMintParams = Decodable::decode(params_data)?;
|
||||
params.dao_bulla.clone()
|
||||
};
|
||||
|
||||
let mut dao_tree = MerkleTree::new(100);
|
||||
let dao_leaf_position = {
|
||||
let node = MerkleNode::from(dao_bulla.0);
|
||||
dao_tree.append(&node);
|
||||
dao_tree.witness().unwrap()
|
||||
};
|
||||
|
||||
debug!(target: "demo", "Create DAO bulla: {:?}", dao_bulla.0);
|
||||
|
||||
/////////////////////////////////////////////////
|
||||
// Old stuff
|
||||
/////////////////////////////////////////////////
|
||||
|
||||
Reference in New Issue
Block a user