achow101
commented at 11:01 am on March 7, 2022:
member
Sometimes the multi_a and sortedmulti_a descriptors will produce some of the same addresses in the tests. This causes the wallets to start generating addresses at a different index as they detect that one of the addresses is used. This subsequently causes a test failure.
To avoid this problem, use descriptors that will produce unique addresses by putting one of the multi_a in a different branch.
achow101 force-pushed
on Mar 7, 2022
achow101 force-pushed
on Mar 7, 2022
tests: Ensure sorted/multi_a descriptors always generate different addrs
Sometimes the multi_a and sortedmulti_a descriptors will produce some of
the same addresses in the tests. This causes the wallets to start
generating addresses at a different index as they detect that one of
the addresses is used. This subsequently causes a test failure.
To avoid this problem, use descriptors that will produce unique
addresses by putting one of the multi_a in a different branch.
db27ac9354
achow101 force-pushed
on Mar 7, 2022
theStack
commented at 11:37 am on March 7, 2022:
member
Concept ACK
fanquake added the label
Tests
on Mar 7, 2022
theStack approved
theStack
commented at 1:19 pm on March 7, 2022:
member
On master, generating the same addresses causing the problem described in the OP can be reproduced with the following patch (determined in the course of investigating the CI failure #24486 (comment), unrelated to the linked PR):
0diff --git a/test/functional/wallet_taproot.py b/test/functional/wallet_taproot.py
1index 54c992852..5443f815a 100755
2--- a/test/functional/wallet_taproot.py
3+++ b/test/functional/wallet_taproot.py
4@@ -333,6 +333,10 @@ class WalletTaprootTest(BitcoinTestFramework):
5 def do_test(self, comment, pattern, privmap, treefn):
6 nkeys = len(privmap)
7 keys = self.rand_keys(nkeys * 4)
8+
9+ if nkeys == 2: # these keys will result in same addresses for sorted_a/multi_a descriptors
10+ keys = [KEYS[i] for i in [11, 6, 0, 1, 2, 3, 4, 5]]
11+
12 self.do_test_addr(comment, pattern, privmap, treefn, keys[0:nkeys])
13 self.do_test_sendtoaddress(comment, pattern, privmap, treefn, keys[0:nkeys], keys[nkeys:2*nkeys])
14 self.do_test_psbt(comment, pattern, privmap, treefn, keys[2*nkeys:3*nkeys], keys[3*nkeys:4*nkeys])
0.....
12022-03-07T13:12:18.658000Z TestFramework (INFO): Testing tr(H,multi_a(1,XPUB,XPRV)) address derivation
22022-03-07T13:12:18.914000Z TestFramework (ERROR): Assertion failed
3Traceback (most recent call last):
4 File "/home/honey/bitcoin/test/functional/test_framework/test_framework.py", line 132, in main
5 self.run_test()
6 File "./test/functional/wallet_taproot.py", line 435, in run_test
7 self.do_test(
8 File "./test/functional/wallet_taproot.py", line 340, in do_test
9 self.do_test_addr(comment, pattern, privmap, treefn, keys[0:nkeys])
10 File "./test/functional/wallet_taproot.py", line 251, in do_test_addr
11 assert_equal(addr_g, addr_r)
12 File "/home/honey/bitcoin/test/functional/test_framework/util.py", line 51, in assert_equal
13 raise AssertionError("not(%s)" % " == ".join(str(arg) for arg in (thing1, thing2) + args))
14AssertionError: not(bcrt1px3pnh5n8npeqr3cv0aq6dvqpcsujrgksfd6hup8dpa62z3m9jf9s3sk3ve == bcrt1pn2xq83tt55vfsxtwhkx96sanchkjzwg6yqxuewvn6emkfyqnyp0qe5cteg)
152022-03-07T13:12:18.987000Z TestFramework (INFO): Stopping nodes
1617.....
Running the PR branch with this patch succeeds.
ajtowns
commented at 5:30 pm on March 7, 2022:
member
ACKdb27ac935480aeec40a1cfc9d5f10a48be55d61b
100 runs with no more failures and explanation makes sense
fanquake requested review from instagibbs
on Mar 7, 2022
MarcoFalke merged this
on Mar 9, 2022
MarcoFalke closed this
on Mar 9, 2022
sidhujag referenced this in commit
0d66767abc
on Mar 9, 2022
This is a metadata mirror of the GitHub repository
bitcoin/bitcoin.
This site is not affiliated with GitHub.
Content is generated from a GitHub metadata backup.
generated: 2024-11-21 12:12 UTC
This site is hosted by @0xB10C More mirrored repositories can be found on mirror.b10c.me