From 69c4242a63cca9cdb3064ecc6c07077398b56bbe Mon Sep 17 00:00:00 2001 From: The MMGen Project Date: Sat, 29 Mar 2025 09:30:16 +0000 Subject: [PATCH] tx.bump: support non-integer relative fees --- mmgen/amt.py | 5 +++++ mmgen/proto/eth/tx/online.py | 2 +- mmgen/tx/bump.py | 9 +++++---- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/mmgen/amt.py b/mmgen/amt.py index 2b80c5b5..e02d4d8a 100755 --- a/mmgen/amt.py +++ b/mmgen/amt.py @@ -211,3 +211,8 @@ class ETCAmt(ETHAmt): def CoinAmtChk(proto, num): assert type(num) is proto.coin_amt, f'CoinAmtChk: {type(num)} != {proto.coin_amt}' return num + +class RelFeeAmt(Decimal): + + def __str__(self): + return '{:.08f}'.format(self).rstrip('0').rstrip('.') diff --git a/mmgen/proto/eth/tx/online.py b/mmgen/proto/eth/tx/online.py index 03fb8369..f5146e3b 100755 --- a/mmgen/proto/eth/tx/online.py +++ b/mmgen/proto/eth/tx/online.py @@ -58,7 +58,7 @@ class OnlineSigned(Signed, TxBase.OnlineSigned): return True def post_write(self): - if 'token_addr' in self.txobj: + if 'token_addr' in self.txobj and not self.txobj['to']: msg('Contract address: {}'.format(self.txobj['token_addr'].hl(0))) class TokenOnlineSigned(TokenSigned, OnlineSigned): diff --git a/mmgen/tx/bump.py b/mmgen/tx/bump.py index 630b5df2..5dfe29d2 100755 --- a/mmgen/tx/bump.py +++ b/mmgen/tx/bump.py @@ -57,11 +57,12 @@ class Bump(Completed, NewSwap): return True def check_bumped_fee_ok(self, abs_fee): - orig = int(self.orig_rel_fee) - new = int(self.fee_abs2rel(abs_fee)) + from ..amt import RelFeeAmt + orig = RelFeeAmt(self.orig_rel_fee) + new = RelFeeAmt(self.fee_abs2rel(abs_fee)) if new <= orig: - ymsg('New fee ({b} {d}) <= original fee ({a} {d}). Please choose a higher fee'.format( - a=orig, b=new, d=self.rel_fee_disp)) + fs = 'New fee ({b!s} {d}) <= original fee ({a!s} {d})\nPlease choose a higher fee' + ymsg(fs.format(a=orig, b=new, d=self.rel_fee_disp)) return False return True