Hacker News new | past | comments | ask | show | jobs | submit login

The contract has a blacklist built in, see for yourself: https://etherscan.io/address/0xa2327a938febf5fec13bacfb16ae1... (and you can see the logs of them blacklisting and unblacklisting addresses here: https://etherscan.io/txs?a=0x5db0115f3b72d19cea34dd697cf412f...)

It inherits from Blacklistable which allows a blacklister to blacklist accounts, and almost all functions on the contract have the notBlacklisted modifier which prevents them from being called by blacklisted accounts.

  /**
   * @title Blacklistable Token
   * @dev Allows accounts to be blacklisted by a "blacklister" role
   */
  contract Blacklistable is Ownable {
      address public blacklister;
      mapping(address => bool) internal blacklisted;
  
      event Blacklisted(address indexed _account);
      event UnBlacklisted(address indexed _account);
      event BlacklisterChanged(address indexed newBlacklister);
  
      /**
       * @dev Throws if called by any account other than the blacklister
       */
      modifier onlyBlacklister() {
          require(
              msg.sender == blacklister,
              "Blacklistable: caller is not the blacklister"
          );
          _;
      }
  
      /**
       * @dev Throws if argument account is blacklisted
       * @param _account The address to check
       */
      modifier notBlacklisted(address _account) {
          require(
              !blacklisted[_account],
              "Blacklistable: account is blacklisted"
          );
          _;
      }
  
      /**
       * @dev Checks if account is blacklisted
       * @param _account The address to check
       */
      function isBlacklisted(address _account) external view returns (bool) {
          return blacklisted[_account];
      }
  
      /**
       * @dev Adds account to blacklist
       * @param _account The address to blacklist
       */
      function blacklist(address _account) external onlyBlacklister {
          blacklisted[_account] = true;
          emit Blacklisted(_account);
      }
  
      /**
       * @dev Removes account from blacklist
       * @param _account The address to remove from the blacklist
       */
      function unBlacklist(address _account) external onlyBlacklister {
          blacklisted[_account] = false;
          emit UnBlacklisted(_account);
      }
  
      function updateBlacklister(address _newBlacklister) external onlyOwner {
          require(
              _newBlacklister != address(0),
              "Blacklistable: new blacklister is the zero address"
          );
          blacklister = _newBlacklister;
          emit BlacklisterChanged(blacklister);
      }
  }



Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: