Browse Source

tx.bump: support non-integer relative fees

The MMGen Project 3 days ago
parent
commit
69c4242a63
3 changed files with 11 additions and 5 deletions
  1. 5 0
      mmgen/amt.py
  2. 1 1
      mmgen/proto/eth/tx/online.py
  3. 5 4
      mmgen/tx/bump.py

+ 5 - 0
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('.')

+ 1 - 1
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):

+ 5 - 4
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