Browse Source

Merge #860: taker: Fix change validation logic

43cc960 taker: Account for off-by-one errors caused by rounding (csH7KmCC9)
b4ca42d taker: Fix change validation logic (csH7KmCC9)
master
Adam Gibson 5 years ago
parent
commit
97a1559dbb
No known key found for this signature in database
GPG Key ID: 141001A1AF77F20B
  1. 20
      jmclient/jmclient/taker.py

20
jmclient/jmclient/taker.py

@ -485,16 +485,16 @@ class Taker(object):
#we have tried to avoid this based on over-estimating the needed amount #we have tried to avoid this based on over-estimating the needed amount
#in SendPayment.create_tx(), but it is still a possibility if one maker #in SendPayment.create_tx(), but it is still a possibility if one maker
#uses a *lot* of inputs. #uses a *lot* of inputs.
if self.my_change_addr and my_change_value <= 0: if self.my_change_addr:
raise ValueError("Calculated transaction fee of: " + if my_change_value < -1:
btc.amount_to_str(self.total_txfee) + raise ValueError("Calculated transaction fee of: " +
" is too large for our inputs; Please try again.") btc.amount_to_str(self.total_txfee) +
elif self.my_change_addr and my_change_value <= jm_single( " is too large for our inputs; Please try again.")
).BITCOIN_DUST_THRESHOLD: if my_change_value <= jm_single().BITCOIN_DUST_THRESHOLD:
jlog.info("Dynamically calculated change lower than dust: " + jlog.info("Dynamically calculated change lower than dust: " +
btc.amount_to_str(my_change_value) + "; dropping.") btc.amount_to_str(my_change_value) + "; dropping.")
self.my_change_addr = None self.my_change_addr = None
my_change_value = 0 my_change_value = 0
jlog.info( jlog.info(
'fee breakdown for me totalin=%d my_txfee=%d makers_txfee=%d cjfee_total=%d => changevalue=%d' 'fee breakdown for me totalin=%d my_txfee=%d makers_txfee=%d cjfee_total=%d => changevalue=%d'
% (my_total_in, my_txfee, self.maker_txfee_contributions, % (my_total_in, my_txfee, self.maker_txfee_contributions,

Loading…
Cancel
Save