commit eb085c2e23663ba5536b6e4dea300e0887163fd3
parent 6bf91b8ae2b10ffaa16f0573776963e929420aa3
Author: ThomasV <thomasv@electrum.org>
Date: Fri, 15 Jan 2016 09:02:03 +0100
Clarify preferences dialog:
* rename 'Oldest First' policy as Priority
* show multiple change and fee multiplier on separate lines
Diffstat:
2 files changed, 26 insertions(+), 16 deletions(-)
diff --git a/gui/qt/main_window.py b/gui/qt/main_window.py
@@ -2587,8 +2587,10 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
nz.valueChanged.connect(on_nz)
gui_widgets.append((nz_label, nz))
- msg = _('Fee per kilobyte of transaction.') + '\n' \
- + _('If you enable dynamic fees, this parameter will be used as upper bound.')
+ msg = '\n'.join([
+ _('Fee per kilobyte of transaction.'),
+ _('If you enable dynamic fees, this parameter will be used as upper bound.')
+ ])
fee_label = HelpLabel(_('Transaction fee per kb') + ':', msg)
fee_e = BTCkBEdit(self.get_decimal_point)
fee_e.setAmount(self.config.get('fee_per_kb', bitcoin.RECOMMENDED_FEE))
@@ -2607,13 +2609,16 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
dynfee_cb.setToolTip(_("Use a fee per kB value recommended by the server."))
dynfee_sl = QSlider(Qt.Horizontal, self)
dynfee_sl.setValue(self.config.get('fee_factor', 50))
- dynfee_sl.setToolTip("Fee Multiplier. Min = 50%, Max = 150%")
- tx_widgets.append((dynfee_cb, dynfee_sl))
+ dynfee_sl.setToolTip("Min = 50%, Max = 150%")
+ tx_widgets.append((dynfee_cb, None))
+ multiplier_label = HelpLabel(_('Fee multiplier'), _("Multiply the recommended fee/kb value by a constant factor. Min = 50%, Max = 150%"))
+ tx_widgets.append((multiplier_label, dynfee_sl))
def update_feeperkb():
fee_e.setAmount(self.wallet.fee_per_kb(self.config))
b = self.config.get('dynamic_fees')
- dynfee_sl.setHidden(not b)
+ dynfee_sl.setEnabled(b)
+ multiplier_label.setEnabled(b)
fee_e.setEnabled(not b)
def fee_factor_changed(b):
self.config.set_key('fee_factor', b, False)
@@ -2754,13 +2759,16 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
self.wallet.multiple_change = multiple
self.wallet.storage.put('multiple_change', multiple)
multiple_change = self.wallet.multiple_change
- multiple_cb = QCheckBox(_('Multiple'))
+ multiple_cb = QCheckBox(_('Use multiple change addresses'))
multiple_cb.setEnabled(self.wallet.use_change)
- multiple_cb.setToolTip(_('If appropriate use up to 3 change addresses.\nThis might raise the transaction fee slightly.'))
+ multiple_cb.setToolTip('\n'.join([
+ _('In some cases, use up to 3 change addresses in order to obfuscate the recipient address.'),
+ _('This may result in higher transactions fees.')
+ ]))
multiple_cb.setChecked(multiple_change)
multiple_cb.stateChanged.connect(on_multiple)
- tx_widgets.append((usechange_cb, multiple_cb))
-
+ tx_widgets.append((usechange_cb, None))
+ tx_widgets.append((multiple_cb, None))
showtx_cb = QCheckBox(_('View transaction before signing'))
showtx_cb.setChecked(self.show_before_broadcast())
@@ -2788,7 +2796,8 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
chooser_label = HelpLabel(_('Coin selection') + ':', msg)
chooser_combo = QComboBox()
chooser_combo.addItems(choosers)
- chooser_combo.setCurrentIndex(choosers.index(chooser_name))
+ i = choosers.index(chooser_name) if chooser_name in choosers else 0
+ chooser_combo.setCurrentIndex(i)
def on_chooser(x):
chooser_name = choosers[chooser_combo.currentIndex()]
self.config.set_key('coin_chooser', chooser_name)
diff --git a/lib/coinchooser.py b/lib/coinchooser.py
@@ -160,9 +160,11 @@ class CoinChooserBase(PrintError):
return tx
class CoinChooserOldestFirst(CoinChooserBase):
- '''The classic electrum algorithm. Chooses coins starting with the
- oldest that are sufficient to cover the spent amount, and then
- removes any unneeded starting with the smallest in value.'''
+ '''Maximize transaction priority. Select the oldest unspent
+ transaction outputs in your wallet, that are sufficient to cover
+ the spent amount. Then, remove any unneeded inputs, starting with
+ the smallest in value.
+ '''
def keys(self, coins):
return [coin['prevout_hash'] + ':' + str(coin['prevout_n'])
@@ -228,8 +230,7 @@ class CoinChooserPrivacy(CoinChooserRandom):
reduce blockchain UTXO bloat, and reduce future privacy loss that
would come from reusing that address' remaining UTXOs. Second, it
penalizes change that is quite different to the sent amount.
- Third, it penalizes change that is too big. Transaction priority
- might be less than if older coins were chosen.'''
+ Third, it penalizes change that is too big.'''
def keys(self, coins):
return [coin['address'] for coin in coins]
@@ -259,5 +260,5 @@ class CoinChooserPrivacy(CoinChooserRandom):
return penalty
-COIN_CHOOSERS = {'Oldest First': CoinChooserOldestFirst,
+COIN_CHOOSERS = {'Priority': CoinChooserOldestFirst,
'Privacy': CoinChooserPrivacy}