Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0x1F3F677Ecc58F6A1F9e2CF410dF4776a8546b5DE
Balance 0 ETH
Nonce 1
Code Size 6185 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

6185 bytes
0x606060405236156101725763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146101745780630753c30c14610204578063095ea7b3146102225780630e136b19146102435780630ecb93c01461026757806318160ddd146102855780631a7626e7146102a757806323b872dd146102c957806326976e3f146102f0578063313ce5671461031c578063353907141461033e5780633eaaf86b146103605780633f4ba83a1461038257806342966c68146103a657806359bf1abe146103bb5780635a0ce676146103eb5780635c975abb1461040657806370a082311461042a5780638456cb59146104585780638da5cb5b1461047c57806395d89b41146104a8578063a9059cbb14610538578063cc872b6614610559578063dd62ed3e1461056e578063dd644f72146105a2578063e47d6060146105c4578063e4997dc5146105f4578063f2fde38b14610612578063f3bdc22814610630575bfe5b341561017c57fe5b61018461064e565b6040805160208082528351818301528351919283929083019185019080838382156101ca575b8051825260208311156101ca57601f1990920191602091820191016101aa565b505050905090810190601f1680156101f65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561020c57fe5b610220600160a060020a03600435166106dc565b005b341561022a57fe5b610220600160a060020a036004351660243561077b565b005b341561024b57fe5b610253610838565b604080519115158252519081900360200190f35b341561026f57fe5b610220600160a060020a0360043516610848565b005b341561028d57fe5b6102956108c1565b60408051918252519081900360200190f35b34156102af57fe5b610295610960565b60408051918252519081900360200190f35b34156102d157fe5b610220600160a060020a0360043581169060243516604435610966565b005b34156102f857fe5b610300610aac565b60408051600160a060020a039092168252519081900360200190f35b341561032457fe5b610295610abb565b60408051918252519081900360200190f35b341561034657fe5b610295610ac1565b60408051918252519081900360200190f35b341561036857fe5b610295610ac7565b60408051918252519081900360200190f35b341561038a57fe5b610253610acd565b604080519115158252519081900360200190f35b34156103ae57fe5b610220600435610b51565b005b34156103c357fe5b610253600160a060020a0360043516610c06565b604080519115158252519081900360200190f35b34156103f357fe5b610220600435602435604435610c28565b005b341561040e57fe5b610253610c9a565b604080519115158252519081900360200190f35b341561043257fe5b610295600160a060020a0360043516610caa565b60408051918252519081900360200190f35b341561046057fe5b610253610d60565b604080519115158252519081900360200190f35b341561048457fe5b610300610de9565b60408051600160a060020a039092168252519081900360200190f35b34156104b057fe5b610184610df8565b6040805160208082528351818301528351919283929083019185019080838382156101ca575b8051825260208311156101ca57601f1990920191602091820191016101aa565b505050905090810190601f1680156101f65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561054057fe5b610220600160a060020a0360043516602435610e86565b005b341561056157fe5b610220600435610f97565b005b341561057657fe5b610295600160a060020a036004358116906024351661104d565b60408051918252519081900360200190f35b34156105aa57fe5b610295611109565b60408051918252519081900360200190f35b34156105cc57fe5b610253600160a060020a036004351661110f565b604080519115158252519081900360200190f35b34156105fc57fe5b610220600160a060020a0360043516611124565b005b341561061a57fe5b610220600160a060020a036004351661119a565b005b341561063857fe5b610220600160a060020a03600435166111f3565b005b6007805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106d45780601f106106a9576101008083540402835291602001916106d4565b820191906000526020600020905b8154815290600101906020018083116106b757829003601f168201915b505050505081565b60005433600160a060020a039081169116146106f85760006000fd5b600a805460a060020a74ff0000000000000000000000000000000000000000199091161773ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03831690811790915560408051918252517fcc358699805e9a8b7f77b522628c7cb9abd07d9efb86b6fb616af1609036a99e916020908290030190a15b5b50565b6040604436101561078c5760006000fd5b600a5460a060020a900460ff161561082657600a54604080517faee92d33000000000000000000000000000000000000000000000000000000008152600160a060020a0333811660048301528681166024830152604482018690529151919092169163aee92d3391606480830192600092919082900301818387803b151561081057fe5b6102c65a03f1151561081e57fe5b505050610830565b61083083836112a7565b5b5b5b505050565b600a5460a060020a900460ff1681565b60005433600160a060020a039081169116146108645760006000fd5b600160a060020a0381166000818152600b6020908152604091829020805460ff19166001179055815192835290517f42e160154868087d6bfdc0ca23d96a1c1cfa32f1b72ba9ba27b69b98a0d819dc9281900390910190a15b5b50565b600a5460009060a060020a900460ff161561095757600a54604080516000602091820181905282517f18160ddd0000000000000000000000000000000000000000000000000000000081529251600160a060020a03909416936318160ddd9360048082019493918390030190829087803b151561093a57fe5b6102c65a03f1151561094857fe5b505060405151915061095c9050565b506001545b5b90565b60055481565b60005460a060020a900460ff161561097e5760006000fd5b600160a060020a0383166000908152600b602052604090205460ff16156109a55760006000fd5b600160a060020a0382166000908152600b602052604090205460ff16156109cc5760006000fd5b600160a060020a0333166000908152600b602052604090205460ff16156109f35760006000fd5b600a5460a060020a900460ff1615610a9557600a54604080517f8b477adb000000000000000000000000000000000000000000000000000000008152600160a060020a033381166004830152868116602483015285811660448301526064820185905291519190921691638b477adb91608480830192600092919082900301818387803b151561081057fe5b6102c65a03f1151561081e57fe5b505050610830565b61083083838361135a565b610830565b5b5b505050565b600a54600160a060020a031681565b60095481565b60045481565b60015481565b6000805433600160a060020a03908116911614610aea5760006000fd5b60005460a060020a900460ff161515610b035760006000fd5b6000805474ff0000000000000000000000000000000000000000191681556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b339190a15060015b5b5b90565b60005433600160a060020a03908116911614610b6d5760006000fd5b806001541015610b7d5760006000fd5b60008054600160a060020a031681526002602052604090205481901015610ba45760006000fd5b60018054829003905560008054600160a060020a031681526002602090815260409182902080548490039055815183815291517fb90306ad06b2a6ff86ddc9327db583062895ef6540e62dc50add009db5b356eb9281900390910190a15b5b50565b600160a060020a0381166000908152600b602052604090205460ff165b919050565b60005433600160a060020a03908116911614610c445760006000fd5b600383905560058190556004829055604080518481526020810184905280820183905290517fd16858b87f79d06c5d7f4cdf7f0943a3b343a9eb149c10ec26e7bcaae7f19bc59181900360600190a15b5b505050565b60005460a060020a900460ff1681565b600a5460009060a060020a900460ff1615610d4a57600a54604080516000602091820181905282517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a038781166004830152935193909416936370a08231936024808301949391928390030190829087803b1515610d2d57fe5b6102c65a03f11515610d3b57fe5b5050604051519150610c239050565b610d5382611569565b9050610c23565b5b919050565b6000805433600160a060020a03908116911614610d7d5760006000fd5b60005460a060020a900460ff1615610d955760006000fd5b6000805474ff0000000000000000000000000000000000000000191660a060020a1781556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff6259190a15060015b5b5b90565b600054600160a060020a031681565b6008805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106d45780601f106106a9576101008083540402835291602001916106d4565b820191906000526020600020905b8154815290600101906020018083116106b757829003601f168201915b505050505081565b60005460a060020a900460ff1615610e9e5760006000fd5b600160a060020a0382166000908152600b602052604090205460ff1615610ec55760006000fd5b600160a060020a0333166000908152600b602052604090205460ff1615610eec5760006000fd5b600a5460a060020a900460ff1615610f8657600a54604080517f6e18980a000000000000000000000000000000000000000000000000000000008152600160a060020a03338116600483015285811660248301526044820185905291519190921691636e18980a91606480830192600092919082900301818387803b1515610f7057fe5b6102c65a03f11515610f7e57fe5b505050610f90565b610f908282611588565b5b5b5b5050565b60005433600160a060020a03908116911614610fb35760006000fd5b6001548181011015610fc55760006000fd5b60008054600160a060020a03168152600260205260409020548181011015610fed5760006000fd5b60008054600160a060020a03168152600260209081526040918290208054840190556001805484019055815183815291517fcb8241adb0c3fdb35b70c24ce35c5eb0c17af7431c99f827d44a445ca624176a9281900390910190a15b5b50565b600a5460009060a060020a900460ff16156110f557600a54604080516000602091820181905282517fdd62ed3e000000000000000000000000000000000000000000000000000000008152600160a060020a03888116600483015287811660248301529351939094169363dd62ed3e936044808301949391928390030190829087803b15156110d857fe5b6102c65a03f115156110e657fe5b50506040515191506111029050565b6110ff838361171e565b90505b5b92915050565b60035481565b600b6020526000908152604090205460ff1681565b60005433600160a060020a039081169116146111405760006000fd5b600160a060020a0381166000818152600b6020908152604091829020805460ff19169055815192835290517fd7e9ec6e6ecd65492dce6bf513cd6867560d49544421d0783ddf06e76c24470c9281900390910190a15b5b50565b60005433600160a060020a039081169116146111b65760006000fd5b600160a060020a03811615610777576000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b6000805433600160a060020a039081169116146112105760006000fd5b600160a060020a0382166000908152600b602052604090205460ff1615156112385760006000fd5b61124182610caa565b600160a060020a0383166000818152600260209081526040808320929092556001805485900390558151928352820183905280519293507f61e6e66b0d6339b2980aecc6ccc0039736791f0ccde9ed512e789a7fbdd698c692918290030190a15b5b5050565b604060443610156112b85760006000fd5b81158015906112eb5750600160a060020a0333811660009081526006602090815260408083209387168352929052205415155b156112f65760006000fd5b600160a060020a03338116600081815260066020908152604080832094881680845294825291829020869055815186815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a35b5b505050565b600080806060606436101561136f5760006000fd5b600160a060020a03808816600090815260066020908152604080832033909416835292905220546003549094506113c0906064906113b490889063ffffffff61174b16565b9063ffffffff61177a16565b92506004548311156113d25760045492505b600060035411156113ed576005548310156113ed5760055492505b5b6113fe858463ffffffff61179716565b600160a060020a03871660009081526002602052604090205490925061142a908363ffffffff6117b016565b600160a060020a0380881660009081526002602052604080822093909355805490911681522054611461908463ffffffff6117b016565b60008054600160a060020a0390811682526002602052604080832093909355891681522054611496908663ffffffff61179716565b600160a060020a0388166000908152600260205260409020556000198410156114f1576114c9848663ffffffff61179716565b600160a060020a03808916600090815260066020908152604080832033909416835292905220555b85600160a060020a031687600160a060020a03166000805160206117de833981519152846040518082815260200191505060405180910390a3600054604080518581529051600160a060020a03928316928a16916000805160206117de833981519152919081900360200190a35b5b50505050505050565b600160a060020a0381166000908152600260205260409020545b919050565b6000806040604436101561159c5760006000fd5b6115c260646113b46003548761174b90919063ffffffff16565b9063ffffffff61177a16565b92506004548311156115d45760045492505b600060035411156115ef576005548310156115ef5760055492505b5b611600848463ffffffff61179716565b600160a060020a03331660009081526002602052604090205490925061162c908563ffffffff61179716565b600160a060020a033381166000908152600260205260408082209390935590871681522054611661908363ffffffff6117b016565b600160a060020a0380871660009081526002602052604080822093909355805490911681522054611698908463ffffffff6117b016565b60008054600160a060020a0390811682526002602090815260409283902093909355815185815291518882169333909216926000805160206117de83398151915292908290030190a3600054604080518581529051600160a060020a03928316923316916000805160206117de833981519152919081900360200190a35b5b5050505050565b600160a060020a038083166000908152600660209081526040808320938516835292905220545b92915050565b600082820261176f84158061176a575083858381151561176757fe5b04145b6117cc565b8091505b5092915050565b60006000828481151561178957fe5b0490508091505b5092915050565b60006117a5838311156117cc565b508082035b92915050565b600082820161176f848210156117cc565b8091505b5092915050565b8015156107775760006000fd5b5b505600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a723058209b27b6d796ed9da03f5c422ec87773362f9945c101005ccb6f12e1234484eb990029

Verified Source Code Partial Match

Compiler: v0.4.11+commit.68ef5810 Optimization: Yes (200 runs)
VNDCToken.sol 492 lines
pragma solidity ^0.4.11;

/**
 * Math operations with safety checks
 */
library SafeMath {
  function mul(uint a, uint b) internal returns (uint) {
    uint c = a * b;
    assert(a == 0 || c / a == b);
    return c;
  }

  function div(uint a, uint b) internal returns (uint) {
    // assert(b > 0); // Solidity automatically throws when dividing by 0
    uint c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    return c;
  }

  function sub(uint a, uint b) internal returns (uint) {
    assert(b <= a);
    return a - b;
  }

  function add(uint a, uint b) internal returns (uint) {
    uint c = a + b;
    assert(c >= a);
    return c;
  }

  function max64(uint64 a, uint64 b) internal constant returns (uint64) {
    return a >= b ? a : b;
  }

  function min64(uint64 a, uint64 b) internal constant returns (uint64) {
    return a < b ? a : b;
  }

  function max256(uint256 a, uint256 b) internal constant returns (uint256) {
    return a >= b ? a : b;
  }

  function min256(uint256 a, uint256 b) internal constant returns (uint256) {
    return a < b ? a : b;
  }

  function assert(bool assertion) internal {
    if (!assertion) {
      throw;
    }
  }
}


/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control 
 * functions, this simplifies the implementation of "user permissions". 
 */
contract Ownable {
  address public owner;


  /** 
   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
  function Ownable() {
    owner = msg.sender;
  }


  /**
   * @dev Throws if called by any account other than the owner. 
   */
  modifier onlyOwner() {
    if (msg.sender != owner) {
      throw;
    }
    _;
  }


  /**
   * @dev Allows the current owner to transfer control of the contract to a newOwner.
   * @param newOwner The address to transfer ownership to. 
   */
  function transferOwnership(address newOwner) onlyOwner {
    if (newOwner != address(0)) {
      owner = newOwner;
    }
  }

}

/**
 * @title Pausable
 * @dev Base contract which allows children to implement an emergency stop mechanism.
 */
contract Pausable is Ownable {
  event Pause();
  event Unpause();

  bool public paused = false;


  /**
   * @dev modifier to allow actions only when the contract IS paused
   */
  modifier whenNotPaused() {
    if (paused) throw;
    _;
  }

  /**
   * @dev modifier to allow actions only when the contract IS NOT paused
   */
  modifier whenPaused {
    if (!paused) throw;
    _;
  }

  /**
   * @dev called by the owner to pause, triggers stopped state
   */
  function pause() onlyOwner whenNotPaused returns (bool) {
    paused = true;
    Pause();
    return true;
  }

  /**
   * @dev called by the owner to unpause, returns to normal state
   */
  function unpause() onlyOwner whenPaused returns (bool) {
    paused = false;
    Unpause();
    return true;
  }
}

/**
 * @title ERC20Basic
 * @dev Simpler version of ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 */
contract ERC20Basic {
  uint public _totalSupply;
  function totalSupply() constant returns (uint);
  function balanceOf(address who) constant returns (uint);
  function transfer(address to, uint value);
  event Transfer(address indexed from, address indexed to, uint value);
}

/**
 * @title ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 */
contract ERC20 is ERC20Basic {
  function allowance(address owner, address spender) constant returns (uint);
  function transferFrom(address from, address to, uint value);
  function approve(address spender, uint value);
  event Approval(address indexed owner, address indexed spender, uint value);
}

/**
 * @title Basic token
 * @dev Basic version of StandardToken, with no allowances.
 */
contract BasicToken is Ownable, ERC20Basic {
  using SafeMath for uint;

  mapping(address => uint) balances;

  // additional variables for use if transaction fees ever became necessary
  uint public basisPointsRate = 0;
  uint public maximumFee = 0;
  uint public minimumFee = 0;

  /**
   * @dev Fix for the ERC20 short address attack.
   */
  modifier onlyPayloadSize(uint size) {
     if(msg.data.length < size + 4) {
       throw;
     }
     _;
  }

  /**
  * @dev transfer token for a specified address
  * @param _to The address to transfer to.
  * @param _value The amount to be transferred.
  */
  function transfer(address _to, uint _value) onlyPayloadSize(2 * 32) {
    uint fee = (_value.mul(basisPointsRate)).div(100);
    if (fee > maximumFee) {
      fee = maximumFee;
    }
    
    if(basisPointsRate > 0)
    {
        if (fee < minimumFee) {
          fee = minimumFee;
        }
    }
    uint sendAmount = _value.sub(fee);
    balances[msg.sender] = balances[msg.sender].sub(_value);
    balances[_to] = balances[_to].add(sendAmount);
    balances[owner] = balances[owner].add(fee);
    Transfer(msg.sender, _to, sendAmount);
    Transfer(msg.sender, owner, fee);
  }

  /**
  * @dev Gets the balance of the specified address.
  * @param _owner The address to query the the balance of.
  * @return An uint representing the amount owned by the passed address.
  */
  function balanceOf(address _owner) constant returns (uint balance) {
    return balances[_owner];
  }

}


/**
 * @title Standard ERC20 token
 *
 * @dev Implementation of the basic standard token.
 * @dev https://github.com/ethereum/EIPs/issues/20
 * @dev Based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol
 */
contract StandardToken is BasicToken, ERC20 {

  mapping (address => mapping (address => uint)) allowed;

  uint constant MAX_UINT = 2**256 - 1;

  /**
   * @dev Transfer tokens from one address to another
   * @param _from address The address which you want to send tokens from
   * @param _to address The address which you want to transfer to
   * @param _value uint the amount of tokens to be transferred
   */
  function transferFrom(address _from, address _to, uint _value) onlyPayloadSize(3 * 32) {
    var _allowance = allowed[_from][msg.sender];

    // Check is not needed because sub(_allowance, _value) will already throw if this condition is not met
    // if (_value > _allowance) throw;

    uint fee = (_value.mul(basisPointsRate)).div(100);
    if (fee > maximumFee) {
      fee = maximumFee;
    }
    
    if(basisPointsRate > 0)
    {
        if (fee < minimumFee) {
          fee = minimumFee;
        }
    }
    
    uint sendAmount = _value.sub(fee);

    balances[_to] = balances[_to].add(sendAmount);
    balances[owner] = balances[owner].add(fee);
    balances[_from] = balances[_from].sub(_value);
    if (_allowance < MAX_UINT) {
      allowed[_from][msg.sender] = _allowance.sub(_value);
    }
    Transfer(_from, _to, sendAmount);
    Transfer(_from, owner, fee);
  }

  /**
   * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
   * @param _spender The address which will spend the funds.
   * @param _value The amount of tokens to be spent.
   */
  function approve(address _spender, uint _value) onlyPayloadSize(2 * 32) {

    // To change the approve amount you first have to reduce the addresses`
    //  allowance to zero by calling `approve(_spender, 0)` if it is not
    //  already 0 to mitigate the race condition described here:
    //  https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
    if ((_value != 0) && (allowed[msg.sender][_spender] != 0)) throw;

    allowed[msg.sender][_spender] = _value;
    Approval(msg.sender, _spender, _value);
  }

  /**
   * @dev Function to check the amount of tokens than an owner allowed to a spender.
   * @param _owner address The address which owns the funds.
   * @param _spender address The address which will spend the funds.
   * @return A uint specifying the amount of tokens still available for the spender.
   */
  function allowance(address _owner, address _spender) constant returns (uint remaining) {
    return allowed[_owner][_spender];
  }

}

contract UpgradedStandardToken is StandardToken{
        // those methods are called by the legacy contract
        // and they must ensure msg.sender to be the contract address
        function transferByLegacy(address from, address to, uint value);
        function transferFromByLegacy(address sender, address from, address spender, uint value);
        function approveByLegacy(address from, address spender, uint value);
}
 
/// VNDC Token Contract - vndc.io

contract VNDCToken is Pausable, StandardToken {

  string public name;
  string public symbol;
  uint public decimals;
  address public upgradedAddress;
  bool public deprecated;
  mapping (address => bool) public isBlackListed;
   
  
  //  The contract can be initialized with a number of tokens
  //  All the tokens are deposited to the owner address
  //
  // @param _balance Initial supply of the contract
  // @param _name Token Name
  // @param _symbol Token symbol
  // @param _decimals Token decimals
  function VNDCToken(){
      _totalSupply = 100000000000 * 10**uint(decimals);
      name = "VNDC";
      symbol = "VNDC";
      balances[owner] = 100000000000 * 10**uint(decimals);
      deprecated = false;
      
  }

  // Forward ERC20 methods to upgraded contract if this one is deprecated
  function transfer(address _to, uint _value) whenNotPaused   {
      
        require(!isBlackListed[_to]);
        require(!isBlackListed[msg.sender]);
        if (deprecated) {
          return UpgradedStandardToken(upgradedAddress).transferByLegacy(msg.sender, _to, _value);
        } else {
          return super.transfer(_to, _value);
        }
       
     
  }

  // Forward ERC20 methods to upgraded contract if this one is deprecated
  function transferFrom(address _from, address _to, uint _value) whenNotPaused   {
    
        require(!isBlackListed[_from]);
        require(!isBlackListed[_to]);
        require(!isBlackListed[msg.sender]);

        if (deprecated) {
          return UpgradedStandardToken(upgradedAddress).transferFromByLegacy(msg.sender, _from, _to, _value);
        } else {
          return super.transferFrom(_from, _to, _value);
        }
        
       
  }

  // Forward ERC20 methods to upgraded contract if this one is deprecated
  function balanceOf(address who) constant returns (uint){
    if (deprecated) {
      return UpgradedStandardToken(upgradedAddress).balanceOf(who);
    } else {
      return super.balanceOf(who);
    }
  }

  // Forward ERC20 methods to upgraded contract if this one is deprecated
  function approve(address _spender, uint _value) onlyPayloadSize(2 * 32) {
      
    if (deprecated) {
      return UpgradedStandardToken(upgradedAddress).approveByLegacy(msg.sender, _spender, _value);
    } else {
      return super.approve(_spender, _value);
    }
  }

  // Forward ERC20 methods to upgraded contract if this one is deprecated
  function allowance(address _owner, address _spender) constant returns (uint remaining) {

    if (deprecated) {
      return StandardToken(upgradedAddress).allowance(_owner, _spender);
    } else {
      return super.allowance(_owner, _spender);
    }
  }

  // deprecate current contract in favour of a new one
  function deprecate(address _upgradedAddress) onlyOwner {
    deprecated = true;
    upgradedAddress = _upgradedAddress;
    Deprecate(_upgradedAddress);
  }

  // deprecate current contract if favour of a new one
  function totalSupply() constant returns (uint){
    if (deprecated) {
      return StandardToken(upgradedAddress).totalSupply();
    } else {
      return _totalSupply;
    }
  }

  // Issue a new amount of tokens
  // these tokens are deposited into the owner address
  //
  // @param _amount Number of tokens to be issued
  function issue(uint amount) onlyOwner {
    if (_totalSupply + amount < _totalSupply) throw;
    if (balances[owner] + amount < balances[owner]) throw;

    balances[owner] += amount;
    _totalSupply += amount;
    Issue(amount);
  }

  // Burn tokens.
  // These tokens are burned from the owner address
  // @param _amount Number of tokens to be issued
  function burn(uint amount) onlyOwner {
      if (_totalSupply < amount) throw;
      if (balances[owner] < amount) throw;

      _totalSupply -= amount;
      balances[owner] -= amount;
      Burn(amount);
  }

  function setParams(uint newBasisPoints, uint newMaxFee, uint newMinFee) onlyOwner {
      // Ensure transparency by hardcoding limit beyond which fees can never be added
    
      basisPointsRate = newBasisPoints;
      minimumFee = newMinFee;
      maximumFee = newMaxFee;
      Params(basisPointsRate, maximumFee, minimumFee);
  }
  
   function getBlackListStatus(address _maker) external constant returns (bool) {
        return isBlackListed[_maker];
    }


    
    function addBlackList (address _evilUser) public onlyOwner {
        isBlackListed[_evilUser] = true;
        AddedBlackList(_evilUser);
    }

    function removeBlackList (address _clearedUser) public onlyOwner {
        isBlackListed[_clearedUser] = false;
        RemovedBlackList(_clearedUser);
    }

    function destroyBlackFunds (address _blackListedUser) public onlyOwner {
        require(isBlackListed[_blackListedUser]);
        uint dirtyFunds = balanceOf(_blackListedUser);
        balances[_blackListedUser] = 0;
        _totalSupply -= dirtyFunds;
        DestroyedBlackFunds(_blackListedUser, dirtyFunds);
    }

    event DestroyedBlackFunds(address _blackListedUser, uint _balance);

    event AddedBlackList(address _user);

    event RemovedBlackList(address _user);
    

  // Called when new token are issued
  event Issue(uint amount);

  // Called when tokens are Burned
  event Burn(uint amount);

  // Called when contract is deprecated
  event Deprecate(address newAddress);

  // Called if contract ever adds fees
  event Params(uint feeBasisPoints, uint maxFee, uint minFee);
}

Write Contract 29 functions

These functions modify contract state and require a wallet transaction to execute.

_totalSupply 0x3eaaf86b
No parameters
returns: uint256
addBlackList 0x0ecb93c0
address _evilUser
allowance 0xdd62ed3e
address _owner
address _spender
returns: uint256
approve 0x095ea7b3
address _spender
uint256 _value
balanceOf 0x70a08231
address who
returns: uint256
basisPointsRate 0xdd644f72
No parameters
returns: uint256
burn 0x42966c68
uint256 amount
decimals 0x313ce567
No parameters
returns: uint256
deprecate 0x0753c30c
address _upgradedAddress
deprecated 0x0e136b19
No parameters
returns: bool
destroyBlackFunds 0xf3bdc228
address _blackListedUser
getBlackListStatus 0x59bf1abe
address _maker
returns: bool
isBlackListed 0xe47d6060
address
returns: bool
issue 0xcc872b66
uint256 amount
maximumFee 0x35390714
No parameters
returns: uint256
minimumFee 0x1a7626e7
No parameters
returns: uint256
name 0x06fdde03
No parameters
returns: string
owner 0x8da5cb5b
No parameters
returns: address
pause 0x8456cb59
No parameters
returns: bool
paused 0x5c975abb
No parameters
returns: bool
removeBlackList 0xe4997dc5
address _clearedUser
setParams 0x5a0ce676
uint256 newBasisPoints
uint256 newMaxFee
uint256 newMinFee
symbol 0x95d89b41
No parameters
returns: string
totalSupply 0x18160ddd
No parameters
returns: uint256
transfer 0xa9059cbb
address _to
uint256 _value
transferFrom 0x23b872dd
address _from
address _to
uint256 _value
transferOwnership 0xf2fde38b
address newOwner
unpause 0x3f4ba83a
No parameters
returns: bool
upgradedAddress 0x26976e3f
No parameters
returns: address

Recent Transactions

No transactions found for this address