improve bump_fee (fix #1985)
This commit is contained in:
parent
3062a62cf9
commit
86c3655080
@ -1015,16 +1015,26 @@ class Abstract_Wallet(PrintError):
|
|||||||
for txin in inputs:
|
for txin in inputs:
|
||||||
txin['signatures'] = [None] * len(txin['signatures'])
|
txin['signatures'] = [None] * len(txin['signatures'])
|
||||||
self.add_input_info(txin)
|
self.add_input_info(txin)
|
||||||
for i, o in enumerate(outputs):
|
# use own outputs
|
||||||
|
s = filter(lambda x: self.is_mine(x[1]), outputs)
|
||||||
|
# ... unless there is none
|
||||||
|
if not s:
|
||||||
|
s = outputs
|
||||||
|
# prioritize low value outputs, to get rid of dust
|
||||||
|
s = sorted(s, key=lambda x: x[2])
|
||||||
|
for o in s:
|
||||||
|
i = outputs.index(o)
|
||||||
otype, address, value = o
|
otype, address, value = o
|
||||||
if self.is_mine(address) and value >= delta:
|
if value - delta >= self.dust_threshold():
|
||||||
if value - delta >= self.dust_threshold():
|
outputs[i] = otype, address, value - delta
|
||||||
outputs[i] = otype, address, value - delta
|
|
||||||
else:
|
|
||||||
del outputs[i]
|
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
raise BaseException(_("Cannot bump fee: could not find a change output"))
|
del outputs[i]
|
||||||
|
delta -= value
|
||||||
|
if delta > 0:
|
||||||
|
continue
|
||||||
|
if delta > 0:
|
||||||
|
raise BaseException(_('Cannot bump fee: cound not find suitable outputs'))
|
||||||
return Transaction.from_io(inputs, outputs)
|
return Transaction.from_io(inputs, outputs)
|
||||||
|
|
||||||
def add_input_info(self, txin):
|
def add_input_info(self, txin):
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user