@@ -121,6 +121,12 @@ def test_address(self, node, address, multisig, typ):
121121 assert_equal (info ['witness_version' ], 0 )
122122 assert_equal (len (info ['witness_program' ]), 40 )
123123 assert 'pubkey' in info
124+ elif not multisig and typ == "bech32m" :
125+ # P2TR single sig
126+ assert info ["isscript" ]
127+ assert info ["iswitness" ]
128+ assert_equal (info ["witness_version" ], 1 )
129+ assert_equal (len (info ["witness_program" ]), 64 )
124130 elif typ == 'legacy' :
125131 # P2SH-multisig
126132 assert info ['isscript' ]
@@ -339,19 +345,31 @@ def run_test(self):
339345 self .log .info ("Nodes with addresstype=legacy never use a P2WPKH change output (unless changetype is set otherwise):" )
340346 self .test_change_output_type (0 , [to_address_bech32_1 ], 'legacy' )
341347
342- self .log .info ("Nodes with addresstype=p2sh-segwit only use a P2WPKH change output if any destination address is bech32:" )
343- self .test_change_output_type (1 , [to_address_p2sh ], 'p2sh-segwit' )
344- self .test_change_output_type (1 , [to_address_bech32_1 ], 'bech32' )
345- self .test_change_output_type (1 , [to_address_p2sh , to_address_bech32_1 ], 'bech32' )
346- self .test_change_output_type (1 , [to_address_bech32_1 , to_address_bech32_2 ], 'bech32' )
348+ if self .options .descriptors :
349+ self .log .info ("Nodes with addresstype=p2sh-segwit only use a bech32m change output if any destination address is bech32:" )
350+ self .test_change_output_type (1 , [to_address_p2sh ], 'p2sh-segwit' )
351+ self .test_change_output_type (1 , [to_address_bech32_1 ], 'bech32m' )
352+ self .test_change_output_type (1 , [to_address_p2sh , to_address_bech32_1 ], 'bech32m' )
353+ self .test_change_output_type (1 , [to_address_bech32_1 , to_address_bech32_2 ], 'bech32m' )
354+ else :
355+ self .log .info ("Nodes with addresstype=p2sh-segwit only use a P2WPKH change output if any destination address is bech32:" )
356+ self .test_change_output_type (1 , [to_address_p2sh ], 'p2sh-segwit' )
357+ self .test_change_output_type (1 , [to_address_bech32_1 ], 'bech32' )
358+ self .test_change_output_type (1 , [to_address_p2sh , to_address_bech32_1 ], 'bech32' )
359+ self .test_change_output_type (1 , [to_address_bech32_1 , to_address_bech32_2 ], 'bech32' )
347360
348361 self .log .info ("Nodes with change_type=bech32 always use a P2WPKH change output:" )
349362 self .test_change_output_type (2 , [to_address_bech32_1 ], 'bech32' )
350363 self .test_change_output_type (2 , [to_address_p2sh ], 'bech32' )
351364
352- self .log .info ("Nodes with addresstype=bech32 always use a P2WPKH change output (unless changetype is set otherwise):" )
353- self .test_change_output_type (3 , [to_address_bech32_1 ], 'bech32' )
354- self .test_change_output_type (3 , [to_address_p2sh ], 'bech32' )
365+ if self .options .descriptors :
366+ self .log .info ("Nodes with addresstype=bech32 always use either a bech32 or bech32m change output (unless changetype is set otherwise):" )
367+ self .test_change_output_type (3 , [to_address_bech32_1 ], 'bech32m' )
368+ self .test_change_output_type (3 , [to_address_p2sh ], 'bech32' )
369+ else :
370+ self .log .info ("Nodes with addresstype=bech32 always use a P2WPKH change output (unless changetype is set otherwise):" )
371+ self .test_change_output_type (3 , [to_address_bech32_1 ], 'bech32' )
372+ self .test_change_output_type (3 , [to_address_p2sh ], 'bech32' )
355373
356374 self .log .info ('getrawchangeaddress defaults to addresstype if -changetype is not set and argument is absent' )
357375 self .test_address (3 , self .nodes [3 ].getrawchangeaddress (), multisig = False , typ = 'bech32' )
@@ -370,10 +388,9 @@ def run_test(self):
370388 self .test_address (4 , self .nodes [4 ].getrawchangeaddress ('bech32' ), multisig = False , typ = 'bech32' )
371389
372390 if self .options .descriptors :
373- self .log .info ("Descriptor wallets do not have bech32m addresses by default yet" )
374- # TODO: Remove this when they do
375- assert_raises_rpc_error (- 12 , "Error: No bech32m addresses available" , self .nodes [0 ].getnewaddress , "" , "bech32m" )
376- assert_raises_rpc_error (- 12 , "Error: No bech32m addresses available" , self .nodes [0 ].getrawchangeaddress , "bech32m" )
391+ self .log .info ("Descriptor wallets have bech32m addresses" )
392+ self .test_address (4 , self .nodes [4 ].getnewaddress ("" , "bech32m" ), multisig = False , typ = "bech32m" )
393+ self .test_address (4 , self .nodes [4 ].getrawchangeaddress ("bech32m" ), multisig = False , typ = "bech32m" )
377394 else :
378395 self .log .info ("Legacy wallets cannot make bech32m addresses" )
379396 assert_raises_rpc_error (- 8 , "Legacy wallets cannot provide bech32m addresses" , self .nodes [0 ].getnewaddress , "" , "bech32m" )
0 commit comments