@@ -731,6 +731,45 @@ def run_test(self):
731
731
assert_equal (coin_b ["parent_descs" ][0 ], multi_b )
732
732
self .nodes [0 ].unloadwallet ("wo" )
733
733
734
+ self .log .info ("Test -spendzeroconfchange" )
735
+ self .restart_node (0 , ["-spendzeroconfchange=0" ])
736
+
737
+ # create new wallet and fund it with a confirmed UTXO
738
+ self .nodes [0 ].createwallet (wallet_name = "zeroconf" , load_on_startup = True )
739
+ zeroconf_wallet = self .nodes [0 ].get_wallet_rpc ("zeroconf" )
740
+ default_wallet = self .nodes [0 ].get_wallet_rpc (self .default_wallet_name )
741
+ default_wallet .sendtoaddress (zeroconf_wallet .getnewaddress (), Decimal ('1.0' ))
742
+ self .generate (self .nodes [0 ], 1 , sync_fun = self .no_op )
743
+ utxos = zeroconf_wallet .listunspent (minconf = 0 )
744
+ assert_equal (len (utxos ), 1 )
745
+ assert_equal (utxos [0 ]['confirmations' ], 1 )
746
+
747
+ # spend confirmed UTXO to ourselves
748
+ zeroconf_wallet .sendall (recipients = [zeroconf_wallet .getnewaddress ()])
749
+ utxos = zeroconf_wallet .listunspent (minconf = 0 )
750
+ assert_equal (len (utxos ), 1 )
751
+ assert_equal (utxos [0 ]['confirmations' ], 0 )
752
+ # accounts for untrusted pending balance
753
+ bal = zeroconf_wallet .getbalances ()
754
+ assert_equal (bal ['mine' ]['trusted' ], 0 )
755
+ assert_equal (bal ['mine' ]['untrusted_pending' ], utxos [0 ]['amount' ])
756
+
757
+ # spending an unconfirmed UTXO sent to ourselves should fail
758
+ assert_raises_rpc_error (- 6 , "Insufficient funds" , zeroconf_wallet .sendtoaddress , zeroconf_wallet .getnewaddress (), Decimal ('0.5' ))
759
+
760
+ # check that it works again with -spendzeroconfchange set (=default)
761
+ self .restart_node (0 , ["-spendzeroconfchange=1" ])
762
+ zeroconf_wallet = self .nodes [0 ].get_wallet_rpc ("zeroconf" )
763
+ utxos = zeroconf_wallet .listunspent (minconf = 0 )
764
+ assert_equal (len (utxos ), 1 )
765
+ assert_equal (utxos [0 ]['confirmations' ], 0 )
766
+ # accounts for trusted balance
767
+ bal = zeroconf_wallet .getbalances ()
768
+ assert_equal (bal ['mine' ]['trusted' ], utxos [0 ]['amount' ])
769
+ assert_equal (bal ['mine' ]['untrusted_pending' ], 0 )
770
+
771
+ zeroconf_wallet .sendtoaddress (zeroconf_wallet .getnewaddress (), Decimal ('0.5' ))
772
+
734
773
735
774
if __name__ == '__main__' :
736
775
WalletTest ().main ()
0 commit comments