繁体   English   中英

如何通过钱包地址获取所有代币

[英]How to get all tokens by wallet address

我正在尝试提取钱包地址持有的代币合约列表,类似于 bscscan 的做法,但以编程方式除外。 bscscan.com/apis 没有端点,web3js 似乎只报告 ETH 余额。

这是可以实现的,因为 bscscan 报告了该列表,并且许多令牌跟踪器(例如 farmfol.io )似乎也提取了该信息。 我只是没有找到正确的方法

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

区块链浏览器扫描每笔交易的Transfer()事件,如果发射器是代币合约,他们会更新其单独数据库中的代币余额。 每个地址的所有代币余额(来自这个单独的数据库)然后在地址详细信息页面上显示为代币余额。

Etherscan 和 BSCScan 目前不提供可返回每个地址的代币余额的 API。

为了获得一个地址的所有 ERC-20 代币余额,最简单的解决方案(除了找到返回数据的 API)是遍历所有代币合约(或只是您感兴趣的代币),然后调用他们的balanceOf(address)函数。

const tokenAddresses = [
    '0x123',
    '0x456',
];
const myAddress = '0x789';

for (let tokenAddress of tokenAddresses) {
    const contract = new web3.eth.Contract(erc20AbiJson, tokenAddress);
    const tokenBalance = await contract.methods.balanceOf(myAddress).call();
}

你可以打电话

https://api.bscscan.com/api?module=account&action=tokentx&address=0x7bb89460599dbf32ee3aa50798bbceae2a5f7f6a&page=1&offset=5&startblock=0&endblock=999999999&sort=asc&apikey=YourApiKeyToken

并解析结果。 你曾经接触过的所有代币都会在这里。

BSCScan 参考

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM