How to query all addresses of a particular Ethereum token above a certain balance(如何查询某一特定以太令牌超过一定余额的所有地址)
问题描述
我不熟悉以太区块链,目前正在寻找一种方法来查询特定的以太令牌合同,以定位该特定令牌余额超过x的所有地址,然后将结果保存到.txt文件。
我一直在寻找解决方案,但大多数似乎要么概述了查询特定地址的方法,要么查询主以太链本身。我想要做的是只查询与以太上的一个特定令牌关联的地址。
如有任何帮助,我们将不胜感激。
推荐答案
每个地址的令牌余额存储在令牌的约定中(而不是地址元数据中)。通常(但不总是)在映射(address => uint256)中。
大多数令牌标准(ERC-20、ERC-721等)定义一个名为balanceOf(address)的函数,该函数实际上通常访问此映射。
因此,为了仅通过查询约定存储来获得每个地址的平衡,您需要查询每个现有地址的balanceOf()函数。有16^40(或大约10^48)个可能的地址,因此这实际上是不可能的。
您在问题中提到的另一种概述的方法--查询以太链--要容易得多。
您可以获取令牌合同(选项中的address字段)发出的past event logs。
Transfer()事件。主题值为事件签名的keccak256。在您的情况下keccak256("Transfer(address,address,uint256)")==ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef
请注意,大多数第三方JSON-RPC提供程序(如InFura)只允许有限的历史数据。因此,如果您需要所有历史数据,则很可能需要连接到您自己的完整节点。区块链探索者使用类似于查询历史日志的方法。它们扫描每个交易中的
Transfer()事件,如果发射器是令牌合同,则在其单独的数据库中更新令牌余额。然后,每个地址(来自此单独的数据库)的所有令牌的余额将显示为地址详细信息页面上的令牌余额。
这篇关于如何查询某一特定以太令牌超过一定余额的所有地址的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何查询某一特定以太令牌超过一定余额的所有地址
基础教程推荐
- CORS:当凭据标志为真时,无法在 Access-Control-Allow-Origin 中使用通配符 2022-01-01
- 逻辑运算符 ||在 javascript 中,0 代表 Boolean false? 2022-01-01
- 带角度的选项卡:仅使用 $http 在单击时加载选项卡 2022-01-01
- 从快速中间件中排除路由 2022-01-01
- 当木偶师打开Chrome时,不能使用Chrome扩展 2022-01-01
- HTML5 画布调整为父级 2022-01-01
- 最佳动态 JavaScript/JQuery 网格 2022-01-01
- 使用 jQuery 在悬停时交换 DIV 类 2022-01-01
- 在 Javascript 中使用 Fetch API 上传文件并显示进度 2022-01-01
- 即使每次插入第一个输入的值不同,第二个输入仍显示相同的输入值 2022-01-01
