我正在尝试拉取钱包地址持有的令牌合约列表,类似于bscscan的操作方式,除了编程。bscscan.com/apis没有端点,web3js似乎只报告ETH余额。这是可以实现的,因为bscscan报告列表,而且许多令牌跟踪器(如farmfol.io)似乎也提取该信息。
frebpwbc1#
每个地址的ERC-20(以及诸如TRC-20、BEP-20等的类似ERC-20)令牌余额被存储在令牌的契约中。区块链浏览器会扫描每笔交易中的Transfer()事件,如果发射者是一个令牌合约,则会更新其单独数据库中的令牌余额。每个地址(来自该单独数据库)的所有令牌余额随后会显示为地址详细信息页面上的令牌余额。Etherscan和BSCScan目前没有提供API来返回每个地址的令牌余额。为了获取一个地址的所有ERC-20令牌余额,最简单的解决方案(除了找到返回数据的API之外)是循环遍历所有令牌合约(或者只遍历您感兴趣的令牌),并调用它们的balanceOf(address)函数。
Transfer()
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(); }
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扫描参考
https://api.bscscan.com/api?module=account&action=tokentx&address=0x7bb89460599dbf32ee3aa50798bbceae2a5f7f6a&page=1&offset=5&startblock=0&endblock=999999999&sort=asc&apikey=YourApiKeyToken
2hh7jdfx3#
您可以尝试其中一个聚合数据API,如Covalent -BSC的余额(获取地址的令牌余额)端点正是您所需要的。https://api.covalenthq.com/v1/56/address/{wallet_address}/balances_v2/?key={API_KEY}
3条答案
按热度按时间frebpwbc1#
每个地址的ERC-20(以及诸如TRC-20、BEP-20等的类似ERC-20)令牌余额被存储在令牌的契约中。
区块链浏览器会扫描每笔交易中的
Transfer()
事件,如果发射者是一个令牌合约,则会更新其单独数据库中的令牌余额。每个地址(来自该单独数据库)的所有令牌余额随后会显示为地址详细信息页面上的令牌余额。Etherscan和BSCScan目前没有提供API来返回每个地址的令牌余额。
为了获取一个地址的所有ERC-20令牌余额,最简单的解决方案(除了找到返回数据的API之外)是循环遍历所有令牌合约(或者只遍历您感兴趣的令牌),并调用它们的
balanceOf(address)
函数。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扫描参考
2hh7jdfx3#
您可以尝试其中一个聚合数据API,如Covalent -BSC的余额(获取地址的令牌余额)端点正是您所需要的。
https://api.covalenthq.com/v1/56/address/{wallet_address}/balances_v2/?key={API_KEY}