Merge pull request #3943 from SomberNight/fee_cleanup
clean up fees a bit
This commit is contained in:
@@ -3,7 +3,6 @@ from kivy.factory import Factory
|
||||
from kivy.properties import ObjectProperty
|
||||
from kivy.lang import Builder
|
||||
|
||||
from electrum.util import fee_levels
|
||||
from electrum_gui.kivy.i18n import _
|
||||
|
||||
Builder.load_string('''
|
||||
@@ -29,7 +28,11 @@ Builder.load_string('''
|
||||
text: _('New Fee')
|
||||
value: ''
|
||||
Label:
|
||||
id: tooltip
|
||||
id: tooltip1
|
||||
text: ''
|
||||
size_hint_y: None
|
||||
Label:
|
||||
id: tooltip2
|
||||
text: ''
|
||||
size_hint_y: None
|
||||
Slider:
|
||||
@@ -72,39 +75,39 @@ class BumpFeeDialog(Factory.Popup):
|
||||
self.tx_size = size
|
||||
self.callback = callback
|
||||
self.config = app.electrum_config
|
||||
self.fee_step = self.config.max_fee_rate() / 10
|
||||
self.dynfees = self.config.is_dynfee() and self.app.network
|
||||
self.mempool = self.config.use_mempool_fees()
|
||||
self.dynfees = self.config.is_dynfee() and self.app.network and self.config.has_dynamic_fees_ready()
|
||||
self.ids.old_fee.value = self.app.format_amount_and_units(self.init_fee)
|
||||
self.update_slider()
|
||||
self.update_text()
|
||||
|
||||
def update_text(self):
|
||||
value = int(self.ids.slider.value)
|
||||
self.ids.new_fee.value = self.app.format_amount_and_units(self.get_fee())
|
||||
if self.dynfees:
|
||||
value = int(self.ids.slider.value)
|
||||
self.ids.tooltip.text = fee_levels[value]
|
||||
fee = self.get_fee()
|
||||
self.ids.new_fee.value = self.app.format_amount_and_units(fee)
|
||||
pos = int(self.ids.slider.value)
|
||||
fee_rate = self.get_fee_rate()
|
||||
text, tooltip = self.config.get_fee_text(pos, self.dynfees, self.mempool, fee_rate)
|
||||
self.ids.tooltip1.text = text
|
||||
self.ids.tooltip2.text = tooltip
|
||||
|
||||
def update_slider(self):
|
||||
slider = self.ids.slider
|
||||
maxp, pos, fee_rate = self.config.get_fee_slider(self.dynfees, self.mempool)
|
||||
slider.range = (0, maxp)
|
||||
slider.step = 1
|
||||
slider.value = pos
|
||||
|
||||
def get_fee_rate(self):
|
||||
pos = int(self.ids.slider.value)
|
||||
if self.dynfees:
|
||||
slider.range = (0, 4)
|
||||
slider.step = 1
|
||||
slider.value = 3
|
||||
fee_rate = self.config.depth_to_fee(pos) if self.mempool else self.config.eta_to_fee(pos)
|
||||
else:
|
||||
slider.range = (1, 10)
|
||||
slider.step = 1
|
||||
rate = self.init_fee*1000//self.tx_size
|
||||
slider.value = min( rate * 2 // self.fee_step, 10)
|
||||
fee_rate = self.config.static_fee(pos)
|
||||
return fee_rate
|
||||
|
||||
def get_fee(self):
|
||||
value = int(self.ids.slider.value)
|
||||
if self.dynfees:
|
||||
if self.config.has_fee_estimates():
|
||||
dynfee = self.config.dynfee(value)
|
||||
return int(dynfee * self.tx_size // 1000)
|
||||
else:
|
||||
return int(value*self.fee_step * self.tx_size // 1000)
|
||||
fee_rate = self.get_fee_rate()
|
||||
return int(fee_rate * self.tx_size // 1000)
|
||||
|
||||
def on_ok(self):
|
||||
new_fee = self.get_fee()
|
||||
|
||||
@@ -3,7 +3,6 @@ from kivy.factory import Factory
|
||||
from kivy.properties import ObjectProperty
|
||||
from kivy.lang import Builder
|
||||
|
||||
from electrum.util import fee_levels
|
||||
from electrum_gui.kivy.i18n import _
|
||||
|
||||
Builder.load_string('''
|
||||
|
||||
@@ -8,7 +8,6 @@ from electrum.i18n import languages
|
||||
from electrum_gui.kivy.i18n import _
|
||||
from electrum.plugins import run_hook
|
||||
from electrum import coinchooser
|
||||
from electrum.util import fee_levels
|
||||
|
||||
from .choice_dialog import ChoiceDialog
|
||||
|
||||
|
||||
@@ -1512,7 +1512,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
|
||||
x_fee_address, x_fee_amount = x_fee
|
||||
msg.append( _("Additional fees") + ": " + self.format_amount_and_units(x_fee_amount) )
|
||||
|
||||
confirm_rate = 2 * self.config.max_fee_rate()
|
||||
confirm_rate = simple_config.FEERATE_WARNING_HIGH_FEE
|
||||
if fee > confirm_rate * tx.estimated_size() / 1000:
|
||||
msg.append(_('Warning') + ': ' + _("The fee for this transaction seems unusually high."))
|
||||
|
||||
|
||||
@@ -34,6 +34,7 @@ from PyQt5.QtWidgets import *
|
||||
from electrum.bitcoin import base_encode
|
||||
from electrum.i18n import _
|
||||
from electrum.plugins import run_hook
|
||||
from electrum import simple_config
|
||||
|
||||
from electrum.util import bfh
|
||||
from electrum.wallet import AddTransactionException
|
||||
@@ -240,9 +241,13 @@ class TxDialog(QDialog, MessageBoxMixin):
|
||||
else:
|
||||
amount_str = _("Amount sent:") + ' %s'% format_amount(-amount) + ' ' + base_unit
|
||||
size_str = _("Size:") + ' %d bytes'% size
|
||||
fee_str = _("Fee") + ': %s'% (format_amount(fee) + ' ' + base_unit if fee is not None else _('unknown'))
|
||||
fee_str = _("Fee") + ': %s' % (format_amount(fee) + ' ' + base_unit if fee is not None else _('unknown'))
|
||||
if fee is not None:
|
||||
fee_str += ' ( %s ) '% self.main_window.format_fee_rate(fee/size*1000)
|
||||
fee_rate = fee/size*1000
|
||||
fee_str += ' ( %s ) ' % self.main_window.format_fee_rate(fee_rate)
|
||||
confirm_rate = simple_config.FEERATE_WARNING_HIGH_FEE
|
||||
if fee_rate > confirm_rate:
|
||||
fee_str += ' - ' + _('Warning') + ': ' + _("high fee") + '!'
|
||||
self.amount_label.setText(amount_str)
|
||||
self.fee_label.setText(fee_str)
|
||||
self.size_label.setText(size_str)
|
||||
|
||||
Reference in New Issue
Block a user