收集代币持有者(代理合约)

问题描述 投票:0回答:1

我需要收集有关代币持有者的信息。

这是代币合约,它是代理(bnb链):

0x9356f6d95b8e109f4b7ce3e49d672967d3b48383

我看到其中使用了

Mint
方法,但在实现中我没有看到这样的函数。

我决定只通过bscscan,尝试通过实施合约上的balanceOf手动找到它,但是持有者中写的所有内容 - 都说0。那么我应该在哪里以及如何获取信息,我不太明白?

我有一个这样的计划:

  1. 查看活动(铸币或转账)
  2. 写下活动地址
  3. 然后在balanceOf函数中找出它们上的代币数量。

我哪里错了,如果我是对的,那为什么不起作用?

所以我试图从代币合约中获取持有者列表和持有量。

ethereum solidity smartcontracts ethers.js
1个回答
0
投票

区块链浏览器(例如 BSCScan)和其他链下应用程序通常使用以这种方式工作的索引器:

  1. 循环访问代币合约发出的所有
    Transfer
    事件日志
  2. 对于每个事件日志,增加/减少接收者/发送者的链下计算余额。

ad 2:代币铸造和销毁也应该发出

Transfer
事件。对于 mint,发件人地址为 0;对于刻录 - 收件人地址为 0。


您的方法有所不同,仅读取调用

balanceOf()
时的当前余额,这不能检索交易历史记录,也不能检索每个地址的余额更改。如果在您执行对
balaceOf()
的一组调用期间某些余额发生变化,它可能会产生稍微不准确的结果。

如果您只想检索当前余额,您的方法是有效的。

如果您还需要历史余额或每个地址的转账列表,您可以使用上述方法。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.