@@ -103,7 +103,7 @@ use bitcoin::hashes::Hash;
103103use bitcoin:: network:: constants:: Network ;
104104use bitcoin:: secp256k1:: { KeyPair , PublicKey , Secp256k1 , self } ;
105105use bitcoin:: secp256k1:: schnorr:: Signature ;
106- use bitcoin:: address:: { Address , Payload , WitnessVersion } ;
106+ use bitcoin:: address:: { Address , Payload , WitnessProgram , WitnessVersion } ;
107107use bitcoin:: key:: TweakedPublicKey ;
108108use core:: convert:: { AsRef , Infallible , TryFrom } ;
109109use core:: time:: Duration ;
@@ -930,15 +930,12 @@ impl InvoiceContents {
930930 return None ;
931931 }
932932
933- let address = Address {
934- payload : Payload :: WitnessProgram {
935- version,
936- program : program. clone ( ) ,
937- } ,
938- network,
933+ let witness_program = match WitnessProgram :: new ( version, program. clone ( ) ) {
934+ Ok ( witness_program) => witness_program,
935+ Err ( _) => return None ,
939936 } ;
940-
941- if !address. is_standard ( ) && version == WitnessVersion :: V0 {
937+ let address = Address :: new ( network , Payload :: WitnessProgram ( witness_program ) ) ;
938+ if !address. is_spend_standard ( ) && version == WitnessVersion :: V0 {
942939 return None ;
943940 }
944941
@@ -1309,7 +1306,7 @@ mod tests {
13091306 use bitcoin:: hashes:: Hash ;
13101307 use bitcoin:: network:: constants:: Network ;
13111308 use bitcoin:: secp256k1:: { Message , Secp256k1 , XOnlyPublicKey , self } ;
1312- use bitcoin:: address:: { Address , Payload , WitnessVersion } ;
1309+ use bitcoin:: address:: { Address , Payload , WitnessProgram , WitnessVersion } ;
13131310 use bitcoin:: key:: TweakedPublicKey ;
13141311 use core:: convert:: TryFrom ;
13151312 use core:: time:: Duration ;
@@ -1837,7 +1834,7 @@ mod tests {
18371834 Some ( & vec![
18381835 FallbackAddress {
18391836 version: WitnessVersion :: V0 . to_num( ) ,
1840- program: Vec :: from( script. wscript_hash( ) ) ,
1837+ program: Vec :: from( script. wscript_hash( ) . to_byte_array ( ) ) ,
18411838 } ,
18421839 FallbackAddress {
18431840 version: WitnessVersion :: V0 . to_num( ) ,
@@ -2129,26 +2126,16 @@ mod tests {
21292126
21302127 match Bolt12Invoice :: try_from ( buffer) {
21312128 Ok ( invoice) => {
2129+ let v1_witness_program = WitnessProgram :: new ( WitnessVersion :: V1 , vec ! [ 0u8 ; 33 ] ) . unwrap ( ) ;
2130+ let v2_witness_program = WitnessProgram :: new ( WitnessVersion :: V2 , vec ! [ 0u8 ; 40 ] ) . unwrap ( ) ;
21322131 assert_eq ! (
21332132 invoice. fallbacks( ) ,
21342133 vec![
21352134 Address :: p2wsh( & script, Network :: Bitcoin ) ,
21362135 Address :: p2wpkh( & pubkey, Network :: Bitcoin ) . unwrap( ) ,
21372136 Address :: p2tr_tweaked( tweaked_pubkey, Network :: Bitcoin ) ,
2138- Address {
2139- payload: Payload :: WitnessProgram {
2140- version: WitnessVersion :: V1 ,
2141- program: vec![ 0u8 ; 33 ] ,
2142- } ,
2143- network: Network :: Bitcoin ,
2144- } ,
2145- Address {
2146- payload: Payload :: WitnessProgram {
2147- version: WitnessVersion :: V2 ,
2148- program: vec![ 0u8 ; 40 ] ,
2149- } ,
2150- network: Network :: Bitcoin ,
2151- } ,
2137+ Address :: new( Network :: Bitcoin , Payload :: WitnessProgram ( v1_witness_program) ) ,
2138+ Address :: new( Network :: Bitcoin , Payload :: WitnessProgram ( v2_witness_program) ) ,
21522139 ] ,
21532140 ) ;
21542141 } ,
0 commit comments