@@ -145,9 +145,7 @@ impl TestClient {
145
145
146
146
let bumped: serde_json:: Value = self . call ( "bumpfee" , & [ txid. to_string ( ) . into ( ) ] ) . unwrap ( ) ;
147
147
let new_txid = Txid :: from_str ( & bumped[ "txid" ] . as_str ( ) . unwrap ( ) . to_string ( ) ) . unwrap ( ) ;
148
-
149
- let monitor_script =
150
- tx. vout [ 0 ] . script_pub_key . addresses . as_ref ( ) . unwrap ( ) [ 0 ] . script_pubkey ( ) ;
148
+ let monitor_script = Script :: from_hex ( & mut tx. vout [ 0 ] . script_pub_key . hex . to_hex ( ) ) . unwrap ( ) ;
151
149
self . wait_for_tx ( new_txid, & monitor_script) ;
152
150
153
151
debug ! ( "Bumped {}, new txid {}" , txid, new_txid) ;
@@ -911,6 +909,53 @@ macro_rules! bdk_blockchain_tests {
911
909
wallet. sync( noop_progress( ) , None ) . unwrap( ) ;
912
910
assert!( wallet. get_balance( ) . unwrap( ) > 0 , "incorrect balance after receiving coinbase" ) ;
913
911
}
912
+
913
+ #[ test]
914
+ fn test_send_to_bech32m_addr( ) {
915
+ use std:: str :: FromStr ;
916
+ use core_rpc:: RpcApi ;
917
+ use core_rpc:: core_rpc_json:: ImportDescriptorRequest ;
918
+
919
+ let ( wallet, descriptors, mut test_client) = init_single_sig( ) ;
920
+
921
+ let wallet_descriptor = "tr(tprv8ZgxMBicQKsPdBtxmEMPnNq58KGusNAimQirKFHqX2yk2D8q1v6pNLiKYVAdzDHy2w3vF4chuGfMvNtzsbTTLVXBcdkCA1rje1JG6oksWv8/86h/1h/0h/0/*)#y283ssmn" ;
922
+ let change_descriptor = "tr(tprv8ZgxMBicQKsPdBtxmEMPnNq58KGusNAimQirKFHqX2yk2D8q1v6pNLiKYVAdzDHy2w3vF4chuGfMvNtzsbTTLVXBcdkCA1rje1JG6oksWv8/86h/1h/0h/1/*)#47zsd9tt" ;
923
+
924
+ test_client. bitcoind. client
925
+ . import_descriptors(
926
+ vec![
927
+ ImportDescriptorRequest :: new( wallet_descriptor, false ) ,
928
+ ImportDescriptorRequest :: new( change_descriptor, false ) ,
929
+ ]
930
+ ) . unwrap( ) ;
931
+
932
+ let node_addr = test_client. get_node_address( Some ( core_rpc:: core_rpc_json:: AddressType :: Bech32m ) ) ;
933
+ assert_eq!( node_addr, bitcoin:: Address :: from_str( "bcrt1pj5y3f0fu4y7g98k4v63j9n0xvj3lmln0cpwhsjzknm6nt0hr0q7qnzwsy9" ) . unwrap( ) ) ;
934
+
935
+ let new_bech32m_addr = test_client. get_new_address( Some ( "test bech32m" ) , Some ( core_rpc:: core_rpc_json:: AddressType :: Bech32m ) ) . unwrap( ) ;
936
+ assert_eq!( new_bech32m_addr, bitcoin:: Address :: from_str( "bcrt1pxa4h86c5gc8x65un8nz546wy7hqxv7wljrv5sxukayh3xwnw23fs80jdf9" ) . unwrap( ) ) ;
937
+
938
+ test_client. receive( testutils! {
939
+ @tx ( ( @external descriptors, 0 ) => 50_000 )
940
+ } ) ;
941
+
942
+ wallet. sync( noop_progress( ) , None ) . unwrap( ) ;
943
+ assert_eq!( wallet. get_balance( ) . unwrap( ) , 50_000 , "incorrect balance" ) ;
944
+
945
+ let mut builder = wallet. build_tx( ) ;
946
+ builder. add_recipient( node_addr. script_pubkey( ) , 25_000 ) ;
947
+ let ( mut psbt, details) = builder. finish( ) . unwrap( ) ;
948
+ let finalized = wallet. sign( & mut psbt, Default :: default ( ) ) . unwrap( ) ;
949
+ assert!( finalized, "Cannot finalize transaction" ) ;
950
+ let tx = psbt. extract_tx( ) ;
951
+ println!( "{}" , bitcoin:: consensus:: encode:: serialize_hex( & tx) ) ;
952
+ wallet. broadcast( tx) . unwrap( ) ;
953
+ wallet. sync( noop_progress( ) , None ) . unwrap( ) ;
954
+ assert_eq!( wallet. get_balance( ) . unwrap( ) , details. received, "incorrect balance after send" ) ;
955
+
956
+ assert_eq!( wallet. list_transactions( false ) . unwrap( ) . len( ) , 2 , "incorrect number of txs" ) ;
957
+ assert_eq!( wallet. list_unspent( ) . unwrap( ) . len( ) , 1 , "incorrect number of unspents" ) ;
958
+ }
914
959
}
915
960
} ;
916
961
0 commit comments