Avalanche网络:如何获取指定地址关联的assetID值列表
可行方案分链场景实现:
1. 针对X链/P链地址
Avalanche的X链原生提供了批量查询地址所有关联资产的接口,直接调用avm_getAllBalances即可返回该地址下所有余额大于0的assetID和对应余额,无需提前知道assetID。
调用示例如下:
curl -X POST --data '{ "jsonrpc":"2.0", "id" :1, "method" :"avm_getAllBalances", "params" :{ "address":"X-avax18jma8ppw3nhx5r4ap8clazz0dps7rv5ukulre5" } }' -H 'content-type:application/json;' 127.0.0.1:9650/ext/bc/X
返回结果会直接列出所有该地址持有的assetID及对应余额。
P链也有对应的platform.getBalance扩展接口支持批量返回所有关联资产,参数仅需传入地址即可。
2. 针对C链地址
C链的eth_getAssetBalance接口仅支持单次查询单个已知assetID的余额,没有原生接口直接返回地址所有关联assetID,可通过两种方式实现:
- 方案一:提前获取全网所有已发行的原生assetID全量列表,批量遍历调用
eth_getAssetBalance,筛选出余额大于0的assetID,即为该地址关联的资产列表。 - 方案二:基于区块链索引器实现,对C链全量交易数据做索引,提取目标地址所有涉及原生资产转移的交易记录,筛选出有余额的assetID即可。如果需要同时获取ERC20/ERC721等合约资产,也可以通过索引器扫描该地址的合约交互记录统一汇总。
内容的提问来源于stack exchange,提问作者dharmatech
相关产品推荐
相关产品推荐

