]> Untitled Git - bdk/commitdiff
fix(wallet): apply loaded changeset to indexed_graph
authorthunderbiscuit <thunderbiscuit@protonmail.com>
Tue, 19 Dec 2023 21:05:01 +0000 (16:05 -0500)
committerthunderbiscuit <thunderbiscuit@protonmail.com>
Thu, 21 Dec 2023 02:55:22 +0000 (21:55 -0500)
crates/bdk/src/wallet/mod.rs
crates/bdk/tests/wallet.rs

index e945484dd86a5c373baafb65644a58077e1a70cf..873af72b249ac8a2961e6326bf771ee4be09eaa6 100644 (file)
@@ -517,7 +517,9 @@ impl<D> Wallet<D> {
             create_signers(&mut index, &secp, descriptor, change_descriptor, network)
                 .map_err(LoadError::Descriptor)?;
 
-        let indexed_graph = IndexedTxGraph::new(index);
+        let mut indexed_graph = IndexedTxGraph::new(index);
+        indexed_graph.apply_changeset(changeset.indexed_tx_graph);
+
         let persist = Persist::new(db);
 
         Ok(Wallet {
index 4fa399d8625f09e7aa64e0ed84d633dcba8d9c4f..6efb0d7918cfa67f17e016e1d952033b41b4b6e9 100644 (file)
@@ -71,19 +71,26 @@ fn load_recovers_wallet() {
     let file_path = temp_dir.path().join("store.db");
 
     // create new wallet
-    let wallet_keychains = {
+    let wallet_spk_index = {
         let db = bdk_file_store::Store::create_new(DB_MAGIC, &file_path).expect("must create db");
-        let wallet =
-            Wallet::new(get_test_wpkh(), None, db, Network::Testnet).expect("must init wallet");
-        wallet.keychains().clone()
+        let mut wallet = Wallet::new(get_test_tr_single_sig_xprv(), None, db, Network::Testnet)
+            .expect("must init wallet");
+
+        wallet.try_get_address(New).unwrap();
+        wallet.spk_index().clone()
     };
 
     // recover wallet
     {
         let db = bdk_file_store::Store::open(DB_MAGIC, &file_path).expect("must recover db");
-        let wallet = Wallet::load(get_test_wpkh(), None, db).expect("must recover wallet");
+        let wallet =
+            Wallet::load(get_test_tr_single_sig_xprv(), None, db).expect("must recover wallet");
         assert_eq!(wallet.network(), Network::Testnet);
-        assert_eq!(wallet.spk_index().keychains(), &wallet_keychains);
+        assert_eq!(wallet.spk_index().keychains(), wallet_spk_index.keychains());
+        assert_eq!(
+            wallet.spk_index().last_revealed_indices(),
+            wallet_spk_index.last_revealed_indices()
+        );
     }
 }