Skip to content

Commit 80be78e

Browse files
committed
Test sortedmulti descriptor using BIP 67 tests
1 parent 6f588fd commit 80be78e

File tree

2 files changed

+73
-0
lines changed

2 files changed

+73
-0
lines changed

test/functional/data/rpc_bip67.json

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
[
2+
{
3+
"keys": [
4+
"02ff12471208c14bd580709cb2358d98975247d8765f92bc25eab3b2763ed605f8",
5+
"02fe6f0a5a297eb38c391581c4413e084773ea23954d93f7753db7dc0adc188b2f"
6+
],
7+
"sorted_keys": [
8+
"02fe6f0a5a297eb38c391581c4413e084773ea23954d93f7753db7dc0adc188b2f",
9+
"02ff12471208c14bd580709cb2358d98975247d8765f92bc25eab3b2763ed605f8"
10+
],
11+
"script": "522102fe6f0a5a297eb38c391581c4413e084773ea23954d93f7753db7dc0adc188b2f2102ff12471208c14bd580709cb2358d98975247d8765f92bc25eab3b2763ed605f852ae",
12+
"address": "2N19tNw3Ss4L9QDERtCw7FhXb6jBsYmeXNu"
13+
},
14+
{
15+
"keys": [
16+
"02632b12f4ac5b1d1b72b2a3b508c19172de44f6f46bcee50ba33f3f9291e47ed0",
17+
"027735a29bae7780a9755fae7a1c4374c656ac6a69ea9f3697fda61bb99a4f3e77",
18+
"02e2cc6bd5f45edd43bebe7cb9b675f0ce9ed3efe613b177588290ad188d11b404"
19+
],
20+
"sorted_keys": [
21+
"02632b12f4ac5b1d1b72b2a3b508c19172de44f6f46bcee50ba33f3f9291e47ed0",
22+
"027735a29bae7780a9755fae7a1c4374c656ac6a69ea9f3697fda61bb99a4f3e77",
23+
"02e2cc6bd5f45edd43bebe7cb9b675f0ce9ed3efe613b177588290ad188d11b404"
24+
],
25+
"script": "522102632b12f4ac5b1d1b72b2a3b508c19172de44f6f46bcee50ba33f3f9291e47ed021027735a29bae7780a9755fae7a1c4374c656ac6a69ea9f3697fda61bb99a4f3e772102e2cc6bd5f45edd43bebe7cb9b675f0ce9ed3efe613b177588290ad188d11b40453ae",
26+
"address": "2N3sVXU7MZefmYnZhrVX2bA7LyH6vygFZZ7"
27+
},
28+
{
29+
"keys": [
30+
"030000000000000000000000000000000000004141414141414141414141414141",
31+
"020000000000000000000000000000000000004141414141414141414141414141",
32+
"020000000000000000000000000000000000004141414141414141414141414140",
33+
"030000000000000000000000000000000000004141414141414141414141414140"
34+
],
35+
"sorted_keys": [
36+
"020000000000000000000000000000000000004141414141414141414141414140",
37+
"020000000000000000000000000000000000004141414141414141414141414141",
38+
"030000000000000000000000000000000000004141414141414141414141414140",
39+
"030000000000000000000000000000000000004141414141414141414141414141"
40+
],
41+
"script": "522102000000000000000000000000000000000000414141414141414141414141414021020000000000000000000000000000000000004141414141414141414141414141210300000000000000000000000000000000000041414141414141414141414141402103000000000000000000000000000000000000414141414141414141414141414154ae",
42+
"address": "2Mt3L9TcDUAfLpSoyB3SNYtJGLiU49DKEWJ"
43+
},
44+
{
45+
"keys": [
46+
"022df8750480ad5b26950b25c7ba79d3e37d75f640f8e5d9bcd5b150a0f85014da",
47+
"03e3818b65bcc73a7d64064106a859cc1a5a728c4345ff0b641209fba0d90de6e9",
48+
"021f2f6e1e50cb6a953935c3601284925decd3fd21bc445712576873fb8c6ebc18"
49+
],
50+
"sorted_keys": [
51+
"021f2f6e1e50cb6a953935c3601284925decd3fd21bc445712576873fb8c6ebc18",
52+
"022df8750480ad5b26950b25c7ba79d3e37d75f640f8e5d9bcd5b150a0f85014da",
53+
"03e3818b65bcc73a7d64064106a859cc1a5a728c4345ff0b641209fba0d90de6e9"
54+
],
55+
"script": "5221021f2f6e1e50cb6a953935c3601284925decd3fd21bc445712576873fb8c6ebc1821022df8750480ad5b26950b25c7ba79d3e37d75f640f8e5d9bcd5b150a0f85014da2103e3818b65bcc73a7d64064106a859cc1a5a728c4345ff0b641209fba0d90de6e953ae",
56+
"address": "2NFd5JqpwmQNz3gevZJ3rz9ofuHvqaP9Cye"
57+
}
58+
]

test/functional/rpc_createmultisig.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
55
"""Test multisig RPCs"""
66

7+
from test_framework.descriptors import descsum_create
78
from test_framework.test_framework import BitcoinTestFramework
89
from test_framework.util import (
910
assert_raises_rpc_error,
@@ -14,6 +15,8 @@
1415
import binascii
1516
import decimal
1617
import itertools
18+
import json
19+
import os
1720

1821
class RpcCreateMultiSigTest(BitcoinTestFramework):
1922
def set_test_params(self):
@@ -72,6 +75,18 @@ def run_test(self):
7275
assert_equal(legacy_addr, node0.addmultisigaddress(2, keys, '', 'bech32')['address'])
7376
assert_equal(legacy_addr, node0.addmultisigaddress(2, keys, '', 'p2sh-segwit')['address'])
7477

78+
self.log.info('Testing sortedmulti descriptors with BIP 67 test vectors')
79+
with open(os.path.join(os.path.dirname(os.path.realpath(__file__)), 'data/rpc_bip67.json'), encoding='utf-8') as f:
80+
vectors = json.load(f)
81+
82+
for t in vectors:
83+
key_str = ','.join(t['keys'])
84+
desc = descsum_create('sh(sortedmulti(2,{}))'.format(key_str))
85+
assert_equal(self.nodes[0].deriveaddresses(desc)[0], t['address'])
86+
sorted_key_str = ','.join(t['sorted_keys'])
87+
sorted_key_desc = descsum_create('sh(multi(2,{}))'.format(sorted_key_str))
88+
assert_equal(self.nodes[0].deriveaddresses(sorted_key_desc)[0], t['address'])
89+
7590
def check_addmultisigaddress_errors(self):
7691
self.log.info('Check that addmultisigaddress fails when the private keys are missing')
7792
addresses = [self.nodes[1].getnewaddress(address_type='legacy') for _ in range(2)]

0 commit comments

Comments
 (0)