Clarify preferences dialog:
* rename 'Oldest First' policy as Priority * show multiple change and fee multiplier on separate lines
This commit is contained in:
parent
6bf91b8ae2
commit
eb085c2e23
|
@ -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)
|
||||
|
|
|
@ -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}
|
||||
|
|
Loading…
Reference in New Issue