@@ -878,4 +878,87 @@ mod test {
878878 "base58 error: invalid base58 character 0x30" ,
879879 ) ;
880880 }
881+
882+
883+ #[ test]
884+ fn test_fixed_addresses ( ) {
885+ let pk = bitcoin:: PublicKey :: from_str ( "0212bf0ea45b733dfde8ecb5e896306c4165c666c99fc5d1ab887f71393a975cea" )
886+ . unwrap ( ) ;
887+ let script = Script :: default ( ) ;
888+ let secp = Secp256k1 :: verification_only ( ) ;
889+ let internal_key = UntweakedPublicKey :: from_str ( "93c7378d96518a75448821c4f7c8f4bae7ce60f804d03d1f0628dd5dd0f5de51" ) . unwrap ( ) ;
890+ let tap_node_hash = TapNodeHash :: all_zeros ( ) ;
891+
892+ let mut expected = IntoIterator :: into_iter ( [
893+ "2dszRCFv8Ub4ytKo1Q1vXXGgSx7mekNDwSJ" ,
894+ "XToMocNywBYNSiXUe5xvoa2naAps9Ek1hq" ,
895+ "ert1qew0l0emv7449u7hqgc8utzdzryhse79yhq2sxv" ,
896+ "XZF6k8S6eoVxXMB4NpWjh2s7LjQUP7pw2R" ,
897+ "ert1quwcvgs5clswpfxhm7nyfjmaeysn6us0yvjdexn9yjkv3k7zjhp2szaqlpq" ,
898+ "ert1p8qs0qcn25l2y6yvtc5t95rr8w9pndcj64c8rkutnvkcvdp6gh02q2cqvj9" ,
899+ "ert1pxrrurkg8j8pve97lffvv2y67cf7ux478h077c87qacqzhue7390sqkjp06" ,
900+ "CTEkC79sYAvWNcxd8iTYnYo226FqRBbzBcMppq7L2dA8jVXJWoo1kKWB3UBLY6gBjiXf87ibs8c6mQyZ" ,
901+ "AzpjUhKMLJi9y2oLt3ZdM3BP9nHdLPJfGMVxRBaRc2gDpeNqPMVpShTszJW7bX42vT2KoejYy8GtbcxH" ,
902+ "el1qqgft7r4ytdenml0gaj67393sd3qkt3nxex0ut5dt3plhzwf6jaww4jul7lnkeat2teawq3s0cky6yxf0pnu2gmz9ej9kyq5yc" ,
903+ "AzpjUhKMLJi9y2oLt3ZdM3BP9nHdLPJfGMVxRBaRc2gDpeNvq6SLVpBVwtakF6nmUFundyW7YjUdVkpr" ,
904+ "el1qqgft7r4ytdenml0gaj67393sd3qkt3nxex0ut5dt3plhzwf6jaww4casc3pf3lquzjd0haxgn9hmjfp84eq7geymjdx2f9verdu99wz4h79u87cnxdzq" ,
905+ "el1pqgft7r4ytdenml0gaj67393sd3qkt3nxex0ut5dt3plhzwf6jaww5wpq7p3x4f75f5gch3gktgxxwu2rxm394tsw8dchxedsc6r53w75cj24fq2u2ls5" ,
906+ "el1pqgft7r4ytdenml0gaj67393sd3qkt3nxex0ut5dt3plhzwf6jaww5vx8c8vs0ywzejta7jjcc5f4asnacdtu0wlaas0upmsq90enaz2lhjd0k0q7qn4h" ,
907+ "QFq3vvrr6Ub2KAyb3LdoCxEQvKukB6nN9i" ,
908+ "GydeMhecNgrq17WMkyyTM4ETv1YubMVtLN" ,
909+ "ex1qew0l0emv7449u7hqgc8utzdzryhse79ydjqgek" ,
910+ "H55PJDhj6JpR5k9wViXGEX4nga8WmhXtnD" ,
911+ "ex1quwcvgs5clswpfxhm7nyfjmaeysn6us0yvjdexn9yjkv3k7zjhp2s4sla8h" ,
912+ "ex1p8qs0qcn25l2y6yvtc5t95rr8w9pndcj64c8rkutnvkcvdp6gh02qa4lw5j" ,
913+ "ex1pxrrurkg8j8pve97lffvv2y67cf7ux478h077c87qacqzhue7390shmdrfd" ,
914+ "VTptY6cqJbusNpL5xvo8VL38nLX9PGDjfYQfqhu9EaA7FtuidkWyQzMHY9jzZrpBcCXT437vM6V4N8kh" ,
915+ "VJL64Ep3rcngP4cScRme15q9i8MCNiuqWeiG3YbtduUidVyorg7nRsgmmF714QtH3sNpWB2CqsVVciQh" ,
916+ "lq1qqgft7r4ytdenml0gaj67393sd3qkt3nxex0ut5dt3plhzwf6jaww4jul7lnkeat2teawq3s0cky6yxf0pnu2gs2923tg58xcz" ,
917+ "VJL64Ep3rcngP4cScRme15q9i8MCNiuqWeiG3YbtduUidVyuJR4JUzQPiqBdhzd1bgGHLVnmRUjfHc68" ,
918+ "lq1qqgft7r4ytdenml0gaj67393sd3qkt3nxex0ut5dt3plhzwf6jaww4casc3pf3lquzjd0haxgn9hmjfp84eq7geymjdx2f9verdu99wz47jmkmgmr9a4s" ,
919+ "lq1pqgft7r4ytdenml0gaj67393sd3qkt3nxex0ut5dt3plhzwf6jaww5wpq7p3x4f75f5gch3gktgxxwu2rxm394tsw8dchxedsc6r53w75375l4kfvf08y" ,
920+ "lq1pqgft7r4ytdenml0gaj67393sd3qkt3nxex0ut5dt3plhzwf6jaww5vx8c8vs0ywzejta7jjcc5f4asnacdtu0wlaas0upmsq90enaz2l77n92erwrrz8" ,
921+ "FojPFeboBgrd953mXXe72KWthjVwHWozqN" ,
922+ "8vsafXgrB5bJeSidGbK5eYnjKvQ3RiB4BB" ,
923+ "tex1qew0l0emv7449u7hqgc8utzdzryhse79yh5jp9a" ,
924+ "92KKc3jxthYtj5ND1KrtY1d46UyeWV6XbP" ,
925+ "tex1quwcvgs5clswpfxhm7nyfjmaeysn6us0yvjdexn9yjkv3k7zjhp2s5fd6kc" ,
926+ "tex1p8qs0qcn25l2y6yvtc5t95rr8w9pndcj64c8rkutnvkcvdp6gh02quvdf9a" ,
927+ "tex1pxrrurkg8j8pve97lffvv2y67cf7ux478h077c87qacqzhue7390skzlycz" ,
928+ "vtS71VhcpFt978sha5d1L2gCzp3UL5kXacRpb3N4GTW5MwvBzz5HwxYyB8Pns4yM2dd2osmQkHSkp88u" ,
929+ "vjTuLJ76nGi8PUopBVmGK8bLKPfBpaBWf6wKfn8z9Vdz6ubVhpvmMr6TK2RcqAYiujN1g1uwg8kejrM3" ,
930+ "tlq1qqgft7r4ytdenml0gaj67393sd3qkt3nxex0ut5dt3plhzwf6jaww4jul7lnkeat2teawq3s0cky6yxf0pnu2gq8g2kuxfj8ft" ,
931+ "vjTuLJ76nGi8PUopBVmGK8bLKPfBpaBWf6wKfn8z9Vdz6ubb9ZsHQxp5GcWFUkHTTYFUWLgWFk1DN5Fe" ,
932+ "tlq1qqgft7r4ytdenml0gaj67393sd3qkt3nxex0ut5dt3plhzwf6jaww4casc3pf3lquzjd0haxgn9hmjfp84eq7geymjdx2f9verdu99wz4e6vcdfcyp5m8" ,
933+ "tlq1pqgft7r4ytdenml0gaj67393sd3qkt3nxex0ut5dt3plhzwf6jaww5wpq7p3x4f75f5gch3gktgxxwu2rxm394tsw8dchxedsc6r53w75kkr3rh2tdxfn" ,
934+ "tlq1pqgft7r4ytdenml0gaj67393sd3qkt3nxex0ut5dt3plhzwf6jaww5vx8c8vs0ywzejta7jjcc5f4asnacdtu0wlaas0upmsq90enaz2lekytucqf82vs" ,
935+ ] ) ;
936+
937+ for params in [ & AddressParams :: ELEMENTS , & AddressParams :: LIQUID , & AddressParams :: LIQUID_TESTNET ] {
938+ for blinder in [ None , Some ( pk. inner ) ] {
939+
940+ let addr = Address :: p2pkh ( & pk, blinder, params) ;
941+ assert_eq ! ( & addr. to_string( ) , expected. next( ) . unwrap( ) ) ;
942+
943+ let addr = Address :: p2sh ( & script, blinder, params) ;
944+ assert_eq ! ( & addr. to_string( ) , expected. next( ) . unwrap( ) ) ;
945+
946+ let addr = Address :: p2wpkh ( & pk, blinder, params) ;
947+ assert_eq ! ( & addr. to_string( ) , expected. next( ) . unwrap( ) ) ;
948+
949+ let addr = Address :: p2shwpkh ( & pk, blinder, params) ;
950+ assert_eq ! ( & addr. to_string( ) , expected. next( ) . unwrap( ) ) ;
951+
952+ let addr = Address :: p2wsh ( & script, blinder, params) ;
953+ assert_eq ! ( & addr. to_string( ) , expected. next( ) . unwrap( ) ) ;
954+
955+ let addr = Address :: p2tr ( & secp, internal_key, None , blinder, params) ;
956+ assert_eq ! ( & addr. to_string( ) , expected. next( ) . unwrap( ) ) ;
957+
958+ let addr = Address :: p2tr ( & secp, internal_key, Some ( tap_node_hash) , blinder, params) ;
959+ assert_eq ! ( & addr. to_string( ) , expected. next( ) . unwrap( ) ) ;
960+ }
961+ }
962+
963+ }
881964}
0 commit comments