token - 获取以太坊 ERC-20 代币信息的正确方法
问题描述
有人能告诉我从以太坊区块链获取 ERC-20 代币信息(小数位数、名称和符号)的正确方法吗?我认为可以通过 ABI 构造(如果用户 web3js 库)调用适当的函数 decimals()、name()、symbol() 到确切令牌的合约地址来完成。在许多情况下,它可以这样做。但不幸的是,这并不适用于所有情况。例如,有一个地址为:0xb5a5f22694352c15b00323844ad545abb2b11028 的代币如果我们在 etherscan 的网页上阅读有关此代币的合约信息,则合约公共变量名称、符号和小数中没有任何信息: https ://etherscan.io/address/0xb5a5f22694352c15b00323844ad54abb210528 #readContract 但是 etherscan 知道这个令牌 (ICON (ICX)) 的名称和符号。此外,还有另一个网站可以获取有关此令牌的小数计数的信息: https ://api.ethplorer.io/getTokenInfo/0xb5a5f22694352c15b00323844ad545abb2b11028?apiKey=freekey 所以问题是:有没有通用的方法来获取小数、名称和符号确切的令牌(例如 0xb5a5f22694352c15b00323844ad545abb2b11028)是否通过区块链调用?以及 etherscan 和 ethplorer.io 网站如何处理此类计算?希望有人可以帮助我的问题。提前致谢!
解决方案
令牌提供者接口规范说这 3 种方法是可选的。这意味着你不能期望每个代币合约都实现这些。我想您必须为那些与标准不兼容的合同提供解决方法。
对于https://etherscan.io/address/0xb5a5f22694352c15b00323844ad545abb2b11028#readContract,如果你查看源代码,合约名称是contract IcxToken
,这至少是一种识别方式。
推荐阅读
- masstransit - Masstransit Automatonymous:丢弃丢失 sagas 实例的事件进入错误队列
- azure - Ingress 指标是如何平均的?
- java - java中的static和protected有什么区别?
- java - 使用 Firestore 时如何实现 toObject() 方法泛型?
- kubernetes - 将 kubernetes CNI 从 weave 切换到 calico
- css-selectors - 没有类的元素的 css 选择器
- python - 是否可以通过两个条件过滤和数据框?
- kotlin - 扩展函数的“this@”语法
- sql - 为什么在 SQL 语句“FROM”中添加“AS”会导致错误?
- excel - 保存表日期列过滤条件