From 4f39e29283ee1c5929c362e3a911c4768d53872f Mon Sep 17 00:00:00 2001 From: MMGen Date: Sat, 22 Jun 2019 16:38:03 +0000 Subject: [PATCH] eth txview: display token send address correctly --- mmgen/altcoins/eth/contract.py | 6 +++++- mmgen/altcoins/eth/tx.py | 5 ++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/mmgen/altcoins/eth/contract.py b/mmgen/altcoins/eth/contract.py index 6fb63d54..c1ebfa3b 100755 --- a/mmgen/altcoins/eth/contract.py +++ b/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) diff --git a/mmgen/altcoins/eth/tx.py b/mmgen/altcoins/eth/tx.py index 51d774f6..f759f65e 100755 --- a/mmgen/altcoins/eth/tx.py +++ b/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 + ')'),