twallet: loosen bump_fee sanity check further - electrum - Electrum Bitcoin wallet HTML git clone https://git.parazyd.org/electrum DIR Log DIR Files DIR Refs DIR Submodules --- DIR commit 8a1052330d9a7bbb239d5ecea6c1bef94b3e16f2 DIR parent 261c492c37d45193b808b9c91c6b3e5549dc9c42 HTML Author: SomberNight <somber.night@protonmail.com> Date: Wed, 10 Jul 2019 16:35:40 +0200 wallet: loosen bump_fee sanity check further fixes #5502 Diffstat: M electrum/wallet.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) --- DIR diff --git a/electrum/wallet.py b/electrum/wallet.py t@@ -902,6 +902,7 @@ class Abstract_Wallet(AddressSynchronizer): """ if tx.is_final(): raise CannotBumpFee(_('Cannot bump fee') + ': ' + _('transaction is final')) + new_fee_rate = quantize_feerate(new_fee_rate) # strip excess precision old_tx_size = tx.estimated_size() old_fee = self.get_tx_fee(tx) if old_fee is None: t@@ -925,10 +926,12 @@ class Abstract_Wallet(AddressSynchronizer): tx=tx, new_fee_rate=new_fee_rate) method_used = 2 - actual_new_fee_rate = tx_new.get_fee() / tx_new.estimated_size() - if quantize_feerate(actual_new_fee_rate) < quantize_feerate(new_fee_rate): - raise Exception(f"bump_fee feerate target was not met (method: {method_used}). " - f"got {actual_new_fee_rate}, expected >={new_fee_rate}") + target_min_fee = new_fee_rate * tx_new.estimated_size() + actual_fee = tx_new.get_fee() + if actual_fee + 1 < target_min_fee: + raise Exception(f"bump_fee fee target was not met (method: {method_used}). " + f"got {actual_fee}, expected >={target_min_fee}. " + f"target rate was {new_fee_rate}") tx_new.locktime = get_locktime_for_new_transaction(self.network) return tx_new