eth txview: display token send address correctly

This commit is contained in:
The MMGen Project 2019-06-22 16:38:03 +00:00
commit 4f39e29283
Signed by: mmgen
GPG key ID: 3F8B1861E32B7DA2
2 changed files with 9 additions and 2 deletions

View file

@ -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)

View file

@ -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 + ')'),