Skip to content

Commit 5dc341d

Browse files
committed
qa: list descriptors in Miniscript signing functional tests
This makes it more generalistic than just having the miniscripts since we are going to have Taproot descriptors with (multiple) miniscripts in them too.
1 parent 4f473ea commit 5dc341d

File tree

1 file changed

+22
-22
lines changed

1 file changed

+22
-22
lines changed

test/functional/wallet_miniscript.py

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -56,26 +56,26 @@
5656
f"tr(4d54bb9928a0683b7e383de72943b214b0716f58aa54c7ba6bcea2328bc9c768,{{{{{P2WSH_MINISCRIPTS[0]},{P2WSH_MINISCRIPTS[1]}}},{{{P2WSH_MINISCRIPTS[2].replace('multi', 'multi_a')},{P2WSH_MINISCRIPTS[3]}}}}})",
5757
]
5858

59-
MINISCRIPTS_PRIV = [
59+
DESCS_PRIV = [
6060
# One of two keys, of which one private key is known
6161
{
62-
"ms": f"or_i(pk({TPRVS[0]}/*),pk({TPUBS[0]}/*))",
62+
"desc": f"wsh(or_i(pk({TPRVS[0]}/*),pk({TPUBS[0]}/*)))",
6363
"sequence": None,
6464
"locktime": None,
6565
"sigs_count": 1,
6666
"stack_size": 3,
6767
},
6868
# A more complex policy, that can't be satisfied through the first branch (need for a preimage)
6969
{
70-
"ms": f"andor(ndv:older(2),and_v(v:pk({TPRVS[0]}),sha256(2a8ce30189b2ec3200b47aeb4feaac8fcad7c0ba170389729f4898b0b7933bcb)),and_v(v:pkh({TPRVS[1]}),pk({TPRVS[2]}/*)))",
70+
"desc": f"wsh(andor(ndv:older(2),and_v(v:pk({TPRVS[0]}),sha256(2a8ce30189b2ec3200b47aeb4feaac8fcad7c0ba170389729f4898b0b7933bcb)),and_v(v:pkh({TPRVS[1]}),pk({TPRVS[2]}/*))))",
7171
"sequence": 2,
7272
"locktime": None,
7373
"sigs_count": 3,
7474
"stack_size": 5,
7575
},
7676
# The same policy but we provide the preimage. This path will be chosen as it's a smaller witness.
7777
{
78-
"ms": f"andor(ndv:older(2),and_v(v:pk({TPRVS[0]}),sha256(61e33e9dbfefc45f6a194187684d278f789fd4d5e207a357e79971b6519a8b12)),and_v(v:pkh({TPRVS[1]}),pk({TPRVS[2]}/*)))",
78+
"desc": f"wsh(andor(ndv:older(2),and_v(v:pk({TPRVS[0]}),sha256(61e33e9dbfefc45f6a194187684d278f789fd4d5e207a357e79971b6519a8b12)),and_v(v:pkh({TPRVS[1]}),pk({TPRVS[2]}/*))))",
7979
"sequence": 2,
8080
"locktime": None,
8181
"sigs_count": 3,
@@ -86,63 +86,63 @@
8686
},
8787
# Signature with a relative timelock
8888
{
89-
"ms": f"and_v(v:older(2),pk({TPRVS[0]}/*))",
89+
"desc": f"wsh(and_v(v:older(2),pk({TPRVS[0]}/*)))",
9090
"sequence": 2,
9191
"locktime": None,
9292
"sigs_count": 1,
9393
"stack_size": 2,
9494
},
9595
# Signature with an absolute timelock
9696
{
97-
"ms": f"and_v(v:after(20),pk({TPRVS[0]}/*))",
97+
"desc": f"wsh(and_v(v:after(20),pk({TPRVS[0]}/*)))",
9898
"sequence": None,
9999
"locktime": 20,
100100
"sigs_count": 1,
101101
"stack_size": 2,
102102
},
103103
# Signature with both
104104
{
105-
"ms": f"and_v(v:older(4),and_v(v:after(30),pk({TPRVS[0]}/*)))",
105+
"desc": f"wsh(and_v(v:older(4),and_v(v:after(30),pk({TPRVS[0]}/*))))",
106106
"sequence": 4,
107107
"locktime": 30,
108108
"sigs_count": 1,
109109
"stack_size": 2,
110110
},
111111
# We have one key on each branch; Core signs both (can't finalize)
112112
{
113-
"ms": f"c:andor(pk({TPRVS[0]}/*),pk_k({TPUBS[0]}),and_v(v:pk({TPRVS[1]}),pk_k({TPUBS[1]})))",
113+
"desc": f"wsh(c:andor(pk({TPRVS[0]}/*),pk_k({TPUBS[0]}),and_v(v:pk({TPRVS[1]}),pk_k({TPUBS[1]}))))",
114114
"sequence": None,
115115
"locktime": None,
116116
"sigs_count": 2,
117117
"stack_size": None,
118118
},
119119
# We have all the keys, wallet selects the timeout path to sign since it's smaller and sequence is set
120120
{
121-
"ms": f"andor(pk({TPRVS[0]}/*),pk({TPRVS[2]}),and_v(v:pk({TPRVS[1]}),older(10)))",
121+
"desc": f"wsh(andor(pk({TPRVS[0]}/*),pk({TPRVS[2]}),and_v(v:pk({TPRVS[1]}),older(10))))",
122122
"sequence": 10,
123123
"locktime": None,
124124
"sigs_count": 3,
125125
"stack_size": 3,
126126
},
127127
# We have all the keys, wallet selects the primary path to sign unconditionally since nsequence wasn't set to be valid for timeout path
128128
{
129-
"ms": f"andor(pk({TPRVS[0]}/*),pk({TPRVS[2]}),and_v(v:pkh({TPRVS[1]}),older(10)))",
129+
"desc": f"wsh(andor(pk({TPRVS[0]}/*),pk({TPRVS[2]}),and_v(v:pkh({TPRVS[1]}),older(10))))",
130130
"sequence": None,
131131
"locktime": None,
132132
"sigs_count": 3,
133133
"stack_size": 3,
134134
},
135135
# Finalizes to the smallest valid witness, regardless of sequence
136136
{
137-
"ms": f"or_d(pk({TPRVS[0]}/*),and_v(v:pk({TPRVS[1]}),and_v(v:pk({TPRVS[2]}),older(10))))",
137+
"desc": f"wsh(or_d(pk({TPRVS[0]}/*),and_v(v:pk({TPRVS[1]}),and_v(v:pk({TPRVS[2]}),older(10)))))",
138138
"sequence": 12,
139139
"locktime": None,
140140
"sigs_count": 3,
141141
"stack_size": 2,
142142
},
143143
# Liquid-like federated pegin with emergency recovery privkeys
144144
{
145-
"ms": f"or_i(and_b(pk({TPUBS[0]}/*),a:and_b(pk({TPUBS[1]}),a:and_b(pk({TPUBS[2]}),a:and_b(pk({TPUBS[3]}),s:pk({PUBKEYS[0]}))))),and_v(v:thresh(2,pkh({TPRVS[0]}),a:pkh({TPRVS[1]}),a:pkh({TPUBS[4]})),older(42)))",
145+
"desc": f"wsh(or_i(and_b(pk({TPUBS[0]}/*),a:and_b(pk({TPUBS[1]}),a:and_b(pk({TPUBS[2]}),a:and_b(pk({TPUBS[3]}),s:pk({PUBKEYS[0]}))))),and_v(v:thresh(2,pkh({TPRVS[0]}),a:pkh({TPRVS[1]}),a:pkh({TPUBS[4]})),older(42))))",
146146
"sequence": 42,
147147
"locktime": None,
148148
"sigs_count": 2,
@@ -198,10 +198,10 @@ def watchonly_test(self, desc):
198198
assert utxo["txid"] == txid and utxo["solvable"]
199199

200200
def signing_test(
201-
self, ms, sequence, locktime, sigs_count, stack_size, sha256_preimages
201+
self, desc, sequence, locktime, sigs_count, stack_size, sha256_preimages
202202
):
203-
self.log.info(f"Importing private Miniscript '{ms}'")
204-
desc = descsum_create(f"wsh({ms})")
203+
self.log.info(f"Importing private Miniscript descriptor '{desc}'")
204+
desc = descsum_create(desc)
205205
res = self.ms_sig_wallet.importdescriptors(
206206
[
207207
{
@@ -309,14 +309,14 @@ def run_test(self):
309309
self.watchonly_test(desc)
310310

311311
# Test we can sign for any Miniscript.
312-
for ms in MINISCRIPTS_PRIV:
312+
for desc in DESCS_PRIV:
313313
self.signing_test(
314-
ms["ms"],
315-
ms["sequence"],
316-
ms["locktime"],
317-
ms["sigs_count"],
318-
ms["stack_size"],
319-
ms.get("sha256_preimages"),
314+
desc["desc"],
315+
desc["sequence"],
316+
desc["locktime"],
317+
desc["sigs_count"],
318+
desc["stack_size"],
319+
desc.get("sha256_preimages"),
320320
)
321321

322322

0 commit comments

Comments
 (0)