Simplify wallet_taproot.py functional test

This commit is contained in:
Pieter Wuille committed 2022-01-12 11:09:41 -05:00
1 parent eb0667ea96
commit b5f33ac1f8
2 files changed
+19 -34

No files matched your search

+1 -1
View File
@@ -27,7 +27,7 @@ from .messages import (
from .ripemd160 import ripemd160 from .ripemd160 import ripemd160
MAX_SCRIPT_ELEMENT_SIZE = 520 MAX_SCRIPT_ELEMENT_SIZE = 520
MAX_PUBKEYS_PER_MULTI_A = 512 MAX_PUBKEYS_PER_MULTI_A = 999
LOCKTIME_THRESHOLD = 500000000 LOCKTIME_THRESHOLD = 500000000
ANNEX_TAG = 0x50 ANNEX_TAG = 0x50
+18 -33
View File
@@ -330,7 +330,8 @@ class WalletTaprootTest(BitcoinTestFramework):
self.generatetoaddress(self.nodes[0], 1, self.boring.getnewaddress(), sync_fun=self.no_op) self.generatetoaddress(self.nodes[0], 1, self.boring.getnewaddress(), sync_fun=self.no_op)
assert(self.psbt_online.gettransaction(txid)['confirmations'] > 0) assert(self.psbt_online.gettransaction(txid)['confirmations'] > 0)
def do_test(self, comment, pattern, privmap, treefn, nkeys): def do_test(self, comment, pattern, privmap, treefn):
nkeys = len(privmap)
keys = self.rand_keys(nkeys * 4) keys = self.rand_keys(nkeys * 4)
self.do_test_addr(comment, pattern, privmap, treefn, keys[0:nkeys]) self.do_test_addr(comment, pattern, privmap, treefn, keys[0:nkeys])
self.do_test_sendtoaddress(comment, pattern, privmap, treefn, keys[0:nkeys], keys[nkeys:2*nkeys]) self.do_test_sendtoaddress(comment, pattern, privmap, treefn, keys[0:nkeys], keys[nkeys:2*nkeys])
@@ -365,114 +366,98 @@ class WalletTaprootTest(BitcoinTestFramework):
"tr(XPRV)", "tr(XPRV)",
"tr($1/*)", "tr($1/*)",
[True], [True],
lambda k1: (key(k1), []), lambda k1: (key(k1), [])
1
) )
self.do_test( self.do_test(
"tr(H,XPRV)", "tr(H,XPRV)",
"tr($H,pk($1/*))", "tr($H,pk($1/*))",
[True], [True],
lambda k1: (key(H_POINT), [pk(k1)]), lambda k1: (key(H_POINT), [pk(k1)])
1
) )
self.do_test( self.do_test(
"wpkh(XPRV)", "wpkh(XPRV)",
"wpkh($1/*)", "wpkh($1/*)",
[True], [True],
None, None
1
) )
self.do_test( self.do_test(
"tr(XPRV,{H,{H,XPUB}})", "tr(XPRV,{H,{H,XPUB}})",
"tr($1/*,{pk($H),{pk($H),pk($2/*)}})", "tr($1/*,{pk($H),{pk($H),pk($2/*)}})",
[True, False], [True, False],
lambda k1, k2: (key(k1), [pk(H_POINT), [pk(H_POINT), pk(k2)]]), lambda k1, k2: (key(k1), [pk(H_POINT), [pk(H_POINT), pk(k2)]])
2
) )
self.do_test( self.do_test(
"wsh(multi(1,XPRV,XPUB))", "wsh(multi(1,XPRV,XPUB))",
"wsh(multi(1,$1/*,$2/*))", "wsh(multi(1,$1/*,$2/*))",
[True, False], [True, False],
None, None
2
) )
self.do_test( self.do_test(
"tr(XPRV,{XPUB,XPUB})", "tr(XPRV,{XPUB,XPUB})",
"tr($1/*,{pk($2/*),pk($2/*)})", "tr($1/*,{pk($2/*),pk($2/*)})",
[True, False], [True, False],
lambda k1, k2: (key(k1), [pk(k2), pk(k2)]), lambda k1, k2: (key(k1), [pk(k2), pk(k2)])
2
) )
self.do_test( self.do_test(
"tr(XPRV,{{XPUB,H},{H,XPUB}})", "tr(XPRV,{{XPUB,H},{H,XPUB}})",
"tr($1/*,{{pk($2/*),pk($H)},{pk($H),pk($2/*)}})", "tr($1/*,{{pk($2/*),pk($H)},{pk($H),pk($2/*)}})",
[True, False], [True, False],
lambda k1, k2: (key(k1), [[pk(k2), pk(H_POINT)], [pk(H_POINT), pk(k2)]]), lambda k1, k2: (key(k1), [[pk(k2), pk(H_POINT)], [pk(H_POINT), pk(k2)]])
2
) )
self.do_test( self.do_test(
"tr(XPUB,{{H,{H,XPUB}},{H,{H,{H,XPRV}}}})", "tr(XPUB,{{H,{H,XPUB}},{H,{H,{H,XPRV}}}})",
"tr($1/*,{{pk($H),{pk($H),pk($2/*)}},{pk($H),{pk($H),{pk($H),pk($3/*)}}}})", "tr($1/*,{{pk($H),{pk($H),pk($2/*)}},{pk($H),{pk($H),{pk($H),pk($3/*)}}}})",
[False, False, True], [False, False, True],
lambda k1, k2, k3: (key(k1), [[pk(H_POINT), [pk(H_POINT), pk(k2)]], [pk(H_POINT), [pk(H_POINT), [pk(H_POINT), pk(k3)]]]]), lambda k1, k2, k3: (key(k1), [[pk(H_POINT), [pk(H_POINT), pk(k2)]], [pk(H_POINT), [pk(H_POINT), [pk(H_POINT), pk(k3)]]]])
3
) )
self.do_test( self.do_test(
"tr(XPRV,{XPUB,{{XPUB,{H,H}},{{H,H},XPUB}}})", "tr(XPRV,{XPUB,{{XPUB,{H,H}},{{H,H},XPUB}}})",
"tr($1/*,{pk($2/*),{{pk($2/*),{pk($H),pk($H)}},{{pk($H),pk($H)},pk($2/*)}}})", "tr($1/*,{pk($2/*),{{pk($2/*),{pk($H),pk($H)}},{{pk($H),pk($H)},pk($2/*)}}})",
[True, False], [True, False],
lambda k1, k2: (key(k1), [pk(k2), [[pk(k2), [pk(H_POINT), pk(H_POINT)]], [[pk(H_POINT), pk(H_POINT)], pk(k2)]]]), lambda k1, k2: (key(k1), [pk(k2), [[pk(k2), [pk(H_POINT), pk(H_POINT)]], [[pk(H_POINT), pk(H_POINT)], pk(k2)]]])
2
) )
self.do_test( self.do_test(
"tr(H,multi_a(1,XPRV))", "tr(H,multi_a(1,XPRV))",
"tr($H,multi_a(1,$1/*))", "tr($H,multi_a(1,$1/*))",
[True], [True],
lambda k1: (key(H_POINT), [multi_a(1, [k1])]), lambda k1: (key(H_POINT), [multi_a(1, [k1])])
1
) )
self.do_test( self.do_test(
"tr(H,sortedmulti_a(1,XPRV,XPUB))", "tr(H,sortedmulti_a(1,XPRV,XPUB))",
"tr($H,sortedmulti_a(1,$1/*,$2/*))", "tr($H,sortedmulti_a(1,$1/*,$2/*))",
[True, False], [True, False],
lambda k1, k2: (key(H_POINT), [multi_a(1, [k1, k2], True)]), lambda k1, k2: (key(H_POINT), [multi_a(1, [k1, k2], True)])
2
) )
self.do_test( self.do_test(
"tr(H,multi_a(1,XPUB,XPRV))", "tr(H,multi_a(1,XPUB,XPRV))",
"tr($H,multi_a(1,$1/*,$2/*))", "tr($H,multi_a(1,$1/*,$2/*))",
[False, True], [False, True],
lambda k1, k2: (key(H_POINT), [multi_a(1, [k1, k2])]), lambda k1, k2: (key(H_POINT), [multi_a(1, [k1, k2])])
2
) )
self.do_test( self.do_test(
"tr(H,sortedmulti_a(1,XPUB,XPRV,XPRV))", "tr(H,sortedmulti_a(1,XPUB,XPRV,XPRV))",
"tr($H,sortedmulti_a(1,$1/*,$2/*,$3/*))", "tr($H,sortedmulti_a(1,$1/*,$2/*,$3/*))",
[False, True, True], [False, True, True],
lambda k1, k2, k3: (key(H_POINT), [multi_a(1, [k1, k2, k3], True)]), lambda k1, k2, k3: (key(H_POINT), [multi_a(1, [k1, k2, k3], True)])
3
) )
self.do_test( self.do_test(
"tr(H,multi_a(2,XPRV,XPUB,XPRV))", "tr(H,multi_a(2,XPRV,XPUB,XPRV))",
"tr($H,multi_a(2,$1/*,$2/*,$3/*))", "tr($H,multi_a(2,$1/*,$2/*,$3/*))",
[True, False, True], [True, False, True],
lambda k1, k2, k3: (key(H_POINT), [multi_a(2, [k1, k2, k3])]), lambda k1, k2, k3: (key(H_POINT), [multi_a(2, [k1, k2, k3])])
3
) )
self.do_test( self.do_test(
"tr(XPUB,{{XPUB,{XPUB,sortedmulti_a(2,XPRV,XPUB,XPRV)}})", "tr(XPUB,{{XPUB,{XPUB,sortedmulti_a(2,XPRV,XPUB,XPRV)}})",
"tr($2/*,{pk($2/*),{pk($2/*),sortedmulti_a(2,$1/*,$2/*,$3/*)}})", "tr($2/*,{pk($2/*),{pk($2/*),sortedmulti_a(2,$1/*,$2/*,$3/*)}})",
[True, False, True], [True, False, True],
lambda k1, k2, k3: (key(k2), [pk(k2), [pk(k2), multi_a(2, [k1, k2, k3], True)]]), lambda k1, k2, k3: (key(k2), [pk(k2), [pk(k2), multi_a(2, [k1, k2, k3], True)]])
3
) )
rnd_pos = random.randrange(MAX_PUBKEYS_PER_MULTI_A) rnd_pos = random.randrange(MAX_PUBKEYS_PER_MULTI_A)
self.do_test( self.do_test(
"tr(XPUB,multi_a(1,H...,XPRV,H...))", "tr(XPUB,multi_a(1,H...,XPRV,H...))",
"tr($2/*,multi_a(1" + (",$H" * rnd_pos) + ",$1/*" + (",$H" * (MAX_PUBKEYS_PER_MULTI_A - 1 - rnd_pos)) + "))", "tr($2/*,multi_a(1" + (",$H" * rnd_pos) + ",$1/*" + (",$H" * (MAX_PUBKEYS_PER_MULTI_A - 1 - rnd_pos)) + "))",
[True, False], [True, False],
lambda k1, k2: (key(k2), [multi_a(1, ([H_POINT] * rnd_pos) + [k1] + ([H_POINT] * (MAX_PUBKEYS_PER_MULTI_A - 1 - rnd_pos)))]), lambda k1, k2: (key(k2), [multi_a(1, ([H_POINT] * rnd_pos) + [k1] + ([H_POINT] * (MAX_PUBKEYS_PER_MULTI_A - 1 - rnd_pos)))])
2
) )
self.log.info("Sending everything back...") self.log.info("Sending everything back...")