如何查找erc20代币余额

Posted

技术标签:

【中文标题】如何查找erc20代币余额【英文标题】:How to find erc20 tokens balance 【发布时间】:2021-08-31 11:36:22 【问题描述】:

我正在尝试查找特定地址的 erc20 代币(例如 Tether)的余额。

其实,我希望找到一个像下面这样工作的API,获取账户地址和合约地址,并返回该特定令牌的余额。

Ether Scan token check

为了阐明我的目的,在 TRC20 网络中,我使用this endpoit 并且响应中有一组 trc20 代币余额。

【问题讨论】:

【参考方案1】:

ERC-20(和ERC-20-like如TRC-20、BEP-20等)每个地址的代币余额存储在代币的合约中。

Trongrid 使用一个单独的数据库来汇总整个 Tron 网络历史中所有 Transfer() 事件(在 ERC-20 标准中定义)的代币余额。 ERC-20 代币可能有类似的第三方服务,但我不知道。例如,Etherscan 确实有相同的信息,但它们只显示在地址 detail 页面上,并且不提供包含此数据的 API。

为了获得一个地址的所有 ERC-20 代币余额,最简单的解决方案(除了找到一个与 Trongrid 端点执行相同操作的 API 之外)是遍历所有代币合约(或者只是你的代币'感兴趣),并调用他们的balanceOf(address)函数。

【讨论】:

【参考方案2】:

您可以使用一个简单的 Covlanet API 调用来调用它: https://www.covalenthq.com/docs/api/#get-/v1/chain_id/address/address/balances_v2/

如果你想切换到任何其他网络,只需更改chain_id

【讨论】:

【参考方案3】:

在以太坊中,没有像 Trongrid 这样的内置 API 来检索某些账户的代币余额。

如果你想这样做,你必须调用智能合约代币的“balanceOf”方法。

Infura API 有一个 eth_call method 来执行此操作。

调用这个API有点棘手,为此我写了两个代码sn-ps,分别在JS和Go中。

JS:https://gist.github.com/arshamalh/33e6646eb793997f2cc69668bd97010a

去:https://gist.github.com/arshamalh/9fe035f7fe18cb5387737546ef84bf6c

【讨论】:

以上是关于如何查找erc20代币余额的主要内容,如果未能解决你的问题,请参考以下文章

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

Web3:从地址中检索 ERC20 代币的余额

如何从以太坊地址获取 ERC20、ERC721 和 ERC827 代币列表

手把手教你发行代币

以太坊私链部署erc20_usdt代币

使用 PHP 将 ERC20 代币从一个账户转移到另一个账户