tmake_transaction: remove unneeded inputs - electrum - Electrum Bitcoin wallet
HTML git clone https://git.parazyd.org/electrum
DIR Log
DIR Files
DIR Refs
DIR Submodules
---
DIR commit ae957f37364d0c61f6658c6b877d5efbc5e3c5a4
DIR parent 7becb28ec8a550f8749b0b1e80233c12b2498644
HTML Author: ThomasV <thomasv@gitorious>
Date: Tue, 26 May 2015 09:05:44 +0200
make_transaction: remove unneeded inputs
Diffstat:
M lib/wallet.py | 12 ++++++++++++
1 file changed, 12 insertions(+), 0 deletions(-)
---
DIR diff --git a/lib/wallet.py b/lib/wallet.py
t@@ -26,6 +26,7 @@ import time
import math
import json
import copy
+from operator import itemgetter
from util import print_msg, print_error, NotEnoughFunds
from util import profiler
t@@ -856,6 +857,7 @@ class Abstract_Wallet(object):
total = fee = 0
inputs = []
tx = Transaction.from_io(inputs, outputs)
+ # add old inputs first
for item in coins:
v = item.get('value')
total += v
t@@ -865,6 +867,16 @@ class Abstract_Wallet(object):
if total >= amount + fee: break
else:
raise NotEnoughFunds()
+ # remove unneeded inputs
+ for item in sorted(tx.inputs, key=itemgetter('value')):
+ v = item.get('value')
+ if total - v >= amount + fee:
+ tx.inputs.remove(item)
+ total -= v
+ fee = fixed_fee if fixed_fee is not None else self.estimated_fee(tx)
+ else:
+ break
+ print_error("using %d inputs"%len(tx.inputs))
# change address
if not change_addr: