From efa1efedca6e6916db44e26101c70434b771e5e6 Mon Sep 17 00:00:00 2001 From: Neil Booth Date: Sat, 23 Jan 2016 22:05:08 +0900 Subject: [PATCH] Hardware wallets: limit change outputs to 1 --- lib/wallet.py | 5 ++++- plugins/ledger/ledger.py | 1 + plugins/trezor/plugin.py | 1 + 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/wallet.py b/lib/wallet.py index 1b4cb884e..fdc2eeafd 100644 --- a/lib/wallet.py +++ b/lib/wallet.py @@ -151,6 +151,9 @@ class Abstract_Wallet(PrintError): Wallet classes are created to handle various address generation methods. Completion states (watching-only, single account, no seed, etc) are handled inside classes. """ + + max_change_outputs = 3 + def __init__(self, storage): self.storage = storage self.network = None @@ -966,7 +969,7 @@ class Abstract_Wallet(PrintError): dust_threshold = 182 * 3 * self.relayfee() / 1000 # Let the coin chooser select the coins to spend - max_change = 3 if self.multiple_change else 1 + max_change = self.max_change_outputs if self.multiple_change else 1 coin_chooser = self.coin_chooser(config) tx = coin_chooser.make_tx(coins, outputs, change_addrs[:max_change], fee_estimator, dust_threshold) diff --git a/plugins/ledger/ledger.py b/plugins/ledger/ledger.py index ce9112be4..f4b31db28 100644 --- a/plugins/ledger/ledger.py +++ b/plugins/ledger/ledger.py @@ -33,6 +33,7 @@ class BTChipWallet(BIP44_Wallet): wallet_type = 'btchip' device = 'Ledger' restore_wallet_class = BIP44_Wallet + max_change_outputs = 1 def __init__(self, storage): BIP44_Wallet.__init__(self, storage) diff --git a/plugins/trezor/plugin.py b/plugins/trezor/plugin.py index 842e8150a..520b69fab 100644 --- a/plugins/trezor/plugin.py +++ b/plugins/trezor/plugin.py @@ -36,6 +36,7 @@ class TrezorCompatibleWallet(BIP44_Wallet): # - wallet_type restore_wallet_class = BIP44_Wallet + max_change_outputs = 1 def __init__(self, storage): BIP44_Wallet.__init__(self, storage)