Skip to content

Commit c09030b

Browse files
ivanleletomt1664
authored andcommitted
Update BIP341 test vectors and enable checks for expected script outputs
1 parent e9edb78 commit c09030b

2 files changed

Lines changed: 50 additions & 51 deletions

File tree

src/test/data/bip341_wallet_vectors.json

Lines changed: 43 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@
99
"intermediary": {
1010
"merkleRoot": null,
1111
"tweak": "a42a817e8bb316e03e9d36f5f2a69452da4699e1222a35e21e71b945664625e7",
12-
"tweakedPubkey": "53a1f6e454df1aa2776a2814a721372d6258050de330b3c6d10ee8f4e0dda343"
12+
"tweakedPubkey": "3ce74e4e5c292c1fbf94eaaf2ec64fb4700e28250070bfd5704867ee31e30420"
1313
},
1414
"expected": {
15-
"scriptPubKey": "512053a1f6e454df1aa2776a2814a721372d6258050de330b3c6d10ee8f4e0dda343",
16-
"bip350Address": "bc1p2wsldez5mud2yam29q22wgfh9439spgduvct83k3pm50fcxa5dps59h4z5"
15+
"scriptPubKey": "51203ce74e4e5c292c1fbf94eaaf2ec64fb4700e28250070bfd5704867ee31e30420",
16+
"bip350Address": "bc1p8nn5unju9ykpl0u5a2hja3j0k3cqu2p9qpctl4tsfpn7uv0rqssqx5z3cf"
1717
}
1818
},
1919
{
@@ -29,13 +29,13 @@
2929
"leafHashes": [
3030
"5b75adecf53548f3ec6ad7d78383bf84cc57b55a3127c72b9a2481752dd88b21"
3131
],
32-
"merkleRoot": "5b75adecf53548f3ec6ad7d78383bf84cc57b55a3127c72b9a2481752dd88b21",
33-
"tweak": "5f5e36b2e18ae08a97db2a03b32d801b904f1f2542f899e979f200fda2196381",
34-
"tweakedPubkey": "147c9c57132f6e7ecddba9800bb0c4449251c92a1e60371ee77557b6620f3ea3"
32+
"merkleRoot": "a24918646b6b0ba80fee8ced329493103182c886ba737a1d3da69fd8e8cb3cf3",
33+
"tweak": "ce08db99c02d29ccebcf4b7b4b7d88111a5f1eaa23a1216340876338f26976d2",
34+
"tweakedPubkey": "f8c9791817c6781858c5e7c8314cd36d2b0c22b0c138e756bfe3a6fd3e39bc00"
3535
},
3636
"expected": {
37-
"scriptPubKey": "5120147c9c57132f6e7ecddba9800bb0c4449251c92a1e60371ee77557b6620f3ea3",
38-
"bip350Address": "bc1pz37fc4cn9ah8anwm4xqqhvxygjf9rjf2resrw8h8w4tmvcs0863sa2e586",
37+
"scriptPubKey": "5120f8c9791817c6781858c5e7c8314cd36d2b0c22b0c138e756bfe3a6fd3e39bc00",
38+
"bip350Address": "bc1plryhjxqhceupskx9ulyrznxnd54scg4scyuww44luwn0603ehsqqml0mrv",
3939
"scriptPathControlBlocks": [
4040
"c1187791b6f712a8ea41c8ecdd0ee77fab3e85263b37e1ec18a3651926b3a6cf27"
4141
]
@@ -54,13 +54,13 @@
5454
"leafHashes": [
5555
"c525714a7f49c28aedbbba78c005931a81c234b2f6c99a73e4d06082adc8bf2b"
5656
],
57-
"merkleRoot": "c525714a7f49c28aedbbba78c005931a81c234b2f6c99a73e4d06082adc8bf2b",
58-
"tweak": "8cf2fff1ba36ff47f606937f9080571ea63dbb054ffdc999388dcc7b81e66f4c",
59-
"tweakedPubkey": "e4d810fd50586274face62b8a807eb9719cef49c04177cc6b76a9a4251d5450e"
57+
"merkleRoot": "78d23fbaa51baef6df2f67cbf8d308df47bd466c64c35d39956bf3a14f35c3b9",
58+
"tweak": "e2cfc1c640f9a69605ac7550295cb9169ede0ad96a560abd6ec8dd76303f4f5c",
59+
"tweakedPubkey": "38e4e558c6c939d9ee0b953766d9f934969319dcc84561ab6e05eedd205f16f1"
6060
},
6161
"expected": {
62-
"scriptPubKey": "5120e4d810fd50586274face62b8a807eb9719cef49c04177cc6b76a9a4251d5450e",
63-
"bip350Address": "bc1punvppl2stp38f7kwv2u2spltjuvuaayuqsthe34hd2dyy5w4g58qqfuag5",
62+
"scriptPubKey": "512038e4e558c6c939d9ee0b953766d9f934969319dcc84561ab6e05eedd205f16f1",
63+
"bip350Address": "bc1p8rjw2kxxeyuanmstj5mkdk0exjtfxxwuepzkr2mwqhhd6gzlzmcsv2r8k6",
6464
"scriptPathControlBlocks": [
6565
"c093478e9488f956df2396be2ce6c5cced75f900dfa18e7dabd2428aae78451820"
6666
]
@@ -87,16 +87,16 @@
8787
"8ad69ec7cf41c2a4001fd1f738bf1e505ce2277acdcaa63fe4765192497f47a7",
8888
"f224a923cd0021ab202ab139cc56802ddb92dcfc172b9212261a539df79a112a"
8989
],
90-
"merkleRoot": "6c2dc106ab816b73f9d07e3cd1ef2c8c1256f519748e0813e4edd2405d277bef",
91-
"tweak": "7ccb26ae99af5270df35d470b3cfa177c14c315c5acde3c0cb74db50fa876ad1",
92-
"tweakedPubkey": "712447206d7a5238acc7ff53fbe94a3b64539ad291c7cdbc490b7577e4b17df5"
90+
"merkleRoot": "fc45a034cc4618d0f1688fd29604d5c711a4f22754ec0cc4c5512434abcefd21",
91+
"tweak": "f72f92121c50790646791db0f848ce7571d81cf83fef6dba91b21aff25f902fb",
92+
"tweakedPubkey": "3318184ee1f2b40f87119febc1e5d343c9829ce8d1b39a3f93886de2ea94bce1"
9393
},
9494
"expected": {
95-
"scriptPubKey": "5120712447206d7a5238acc7ff53fbe94a3b64539ad291c7cdbc490b7577e4b17df5",
96-
"bip350Address": "bc1pwyjywgrd0ffr3tx8laflh6228dj98xkjj8rum0zfpd6h0e930h6saqxrrm",
95+
"scriptPubKey": "51203318184ee1f2b40f87119febc1e5d343c9829ce8d1b39a3f93886de2ea94bce1",
96+
"bip350Address": "bc1pxvvpsnhp726qlpc3nl4urewng0yc988g6xee50un3pk79655hnsslmc4yg",
9797
"scriptPathControlBlocks": [
98-
"c0ee4fe085983462a184015d1f782d6a5f8b9c2b60130aff050ce221ecf3786592f224a923cd0021ab202ab139cc56802ddb92dcfc172b9212261a539df79a112a",
99-
"faee4fe085983462a184015d1f782d6a5f8b9c2b60130aff050ce221ecf37865928ad69ec7cf41c2a4001fd1f738bf1e505ce2277acdcaa63fe4765192497f47a7"
98+
"c1ee4fe085983462a184015d1f782d6a5f8b9c2b60130aff050ce221ecf378659201c55a7ecd2af27d5bff8614e20f0b316942e398af7496c6a23d54e47c91e140",
99+
"fbee4fe085983462a184015d1f782d6a5f8b9c2b60130aff050ce221ecf3786592d0d1c6f231d663dd8d0aab290dac759b230da655aff020da1fa88d61f1eae0ea"
100100
]
101101
}
102102
},
@@ -121,16 +121,16 @@
121121
"64512fecdb5afa04f98839b50e6f0cb7b1e539bf6f205f67934083cdcc3c8d89",
122122
"2cb2b90daa543b544161530c925f285b06196940d6085ca9474d41dc3822c5cb"
123123
],
124-
"merkleRoot": "ab179431c28d3b68fb798957faf5497d69c883c6fb1e1cd9f81483d87bac90cc",
125-
"tweak": "66d835a48bf3d9695466bca5ec45434b27c37a908215323f7f82ba61cff6227e",
126-
"tweakedPubkey": "77e30a5522dd9f894c3f8b8bd4c4b2cf82ca7da8a3ea6a239655c39c050ab220"
124+
"merkleRoot": "feb9053e42db3e5aade328659f187d081d803e489261e9f1fa943e1522e1564a",
125+
"tweak": "5555bb11416d927b82814fbe52df22a41cf63edb63a7160eaa8d4518493f64f5",
126+
"tweakedPubkey": "762588e4d2ba91972cb01c307ee0b728d375a9dcf719471249d1be4d94ab6aec"
127127
},
128128
"expected": {
129-
"scriptPubKey": "512077e30a5522dd9f894c3f8b8bd4c4b2cf82ca7da8a3ea6a239655c39c050ab220",
130-
"bip350Address": "bc1pwl3s54fzmk0cjnpl3w9af39je7pv5ldg504x5guk2hpecpg2kgsqaqstjq",
129+
"scriptPubKey": "5120762588e4d2ba91972cb01c307ee0b728d375a9dcf719471249d1be4d94ab6aec",
130+
"bip350Address": "bc1pwcjc3exjh2gewt9srsc8ac9h9rfht2wu7uv5wyjf6xlym99tdtkq37rm54",
131131
"scriptPathControlBlocks": [
132-
"c1f9f400803e683727b14f463836e1e78e1c64417638aa066919291a225f0e8dd82cb2b90daa543b544161530c925f285b06196940d6085ca9474d41dc3822c5cb",
133-
"c1f9f400803e683727b14f463836e1e78e1c64417638aa066919291a225f0e8dd864512fecdb5afa04f98839b50e6f0cb7b1e539bf6f205f67934083cdcc3c8d89"
132+
"c1f9f400803e683727b14f463836e1e78e1c64417638aa066919291a225f0e8dd86cb4a85e53ddb8bb8d1f61a34f1cab142d415a161c8b584536a210766df2fde8",
133+
"c1f9f400803e683727b14f463836e1e78e1c64417638aa066919291a225f0e8dd8a8e34fcdebc754367ef50e20b9a7a5e3411927ca020a632de0e54e0ac93d70ee"
134134
]
135135
}
136136
},
@@ -163,17 +163,17 @@
163163
"ba982a91d4fc552163cb1c0da03676102d5b7a014304c01f0c77b2b8e888de1c",
164164
"9e31407bffa15fefbf5090b149d53959ecdf3f62b1246780238c24501d5ceaf6"
165165
],
166-
"merkleRoot": "ccbd66c6f7e8fdab47b3a486f59d28262be857f30d4773f2d5ea47f7761ce0e2",
167-
"tweak": "0a03a4bd78ab9f5b28ac9a0636e6cd36b490f54fe43781b2726743f9ce414e26",
168-
"tweakedPubkey": "91b64d5324723a985170e4dc5a0f84c041804f2cd12660fa5dec09fc21783605"
166+
"merkleRoot": "d0071e27366be098f194de1b3b11903eab22db9d0bae6455b4c9eaae3de917b4",
167+
"tweak": "718a6ad4bda8de6d3cd004f3d78700aedb0ca78ec579aaeaf84f89de7ad5b8b3",
168+
"tweakedPubkey": "a3822f8a999c9f396b975379883d57daa16e5e6489f2e85c0f5ad980eb42c8ad"
169169
},
170170
"expected": {
171-
"scriptPubKey": "512091b64d5324723a985170e4dc5a0f84c041804f2cd12660fa5dec09fc21783605",
172-
"bip350Address": "bc1pjxmy65eywgafs5tsunw95ruycpqcqnev6ynxp7jaasylcgtcxczs6n332e",
171+
"scriptPubKey": "5120a3822f8a999c9f396b975379883d57daa16e5e6489f2e85c0f5ad980eb42c8ad",
172+
"bip350Address": "bc1p5wpzlz5enj0nj6uh2ducs02hm2skuhny38ewshq0ttvcp66zezkstp7kwk",
173173
"scriptPathControlBlocks": [
174-
"c0e0dfe2300b0dd746a3f8674dfd4525623639042569d829c7f0eed9602d263e6fffe578e9ea769027e4f5a3de40732f75a88a6353a09d767ddeb66accef85e553",
175-
"c0e0dfe2300b0dd746a3f8674dfd4525623639042569d829c7f0eed9602d263e6f9e31407bffa15fefbf5090b149d53959ecdf3f62b1246780238c24501d5ceaf62645a02e0aac1fe69d69755733a9b7621b694bb5b5cde2bbfc94066ed62b9817",
176-
"c0e0dfe2300b0dd746a3f8674dfd4525623639042569d829c7f0eed9602d263e6fba982a91d4fc552163cb1c0da03676102d5b7a014304c01f0c77b2b8e888de1c2645a02e0aac1fe69d69755733a9b7621b694bb5b5cde2bbfc94066ed62b9817"
174+
"c0e0dfe2300b0dd746a3f8674dfd4525623639042569d829c7f0eed9602d263e6ffe7e4669dfd85b744abb7be99d240df87459078026a10588dc9849845e1a9abb",
175+
"c0e0dfe2300b0dd746a3f8674dfd4525623639042569d829c7f0eed9602d263e6f452798d4907a9b7d094dfc63161f0ab0ac28e74f955b779a49596bab286a3bab8d1a84ecd32fab8bb15a78f8d757d8489d3777d70d02b894a76dc4d9080ee232",
176+
"c0e0dfe2300b0dd746a3f8674dfd4525623639042569d829c7f0eed9602d263e6f6cf5c8db27324537ea2d72a06e4187da63d5d0b14e8a9ec52cf01e7c554e2edf8d1a84ecd32fab8bb15a78f8d757d8489d3777d70d02b894a76dc4d9080ee232"
177177
]
178178
}
179179
},
@@ -206,17 +206,17 @@
206206
"737ed1fe30bc42b8022d717b44f0d93516617af64a64753b7a06bf16b26cd711",
207207
"d7485025fceb78b9ed667db36ed8b8dc7b1f0b307ac167fa516fe4352b9f4ef7"
208208
],
209-
"merkleRoot": "2f6b2c5397b6d68ca18e09a3f05161668ffe93a988582d55c6f07bd5b3329def",
210-
"tweak": "6cbcbb5533034f3ac2223e2df10f09a0e559c001f8b0a27eae87cdaa3855c265",
211-
"tweakedPubkey": "75169f4001aa68f15bbed28b218df1d0a62cbbcf1188c6665110c293c907b831"
209+
"merkleRoot": "7eed8e3f1406d55857fd5e10de27464b8d8b45ea5b1c44442f90ae4a9b818bdd",
210+
"tweak": "c5a9f723b859703fb1a4e9a5e28ab4c1c89adf27ef55d7ef8df5d7a6a4ce33e0",
211+
"tweakedPubkey": "2e4197fe9952bc94b46379aeb49e6d2cca8fcf0f9a75ee59583717614ce1edaf"
212212
},
213213
"expected": {
214-
"scriptPubKey": "512075169f4001aa68f15bbed28b218df1d0a62cbbcf1188c6665110c293c907b831",
215-
"bip350Address": "bc1pw5tf7sqp4f50zka7629jrr036znzew70zxyvvej3zrpf8jg8hqcssyuewe",
214+
"scriptPubKey": "51202e4197fe9952bc94b46379aeb49e6d2cca8fcf0f9a75ee59583717614ce1edaf",
215+
"bip350Address": "bc1p9eqe0l5e227ffdrr0xhtf8nd9n9glnc0nf67uk2cxutkzn8pakhswkqe40",
216216
"scriptPathControlBlocks": [
217-
"c155adf4e8967fbd2e29f20ac896e60c3b0f1d5b0efa9d34941b5958c7b0a0312d3cd369a528b326bc9d2133cbd2ac21451acb31681a410434672c8e34fe757e91",
218-
"c155adf4e8967fbd2e29f20ac896e60c3b0f1d5b0efa9d34941b5958c7b0a0312dd7485025fceb78b9ed667db36ed8b8dc7b1f0b307ac167fa516fe4352b9f4ef7f154e8e8e17c31d3462d7132589ed29353c6fafdb884c5a6e04ea938834f0d9d",
219-
"c155adf4e8967fbd2e29f20ac896e60c3b0f1d5b0efa9d34941b5958c7b0a0312d737ed1fe30bc42b8022d717b44f0d93516617af64a64753b7a06bf16b26cd711f154e8e8e17c31d3462d7132589ed29353c6fafdb884c5a6e04ea938834f0d9d"
217+
"c155adf4e8967fbd2e29f20ac896e60c3b0f1d5b0efa9d34941b5958c7b0a0312dc62d4276b511b979b44ed7df0b489f10cf95236ffa3615d4ca853aa933c28719",
218+
"c155adf4e8967fbd2e29f20ac896e60c3b0f1d5b0efa9d34941b5958c7b0a0312d782871d265a4b444174dea99eecce64be0b83fecd5e6bb249b3e9311597972ff4b15f199ee0c917fad3c5fe307b0d3d98d0dfe057f503b268d2a7aa8c81b3828",
219+
"c155adf4e8967fbd2e29f20ac896e60c3b0f1d5b0efa9d34941b5958c7b0a0312daa45b338647397cb4ca9e1f49083363693eb90f8010405d8be3d474d8332a97b4b15f199ee0c917fad3c5fe307b0d3d98d0dfe057f503b268d2a7aa8c81b3828"
220220
]
221221
}
222222
}

src/test/script_standard_tests.cpp

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -410,7 +410,7 @@ BOOST_AUTO_TEST_CASE(script_standard_taproot_builder)
410410

411411
BOOST_AUTO_TEST_CASE(bip341_spk_test_vectors)
412412
{
413-
// using control_set = decltype(TaprootSpendData::scripts)::mapped_type;
413+
using control_set = decltype(TaprootSpendData::scripts)::mapped_type;
414414

415415
UniValue tests;
416416
tests.read(json_tests::bip341_wallet_vectors);
@@ -435,18 +435,17 @@ BOOST_AUTO_TEST_CASE(bip341_spk_test_vectors)
435435
};
436436
parse_tree(vec["given"]["scriptTree"], 0);
437437
spktest.Finalize(XOnlyPubKey(ParseHex(vec["given"]["internalPubkey"].get_str())));
438-
// ELEMENTS: FIXME
439-
// BOOST_CHECK_EQUAL(HexStr(GetScriptForDestination(spktest.GetOutput())), vec["expected"]["scriptPubKey"].get_str());
440-
// BOOST_CHECK_EQUAL(EncodeDestination(spktest.GetOutput()), vec["expected"]["bip350Address"].get_str());
438+
BOOST_CHECK_EQUAL(HexStr(GetScriptForDestination(spktest.GetOutput())), vec["expected"]["scriptPubKey"].get_str());
439+
BOOST_CHECK_EQUAL(EncodeDestination(spktest.GetOutput()), vec["expected"]["bip350Address"].get_str());
441440
auto spend_data = spktest.GetSpendData();
442441
BOOST_CHECK_EQUAL(vec["intermediary"]["merkleRoot"].isNull(), spend_data.merkle_root.IsNull());
443442
if (!spend_data.merkle_root.IsNull()) {
444-
// BOOST_CHECK_EQUAL(vec["intermediary"]["merkleRoot"].get_str(), HexStr(spend_data.merkle_root));
443+
BOOST_CHECK_EQUAL(vec["intermediary"]["merkleRoot"].get_str(), HexStr(spend_data.merkle_root));
445444
}
446445
BOOST_CHECK_EQUAL(spend_data.scripts.size(), scriptposes.size());
447-
// for (const auto& scriptpos : scriptposes) {
448-
// BOOST_CHECK(spend_data.scripts[scriptpos.first] == control_set{ParseHex(vec["expected"]["scriptPathControlBlocks"][scriptpos.second].get_str())});
449-
// }
446+
for (const auto& scriptpos : scriptposes) {
447+
BOOST_CHECK(spend_data.scripts[scriptpos.first] == control_set{ParseHex(vec["expected"]["scriptPathControlBlocks"][scriptpos.second].get_str())});
448+
}
450449
}
451450
}
452451

0 commit comments

Comments
 (0)