|
|
|
|
@ -9,13 +9,13 @@ from electrum.i18n import _
|
|
|
|
|
from electrum.transaction import PartialTxOutput, PartialTransaction, Transaction |
|
|
|
|
from electrum.util import NotEnoughFunds, profiler |
|
|
|
|
from electrum.wallet import CannotBumpFee, CannotDoubleSpendTx, CannotCPFP |
|
|
|
|
from electrum.network import NetworkException |
|
|
|
|
from electrum.plugin import run_hook |
|
|
|
|
|
|
|
|
|
from .qewallet import QEWallet |
|
|
|
|
from .qetypes import QEAmount |
|
|
|
|
from .util import QtEventListener, event_listener |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class FeeSlider(QObject): |
|
|
|
|
def __init__(self, parent=None): |
|
|
|
|
super().__init__(parent) |
|
|
|
|
@ -125,6 +125,7 @@ class FeeSlider(QObject):
|
|
|
|
|
def update(self): |
|
|
|
|
raise NotImplementedError() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class TxFeeSlider(FeeSlider): |
|
|
|
|
def __init__(self, parent=None): |
|
|
|
|
super().__init__(parent) |
|
|
|
|
@ -220,6 +221,7 @@ class TxFeeSlider(FeeSlider):
|
|
|
|
|
}) |
|
|
|
|
self.outputs = outputs |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class QETxFinalizer(TxFeeSlider): |
|
|
|
|
_logger = get_logger(__name__) |
|
|
|
|
|
|
|
|
|
@ -402,6 +404,7 @@ class QETxFinalizer(TxFeeSlider):
|
|
|
|
|
txqr = self._tx.to_qr_data() |
|
|
|
|
return [str(self._tx), txqr[0], txqr[1]] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# mixin for watching an existing TX based on its txid for verified event |
|
|
|
|
# requires self._wallet to contain a QEWallet instance |
|
|
|
|
# exposes txid qt property |
|
|
|
|
@ -448,6 +451,7 @@ class TxMonMixin(QtEventListener):
|
|
|
|
|
def tx_verified(self): |
|
|
|
|
pass |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class QETxRbfFeeBumper(TxFeeSlider, TxMonMixin): |
|
|
|
|
_logger = get_logger(__name__) |
|
|
|
|
|
|
|
|
|
@ -578,6 +582,7 @@ class QETxRbfFeeBumper(TxFeeSlider, TxMonMixin):
|
|
|
|
|
def getNewTx(self): |
|
|
|
|
return str(self._tx) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class QETxCanceller(TxFeeSlider, TxMonMixin): |
|
|
|
|
_logger = get_logger(__name__) |
|
|
|
|
|
|
|
|
|
@ -612,7 +617,6 @@ class QETxCanceller(TxFeeSlider, TxMonMixin):
|
|
|
|
|
self._oldfee_rate = oldfeerate |
|
|
|
|
self.oldfeeRateChanged.emit() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_tx(self): |
|
|
|
|
assert self._txid |
|
|
|
|
self._orig_tx = self._wallet.wallet.db.get_transaction(self._txid) |
|
|
|
|
@ -674,6 +678,7 @@ class QETxCanceller(TxFeeSlider, TxMonMixin):
|
|
|
|
|
def getNewTx(self): |
|
|
|
|
return str(self._tx) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class QETxCpfpFeeBumper(TxFeeSlider, TxMonMixin): |
|
|
|
|
_logger = get_logger(__name__) |
|
|
|
|
|
|
|
|
|
@ -743,7 +748,6 @@ class QETxCpfpFeeBumper(TxFeeSlider, TxMonMixin):
|
|
|
|
|
def totalSize(self): |
|
|
|
|
return self._total_size |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_tx(self): |
|
|
|
|
assert self._txid |
|
|
|
|
self._parent_tx = self._wallet.wallet.db.get_transaction(self._txid) |
|
|
|
|
@ -806,7 +810,6 @@ class QETxCpfpFeeBumper(TxFeeSlider, TxMonMixin):
|
|
|
|
|
self.warning = _('Max fee exceeded') |
|
|
|
|
return |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
comb_fee = fee + self._parent_fee |
|
|
|
|
comb_feerate = comb_fee / self._total_size |
|
|
|
|
|
|
|
|
|
|