可靠地获取 ERC20 代币持有者列表

use*_*646 3 ethereum solidity smartcontracts ether erc20

是否可以从另一个 Solidity 合约中获取给定 ERC20 代币的代币持有者列表?

由于“余额”存储在大多数 ERC20 合约的映射中,我认为这是不可能的,因为您无法获得可靠映射的键列表。

有什么我错过的吗?或者这是不可能的?

谢谢!

Sha*_*ine 6

无法直接从合约中获得 ERC20 代币持有者的列表。

您是正确的,因为您无法在 Solidity 中获取映射的键列表,因此无法执行此操作,因此在没有外部干预的情况下是不可能的。

话虽如此,有很多人需要此功能并执行任务来实现此目的。我能想到的最大例子是根据他们持有的另一个代币将代币空投到各个账户。大多数人这样做的方式是从区块链中读取所有代币持有者并将其存储在本地数据库中。从那里,他们将实现一个 gas-efficient 函数,将地址作为参数,并以这种方式对它们执行操作。

仅使用区块链是不可能完成您想要的,但是使用链上/链下逻辑的组合可以实现您的目标。