2017-07-28 214 views

回答

0

有很多可能的方法来实现这一点。一个可能的快速和肮脏的解决办法是检查是否通过调用下面就合同的地址存在ERC20功能:

eth.call({to:contractAddress, data:web3.sha3("balanceOf(address)")}) 

非ERC20会返回一个“空” 0x六角响应,而一个ERC20会给你一个32byte uint,在这种情况下为0,但如果您在数据中提供了一个地址,那么它将为您提供该地址的实际令牌余额。

这不是确定合同是ERC20的保证方式,因为其他合同可能会公开相同的功能,但它是一个快速而简单的检查。您可以在totalSupply()等添加额外的电话以获得更多确认。

+0

我在想这里的eth是什么? –

+0

客户端API https://web3js.readthedocs.io/en/1.0/web3-eth.html#call –