diff --git a/client/src/client_sync/v17/mod.rs b/client/src/client_sync/v17/mod.rs index 33020dc9..8b9b63b4 100644 --- a/client/src/client_sync/v17/mod.rs +++ b/client/src/client_sync/v17/mod.rs @@ -144,6 +144,7 @@ crate::impl_client_v17__list_unspent!(); crate::impl_client_v17__list_wallets!(); crate::impl_client_v17__load_wallet!(); crate::impl_client_v17__lock_unspent!(); +crate::impl_client_v17__remove_pruned_funds!(); crate::impl_client_v17__rescan_blockchain!(); crate::impl_client_v17__send_many!(); crate::impl_client_v17__send_to_address!(); diff --git a/client/src/client_sync/v17/wallet.rs b/client/src/client_sync/v17/wallet.rs index df65c0fb..94e2c31b 100644 --- a/client/src/client_sync/v17/wallet.rs +++ b/client/src/client_sync/v17/wallet.rs @@ -515,6 +515,18 @@ macro_rules! impl_client_v17__lock_unspent { }; } +/// Implements Bitcoin Core JSON-RPC API method `removeprunedfunds`. +#[macro_export] +macro_rules! impl_client_v17__remove_pruned_funds { + () => { + impl Client { + pub fn remove_pruned_funds(&self, txid: Txid) -> Result<()> { + self.call("removeprunedfunds", &[into_json(txid)?]) + } + } + }; +} + /// Implements Bitcoin Core JSON-RPC API method `rescanblockchain`. #[macro_export] macro_rules! impl_client_v17__rescan_blockchain { diff --git a/client/src/client_sync/v18/mod.rs b/client/src/client_sync/v18/mod.rs index d3360b65..79c9ab90 100644 --- a/client/src/client_sync/v18/mod.rs +++ b/client/src/client_sync/v18/mod.rs @@ -161,6 +161,7 @@ crate::impl_client_v17__list_wallets!(); crate::impl_client_v18__list_wallet_dir!(); crate::impl_client_v17__load_wallet!(); crate::impl_client_v17__lock_unspent!(); +crate::impl_client_v17__remove_pruned_funds!(); crate::impl_client_v17__rescan_blockchain!(); crate::impl_client_v17__send_many!(); crate::impl_client_v17__send_to_address!(); diff --git a/client/src/client_sync/v19/mod.rs b/client/src/client_sync/v19/mod.rs index 0428e18a..251ea3fe 100644 --- a/client/src/client_sync/v19/mod.rs +++ b/client/src/client_sync/v19/mod.rs @@ -157,6 +157,7 @@ crate::impl_client_v18__list_wallet_dir!(); crate::impl_client_v17__list_wallets!(); crate::impl_client_v17__load_wallet!(); crate::impl_client_v17__lock_unspent!(); +crate::impl_client_v17__remove_pruned_funds!(); crate::impl_client_v17__rescan_blockchain!(); crate::impl_client_v17__send_many!(); crate::impl_client_v17__send_to_address!(); diff --git a/client/src/client_sync/v20/mod.rs b/client/src/client_sync/v20/mod.rs index 959f5bef..824fa713 100644 --- a/client/src/client_sync/v20/mod.rs +++ b/client/src/client_sync/v20/mod.rs @@ -154,6 +154,7 @@ crate::impl_client_v18__list_wallet_dir!(); crate::impl_client_v17__list_wallets!(); crate::impl_client_v17__load_wallet!(); crate::impl_client_v17__lock_unspent!(); +crate::impl_client_v17__remove_pruned_funds!(); crate::impl_client_v17__rescan_blockchain!(); crate::impl_client_v17__send_many!(); crate::impl_client_v17__send_to_address!(); diff --git a/client/src/client_sync/v21/mod.rs b/client/src/client_sync/v21/mod.rs index 6e1b4a40..85702a54 100644 --- a/client/src/client_sync/v21/mod.rs +++ b/client/src/client_sync/v21/mod.rs @@ -156,6 +156,7 @@ crate::impl_client_v18__list_wallet_dir!(); crate::impl_client_v17__list_wallets!(); crate::impl_client_v17__load_wallet!(); crate::impl_client_v17__lock_unspent!(); +crate::impl_client_v17__remove_pruned_funds!(); crate::impl_client_v17__rescan_blockchain!(); crate::impl_client_v17__send_many!(); crate::impl_client_v17__send_to_address!(); diff --git a/client/src/client_sync/v22/mod.rs b/client/src/client_sync/v22/mod.rs index 6bedbe86..86207895 100644 --- a/client/src/client_sync/v22/mod.rs +++ b/client/src/client_sync/v22/mod.rs @@ -156,6 +156,7 @@ crate::impl_client_v18__list_wallet_dir!(); crate::impl_client_v17__list_wallets!(); crate::impl_client_v17__load_wallet!(); crate::impl_client_v17__lock_unspent!(); +crate::impl_client_v17__remove_pruned_funds!(); crate::impl_client_v17__rescan_blockchain!(); crate::impl_client_v17__send_many!(); crate::impl_client_v17__send_to_address!(); diff --git a/client/src/client_sync/v23/mod.rs b/client/src/client_sync/v23/mod.rs index 8def26fe..320079f0 100644 --- a/client/src/client_sync/v23/mod.rs +++ b/client/src/client_sync/v23/mod.rs @@ -158,6 +158,7 @@ crate::impl_client_v18__list_wallet_dir!(); crate::impl_client_v17__list_wallets!(); crate::impl_client_v22__load_wallet!(); crate::impl_client_v17__lock_unspent!(); +crate::impl_client_v17__remove_pruned_funds!(); crate::impl_client_v17__rescan_blockchain!(); crate::impl_client_v17__send_many!(); crate::impl_client_v17__send_to_address!(); diff --git a/client/src/client_sync/v24/mod.rs b/client/src/client_sync/v24/mod.rs index 935e450c..fbcf88fa 100644 --- a/client/src/client_sync/v24/mod.rs +++ b/client/src/client_sync/v24/mod.rs @@ -155,6 +155,7 @@ crate::impl_client_v18__list_wallet_dir!(); crate::impl_client_v17__list_wallets!(); crate::impl_client_v22__load_wallet!(); crate::impl_client_v17__lock_unspent!(); +crate::impl_client_v17__remove_pruned_funds!(); crate::impl_client_v17__rescan_blockchain!(); crate::impl_client_v17__send_many!(); crate::impl_client_v17__send_to_address!(); diff --git a/client/src/client_sync/v25/mod.rs b/client/src/client_sync/v25/mod.rs index cbd04598..a47be0ca 100644 --- a/client/src/client_sync/v25/mod.rs +++ b/client/src/client_sync/v25/mod.rs @@ -155,6 +155,7 @@ crate::impl_client_v18__list_wallet_dir!(); crate::impl_client_v17__list_wallets!(); crate::impl_client_v22__load_wallet!(); crate::impl_client_v17__lock_unspent!(); +crate::impl_client_v17__remove_pruned_funds!(); crate::impl_client_v17__rescan_blockchain!(); crate::impl_client_v17__send_many!(); crate::impl_client_v17__send_to_address!(); diff --git a/client/src/client_sync/v26/mod.rs b/client/src/client_sync/v26/mod.rs index ec06c55d..fd7dac40 100644 --- a/client/src/client_sync/v26/mod.rs +++ b/client/src/client_sync/v26/mod.rs @@ -161,6 +161,7 @@ crate::impl_client_v18__list_wallet_dir!(); crate::impl_client_v17__list_wallets!(); crate::impl_client_v22__load_wallet!(); crate::impl_client_v17__lock_unspent!(); +crate::impl_client_v17__remove_pruned_funds!(); crate::impl_client_v17__rescan_blockchain!(); crate::impl_client_v17__send_many!(); crate::impl_client_v17__send_to_address!(); diff --git a/client/src/client_sync/v27/mod.rs b/client/src/client_sync/v27/mod.rs index 1d67076f..af666667 100644 --- a/client/src/client_sync/v27/mod.rs +++ b/client/src/client_sync/v27/mod.rs @@ -157,6 +157,7 @@ crate::impl_client_v18__list_wallet_dir!(); crate::impl_client_v17__list_wallets!(); crate::impl_client_v22__load_wallet!(); crate::impl_client_v17__lock_unspent!(); +crate::impl_client_v17__remove_pruned_funds!(); crate::impl_client_v17__rescan_blockchain!(); crate::impl_client_v17__send_many!(); crate::impl_client_v17__send_to_address!(); diff --git a/client/src/client_sync/v28/mod.rs b/client/src/client_sync/v28/mod.rs index 01151524..f3750bfb 100644 --- a/client/src/client_sync/v28/mod.rs +++ b/client/src/client_sync/v28/mod.rs @@ -159,6 +159,7 @@ crate::impl_client_v18__list_wallet_dir!(); crate::impl_client_v17__list_wallets!(); crate::impl_client_v22__load_wallet!(); crate::impl_client_v17__lock_unspent!(); +crate::impl_client_v17__remove_pruned_funds!(); crate::impl_client_v17__rescan_blockchain!(); crate::impl_client_v17__send_many!(); crate::impl_client_v17__send_to_address!(); diff --git a/client/src/client_sync/v29/mod.rs b/client/src/client_sync/v29/mod.rs index 141e5b68..7f41dc94 100644 --- a/client/src/client_sync/v29/mod.rs +++ b/client/src/client_sync/v29/mod.rs @@ -159,6 +159,7 @@ crate::impl_client_v18__list_wallet_dir!(); crate::impl_client_v17__list_wallets!(); crate::impl_client_v22__load_wallet!(); crate::impl_client_v17__lock_unspent!(); +crate::impl_client_v17__remove_pruned_funds!(); crate::impl_client_v17__rescan_blockchain!(); crate::impl_client_v17__send_many!(); crate::impl_client_v17__send_to_address!(); diff --git a/integration_test/tests/wallet.rs b/integration_test/tests/wallet.rs index d309c4ff..cf198901 100644 --- a/integration_test/tests/wallet.rs +++ b/integration_test/tests/wallet.rs @@ -521,6 +521,22 @@ fn wallet__lock_unspent() { assert!(json.0); } +#[test] +fn wallet__remove_pruned_funds() { + let node = Node::with_wallet(Wallet::Default, &["-txindex"]); + node.fund_wallet(); + + let (_, tx) = node.create_mined_transaction(); + let txid = tx.compute_txid(); + + let raw_tx = node.client.get_raw_transaction(txid).expect("getrawtransaction"); + let tx_out_proof = node.client.get_tx_out_proof(&[txid]).expect("gettxoutproof"); + + let _: () = node.client.import_pruned_funds(&raw_tx.0, &tx_out_proof).expect("importprunedfunds"); + + let _: () = node.client.remove_pruned_funds(txid).expect("removeprunedfunds"); +} + // This is tested in raw_transactions.rs `create_sign_send()`. #[test] fn wallet__sign_raw_transaction_with_wallet__modelled() {}