File tree Expand file tree Collapse file tree 28 files changed +134
-23
lines changed Expand file tree Collapse file tree 28 files changed +134
-23
lines changed Original file line number Diff line number Diff line change @@ -155,6 +155,7 @@ crate::impl_client_v17__import_pubkey!();
155155crate :: impl_client_v17__import_wallet!( ) ;
156156crate :: impl_client_v17__key_pool_refill!( ) ;
157157crate :: impl_client_v17__list_address_groupings!( ) ;
158+ crate :: impl_client_v22__list_descriptors!( ) ;
158159crate :: impl_client_v18__list_received_by_label!( ) ;
159160crate :: impl_client_v17__list_labels!( ) ;
160161crate :: impl_client_v17__list_lock_unspent!( ) ;
Original file line number Diff line number Diff line change 99//!
1010//! See or use the `define_jsonrpc_minreq_client!` macro to define a `Client`.
1111
12+ /// Implements Bitcoin Core JSON-RPC API method `listdescriptors`
13+ #[ macro_export]
14+ macro_rules! impl_client_v22__list_descriptors {
15+ ( ) => {
16+ impl Client {
17+ pub fn list_descriptors( & self ) -> Result <ListDescriptors > {
18+ self . call( "listdescriptors" , & [ ] )
19+ }
20+ }
21+ } ;
22+ }
23+
1224/// Implements Bitcoin Core JSON-RPC API method `loadwallet`
1325#[ macro_export]
1426macro_rules! impl_client_v22__load_wallet {
Original file line number Diff line number Diff line change @@ -156,6 +156,7 @@ crate::impl_client_v17__import_pubkey!();
156156crate :: impl_client_v17__import_wallet!( ) ;
157157crate :: impl_client_v17__key_pool_refill!( ) ;
158158crate :: impl_client_v17__list_address_groupings!( ) ;
159+ crate :: impl_client_v22__list_descriptors!( ) ;
159160crate :: impl_client_v18__list_received_by_label!( ) ;
160161crate :: impl_client_v17__list_labels!( ) ;
161162crate :: impl_client_v17__list_lock_unspent!( ) ;
Original file line number Diff line number Diff line change @@ -153,6 +153,7 @@ crate::impl_client_v17__import_pubkey!();
153153crate :: impl_client_v17__import_wallet!( ) ;
154154crate :: impl_client_v17__key_pool_refill!( ) ;
155155crate :: impl_client_v17__list_address_groupings!( ) ;
156+ crate :: impl_client_v22__list_descriptors!( ) ;
156157crate :: impl_client_v18__list_received_by_label!( ) ;
157158crate :: impl_client_v17__list_labels!( ) ;
158159crate :: impl_client_v17__list_lock_unspent!( ) ;
Original file line number Diff line number Diff line change @@ -155,6 +155,7 @@ crate::impl_client_v17__import_pubkey!();
155155crate :: impl_client_v17__import_wallet!( ) ;
156156crate :: impl_client_v17__key_pool_refill!( ) ;
157157crate :: impl_client_v17__list_address_groupings!( ) ;
158+ crate :: impl_client_v22__list_descriptors!( ) ;
158159crate :: impl_client_v18__list_received_by_label!( ) ;
159160crate :: impl_client_v17__list_labels!( ) ;
160161crate :: impl_client_v17__list_lock_unspent!( ) ;
Original file line number Diff line number Diff line change @@ -159,6 +159,7 @@ crate::impl_client_v17__import_pubkey!();
159159crate :: impl_client_v17__import_wallet!( ) ;
160160crate :: impl_client_v17__key_pool_refill!( ) ;
161161crate :: impl_client_v17__list_address_groupings!( ) ;
162+ crate :: impl_client_v22__list_descriptors!( ) ;
162163crate :: impl_client_v17__list_labels!( ) ;
163164crate :: impl_client_v18__list_received_by_label!( ) ;
164165crate :: impl_client_v17__list_lock_unspent!( ) ;
Original file line number Diff line number Diff line change @@ -155,6 +155,7 @@ crate::impl_client_v17__import_pubkey!();
155155crate :: impl_client_v17__import_wallet!( ) ;
156156crate :: impl_client_v17__key_pool_refill!( ) ;
157157crate :: impl_client_v17__list_address_groupings!( ) ;
158+ crate :: impl_client_v22__list_descriptors!( ) ;
158159crate :: impl_client_v18__list_received_by_label!( ) ;
159160crate :: impl_client_v17__list_labels!( ) ;
160161crate :: impl_client_v17__list_lock_unspent!( ) ;
Original file line number Diff line number Diff line change @@ -157,6 +157,7 @@ crate::impl_client_v17__import_pubkey!();
157157crate :: impl_client_v17__import_wallet!( ) ;
158158crate :: impl_client_v17__key_pool_refill!( ) ;
159159crate :: impl_client_v17__list_address_groupings!( ) ;
160+ crate :: impl_client_v22__list_descriptors!( ) ;
160161crate :: impl_client_v18__list_received_by_label!( ) ;
161162crate :: impl_client_v17__list_labels!( ) ;
162163crate :: impl_client_v17__list_lock_unspent!( ) ;
Original file line number Diff line number Diff line change @@ -157,6 +157,7 @@ crate::impl_client_v17__import_pubkey!();
157157crate :: impl_client_v17__import_wallet!( ) ;
158158crate :: impl_client_v17__key_pool_refill!( ) ;
159159crate :: impl_client_v17__list_address_groupings!( ) ;
160+ crate :: impl_client_v22__list_descriptors!( ) ;
160161crate :: impl_client_v18__list_received_by_label!( ) ;
161162crate :: impl_client_v17__list_labels!( ) ;
162163crate :: impl_client_v17__list_lock_unspent!( ) ;
Original file line number Diff line number Diff line change @@ -495,6 +495,25 @@ fn wallet__import_pubkey() {
495495 let _: ( ) = node. client . import_pubkey ( & pubkey) . expect ( "importpubkey" ) ;
496496}
497497
498+ #[ test]
499+ #[ cfg( not( feature = "v21_and_below" ) ) ]
500+ fn wallet__list_descriptors ( ) {
501+ let node = Node :: with_wallet ( Wallet :: None , & [ ] ) ;
502+ let wallet_name = "desc_wallet" ;
503+
504+ #[ cfg( feature = "v22_and_below" ) ]
505+ node. client . create_wallet_with_descriptors ( wallet_name) . expect ( "create descriptor wallet" ) ;
506+
507+ // v23 onwards uses descriptor wallets by default.
508+ #[ cfg( not( feature = "v22_and_below" ) ) ]
509+ node. client . create_wallet ( wallet_name) . expect ( "create wallet" ) ;
510+
511+ let json: ListDescriptors = node. client . list_descriptors ( ) . expect ( "listdescriptors" ) ;
512+
513+ let has_descriptor = json. descriptors . iter ( ) . any ( |desc_info| desc_info. descriptor . starts_with ( "wpkh(" ) || desc_info. descriptor . starts_with ( "pkh(" ) ) ;
514+ assert ! ( has_descriptor, "No standard descriptors found in listdescriptors result" ) ;
515+ }
516+
498517#[ test]
499518fn wallet__list_unspent__modelled ( ) {
500519 let node = match ( ) {
You can’t perform that action at this time.
0 commit comments