tMerge pull request #3921 from SomberNight/fix_disabled_change_addrs - electrum - Electrum Bitcoin wallet HTML git clone https://git.parazyd.org/electrum DIR Log DIR Files DIR Refs DIR Submodules --- DIR commit 1703e0036a78888f73d896ac94ee34e6230ae8b8 DIR parent 381de43cace42c8aa160205f32ad8584793f00ad HTML Author: ThomasV <thomasv@electrum.org> Date: Wed, 21 Feb 2018 11:18:59 +0100 Merge pull request #3921 from SomberNight/fix_disabled_change_addrs fix: disabling "use change addresses" did not work correctly Diffstat: M lib/coinchooser.py | 9 ++++++++- M lib/wallet.py | 3 ++- 2 files changed, 10 insertions(+), 2 deletions(-) --- DIR diff --git a/lib/coinchooser.py b/lib/coinchooser.py t@@ -25,7 +25,7 @@ from collections import defaultdict, namedtuple from math import floor, log10 -from .bitcoin import sha256, COIN, TYPE_ADDRESS +from .bitcoin import sha256, COIN, TYPE_ADDRESS, is_address from .transaction import Transaction from .util import NotEnoughFunds, PrintError t@@ -240,6 +240,13 @@ class CoinChooserBase(PrintError): tx.add_inputs([coin for b in buckets for coin in b.coins]) tx_weight = get_tx_weight(buckets) + # change is sent back to sending address unless specified + if not change_addrs: + change_addrs = [tx.inputs()[0]['address']] + # note: this is not necessarily the final "first input address" + # because the inputs had not been sorted at this point + assert is_address(change_addrs[0]) + # This takes a count of change outputs and returns a tx fee output_weight = 4 * Transaction.estimated_output_size(change_addrs[0]) fee = lambda count: fee_estimator_w(tx_weight + count * output_weight) DIR diff --git a/lib/wallet.py b/lib/wallet.py t@@ -1148,7 +1148,8 @@ class Abstract_Wallet(PrintError): if not change_addrs: change_addrs = [random.choice(addrs)] else: - change_addrs = [inputs[0]['address']] + # coin_chooser will set change address + change_addrs = [] # Fee estimator if fixed_fee is None: