Browse Source

gui: cpfp: calc parent fee for cpfp using wallet.get_tx_info

I am only making this change as it makes it simpler to do manual testing of CPFP-ing *local* txs.
That is, by changing a few easy-to-find lines of code, I can make the GUI allow CPFP-ing a local tx, but
without this change it errors out with "unknown fee for parent transaction".

If one has an incoming local tx saved in the wallet, adb.get_tx_fee(txid) returns None
(if the tx gets into the mempool, it will use the server-reported value instead).
In contrast, wallet.get_tx_info(tx).fee calls both wallet.get_wallet_delta(tx) and adb.get_tx_fee(txid),
making it more expensive but more complete.
master
SomberNight 2 years ago
parent
commit
eee61a98cb
No known key found for this signature in database
GPG Key ID: B33B5F232C6271E9
  1. 1
      electrum/address_synchronizer.py
  2. 2
      electrum/gui/qml/qetxfinalizer.py
  3. 2
      electrum/gui/qt/main_window.py

1
electrum/address_synchronizer.py

@ -757,6 +757,7 @@ class AddressSynchronizer(Logger, EventListener):
incorrectly early-exit and return None, e.g. for not-all-ismine-input txs,
where we could calculate the fee if we deserialized (but to see if we have all
the parent txs available, we would have to deserialize first).
More expensive but more complete alternative: wallet.get_tx_info(tx).fee
"""
# check if stored fee is available
fee = self.db.get_tx_fee(txid, trust_server=False)

2
electrum/gui/qml/qetxfinalizer.py

@ -755,7 +755,7 @@ class QETxCpfpFeeBumper(TxFeeSlider, TxMonMixin):
return
self._parent_tx_size = self._parent_tx.estimated_size()
self._parent_fee = self._wallet.wallet.adb.get_tx_fee(self._txid)
self._parent_fee = self._wallet.wallet.get_tx_info(self._parent_tx).fee
if self._parent_fee is None:
self._logger.error(_("Can't CPFP: unknown fee for parent transaction."))

2
electrum/gui/qt/main_window.py

@ -2546,7 +2546,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, Logger, QtEventListener):
total_size = parent_tx.estimated_size() + new_tx.estimated_size()
parent_txid = parent_tx.txid()
assert parent_txid
parent_fee = self.wallet.adb.get_tx_fee(parent_txid)
parent_fee = self.wallet.get_tx_info(parent_tx).fee
if parent_fee is None:
self.show_error(_("Can't CPFP: unknown fee for parent transaction."))
return

Loading…
Cancel
Save