Browse Source

tx.new, tw.ctl: minor Ethereum fixes

The MMGen Project 8 months ago
parent
commit
a73cb53ddc
7 changed files with 21 additions and 11 deletions
  1. 2 1
      mmgen/amt.py
  2. 1 1
      mmgen/data/release_date
  3. 1 1
      mmgen/data/version
  4. 9 1
      mmgen/proto/btc/tx/new.py
  5. 4 0
      mmgen/proto/eth/tx/new.py
  6. 3 3
      mmgen/tw/ctl.py
  7. 1 4
      mmgen/tx/new.py

+ 2 - 1
mmgen/amt.py

@@ -67,7 +67,8 @@ class CoinAmt(Decimal,Hilite,InitErrors): # abstract class
 	def to_unit(self,unit,show_decimal=False):
 	def to_unit(self,unit,show_decimal=False):
 		ret = Decimal(self) // getattr(self,unit)
 		ret = Decimal(self) // getattr(self,unit)
 		if show_decimal and ret < 1:
 		if show_decimal and ret < 1:
-			return f'{ret:.8f}'.rstrip('0')
+			ret = f'{ret:.8f}'.rstrip('0')
+			return ret + '0' if ret.endswith('.') else ret
 		return int(ret)
 		return int(ret)
 
 
 	@classmethod
 	@classmethod

+ 1 - 1
mmgen/data/release_date

@@ -1 +1 @@
-May 2024
+June 2024

+ 1 - 1
mmgen/data/version

@@ -1 +1 @@
-14.1.dev33
+14.1.dev34

+ 9 - 1
mmgen/proto/btc/tx/new.py

@@ -14,7 +14,8 @@ proto.btc.tx.new: Bitcoin new transaction class
 
 
 from ....tx import new as TxBase
 from ....tx import new as TxBase
 from ....obj import MMGenTxID
 from ....obj import MMGenTxID
-from ....util import msg,fmt,make_chksum_6,die
+from ....util import msg, fmt, make_chksum_6, die, suf
+from ....color import pink
 from .base import Base
 from .base import Base
 
 
 class New(Base,TxBase.New):
 class New(Base,TxBase.New):
@@ -29,6 +30,13 @@ class New(Base,TxBase.New):
 		self.cfg._util.vmsg(f'Relay fee: {kb_fee} {self.coin}/kB, for transaction: {ret} {self.coin}')
 		self.cfg._util.vmsg(f'Relay fee: {kb_fee} {self.coin}/kB, for transaction: {ret} {self.coin}')
 		return ret
 		return ret
 
 
+	@property
+	def network_estimated_fee_label(self):
+		return 'Network-estimated ({}, {} conf{})'.format(
+			self.cfg.fee_estimate_mode.upper(),
+			pink(str(self.cfg.fee_estimate_confs)),
+			suf(self.cfg.fee_estimate_confs))
+
 	async def get_rel_fee_from_network(self):
 	async def get_rel_fee_from_network(self):
 		try:
 		try:
 			ret = await self.rpc.call(
 			ret = await self.rpc.call(

+ 4 - 0
mmgen/proto/eth/tx/new.py

@@ -109,6 +109,10 @@ class New(Base,TxBase.New):
 				else:
 				else:
 					return [int(reply)]
 					return [int(reply)]
 
 
+	@property
+	def network_estimated_fee_label(self):
+		return 'Network-estimated'
+
 	# get rel_fee (gas price) from network, return in native wei
 	# get rel_fee (gas price) from network, return in native wei
 	async def get_rel_fee_from_network(self):
 	async def get_rel_fee_from_network(self):
 		return Int(await self.rpc.call('eth_gasPrice'),16),'eth_gasPrice' # ==> rel_fee,fe_type
 		return Int(await self.rpc.call('eth_gasPrice'),16),'eth_gasPrice' # ==> rel_fee,fe_type

+ 3 - 3
mmgen/tw/ctl.py

@@ -73,15 +73,15 @@ class TwCtl(MMGenObject,metaclass=AsyncInit):
 			self.importing = True
 			self.importing = True
 			mode = 'w'
 			mode = 'w'
 
 
-		if not no_rpc:
-			self.rpc = await rpc_init(cfg, proto, ignore_wallet=rpc_ignore_wallet)
-
 		self.cfg = cfg
 		self.cfg = cfg
 		self.proto = proto
 		self.proto = proto
 		self.mode = mode
 		self.mode = mode
 		self.desc = self.base_desc = f'{self.proto.name} tracking wallet'
 		self.desc = self.base_desc = f'{self.proto.name} tracking wallet'
 		self.cur_balances = {} # cache balances to prevent repeated lookups per program invocation
 		self.cur_balances = {} # cache balances to prevent repeated lookups per program invocation
 
 
+		if not no_rpc:
+			self.rpc = await rpc_init(cfg, proto, ignore_wallet=rpc_ignore_wallet)
+
 		if self.use_tw_file:
 		if self.use_tw_file:
 			if self.proto.coin == 'BTC':
 			if self.proto.coin == 'BTC':
 				self.tw_dir = Path(self.cfg.data_dir)
 				self.tw_dir = Path(self.cfg.data_dir)

+ 1 - 4
mmgen/tx/new.py

@@ -159,10 +159,7 @@ class New(Base):
 			desc = 'User-selected'
 			desc = 'User-selected'
 			start_fee = self.cfg.fee
 			start_fee = self.cfg.fee
 		else:
 		else:
-			desc = 'Network-estimated ({}, {} conf{})'.format(
-				self.cfg.fee_estimate_mode.upper(),
-				pink(str(self.cfg.fee_estimate_confs)),
-				suf(self.cfg.fee_estimate_confs) )
+			desc = self.network_estimated_fee_label
 			fee_per_kb,fe_type = await self.get_rel_fee_from_network()
 			fee_per_kb,fe_type = await self.get_rel_fee_from_network()
 
 
 			if fee_per_kb < 0:
 			if fee_per_kb < 0: