Solidity

如何找到所有代幣持有者?

  • February 26, 2019

例如,合約在創建代幣時保存地址,但之後代幣持有者可以將代幣或所有代幣發送到另一個錢包。

是否可以找到由我的合約創建的代幣持有者的所有錢包地址?

所有代幣轉移都是通過呼叫合約上的方法來執行的——因此你的合約可以以任何它希望的方式跟踪餘額和賬戶。如果您使用 Solidity 的預設排列mapping,您還需要在數組中保留一個單獨的已知帳戶 ID 列表,以便您可以迭代它們。

我創建了一個獨立的開源工具,它做同樣的事情。

  • 取一個代幣合約地址
  • 使用JSON-RPC API遍歷所有 ERC-20Transfer事件以獲取令牌eth_getLogs
  • 建立這些事件的本地數據庫
  • 允許您在任何時間點(block num)使用 SQL 查詢任何賬戶餘額 - 請注意,某些餘額可能已變為零

您可以在此處找到如何建構數據庫的命令行應用程序

核心 Python 邏輯在這裡

到處都有一些怪癖:例如,檢測某些令牌的鑄幣/創建事件並不簡單。因此,如果您僅依賴Transfer事件,您可能會在接收初始總供應量的帳戶上出現負餘額。

引用自:https://ethereum.stackexchange.com/questions/4295