Skip to content

Commit d2fc5c5

Browse files
committed
Merge #192: add test against fixed addresses
19a4d0d add test against fixed addresses (Riccardo Casatta) Pull request description: To prevent any regression in address computation. Should cover any standard script template combination with every network with or without a blinding key. Tested also on rust-elements v0.23.0 https://github.com/RCasatta/rust-elements/tree/test_fixed_addresses_023 related #188 ACKs for top commit: LeoComandini: ACK 19a4d0d, tested locally, run tests for both master and 0.23 branch, checked diff in `src/address.rs` between the 2 branches apoelstra: ACK 19a4d0d Tree-SHA512: a9705e38549cb5f5e90c57d64a208c7ad0bf083710fb8c550591ceb23953b567eec096741e91374702b430846fe7c69c6232ad312ba29d9e7afecfb6f6b25b20
2 parents 4c1fcf3 + 19a4d0d commit d2fc5c5

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)