【问题标题】:attempt at "onlyWhitelist" modifier in solidity尝试在solidity中使用“onlyWhitelist”修饰符
【发布时间】:2018-05-21 02:37:09
【问题描述】:

我正在尝试创建一个只能转移到白名单地址列表的 ERC20 令牌。这就是我想出的……由于某种原因,当我尝试在雾上启动合约时,交易失败了……说它会在花费所有气体后失败。有没有人看到任何明显的问题?谢谢!

pragma solidity ^0.4.21;

contract WHITELIST {

    mapping(address => bool) public DignityWhitelist;

    modifier isWhitelisted() {
        require(DignityWhitelist[msg.sender] == true);
        _; 
    }

    function WHITELIST (address initialAccount) public {
        if(initialAccount == 0x0) {
            initialAccount = msg.sender;
        }
        DignityWhitelist[initialAccount];
    }

    function enableWhitelist(address whitelistAddress) external {
        DignityWhitelist[whitelistAddress] = true;
    }

    function disableWhitelist(address removeAddress) external {
        DignityWhitelist[removeAddress] = false;
    }
}

【问题讨论】:

    标签: solidity


    【解决方案1】:

    合约不会失败,但并不安全。您允许任何人启用/禁用白名单条目。您需要限制对合同所有者的访问。

    pragma solidity ^0.4.21;
    
    contract WHITELIST {
        address owner;
    
        mapping(address => bool) public DignityWhitelist;
    
        modifier isWhitelisted() {
            require(DignityWhitelist[msg.sender] == true);
            _; 
        }
    
        modifier isOwner() {
            require(msg.sender == owner);
            _;
        }
    
        function WHITELIST() public {
            owner = msg.sender;
            DignityWhitelist[msg.sender] = true;
        }
    
        function enableWhitelist(address whitelistAddress) external isOwner {
            DignityWhitelist[whitelistAddress] = true;
        }
    
        function disableWhitelist(address removeAddress) external isOwner {
            require(removeAddress != owner);
            DignityWhitelist[removeAddress] = false;
        }
    }
    

    您需要将isWhitelisted 修饰符添加到要限制访问的函数。

    【讨论】:

    • 谢谢亚当!非常感谢。
    猜你喜欢
    • 2020-08-25
    • 2021-07-19
    • 2011-07-01
    • 2014-05-13
    • 2021-04-16
    • 1970-01-01
    • 2022-06-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多