Skip to content

Commit 19a4d0d

Browse files
committed
add test against fixed addresses
To prevent any regression in address computation. Should cover any standard script template combination with every network with or without a blinding key.
1 parent dbeaf61 commit 19a4d0d

File tree

1 file changed

+83
-0
lines changed

1 file changed

+83
-0
lines changed

src/address.rs

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)