@@ -325,6 +325,50 @@ def test_addressinfo(addr):
325325 test_addressinfo (wallet .getnewaddress (address_type = "silent-payments" ))
326326 test_addressinfo (wallet .getrawchangeaddress (address_type = "silent-payments" ))
327327
328+ def test_coincontrol (self ):
329+ self .log .info ("Testing Silent Payments wallet coin control" )
330+
331+ node = self .nodes [0 ]
332+ node .createwallet ("sender" , silent_payments = True )
333+ node .createwallet ("receiver" , silent_payments = True )
334+
335+ sender = node .get_wallet_rpc ("sender" )
336+ receiver = node .get_wallet_rpc ("receiver" )
337+
338+ # Create multiple UTXOs
339+ for _ in range (3 ):
340+ self .generatetoaddress (node , 50 , sender .getnewaddress ())
341+
342+ sp_addr = receiver .getnewaddress (address_type = "silent-payments" )
343+
344+ # Get specific UTXO to use
345+ unspent = sender .listunspent ()
346+
347+ # select utxos to spend
348+ inputs = []
349+ TOTAL_SPEND = 10
350+ total_amount_selected = 0
351+ for utxo in unspent :
352+ if total_amount_selected > TOTAL_SPEND :
353+ break
354+ inputs .append ({"txid" : utxo ["txid" ], "vout" : utxo ["vout" ]})
355+ total_amount_selected += utxo ["amount" ]
356+
357+ options = {
358+ "inputs" : inputs ,
359+ "add_to_wallet" : True
360+ }
361+
362+ result = sender .send (outputs = {sp_addr : TOTAL_SPEND }, options = options )
363+ assert result ["txid" ]
364+
365+ # Verify transaction used the selected input
366+ raw_tx = receiver .getrawtransaction (result ["txid" ], True )
367+ assert any (vin ["txid" ] == input ["txid" ] and
368+ vin ["vout" ] == input ["vout" ]
369+ for vin in raw_tx ["vin" ]
370+ for input in inputs )
371+
328372 def run_test (self ):
329373 self .def_wallet = self .nodes [0 ].get_wallet_rpc (self .default_wallet_name )
330374 self .generate (self .nodes [0 ], 102 )
@@ -339,6 +383,7 @@ def run_test(self):
339383 self .test_createwallet_descriptor ()
340384 self .test_backup_and_restore ()
341385 self .test_getaddressinfo ()
386+ self .test_coincontrol ()
342387
343388
344389
0 commit comments