node.js - Web3 通过钱包地址获取所有代币

标签 node.js ethereum web3 binance

我正在尝试提取钱包地址持有的 token 合约列表,类似于 bscscan 的做法,但以编程方式除外。 bscscan.com/apis 没有端点,而 web3 似乎只报告 ETH 余额。
这是可能实现的,因为 bscscan 报告列表并且许多 token 跟踪器(例如 farmfol.io )似乎也提取该信息。我只是没有找到正确的方法。任何帮助表示赞赏!

最佳答案

ERC-20(以及类似ERC-20的比如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();
}

关于node.js - Web3 通过钱包地址获取所有代币,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68085393/

相关文章:

javascript - 如何在 NodeJS/JavaScript 中将文本格式 JSON 数组转换为 JSON 对象数组?

node.js - Istanbul 尔和 Sonar 之间的分支覆盖率百分比不匹配

javascript - web3 立即触发回调

ethereum - 从 Metamask 获取所有以太坊账户

node.js - 使用node js的谷歌云存储

node.js - 如何在redis中持久化HTTP响应

unit-testing - 单元测试日期时间值

python - Web3py send_raw_transaction ValueError : {'message' : 'invalid remainder' , 'code' : -32000}

php - 使用以太坊 RPC 获取代币余额?

python - 尝试使用 web3.py 库在以太坊中调用 balanceOf 函数但出现错误