diff --git a/src/contract/dao/src/dao_client/exec.rs b/src/contract/dao/src/dao_client/exec.rs
index 2ebacded4..db7b483ce 100644
--- a/src/contract/dao/src/dao_client/exec.rs
+++ b/src/contract/dao/src/dao_client/exec.rs
@@ -16,8 +16,9 @@
* along with this program. If not, see .
*/
-use darkfi_sdk::crypto::{
- pallas, pasta_prelude::*, pedersen_commitment_u64, poseidon_hash, SecretKey,
+use darkfi_sdk::{
+ crypto::{pasta_prelude::*, pedersen_commitment_u64, poseidon_hash, SecretKey},
+ pasta::pallas,
};
use halo2_proofs::circuit::Value;
diff --git a/src/contract/dao/src/dao_client/mint.rs b/src/contract/dao/src/dao_client/mint.rs
index fb9731036..9f95b8e4f 100644
--- a/src/contract/dao/src/dao_client/mint.rs
+++ b/src/contract/dao/src/dao_client/mint.rs
@@ -21,7 +21,10 @@ use darkfi::{
zkas::ZkBinary,
Result,
};
-use darkfi_sdk::crypto::{pallas, poseidon_hash, PublicKey, SecretKey, TokenId};
+use darkfi_sdk::{
+ crypto::{poseidon_hash, PublicKey, SecretKey, TokenId},
+ pasta::pallas,
+};
use log::debug;
use rand::rngs::OsRng;
diff --git a/src/contract/dao/src/dao_client/propose.rs b/src/contract/dao/src/dao_client/propose.rs
index 463fbf1b8..565c87bec 100644
--- a/src/contract/dao/src/dao_client/propose.rs
+++ b/src/contract/dao/src/dao_client/propose.rs
@@ -16,9 +16,14 @@
* along with this program. If not, see .
*/
-use darkfi_sdk::crypto::{
- merkle_prelude::*, pallas, pasta_prelude::*, pedersen::pedersen_commitment_u64, poseidon_hash,
- MerkleNode, MerklePosition, PublicKey, SecretKey, TokenId,
+use darkfi_sdk::{
+ bridgetree,
+ bridgetree::Hashable,
+ crypto::{
+ pasta_prelude::*, pedersen::pedersen_commitment_u64, poseidon_hash, MerkleNode, PublicKey,
+ SecretKey, TokenId,
+ },
+ pasta::pallas,
};
use darkfi_serial::{SerialDecodable, SerialEncodable};
use rand::rngs::OsRng;
@@ -52,7 +57,7 @@ pub struct DaoProposeNote {
pub struct DaoProposeStakeInput {
pub secret: SecretKey,
pub note: darkfi_money_contract::client::MoneyNote,
- pub leaf_position: MerklePosition,
+ pub leaf_position: bridgetree::Position,
pub merkle_path: Vec,
pub signature_secret: SecretKey,
}
@@ -61,7 +66,7 @@ pub struct DaoProposeCall {
pub inputs: Vec,
pub proposal: DaoProposalInfo,
pub dao: DaoInfo,
- pub dao_leaf_position: MerklePosition,
+ pub dao_leaf_position: bridgetree::Position,
pub dao_merkle_path: Vec,
pub dao_merkle_root: MerkleNode,
}
diff --git a/src/contract/dao/src/dao_client/vote.rs b/src/contract/dao/src/dao_client/vote.rs
index dfe2fe90f..303514d95 100644
--- a/src/contract/dao/src/dao_client/vote.rs
+++ b/src/contract/dao/src/dao_client/vote.rs
@@ -16,9 +16,14 @@
* along with this program. If not, see .
*/
-use darkfi_sdk::crypto::{
- merkle_prelude::*, pallas, pasta_prelude::*, pedersen_commitment_u64, poseidon_hash, Keypair,
- MerkleNode, MerklePosition, Nullifier, PublicKey, SecretKey,
+use darkfi_sdk::{
+ bridgetree,
+ bridgetree::Hashable,
+ crypto::{
+ pasta_prelude::*, pedersen_commitment_u64, poseidon_hash, Keypair, MerkleNode, Nullifier,
+ PublicKey, SecretKey,
+ },
+ pasta::pallas,
};
use darkfi_serial::{SerialDecodable, SerialEncodable};
use log::debug;
@@ -48,7 +53,7 @@ pub struct DaoVoteNote {
pub struct DaoVoteInput {
pub secret: SecretKey,
pub note: darkfi_money_contract::client::MoneyNote,
- pub leaf_position: MerklePosition,
+ pub leaf_position: bridgetree::Position,
pub merkle_path: Vec,
pub signature_secret: SecretKey,
}
diff --git a/src/contract/dao/src/dao_model.rs b/src/contract/dao/src/dao_model.rs
index b984fde7b..28fe83ea8 100644
--- a/src/contract/dao/src/dao_model.rs
+++ b/src/contract/dao/src/dao_model.rs
@@ -17,8 +17,9 @@
*/
use darkfi_sdk::{
- crypto::{pallas, pasta_prelude::*, MerkleNode, Nullifier, PublicKey},
+ crypto::{pasta_prelude::*, MerkleNode, Nullifier, PublicKey},
error::ContractError,
+ pasta::pallas,
};
use darkfi_serial::{SerialDecodable, SerialEncodable};
diff --git a/src/contract/dao/src/entrypoint.rs b/src/contract/dao/src/entrypoint.rs
index 81c44d92e..2974e703f 100644
--- a/src/contract/dao/src/entrypoint.rs
+++ b/src/contract/dao/src/entrypoint.rs
@@ -20,12 +20,13 @@ use std::io::Cursor;
use darkfi_sdk::{
crypto::{
- pallas, pasta_prelude::*, ContractId, MerkleNode, MerkleTree, PublicKey, DAO_CONTRACT_ID,
+ pasta_prelude::*, ContractId, MerkleNode, MerkleTree, PublicKey, DAO_CONTRACT_ID,
MONEY_CONTRACT_ID,
},
db::{db_contains_key, db_del, db_get, db_init, db_lookup, db_set, zkas_db_set},
error::{ContractError, ContractResult},
merkle_add, msg,
+ pasta::pallas,
util::set_return_data,
ContractCall,
};
diff --git a/src/contract/dao/src/money_client.rs b/src/contract/dao/src/money_client.rs
index 20a26b322..6c0d209fc 100644
--- a/src/contract/dao/src/money_client.rs
+++ b/src/contract/dao/src/money_client.rs
@@ -24,9 +24,13 @@ use darkfi::{
zkas::ZkBinary,
Result,
};
-use darkfi_sdk::crypto::{
- note::AeadEncryptedNote, pallas, pasta_prelude::*, MerkleNode, MerklePosition, PublicKey,
- SecretKey, TokenId, ValueBlind,
+use darkfi_sdk::{
+ bridgetree,
+ crypto::{
+ note::AeadEncryptedNote, pasta_prelude::*, MerkleNode, PublicKey, SecretKey, TokenId,
+ ValueBlind,
+ },
+ pasta::pallas,
};
use rand::rngs::OsRng;
@@ -55,7 +59,7 @@ pub struct TransferClearInput {
}
pub struct TransferInput {
- pub leaf_position: MerklePosition,
+ pub leaf_position: bridgetree::Position,
pub merkle_path: Vec,
pub secret: SecretKey,
pub note: MoneyNote,
diff --git a/src/contract/dao/src/wallet_cache.rs b/src/contract/dao/src/wallet_cache.rs
index f4807d8a9..bf7d730a9 100644
--- a/src/contract/dao/src/wallet_cache.rs
+++ b/src/contract/dao/src/wallet_cache.rs
@@ -16,8 +16,9 @@
* along with this program. If not, see .
*/
-use darkfi_sdk::crypto::{
- merkle_prelude::*, note::AeadEncryptedNote, MerkleNode, MerklePosition, MerkleTree, SecretKey,
+use darkfi_sdk::{
+ bridgetree,
+ crypto::{note::AeadEncryptedNote, MerkleNode, MerkleTree, SecretKey},
};
use darkfi_money_contract::{client::MoneyNote, model::Coin};
@@ -25,7 +26,7 @@ use darkfi_money_contract::{client::MoneyNote, model::Coin};
pub struct OwnCoin {
pub coin: Coin,
pub note: MoneyNote,
- pub leaf_position: MerklePosition,
+ pub leaf_position: bridgetree::Position,
}
pub struct WalletCache {
@@ -66,14 +67,13 @@ impl WalletCache {
pub fn try_decrypt_note(&mut self, coin: Coin, ciphertext: &AeadEncryptedNote) {
// Add the new coins to the Merkle tree
- let node = MerkleNode::from(coin.inner());
- self.tree.append(&node);
+ self.tree.append(MerkleNode::from(coin.inner()));
// Loop through all our secret keys...
for (secret, own_coins) in self.cache.iter_mut() {
// .. attempt to decrypt the note ...
if let Ok(note) = ciphertext.decrypt(secret) {
- let leaf_position = self.tree.witness().expect("coin should be in tree");
+ let leaf_position = self.tree.mark().expect("coin should be in tree");
own_coins.push(OwnCoin { coin, note, leaf_position });
}
}
diff --git a/src/contract/dao/tests/integration.rs b/src/contract/dao/tests/integration.rs
index eae82e24f..bf986b7a9 100644
--- a/src/contract/dao/tests/integration.rs
+++ b/src/contract/dao/tests/integration.rs
@@ -21,10 +21,10 @@ use std::time::{Duration, Instant};
use darkfi::{tx::Transaction, Result};
use darkfi_sdk::{
crypto::{
- merkle_prelude::*, pallas, pasta_prelude::*, pedersen_commitment_u64, poseidon_hash,
- Keypair, MerkleNode, MerkleTree, SecretKey, TokenId, DAO_CONTRACT_ID, DARK_TOKEN_ID,
- MONEY_CONTRACT_ID,
+ pasta_prelude::*, pedersen_commitment_u64, poseidon_hash, Keypair, MerkleNode, MerkleTree,
+ SecretKey, TokenId, DAO_CONTRACT_ID, DARK_TOKEN_ID, MONEY_CONTRACT_ID,
},
+ pasta::pallas,
ContractCall,
};
use darkfi_serial::{Decodable, Encodable};
@@ -129,8 +129,8 @@ async fn integration_test() -> Result<()> {
let mut dao_tree = MerkleTree::new(100);
let dao_leaf_position = {
let node = MerkleNode::from(params.dao_bulla.inner());
- dao_tree.append(&node);
- dao_tree.witness().unwrap()
+ dao_tree.append(node);
+ dao_tree.mark().unwrap()
};
let dao_bulla = params.dao_bulla;
debug!(target: "dao", "Created DAO bulla: {:?}", dao_bulla.inner());
@@ -392,8 +392,7 @@ async fn integration_test() -> Result<()> {
let (money_leaf_position, money_merkle_path) = {
let tree = &cache.tree;
let leaf_position = gov_recv[0].leaf_position;
- let root = tree.root(0).unwrap();
- let merkle_path = tree.authentication_path(leaf_position, &root).unwrap();
+ let merkle_path = tree.witness(leaf_position, 0).unwrap();
(leaf_position, merkle_path)
};
@@ -411,7 +410,7 @@ async fn integration_test() -> Result<()> {
let (dao_merkle_path, dao_merkle_root) = {
let tree = &dao_tree;
let root = tree.root(0).unwrap();
- let merkle_path = tree.authentication_path(dao_leaf_position, &root).unwrap();
+ let merkle_path = tree.witness(dao_leaf_position, 0).unwrap();
(merkle_path, root)
};
@@ -514,8 +513,7 @@ async fn integration_test() -> Result<()> {
let (money_leaf_position, money_merkle_path) = {
let tree = &cache.tree;
let leaf_position = gov_recv[0].leaf_position;
- let root = tree.root(0).unwrap();
- let merkle_path = tree.authentication_path(leaf_position, &root).unwrap();
+ let merkle_path = tree.witness(leaf_position, 0).unwrap();
(leaf_position, merkle_path)
};
@@ -590,8 +588,7 @@ async fn integration_test() -> Result<()> {
let (money_leaf_position, money_merkle_path) = {
let tree = &cache.tree;
let leaf_position = gov_recv[1].leaf_position;
- let root = tree.root(0).unwrap();
- let merkle_path = tree.authentication_path(leaf_position, &root).unwrap();
+ let merkle_path = tree.witness(leaf_position, 0).unwrap();
(leaf_position, merkle_path)
};
@@ -663,8 +660,7 @@ async fn integration_test() -> Result<()> {
let (money_leaf_position, money_merkle_path) = {
let tree = &cache.tree;
let leaf_position = gov_recv[2].leaf_position;
- let root = tree.root(0).unwrap();
- let merkle_path = tree.authentication_path(leaf_position, &root).unwrap();
+ let merkle_path = tree.witness(leaf_position, 0).unwrap();
(leaf_position, merkle_path)
};
@@ -818,8 +814,7 @@ async fn integration_test() -> Result<()> {
let (treasury_leaf_position, treasury_merkle_path) = {
let tree = &cache.tree;
let leaf_position = dao_recv_coin.leaf_position;
- let root = tree.root(0).unwrap();
- let merkle_path = tree.authentication_path(leaf_position, &root).unwrap();
+ let merkle_path = tree.witness(leaf_position, 0).unwrap();
(leaf_position, merkle_path)
};