Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion dash-spv/src/client/lifecycle.rs
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ impl<W: WalletInterface, N: NetworkManager, S: StorageManager, H: EventHandler>
// Create mempool state and build mempool manager if tracking is enabled
let mempool_state = Arc::new(RwLock::new(MempoolState::default()));
if config.enable_mempool_tracking {
let initial_revision = wallet.read().await.monitor_revision();
let initial_revision = wallet.read().await.monitor_revision().await;
managers.mempool = Some(MempoolManager::new(
wallet.clone(),
mempool_state.clone(),
Expand Down
10 changes: 5 additions & 5 deletions dash-spv/src/sync/filters/manager.rs
Original file line number Diff line number Diff line change
Expand Up @@ -500,7 +500,7 @@ impl<H: BlockHeaderStorage, FH: FilterHeaderStorage, F: FilterStorage, W: Wallet
let end = batch.end_height();
if end > self.progress.committed_height() {
self.progress.update_committed_height(end);
self.wallet.write().await.update_filter_committed_height(end);
self.wallet.write().await.update_filter_committed_height(end).await;
}
self.processing_height = end + 1;

Expand Down Expand Up @@ -675,7 +675,7 @@ impl<H: BlockHeaderStorage, FH: FilterHeaderStorage, F: FilterStorage, W: Wallet

// Match against wallet's current addresses
let wallet = self.wallet.read().await;
let addresses = wallet.monitored_addresses();
let addresses = wallet.monitored_addresses().await;
let matches = check_compact_filters_for_addresses(batch.filters(), addresses);
drop(wallet);

Expand Down Expand Up @@ -821,7 +821,7 @@ mod tests {

// Set wallet committed height via synced_height (MockWallet default delegates)
let mut wallet = MockWallet::new();
wallet.update_synced_height(50);
wallet.update_synced_height(50).await;
let wallet = Arc::new(RwLock::new(wallet));

// Pre-populate filter storage with filters at heights 1..=100
Expand Down Expand Up @@ -1049,7 +1049,7 @@ mod tests {
assert_eq!(manager.state(), SyncState::WaitForEvents);

// Wallet committed to height 100, so scan_start will be 101
manager.wallet.write().await.update_synced_height(100);
manager.wallet.write().await.update_synced_height(100).await;
// Filter headers only reached 50, so its below scan_start
manager.progress.update_filter_header_tip_height(50);
// Chain tip higher so the Synced early-return is not taken
Expand Down Expand Up @@ -1126,7 +1126,7 @@ mod tests {
// Simulate restart where everything is already synced but state is WaitForEvents.
// committed == stored == filter_header_tip — start_download detects synced state.
manager.set_state(SyncState::WaitForEvents);
manager.wallet.write().await.update_synced_height(100);
manager.wallet.write().await.update_synced_height(100).await;
manager.progress.update_committed_height(100);
manager.progress.update_stored_height(100);
manager.progress.update_filter_header_tip_height(100);
Expand Down
6 changes: 3 additions & 3 deletions dash-spv/src/sync/mempool/manager.rs
Original file line number Diff line number Diff line change
Expand Up @@ -135,8 +135,8 @@ impl<W: WalletInterface> MempoolManager<W> {
requests: &RequestSender,
) -> SyncResult<()> {
let wallet = self.wallet.read().await;
let addresses = wallet.monitored_addresses();
let outpoints = wallet.watched_outpoints();
let addresses = wallet.monitored_addresses().await;
let outpoints = wallet.watched_outpoints().await;
drop(wallet);

if addresses.is_empty() && outpoints.is_empty() {
Expand Down Expand Up @@ -379,7 +379,7 @@ impl<W: WalletInterface> MempoolManager<W> {
drop(state);
if marked {
let mut wallet = self.wallet.write().await;
wallet.process_instant_send_lock(*txid);
wallet.process_instant_send_lock(*txid).await;
}
}

Expand Down
8 changes: 4 additions & 4 deletions dash-spv/src/sync/mempool/sync_manager.rs
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ impl<W: WalletInterface + 'static> SyncManager for MempoolManager<W> {
// shared `SyncManager::run` loop or a `WalletEvent` bridge — complexity
// that isn't justified given the 100ms tick latency is negligible for bloom
// filter rebuilds and the read lock is non-contending.
let current_revision = self.wallet.read().await.monitor_revision();
let current_revision = self.wallet.read().await.monitor_revision().await;
if current_revision != self.last_monitor_revision {
tracing::info!("Wallet monitor revision changed, rebuilding bloom filter");
self.rebuild_filter(requests).await?;
Expand Down Expand Up @@ -621,7 +621,7 @@ mod tests {

let mut mock = MockWallet::new();
mock.set_addresses(vec![addr.clone()]);
let initial_revision = mock.monitor_revision();
let initial_revision = mock.monitor_revision().await;
let wallet = Arc::new(RwLock::new(mock));
let mempool_state = Arc::new(RwLock::new(MempoolState::default()));
let (tx, mut rx) = mpsc::unbounded_channel::<NetworkRequest>();
Expand Down Expand Up @@ -734,7 +734,7 @@ mod tests {

let mut mock = MockWallet::new();
mock.set_addresses(vec![addr]);
let initial_revision = mock.monitor_revision();
let initial_revision = mock.monitor_revision().await;
let wallet = Arc::new(RwLock::new(mock));
let mempool_state = Arc::new(RwLock::new(MempoolState::default()));
let (tx, mut rx) = mpsc::unbounded_channel::<NetworkRequest>();
Expand Down Expand Up @@ -785,7 +785,7 @@ mod tests {
]);
let addr = dashcore::Address::from_script(&script, dashcore::Network::Testnet).unwrap();
mock.set_addresses(vec![addr]);
let initial_revision = mock.monitor_revision();
let initial_revision = mock.monitor_revision().await;
let wallet = Arc::new(RwLock::new(mock));
let mempool_state = Arc::new(RwLock::new(MempoolState::default()));
let (tx_chan, mut rx) = mpsc::unbounded_channel::<NetworkRequest>();
Expand Down
30 changes: 15 additions & 15 deletions key-wallet-ffi/src/address_pool.rs
Original file line number Diff line number Diff line change
Expand Up @@ -696,109 +696,109 @@ pub unsafe extern "C" fn managed_wallet_mark_address_used(
let mut found = false;
// Check all accounts for the address
for account in collection.standard_bip44_accounts.values_mut() {
if account.mark_address_used(&address) {
if account.mark_address_used(&address).0 {
found = true;
break;
}
}
if !found {
for account in collection.standard_bip32_accounts.values_mut() {
if account.mark_address_used(&address) {
if account.mark_address_used(&address).0 {
found = true;
break;
}
}
}
if !found {
for account in collection.coinjoin_accounts.values_mut() {
if account.mark_address_used(&address) {
if account.mark_address_used(&address).0 {
found = true;
break;
}
}
}
if !found {
if let Some(account) = &mut collection.identity_registration {
if account.mark_address_used(&address) {
if account.mark_address_used(&address).0 {
found = true;
}
}
}
if !found {
for account in collection.identity_topup.values_mut() {
if account.mark_address_used(&address) {
if account.mark_address_used(&address).0 {
found = true;
break;
}
}
}
if !found {
if let Some(account) = &mut collection.identity_topup_not_bound {
if account.mark_address_used(&address) {
if account.mark_address_used(&address).0 {
found = true;
}
}
}
if !found {
if let Some(account) = &mut collection.identity_invitation {
if account.mark_address_used(&address) {
if account.mark_address_used(&address).0 {
found = true;
}
}
}
if !found {
if let Some(account) = &mut collection.asset_lock_address_topup {
if account.mark_address_used(&address) {
if account.mark_address_used(&address).0 {
found = true;
}
}
}
if !found {
if let Some(account) = &mut collection.asset_lock_shielded_address_topup {
if account.mark_address_used(&address) {
if account.mark_address_used(&address).0 {
found = true;
}
}
}
if !found {
if let Some(account) = &mut collection.provider_voting_keys {
if account.mark_address_used(&address) {
if account.mark_address_used(&address).0 {
found = true;
}
}
}
if !found {
if let Some(account) = &mut collection.provider_owner_keys {
if account.mark_address_used(&address) {
if account.mark_address_used(&address).0 {
found = true;
}
}
}
if !found {
if let Some(account) = &mut collection.provider_operator_keys {
if account.mark_address_used(&address) {
if account.mark_address_used(&address).0 {
found = true;
}
}
}
if !found {
if let Some(account) = &mut collection.provider_platform_keys {
if account.mark_address_used(&address) {
if account.mark_address_used(&address).0 {
found = true;
}
}
}
if !found {
for account in collection.dashpay_receival_accounts.values_mut() {
if account.mark_address_used(&address) {
if account.mark_address_used(&address).0 {
found = true;
break;
}
}
}
if !found {
for account in collection.dashpay_external_accounts.values_mut() {
if account.mark_address_used(&address) {
if account.mark_address_used(&address).0 {
found = true;
break;
}
Expand Down
2 changes: 1 addition & 1 deletion key-wallet-ffi/src/wallet_manager_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -459,7 +459,7 @@ mod tests {
let manager_ref = &*manager;
manager_ref.runtime.block_on(async {
let mut manager_guard = manager_ref.manager.write().await;
manager_guard.update_synced_height(new_height);
manager_guard.update_synced_height(new_height).await;
});
}

Expand Down
3 changes: 3 additions & 0 deletions key-wallet-manager/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,15 @@ default = []
parallel-filters = ["dep:rayon"]
bincode = ["key-wallet/bincode", "dep:bincode"]
test-utils = ["key-wallet/test-utils"]
bls = ["key-wallet/bls"]
eddsa = ["key-wallet/eddsa"]

[dependencies]
key-wallet = { path = "../key-wallet", default-features = false }
dashcore = { path = "../dash" }
async-trait = "0.1"
tokio = { version = "1", features = ["macros", "rt", "sync"] }
tracing = "0.1"
zeroize = { version = "1.8", features = ["derive"] }
rayon = { version = "1.11", optional = true }
bincode = { version = "2.0.1", optional = true }
Expand Down
Loading
Loading