@@ -86,7 +86,12 @@ def run_test(self):
8686 reset_balance (self .nodes [1 ], self .nodes [0 ].getnewaddress ())
8787 self .test_fund_send_fund_senddirty ()
8888 reset_balance (self .nodes [1 ], self .nodes [0 ].getnewaddress ())
89- self .test_fund_send_fund_send ()
89+ self .test_fund_send_fund_send ("legacy" )
90+ reset_balance (self .nodes [1 ], self .nodes [0 ].getnewaddress ())
91+ self .test_fund_send_fund_send ("p2sh-segwit" )
92+ reset_balance (self .nodes [1 ], self .nodes [0 ].getnewaddress ())
93+ self .test_fund_send_fund_send ("bech32" )
94+
9095
9196 def test_persistence (self ):
9297 '''Test that wallet files persist the avoid_reuse flag.'''
@@ -182,7 +187,7 @@ def test_fund_send_fund_senddirty(self):
182187 assert_approx (self .nodes [1 ].getbalance (), 5 , 0.001 )
183188 assert_approx (self .nodes [1 ].getbalance (avoid_reuse = False ), 5 , 0.001 )
184189
185- def test_fund_send_fund_send (self ):
190+ def test_fund_send_fund_send (self , second_addr_type ):
186191 '''
187192 Test the simple case where [1] generates a new address A, then
188193 [0] sends 10 BTC to A.
@@ -193,7 +198,7 @@ def test_fund_send_fund_send(self):
193198 '''
194199 self .log .info ("Test fund send fund send" )
195200
196- fundaddr = self .nodes [1 ].getnewaddress ()
201+ fundaddr = self .nodes [1 ].getnewaddress (label = "" , address_type = "legacy" )
197202 retaddr = self .nodes [0 ].getnewaddress ()
198203
199204 self .nodes [0 ].sendtoaddress (fundaddr , 10 )
@@ -214,7 +219,19 @@ def test_fund_send_fund_send(self):
214219 # getbalances should show no used, 5 btc trusted
215220 assert_balances (self .nodes [1 ], mine = {"used" : 0 , "trusted" : 5 })
216221
217- self .nodes [0 ].sendtoaddress (fundaddr , 10 )
222+ # For the second send, we transmute it to a related single-key address
223+ # to make sure it's also detected as re-use
224+ fund_spk = self .nodes [0 ].getaddressinfo (fundaddr )["scriptPubKey" ]
225+ fund_decoded = self .nodes [0 ].decodescript (fund_spk )
226+ if second_addr_type == "p2sh-segwit" :
227+ new_fundaddr = fund_decoded ["segwit" ]["p2sh-segwit" ]
228+ elif second_addr_type == "bech32" :
229+ new_fundaddr = fund_decoded ["segwit" ]["addresses" ][0 ]
230+ else :
231+ new_fundaddr = fundaddr
232+ assert_equal (second_addr_type , "legacy" )
233+
234+ self .nodes [0 ].sendtoaddress (new_fundaddr , 10 )
218235 self .nodes [0 ].generate (1 )
219236 self .sync_all ()
220237
0 commit comments