Skip to content

Commit 1bcfa84

Browse files
committed
Implement scantxoutset method and test
1 parent 6f92d18 commit 1bcfa84

File tree

41 files changed

+1216
-59
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+1216
-59
lines changed

client/src/client_sync/v17/blockchain.rs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,30 @@ macro_rules! impl_client_v17__save_mempool {
318318
};
319319
}
320320

321+
/// Implements Bitcoin Core JSON-RPC API method `scantxoutset`
322+
#[macro_export]
323+
macro_rules! impl_client_v17__scan_tx_out_set {
324+
() => {
325+
impl Client {
326+
pub fn scan_tx_out_set(
327+
&self,
328+
action: ScanAction,
329+
scan_objects: &[ScanObject],
330+
) -> Result<ScanTxOutSet> {
331+
let params = match action {
332+
ScanAction::Start => {
333+
vec![into_json(action)?, into_json(scan_objects)?]
334+
}
335+
ScanAction::Abort | ScanAction::Status => {
336+
vec![into_json(action)?]
337+
}
338+
};
339+
self.call("scantxoutset", &params)
340+
}
341+
}
342+
};
343+
}
344+
321345
/// Implements Bitcoin Core JSON-RPC API method `verifychain`
322346
#[macro_export]
323347
macro_rules! impl_client_v17__verify_chain {

client/src/client_sync/v17/mod.rs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ crate::impl_client_v17__get_tx_out_set_info!();
4848
crate::impl_client_v17__precious_block!();
4949
crate::impl_client_v17__prune_blockchain!();
5050
crate::impl_client_v17__save_mempool!();
51+
crate::impl_client_v17__scan_tx_out_set!();
5152
crate::impl_client_v17__verify_chain!();
5253
crate::impl_client_v17__verify_tx_out_proof!();
5354

@@ -302,3 +303,24 @@ impl Serialize for ImportMultiTimestamp {
302303
}
303304
}
304305
}
306+
307+
/// Args for the `scantxoutset`
308+
///
309+
/// Represents the action for the `scantxoutset` RPC call.
310+
#[derive(Clone, Debug, Deserialize, PartialEq, Serialize)]
311+
#[serde(rename_all = "lowercase")]
312+
pub enum ScanAction {
313+
Start,
314+
Abort,
315+
Status,
316+
}
317+
318+
/// Represents a scan object for scantxoutset (descriptor string or object).
319+
#[derive(Clone, Debug, Deserialize, PartialEq, Serialize)]
320+
#[serde(untagged)]
321+
pub enum ScanObject {
322+
/// Plain descriptor string
323+
Descriptor(String),
324+
/// Object containing descriptor and optional range
325+
WithDesc { desc: String },
326+
}

client/src/client_sync/v18/mod.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ use crate::types::v18::*;
2424
pub use crate::client_sync::{
2525
v17::{
2626
AddNodeCommand, AddressType, ImportMultiRequest, ImportMultiScriptPubKey, ImportMultiTimestamp, Input, Output, SetBanCommand, TemplateRequest,
27-
TemplateRules, WalletCreateFundedPsbtInput,
27+
TemplateRules, WalletCreateFundedPsbtInput,ScanAction, ScanObject,
2828
},
2929
};
3030

@@ -54,6 +54,7 @@ crate::impl_client_v17__get_tx_out_set_info!();
5454
crate::impl_client_v17__precious_block!();
5555
crate::impl_client_v17__prune_blockchain!();
5656
crate::impl_client_v17__save_mempool!();
57+
crate::impl_client_v17__scan_tx_out_set!();
5758
crate::impl_client_v17__verify_chain!();
5859
crate::impl_client_v17__verify_tx_out_proof!();
5960

client/src/client_sync/v19/mod.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ pub use crate::client_sync::{
2121
v17::{
2222
AddNodeCommand, AddressType, ImportMultiRequest, ImportMultiScriptPubKey, ImportMultiTimestamp, Input, Output, SetBanCommand, TemplateRequest,
2323
TemplateRules, WalletCreateFundedPsbtInput,
24+
ScanAction, ScanObject,
2425
},
2526
};
2627

@@ -50,6 +51,7 @@ crate::impl_client_v17__get_tx_out_set_info!();
5051
crate::impl_client_v17__precious_block!();
5152
crate::impl_client_v17__prune_blockchain!();
5253
crate::impl_client_v17__save_mempool!();
54+
crate::impl_client_v17__scan_tx_out_set!();
5355
crate::impl_client_v17__verify_chain!();
5456
crate::impl_client_v17__verify_tx_out_proof!();
5557

client/src/client_sync/v20/mod.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ use crate::types::v20::*;
1919
pub use crate::client_sync::{
2020
v17::{
2121
AddressType, AddNodeCommand, ImportMultiRequest, ImportMultiScriptPubKey, ImportMultiTimestamp, Input, Output, SetBanCommand, TemplateRequest, TemplateRules,
22-
WalletCreateFundedPsbtInput,
22+
WalletCreateFundedPsbtInput, ScanAction, ScanObject,
2323
},
2424
};
2525

@@ -49,6 +49,7 @@ crate::impl_client_v17__get_tx_out_set_info!();
4949
crate::impl_client_v17__precious_block!();
5050
crate::impl_client_v17__prune_blockchain!();
5151
crate::impl_client_v17__save_mempool!();
52+
crate::impl_client_v17__scan_tx_out_set!();
5253
crate::impl_client_v17__verify_chain!();
5354
crate::impl_client_v17__verify_tx_out_proof!();
5455

client/src/client_sync/v21/mod.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ use crate::types::v21::*;
2222
pub use crate::client_sync::{
2323
v17::{
2424
AddNodeCommand, AddressType, ImportMultiRequest, ImportMultiScriptPubKey, ImportMultiTimestamp, Input, Output, SetBanCommand, TemplateRequest,
25-
TemplateRules, WalletCreateFundedPsbtInput,
25+
TemplateRules, WalletCreateFundedPsbtInput,ScanAction, ScanObject,
2626
},
2727
};
2828

@@ -52,6 +52,7 @@ crate::impl_client_v17__get_tx_out_set_info!();
5252
crate::impl_client_v17__precious_block!();
5353
crate::impl_client_v17__prune_blockchain!();
5454
crate::impl_client_v17__save_mempool!();
55+
crate::impl_client_v17__scan_tx_out_set!();
5556
crate::impl_client_v17__verify_chain!();
5657
crate::impl_client_v17__verify_tx_out_proof!();
5758

client/src/client_sync/v22/mod.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ use crate::types::v22::*;
1919
pub use crate::client_sync::{
2020
v17::{
2121
AddNodeCommand, AddressType, ImportMultiRequest, ImportMultiScriptPubKey, ImportMultiTimestamp, Input, Output, SetBanCommand, TemplateRequest,
22-
TemplateRules, WalletCreateFundedPsbtInput,
22+
TemplateRules, WalletCreateFundedPsbtInput, ScanAction, ScanObject,
2323
},
2424
v21::ImportDescriptorsRequest,
2525
};
@@ -50,6 +50,7 @@ crate::impl_client_v17__get_tx_out_set_info!();
5050
crate::impl_client_v17__precious_block!();
5151
crate::impl_client_v17__prune_blockchain!();
5252
crate::impl_client_v17__save_mempool!();
53+
crate::impl_client_v17__scan_tx_out_set!();
5354
crate::impl_client_v17__verify_chain!();
5455
crate::impl_client_v17__verify_tx_out_proof!();
5556

client/src/client_sync/v23/mod.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ use crate::types::v23::*;
2121
pub use crate::client_sync::{
2222
v17::{
2323
AddNodeCommand, ImportMultiRequest, ImportMultiScriptPubKey, ImportMultiTimestamp, Input, Output, SetBanCommand, TemplateRequest, TemplateRules,
24-
WalletCreateFundedPsbtInput,
24+
WalletCreateFundedPsbtInput, ScanAction, ScanObject,
2525
},
2626
v21::ImportDescriptorsRequest,
2727
};
@@ -52,6 +52,7 @@ crate::impl_client_v17__get_tx_out_set_info!();
5252
crate::impl_client_v17__precious_block!();
5353
crate::impl_client_v17__prune_blockchain!();
5454
crate::impl_client_v23__save_mempool!();
55+
crate::impl_client_v17__scan_tx_out_set!();
5556
crate::impl_client_v17__verify_chain!();
5657
crate::impl_client_v17__verify_tx_out_proof!();
5758

client/src/client_sync/v24/mod.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ use crate::types::v24::*;
1717
pub use crate::client_sync::{
1818
v17::{
1919
AddNodeCommand, ImportMultiRequest, ImportMultiScriptPubKey, ImportMultiTimestamp, Input, Output, SetBanCommand, TemplateRequest, TemplateRules,
20-
WalletCreateFundedPsbtInput,
20+
WalletCreateFundedPsbtInput, ScanAction, ScanObject,
2121
},
2222
v21::ImportDescriptorsRequest,
2323
v23::AddressType,
@@ -49,6 +49,7 @@ crate::impl_client_v17__get_tx_out_set_info!();
4949
crate::impl_client_v17__precious_block!();
5050
crate::impl_client_v17__prune_blockchain!();
5151
crate::impl_client_v23__save_mempool!();
52+
crate::impl_client_v17__scan_tx_out_set!();
5253
crate::impl_client_v17__verify_chain!();
5354
crate::impl_client_v17__verify_tx_out_proof!();
5455

client/src/client_sync/v25/mod.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ use crate::types::v25::*;
1919
pub use crate::client_sync::{
2020
v17::{
2121
AddNodeCommand, ImportMultiRequest, ImportMultiScriptPubKey, ImportMultiTimestamp, Input, Output, SetBanCommand, TemplateRequest, TemplateRules,
22-
WalletCreateFundedPsbtInput,
22+
WalletCreateFundedPsbtInput, ScanAction, ScanObject,
2323
},
2424
v21::ImportDescriptorsRequest,
2525
v23::AddressType,
@@ -51,6 +51,7 @@ crate::impl_client_v17__get_tx_out_set_info!();
5151
crate::impl_client_v17__precious_block!();
5252
crate::impl_client_v17__prune_blockchain!();
5353
crate::impl_client_v23__save_mempool!();
54+
crate::impl_client_v17__scan_tx_out_set!();
5455
crate::impl_client_v17__verify_chain!();
5556
crate::impl_client_v17__verify_tx_out_proof!();
5657

0 commit comments

Comments
 (0)