@@ -32,9 +32,7 @@ use bitcoin::{
32
32
Address , Amount , Network , OutPoint , PrivateKey , Script , SigHashType , SignedAmount , Transaction ,
33
33
TxIn , TxOut , Txid ,
34
34
} ;
35
- use bitcoincore_rpc_json:: {
36
- GetBlockTemplateModes , GetBlockTemplateRules , ScanTxOutRequest ,
37
- } ;
35
+ use bitcoincore_rpc_json:: { GetBlockTemplateModes , GetBlockTemplateRules , ScanTxOutRequest } ;
38
36
39
37
lazy_static ! {
40
38
static ref SECP : secp256k1:: Secp256k1 <secp256k1:: All > = secp256k1:: Secp256k1 :: new( ) ;
@@ -135,7 +133,9 @@ fn main() {
135
133
unsafe { VERSION = cl. version ( ) . unwrap ( ) } ;
136
134
println ! ( "Version: {}" , version( ) ) ;
137
135
138
- cl. create_wallet ( "testwallet" , None , None , None , None ) . unwrap ( ) ;
136
+ test_import_descriptors ( & cl) ;
137
+
138
+ cl. create_wallet ( "testwallet" , None , None , None , None , None ) . unwrap ( ) ;
139
139
140
140
test_get_mining_info ( & cl) ;
141
141
test_get_blockchain_info ( & cl) ;
@@ -907,6 +907,7 @@ fn test_create_wallet(cl: &Client) {
907
907
blank : Option < bool > ,
908
908
passphrase : Option < & ' a str > ,
909
909
avoid_reuse : Option < bool > ,
910
+ descriptors : Option < bool > ,
910
911
}
911
912
912
913
let mut wallet_params = vec ! [
@@ -916,20 +917,23 @@ fn test_create_wallet(cl: &Client) {
916
917
blank: None ,
917
918
passphrase: None ,
918
919
avoid_reuse: None ,
920
+ descriptors: None ,
919
921
} ,
920
922
WalletParams {
921
923
name: wallet_names[ 1 ] ,
922
924
disable_private_keys: Some ( true ) ,
923
925
blank: None ,
924
926
passphrase: None ,
925
927
avoid_reuse: None ,
928
+ descriptors: None ,
926
929
} ,
927
930
WalletParams {
928
931
name: wallet_names[ 2 ] ,
929
932
disable_private_keys: None ,
930
933
blank: Some ( true ) ,
931
934
passphrase: None ,
932
935
avoid_reuse: None ,
936
+ descriptors: None ,
933
937
} ,
934
938
] ;
935
939
@@ -940,13 +944,15 @@ fn test_create_wallet(cl: &Client) {
940
944
blank : None ,
941
945
passphrase : Some ( "pass" ) ,
942
946
avoid_reuse : None ,
947
+ descriptors : None ,
943
948
} ) ;
944
949
wallet_params. push ( WalletParams {
945
950
name : wallet_names[ 4 ] ,
946
951
disable_private_keys : None ,
947
952
blank : None ,
948
953
passphrase : None ,
949
954
avoid_reuse : Some ( true ) ,
955
+ descriptors : None ,
950
956
} ) ;
951
957
}
952
958
@@ -958,6 +964,7 @@ fn test_create_wallet(cl: &Client) {
958
964
wallet_param. blank ,
959
965
wallet_param. passphrase ,
960
966
wallet_param. avoid_reuse ,
967
+ wallet_param. descriptors ,
961
968
)
962
969
. unwrap ( ) ;
963
970
@@ -1000,6 +1007,17 @@ fn test_create_wallet(cl: &Client) {
1000
1007
assert ! ( wallet_list. iter( ) . zip( wallet_names) . all( |( a, b) | a == b) ) ;
1001
1008
}
1002
1009
1010
+ fn test_import_descriptors ( cl : & Client ) {
1011
+ cl. create_wallet ( "testwallet" , Some ( false ) , Some ( true ) , Some ( "" ) , Some ( false ) , Some ( true ) )
1012
+ . unwrap ( ) ;
1013
+
1014
+ let descriptor = "wpkh(tprv8ZgxMBicQKsPeTNzU5evMToRhHA9h3UCxbpzrzjUWUd6TQktkhmY82dQx5f6QaFpSWMzZxKz16xQFGeW7ykPjYuTetU6ep9aFTpAt7jKhPU/44'/0'/0'/0/*)#w2lyh4jx" ;
1015
+ let x = cl. import_descriptors ( descriptor, descriptor) ;
1016
+ x. unwrap ( ) ;
1017
+ cl. get_new_address ( None , Some ( json:: AddressType :: Bech32m ) ) . unwrap ( ) ;
1018
+ cl. unload_wallet ( Some ( "testwallet" ) ) . unwrap ( ) ;
1019
+ }
1020
+
1003
1021
fn test_get_tx_out_set_info ( cl : & Client ) {
1004
1022
cl. get_tx_out_set_info ( ) . unwrap ( ) ;
1005
1023
}
0 commit comments