Browse Source

eth txview: display token send address correctly

MMGen 5 years ago
parent
commit
4f39e29283
2 changed files with 9 additions and 2 deletions
  1. 5 1
      mmgen/altcoins/eth/contract.py
  2. 4 1
      mmgen/altcoins/eth/tx.py

+ 5 - 1
mmgen/altcoins/eth/contract.py

@@ -25,7 +25,7 @@ from . import rlp
 
 from mmgen.globalvars import g
 from mmgen.common import *
-from mmgen.obj import MMGenObject,TokenAddr,CoinTxID,ETHAmt
+from mmgen.obj import MMGenObject,CoinAddr,TokenAddr,CoinTxID,ETHAmt
 from mmgen.util import msg,pmsg
 
 try:
@@ -50,6 +50,10 @@ class Token(MMGenObject): # ERC20
 				raise TokenNotInBlockchain("Token '{}' not in blockchain".format(addr))
 		self.base_unit = Decimal('10') ** -decimals
 
+	@staticmethod
+	def transferdata2sendaddr(data): # online
+		return CoinAddr(parse_abi(data)[1][-40:])
+
 	def transferdata2amt(self,data): # online
 		return ETHAmt(int(parse_abi(data)[-1],16) * self.base_unit)
 

+ 4 - 1
mmgen/altcoins/eth/tx.py

@@ -252,7 +252,7 @@ class EthereumMMGenTX(MMGenTX):
 				Nonce:     {}
 				Data:      {d}
 				\n""".replace('\t','')
-		keys = ('from','to','amt','nonce')
+		keys = ('from',('to','token_to')['token_to' in self.txobj],'amt','nonce')
 		ld = len(self.txobj['data'])
 		return fs.format(   *((self.txobj[k] if self.txobj[k] != '' else Str('None')).hl() for k in keys),
 							d='{}... ({} bytes)'.format(self.txobj['data'][:40],ld//2) if ld else Str('None'),
@@ -454,6 +454,9 @@ class EthereumTokenMMGenTX(EthereumMMGenTX):
 			self.data = o['data'] = t.create_data(o['to'],o['amt'])
 
 	def format_view_body(self,*args,**kwargs):
+		if self.data:
+			from .contract import Token
+			self.txobj['token_to'] = Token.transferdata2sendaddr(self.data)
 		return 'Token:     {d} {c}\n{r}'.format(
 			d=self.txobj['token_addr'].hl(),
 			c=blue('(' + g.dcoin + ')'),