获取以太坊 ERC-20 代币信息的正确方法

Posted

技术标签:

【中文标题】获取以太坊 ERC-20 代币信息的正确方法【英文标题】:Right way to get ethereum ERC-20 tokens information 【发布时间】:2018-10-17 18:13:35 【问题描述】:

有人能告诉我从以太坊区块链获取 ERC-20 代币信息(小数位数、名称和符号)的正确方法吗? 我认为可以通过 ABI 构造(如果用户 web3js 库)调用适当的函数 decimals()、name()、symbol() 到确切令牌的合约地址来完成。在许多情况下,它可以这样做。但不幸的是,这并不适用于所有情况。例如,有一个带有地址的令牌: 0xb5a5f22694352c15b00323844ad545abb2b11028 如果我们在 etherscan 的网页上阅读有关此代币的合约信息,合约公共变量名称、符号和小数中没有写入任何信息: https://etherscan.io/address/0xb5a5f22694352c15b00323844ad545abb2b11028#readContract 但是 etherscan 知道这个令牌 (ICON (ICX)) 的名称和符号。此外,还有另一个网站可以获取有关此令牌的小数计数的信息: https://api.ethplorer.io/getTokenInfo/0xb5a5f22694352c15b00323844ad545abb2b11028?apiKey=freekey 所以问题是:是否有任何通用方法可以通过区块链调用获取确切令牌的小数、名称和符号(例如 0xb5a5f22694352c15b00323844ad545abb2b11028)?以及 etherscan 和 ethplorer.io 网站如何处理此类计算? 希望有人可以帮助我的问题。提前致谢!

【问题讨论】:

【参考方案1】:

The token provider interface spec 表示这 3 种方法是可选的。这意味着你不能期望每个代币合约都实现这些。我想您必须对那些与标准不兼容的合同有解决方法。

对于https://etherscan.io/address/0xb5a5f22694352c15b00323844ad545abb2b11028#readContract,如果你查看源代码,合约名称是contract IcxToken,这至少是一种识别方式。

【讨论】:

感谢您的回复。是的,我看到了 ERC20 代币的标准,它说小数、名称和符号是可选的。但问题是 ethplorer.io 使用什么方法来了解这些数据。 Ethplorer 知道 0xb5a5f22694352c15b00323844ad545abb2b11028 令牌的小数、名称和符号,我想知道如何...

以上是关于获取以太坊 ERC-20 代币信息的正确方法的主要内容,如果未能解决你的问题,请参考以下文章

以太坊ERC20代币开发

以太坊私链部署erc20_usdt代币

如何检测以太坊地址是不是为 ERC20 代币合约?

以太坊上发行ERC20代币

ERC20 代币余额如何存储在以太坊区块链上

第三方可以向以太坊区块链发送 ERC20 代币交易吗?