首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取可靠的ERC20令牌持有者列表

获取可靠的ERC20令牌持有者列表
EN

Stack Overflow用户
提问于 2018-10-02 10:35:36
回答 2查看 3.6K关注 0票数 3

是否可以从另一个可靠合约中获取给定ERC20令牌的令牌持有者列表?

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

有什么我漏掉的吗?或者这是不可能的?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2018-10-02 10:43:55

无法直接从合同中获取ERC20令牌持有者的列表。

您是正确的,因为您不能这样做,因为您不能获得可靠的映射的键列表,因此如果没有外部干预是不可能的。

也就是说,有很多人需要这个功能并执行任务来实现这一点。我能想到的最大的例子是根据他们持有的另一个令牌向不同的账户空投令牌。大多数人这样做的方式是从区块链中读取所有令牌持有者,并将其存储在本地数据库中。在那里,他们将实现一个省油的函数,该函数接受地址作为参数,并以这种方式对它们执行操作。

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

票数 7
EN

Stack Overflow用户

发布于 2021-12-02 03:33:28

这也许是可能的。如果你做了一个函数,可以在调用传输函数时选择发送者和接收者,这是可能的。

代码语言:javascript
复制
mapping(address => bool) _holderList;

function transferFrom(address from, address to, uint256 amount) {
    checkHolderList(from);
    checkHolderList(to);
    _transfer(from, to, amount);
}

function checkHolderList(address _address) {
    require(balanceOf(_address) > 0, "this address can't be holder");
    require(_holderList[address] != true, "this address is already in holder list");
    _holderList[_address] = true;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52601289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档