首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以通过智能合同冻结部分ERC20令牌吗?

我可以通过智能合同冻结部分ERC20令牌吗?
EN

Ethereum用户
提问于 2018-10-09 03:09:54
回答 2查看 2.1K关注 0票数 5

冻结功能是在向买方传输ERC20令牌时,在Admin中对某些部分的ERC20令牌的销售施加限制。管理员可以在管理仪表板中随机指定冻结部分和冻结期。例如,我们必须将10,000个ERC20令牌传输给买方。我们不加限制地转让1000个令牌,3个月冻结4000个令牌,5个月冻结5000个令牌。此冻结功能适用于ICO的所有阶段(售前、ICO和售后).

我可以通过ERC20令牌的智能契约获得这种功能吗?请建议我,即使没有智能合同的功能可以完成。

提前谢谢你。

EN

回答 2

Ethereum用户

发布于 2018-10-09 04:47:29

我相信谢恩的回答有点误导人。是的,您可以在令牌契约中添加冻结功能,如注释中提到的那样。

如果您担心这是否给令牌合同所有者“提供了太多的权力”,那么这只是一个冻结功能如何编码的问题。如果你增加了一个通用的可能性,冻结任何业主想要的任何转让,那么我同意这可能不是一个好主意,商业上。

但是,没有什么可以阻止您实现冻结功能,以便(某些)传输只能在一段时间内(或其他条件)被冻结,并且在此之后冻结功能将不再工作,它将是无用的。

所以您的transfer函数可以有这样的内容:

代码语言:javascript
复制
pragma solidity ^0.4.25;
contract TokenContract { 
    uint256 freezingPossible = 1539060104; // decides by you
    address oneFrozen = 0x123;


    function transfer(address to, uint tokens) public returns (bool success) {
        if (now < freezingPossible) {
            require(to != oneFrozen, "The account should not be frozen");
        }
        // normal transfer logic
    }
}

上面的代码实际上阻止将令牌传输到冻结的帐户,而不是按需要从它中传输,但希望您能够理解。

记住,也要为transferFrom实现类似的功能。

票数 2
EN

Ethereum用户

发布于 2018-10-09 03:25:54

您不能用ERC20令牌来完成这个任务,因为每个令牌都没有唯一的标识符,这意味着您不能只冻结一定数量的令牌。要做到这一点,您需要使用ERC721。

另一种方法是设置一个白名单,每次传输发生时都会对其进行检查。您可以指定哪些地址可以使用,哪些地址不能使用,以及何时使用,但只有在没有大量事务发生并且可以保持严格控制的情况下才能工作。

您的最佳选择是将所有令牌放入白名单合同中,该合同在某一日期后将令牌分发给特定的买家。有关此问题,请参阅(过时的) BAT令牌分布

票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/60220

复制
相关文章

相似问题

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