0

我想为分析代币持有者数量历史创建一个图表,例如:

holders amount

  ▲
  │              ┌─────
  │              │
  │              │
  │              │
  │       ┌──────┘
  │       │
  │       │
  │ ┌─────┘
  │ │
  │ │
  └─┴───────────────────►  date

X轴代表日期,Y轴代表持有人数量,上图表示持有人数量随着日期的增加而增加。

但是问题是我无法获得过去日期的持有人数量,etherscan 仅提供实时持有人数量。

4

1 回答 1

0

Transfer()您可以从事件日志中及时计算出代币持有者的总数。

例如,使用getPastLogs() web3 函数来收集历史事件日志。

  • from部署代币合约时的区块

  • to最新(当前)块或任何适合您需要的块

  • address发出这些事件日志的代币合约

  • topics帮助您仅过滤某些事件,或仅过滤包含特定值的事件

    例如,在您的情况下,Transfer(address,address,uint256)事件会产生项目的值ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef(事件签名的 keccak-256 哈希)topics[0]。因此,您可以选择仅过滤此事件的日志 - 而不是批准和其他事件。

于 2021-09-01T18:42:05.517 回答