NodeJS 如何按钱包地址获取所有代币

vmpqdwk3  于 2023-03-01  发布在  Node.js
关注(0)|答案(3)|浏览(324)

我正在尝试拉取钱包地址持有的令牌合约列表,类似于bscscan的操作方式,除了编程。bscscan.com/apis没有端点,web3js似乎只报告ETH余额。
这是可以实现的,因为bscscan报告列表,而且许多令牌跟踪器(如farmfol.io)似乎也提取该信息。

frebpwbc

frebpwbc1#

每个地址的ERC-20(以及诸如TRC-20BEP-20等的类似ERC-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();
}
4bbkushb

4bbkushb2#

你可以打电话
https://api.bscscan.com/api?module=account&action=tokentx&address=0x7bb89460599dbf32ee3aa50798bbceae2a5f7f6a&page=1&offset=5&startblock=0&endblock=999999999&sort=asc&apikey=YourApiKeyToken
并解析结果。所有你碰过的代币都会在这里。
BSC扫描参考

2hh7jdfx

2hh7jdfx3#

您可以尝试其中一个聚合数据API,如Covalent -BSC的余额(获取地址的令牌余额)端点正是您所需要的。
https://api.covalenthq.com/v1/56/address/{wallet_address}/balances_v2/?key={API_KEY}

相关问题