ETH Price: $2,123.20 (-0.09%)

Token

ESG Token (ESG)
 

Overview

Max Total Supply

547,016 ESG

Holders

31

Transfers

-
0 (0%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 3 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
ESGToken

Compiler Version
v0.4.11+commit.68ef5810

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2017-10-19
*/

pragma solidity >=0.4.10;

/*  ----------------------------------------------------------------------------------------

    Dev:    "Owned" to ensure control of contracts

            Identical to https://github.com/OpenZeppelin/zeppelin-solidity/blob/master/contracts/ownership/Ownable.sol

    ---------------------------------------------------------------------------------------- */
contract Owned {
    address public owner;

    function Owned() {
        owner = msg.sender;
    }

    modifier onlyOwner {
        require(msg.sender == owner);
        _;
    }

    function transferOwnership(address newOwner) onlyOwner {
        owner = newOwner;
    }
}

/*  ----------------------------------------------------------------------------------------

    Dev:    SafeMath library

            Identical to https://github.com/OpenZeppelin/zeppelin-solidity/blob/master/contracts/math/SafeMath.sol

    ---------------------------------------------------------------------------------------- */
library SafeMath {
  function safeMul(uint256 a, uint256 b) internal constant returns (uint256) {
    uint256 c = a * b;
    assert(a == 0 || c / a == b);
    return c;
  }

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

  function safeSub(uint256 a, uint256 b) internal constant returns (uint256) {
    assert(b <= a); // Ensuring no negatives
    return a - b;
  }

  function safeAdd(uint256 a, uint256 b) internal constant returns (uint256) {
    uint256 c = a + b;
    assert(c >= a && c>=b);
    return c;
  }
}

/*  ----------------------------------------------------------------------------------------

    Dev:    ESG Asset Holder is called when the token "burn" function is called

    Sum:    Locked to false so users cannot burn their tokens until the Asset Contract is
            put in place with value.

    ---------------------------------------------------------------------------------------- */
contract ESGAssetHolder {
    
    function burn(address _holder, uint _amount) returns (bool result) {

        _holder = 0x0;                              // To avoid variable not used issue on deployment
        _amount = 0;                                // To avoid variable not used issue on deployment
        return false;
    }
}


/*  ----------------------------------------------------------------------------------------

    Dev:    The Esports Gold Token:  ERC20 standard token with MINT and BURN functions

    Func:   Mint, Approve, Transfer, TransferFrom  

    Note:   Mint function takes UNITS of tokens to mint as ICO event is set to have a minimum
            contribution of 1 token. All other functions (transfer etc), the value to transfer
            is the FULL DECIMAL value
            The user is only ever presented with the latter option, therefore should avoid
            any confusion.
    ---------------------------------------------------------------------------------------- */
contract ESGToken is Owned {
        
    string public name = "ESG Token";               // Name of token
    string public symbol = "ESG";                   // Token symbol
    uint256 public decimals = 3;                    // Decimals for the token
    uint256 public totalSupply;                   // Current supply of tokens
    uint256 public supplyCap;                       // Hard cap on supply of tokens
    address public ICOcontroller;                   // Controlling contract from ICO
    address public timelockTokens;                  // Address for locked management tokens
    bool public tokenParametersSet;                        // Ensure that parameters required are set
    bool public controllerSet;                             // Ensure that ICO controller is set

    mapping (address => uint256) public balanceOf;                      // Balances of addresses
    mapping (address => mapping (address => uint)) public allowance;    // Allowances from addresses
    mapping (address => bool) public frozenAccount;                     // Safety mechanism


    modifier onlyControllerOrOwner() {            // Ensures that only contracts can manage key functions
        require(msg.sender == ICOcontroller || msg.sender == owner);
        _;
    }

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    event Mint(address owner, uint amount);
    event FrozenFunds(address target, bool frozen);
    event Burn(address coinholder, uint amount);
    
    /*  ----------------------------------------------------------------------------------------

    Dev:    Constructor

    param:  Owner:  Address of owner
            Name:   Esports Gold Token
            Sym:    ESG_TKN
            Dec:    3
            Cap:    Hard coded cap to ensure excess tokens cannot be minted

    Other parameters have been set up as a separate function to help lower initial gas deployment cost.

    ---------------------------------------------------------------------------------------- */
    function ESGToken() {
        totalSupply = 0;                      // Starting supply is zero
        supplyCap = 0;                          // Hard cap supply in Tokens set by ICO
        tokenParametersSet = false;             // Ensure parameters are set
        controllerSet = false;                  // Ensure controller is set
    }

    /*  ----------------------------------------------------------------------------------------

    Dev:    Key parameters to setup for ICO event

    Param:  _ico    Address of the ICO Event contract to ensure the ICO event can control
                    the minting function
    
    ---------------------------------------------------------------------------------------- */
    function setICOController(address _ico) onlyOwner {     // ICO event address is locked in
        require(_ico != 0x0);
        ICOcontroller = _ico;
        controllerSet = true;
    }


    /*  ----------------------------------------------------------------------------------------
    NEW
    Dev:    Address for the timelock tokens to be held

    Param:  _timelockAddr   Address of the timelock contract that will hold the locked tokens
    
    ---------------------------------------------------------------------------------------- */
    function setParameters(address _timelockAddr) onlyOwner {
        require(_timelockAddr != 0x0);

        timelockTokens = _timelockAddr;

        tokenParametersSet = true;
    }

    function parametersAreSet() constant returns (bool) {
        return tokenParametersSet && controllerSet;
    }

    /*  ----------------------------------------------------------------------------------------

    Dev:    Set the total number of Tokens that can be minted

    Param:  _supplyCap  The number of tokens (in whole units) that can be minted. This number then
                        gets increased by the decimal number
   
    ---------------------------------------------------------------------------------------- */
    function setTokenCapInUnits(uint256 _supplyCap) onlyControllerOrOwner {   // Supply cap in UNITS
        assert(_supplyCap > 0);
        
        supplyCap = SafeMath.safeMul(_supplyCap, (10**decimals));
    }

    /*  ----------------------------------------------------------------------------------------

    Dev:    Mint the number of tokens for the timelock contract

    Param:  _mMentTkns  Number of tokens in whole units that need to be locked into the Timelock
    
    ---------------------------------------------------------------------------------------- */
    function mintLockedTokens(uint256 _mMentTkns) onlyControllerOrOwner {
        assert(_mMentTkns > 0);
        assert(tokenParametersSet);

        mint(timelockTokens, _mMentTkns);  
    }

    /*  ----------------------------------------------------------------------------------------

    Dev:    ERC20 protocols
    
    ---------------------------------------------------------------------------------------- */
    function balanceOf(address _owner) constant returns (uint256 balance) {
        return balanceOf[_owner];
    }

    /*  ----------------------------------------------------------------------------------------

    Dev:    Mint ESG Tokens by controller

    Control:            OnlyControllers. ICO event needs to be able to control the minting
                        function

    Param:  Address     Address for tokens to be minted to
            Amount      Number of tokens to be minted (in whole UNITS. Min minting is 1 token)
                        Minimum ETH contribution in ICO event is 0.01ETH at 100 tokens per ETH
    
    ---------------------------------------------------------------------------------------- */
    function mint(address _address, uint _amount) onlyControllerOrOwner {
        require(_address != 0x0);
        uint256 amount = SafeMath.safeMul(_amount, (10**decimals));             // Tokens minted using unit parameter supplied

        // Ensure that supplyCap is set and that new tokens don't breach cap
        assert(supplyCap > 0 && amount > 0 && SafeMath.safeAdd(totalSupply, amount) <= supplyCap);
        
        balanceOf[_address] = SafeMath.safeAdd(balanceOf[_address], amount);    // Add tokens to address
        totalSupply = SafeMath.safeAdd(totalSupply, amount);                // Add to supply
        
        Mint(_address, amount);
        Transfer(0x0, _address, amount);
    }
    
    /*  ----------------------------------------------------------------------------------------

    Dev:    ERC20 standard transfer function

    Param:  _to         Address to send to
            _value      Number of tokens to be sent - in FULL decimal length
    
    Ref:    https://github.com/OpenZeppelin/zeppelin-solidity/blob/master/contracts/token/BasicToken.sol
    ---------------------------------------------------------------------------------------- */
    function transfer(address _to, uint _value) returns (bool success) {
        require(!frozenAccount[msg.sender]);        // Ensure account is not frozen

        /* 
            Update balances from "from" and "to" addresses with the tokens transferred
            safeSub method ensures that address sender has enough tokens to send
        */
        balanceOf[msg.sender] = SafeMath.safeSub(balanceOf[msg.sender], _value);    
        balanceOf[_to] = SafeMath.safeAdd(balanceOf[_to], _value);                  
        Transfer(msg.sender, _to, _value);
        
        return true;
    }
    
    /*  ----------------------------------------------------------------------------------------

    Dev:    ERC20 standard transferFrom function

    Param:  _from       Address to send from
            _to         Address to send to
            Amount      Number of tokens to be sent - in FULL decimal length

    ---------------------------------------------------------------------------------------- */
    function transferFrom(address _from, address _to, uint256 _value) returns (bool success) {   
        require(!frozenAccount[_from]);                         // Check account is not frozen
        
        /* 
            Ensure sender has been authorised to send the required number of tokens
        */
        if (allowance[_from][msg.sender] < _value)
            return false;

        /* 
            Update allowance of sender to reflect tokens sent
        */
        allowance[_from][msg.sender] = SafeMath.safeSub(allowance[_from][msg.sender], _value); 

        /* 
            Update balances from "from" and "to" addresses with the tokens transferred
            safeSub method ensures that address sender has enough tokens to send
        */
        balanceOf[_from] = SafeMath.safeSub(balanceOf[_from], _value);
        balanceOf[_to] = SafeMath.safeAdd(balanceOf[_to], _value);

        Transfer(_from, _to, _value);
        return true;
    }
    
    /*  ----------------------------------------------------------------------------------------

    Dev:    ERC20 standard approve function

    Param:  _spender        Address of sender who is approved
            _value          The number of tokens (full decimals) that are approved

    ---------------------------------------------------------------------------------------- */
    function approve(address _spender, uint256 _value)      // FULL DECIMALS OF TOKENS
        returns (bool success)
    {
        require(!frozenAccount[msg.sender]);                // Check account is not frozen

        /* Requiring the user to set to zero before resetting to nonzero */
        if ((_value != 0) && (allowance[msg.sender][_spender] != 0)) {
           return false;
        }

        allowance[msg.sender][_spender] = _value;
        
        Approval(msg.sender, _spender, _value);
        return true;
    }

    /*  ----------------------------------------------------------------------------------------

    Dev:    Function to check the amount of tokens that the owner has allowed the "spender" to
            transfer

    Param:  _owner          Address of the authoriser who owns the tokens
            _spender        Address of sender who will be authorised to spend the tokens

    ---------------------------------------------------------------------------------------- */

    function allowance(address _owner, address _spender) constant returns (uint256 remaining) {
        return allowance[_owner][_spender];
    }
    
    /*  ----------------------------------------------------------------------------------------

    Dev:    As ESG is aiming to be a regulated betting operator. Regulatory hurdles may require
            this function if an account on the betting platform, using the token, breaches
            a regulatory requirement.

            ESG can then engage with the account holder to get it unlocked

            This does not stop the token accruing value from its share of the Asset Contract

    Param:  _target         Address of account
            _freeze         Boolean to lock/unlock account

    Ref:    This is a replica of the code as per https://ethereum.org/token
    ---------------------------------------------------------------------------------------- */
    function freezeAccount(address target, bool freeze) onlyOwner {
        frozenAccount[target] = freeze;
        FrozenFunds(target, freeze);
    }

    /*  ----------------------------------------------------------------------------------------

    Dev:    Burn function: User is able to burn their token for a share of the ESG Asset Contract

    Note:   Deployed with the ESG Asset Contract set to false to ensure token holders cannot
            accidentally burn their tokens for zero value

    Param:  _amount         Number of tokens (full decimals) that should be burnt

    Ref:    Based on the open source TokenCard Burn function. A copy can be found at
            https://github.com/bokkypoobah/TokenCardICOAnalysis
    ---------------------------------------------------------------------------------------- */
    function burn(uint _amount) returns (bool result) {

        if (_amount > balanceOf[msg.sender])
            return false;       // If owner has enough to burn

        /* 
            Remove tokens from circulation
            Update sender's balance of tokens
        */
        balanceOf[msg.sender] = SafeMath.safeSub(balanceOf[msg.sender], _amount);
        totalSupply = SafeMath.safeSub(totalSupply, _amount);

        // Call burn function
        result = esgAssetHolder.burn(msg.sender, _amount);
        require(result);

        Burn(msg.sender, _amount);
    }

    /*  ----------------------------------------------------------------------------------------

    Dev:    Section of the contract that links to the ESG Asset Contract

    Note:   Deployed with the ESG Asset Contract set to false to ensure token holders cannot
            accidentally burn their tokens for zero value

    Param:  _amount         Number of tokens (full decimals) that should be burnt

    Ref:    Based on the open source TokenCard Burn function. A copy can be found at
            https://github.com/bokkypoobah/TokenCardICOAnalysis
    ---------------------------------------------------------------------------------------- */

    ESGAssetHolder esgAssetHolder;              // Holds the accumulated asset contract
    bool lockedAssetHolder;                     // Will be locked to stop tokenholder to be upgraded

    function lockAssetHolder() onlyOwner {      // Locked once deployed
        lockedAssetHolder = true;
    }

    function setAssetHolder(address _assetAdress) onlyOwner {   // Used to lock in the Asset Contract
        assert(!lockedAssetHolder);             // Check that we haven't locked the asset holder yet
        esgAssetHolder = ESGAssetHolder(_assetAdress);
    }    
}

Contract Security Audit

Contract ABI

API
[{"constant":true,"inputs":[],"name":"controllerSet","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_ico","type":"address"}],"name":"setICOController","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"parametersAreSet","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"lockAssetHolder","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"tokenParametersSet","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"},{"name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"burn","outputs":[{"name":"result","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_timelockAddr","type":"address"}],"name":"setParameters","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"supplyCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_mMentTkns","type":"uint256"}],"name":"mintLockedTokens","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_assetAdress","type":"address"}],"name":"setAssetHolder","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"frozenAccount","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_supplyCap","type":"uint256"}],"name":"setTokenCapInUnits","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"target","type":"address"},{"name":"freeze","type":"bool"}],"name":"freezeAccount","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"ICOcontroller","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"timelockTokens","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"inputs":[],"payable":false,"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"owner","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"target","type":"address"},{"indexed":false,"name":"frozen","type":"bool"}],"name":"FrozenFunds","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"coinholder","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Burn","type":"event"}]

60a0604052600960608190527f45534720546f6b656e00000000000000000000000000000000000000000000006080908152620000409160019190620000d6565b506040805180820190915260038082527f455347000000000000000000000000000000000000000000000000000000000060209092019182526200008791600291620000d6565b50600360035534156200009657fe5b5b5b60008054600160a060020a03191633600160a060020a03161790555b600060048190556005556007805460a060020a61ffff02191690555b62000180565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200011957805160ff191683800117855562000149565b8280016001018555821562000149579182015b82811115620001495782518255916020019190600101906200012c565b5b50620001589291506200015c565b5090565b6200017d91905b8082111562000158576000815560010162000163565b5090565b90565b6111ff80620001906000396000f3006060604052361561015c5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166302072579811461015e57806306fdde0314610182578063095ea7b314610212578063179381d81461024557806318160ddd1461026357806323b872dd14610285578063313ce567146102be57806338cf2087146102e05780633a6a2a69146103045780633c1e60a61461031657806340c10f191461033a57806342966c681461035b578063490377a71461038257806370a08231146103a05780638da5cb5b146103ce5780638f770ad0146103fa57806395d89b411461041c57806397bb0de0146104ac578063990f412f146104c1578063a9059cbb146104df578063b414d4b614610512578063dd62ed3e14610542578063e58cd3cb14610576578063e724529c1461058b578063e9c9db5c146105ae578063f2fde38b146105da578063f85cd33e146105f8575bfe5b341561016657fe5b61016e610624565b604080519115158252519081900360200190f35b341561018a57fe5b610192610646565b6040805160208082528351818301528351919283929083019185019080838382156101d8575b8051825260208311156101d857601f1990920191602091820191016101b8565b505050905090810190601f1680156102045780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561021a57fe5b61016e600160a060020a03600435166024356106d3565b604080519115158252519081900360200190f35b341561024d57fe5b610261600160a060020a03600435166107a1565b005b341561026b57fe5b610273610839565b60408051918252519081900360200190f35b341561028d57fe5b61016e600160a060020a036004358116906024351660443561083f565b604080519115158252519081900360200190f35b34156102c657fe5b6102736109a0565b60408051918252519081900360200190f35b34156102e857fe5b61016e6109a6565b604080519115158252519081900360200190f35b341561030c57fe5b6102616109e3565b005b341561031e57fe5b61016e610a27565b604080519115158252519081900360200190f35b341561034257fe5b610261600160a060020a0360043516602435610a37565b005b341561036357fe5b61016e600435610ba3565b604080519115158252519081900360200190f35b341561038a57fe5b610261600160a060020a0360043516610cfb565b005b34156103a857fe5b610273600160a060020a0360043516610d7a565b60408051918252519081900360200190f35b34156103d657fe5b6103de610d99565b60408051600160a060020a039092168252519081900360200190f35b341561040257fe5b610273610da8565b60408051918252519081900360200190f35b341561042457fe5b610192610dae565b6040805160208082528351818301528351919283929083019185019080838382156101d8575b8051825260208311156101d857601f1990920191602091820191016101b8565b505050905090810190601f1680156102045780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156104b457fe5b610261600435610e39565b005b34156104c957fe5b610261600160a060020a0360043516610eaa565b005b34156104e757fe5b61016e600160a060020a0360043516602435610f07565b604080519115158252519081900360200190f35b341561051a57fe5b61016e600160a060020a0360043516610fe2565b604080519115158252519081900360200190f35b341561054a57fe5b610273600160a060020a0360043581169060243516610ff7565b60408051918252519081900360200190f35b341561057e57fe5b610261600435611024565b005b341561059357fe5b610261600160a060020a0360043516602435151561107c565b005b34156105b657fe5b6103de6110fe565b60408051600160a060020a039092168252519081900360200190f35b34156105e257fe5b610261600160a060020a036004351661110d565b005b341561060057fe5b6103de611156565b60408051600160a060020a039092168252519081900360200190f35b6007547501000000000000000000000000000000000000000000900460ff1681565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106cb5780601f106106a0576101008083540402835291602001916106cb565b820191906000526020600020905b8154815290600101906020018083116106ae57829003601f168201915b505050505081565b600160a060020a0333166000908152600a602052604081205460ff16156106fa5760006000fd5b811580159061072d5750600160a060020a0333811660009081526009602090815260408083209387168352929052205415155b1561073a5750600061079b565b600160a060020a03338116600081815260096020908152604080832094881680845294825291829020869055815186815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a35060015b92915050565b60005433600160a060020a039081169116146107bd5760006000fd5b600160a060020a03811615156107d35760006000fd5b60068054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556007805475ff000000000000000000000000000000000000000000191675010000000000000000000000000000000000000000001790555b5b50565b60045481565b600160a060020a0383166000908152600a602052604081205460ff16156108665760006000fd5b600160a060020a03808516600090815260096020908152604080832033909416835292905220548290101561089d57506000610999565b600160a060020a03808516600090815260096020908152604080832033909416835292905220546108ce9083611165565b600160a060020a03808616600081815260096020908152604080832033909516835293815283822094909455908152600890925290205461090f9083611165565b600160a060020a03808616600090815260086020526040808220939093559085168152205461093e908361117c565b600160a060020a0380851660008181526008602090815260409182902094909455805186815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35060015b9392505050565b60035481565b60075460009060a060020a900460ff1680156109dd57506007547501000000000000000000000000000000000000000000900460ff165b90505b90565b60005433600160a060020a039081169116146109ff5760006000fd5b600b805474ff0000000000000000000000000000000000000000191660a060020a1790555b5b565b60075460a060020a900460ff1681565b60065460009033600160a060020a0390811691161480610a65575060005433600160a060020a039081169116145b1515610a715760006000fd5b600160a060020a0383161515610a875760006000fd5b610a9682600354600a0a6111a4565b90506000600554118015610aaa5750600081115b8015610ac35750600554610ac06004548361117c565b11155b1515610acb57fe5b600160a060020a038316600090815260086020526040902054610aee908261117c565b600160a060020a038416600090815260086020526040902055600454610b14908261117c565b60045560408051600160a060020a03851681526020810183905281517f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885929181900390910190a1604080518281529051600160a060020a038516916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35b5b505050565b600160a060020a033316600090815260086020526040812054821115610bcb57506000610cf6565b600160a060020a033316600090815260086020526040902054610bee9083611165565b600160a060020a033316600090815260086020526040902055600454610c149083611165565b6004908155600b54604080516000602091820181905282517f9dc29fac000000000000000000000000000000000000000000000000000000008152600160a060020a03338116968201969096526024810188905292519490931693639dc29fac936044808501948390030190829087803b1515610c8d57fe5b6102c65a03f11515610c9b57fe5b505060405151915050801515610cb15760006000fd5b60408051600160a060020a03331681526020810184905281517fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5929181900390910190a15b919050565b60005433600160a060020a03908116911614610d175760006000fd5b600160a060020a0381161515610d2d5760006000fd5b6007805460a060020a73ffffffffffffffffffffffffffffffffffffffff19909116600160a060020a0384161774ff000000000000000000000000000000000000000019161790555b5b50565b600160a060020a0381166000908152600860205260409020545b919050565b600054600160a060020a031681565b60055481565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156106cb5780601f106106a0576101008083540402835291602001916106cb565b820191906000526020600020905b8154815290600101906020018083116106ae57829003601f168201915b505050505081565b60065433600160a060020a0390811691161480610e64575060005433600160a060020a039081169116145b1515610e705760006000fd5b60008111610e7a57fe5b60075460a060020a900460ff161515610e8f57fe5b60075461083590600160a060020a031682610a37565b5b5b50565b60005433600160a060020a03908116911614610ec65760006000fd5b600b5460a060020a900460ff1615610eda57fe5b600b805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b600160a060020a0333166000908152600a602052604081205460ff1615610f2e5760006000fd5b600160a060020a033316600090815260086020526040902054610f519083611165565b600160a060020a033381166000908152600860205260408082209390935590851681522054610f80908361117c565b600160a060020a038085166000818152600860209081526040918290209490945580518681529051919333909316927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35060015b92915050565b600a6020526000908152604090205460ff1681565b600160a060020a038083166000908152600960209081526040808320938516835292905220545b92915050565b60065433600160a060020a039081169116148061104f575060005433600160a060020a039081169116145b151561105b5760006000fd5b6000811161106557fe5b61107481600354600a0a6111a4565b6005555b5b50565b60005433600160a060020a039081169116146110985760006000fd5b600160a060020a0382166000818152600a6020908152604091829020805460ff191685151590811790915582519384529083015280517f48335238b4855f35377ed80f164e8c6f3c366e54ac00b96a6402d4a9814a03a59281900390910190a15b5b5050565b600654600160a060020a031681565b60005433600160a060020a039081169116146111295760006000fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b600754600160a060020a031681565b60008282111561117157fe5b508082035b92915050565b60008282018381108015906111915750828110155b151561119957fe5b8091505b5092915050565b600082820283158061119157508284828115156111bd57fe5b04145b151561119957fe5b8091505b50929150505600a165627a7a723058209651feccf0f562624e1377e02235995cfd2669aeceb3727c972a32b37748ad980029

Deployed Bytecode

0x6060604052361561015c5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166302072579811461015e57806306fdde0314610182578063095ea7b314610212578063179381d81461024557806318160ddd1461026357806323b872dd14610285578063313ce567146102be57806338cf2087146102e05780633a6a2a69146103045780633c1e60a61461031657806340c10f191461033a57806342966c681461035b578063490377a71461038257806370a08231146103a05780638da5cb5b146103ce5780638f770ad0146103fa57806395d89b411461041c57806397bb0de0146104ac578063990f412f146104c1578063a9059cbb146104df578063b414d4b614610512578063dd62ed3e14610542578063e58cd3cb14610576578063e724529c1461058b578063e9c9db5c146105ae578063f2fde38b146105da578063f85cd33e146105f8575bfe5b341561016657fe5b61016e610624565b604080519115158252519081900360200190f35b341561018a57fe5b610192610646565b6040805160208082528351818301528351919283929083019185019080838382156101d8575b8051825260208311156101d857601f1990920191602091820191016101b8565b505050905090810190601f1680156102045780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561021a57fe5b61016e600160a060020a03600435166024356106d3565b604080519115158252519081900360200190f35b341561024d57fe5b610261600160a060020a03600435166107a1565b005b341561026b57fe5b610273610839565b60408051918252519081900360200190f35b341561028d57fe5b61016e600160a060020a036004358116906024351660443561083f565b604080519115158252519081900360200190f35b34156102c657fe5b6102736109a0565b60408051918252519081900360200190f35b34156102e857fe5b61016e6109a6565b604080519115158252519081900360200190f35b341561030c57fe5b6102616109e3565b005b341561031e57fe5b61016e610a27565b604080519115158252519081900360200190f35b341561034257fe5b610261600160a060020a0360043516602435610a37565b005b341561036357fe5b61016e600435610ba3565b604080519115158252519081900360200190f35b341561038a57fe5b610261600160a060020a0360043516610cfb565b005b34156103a857fe5b610273600160a060020a0360043516610d7a565b60408051918252519081900360200190f35b34156103d657fe5b6103de610d99565b60408051600160a060020a039092168252519081900360200190f35b341561040257fe5b610273610da8565b60408051918252519081900360200190f35b341561042457fe5b610192610dae565b6040805160208082528351818301528351919283929083019185019080838382156101d8575b8051825260208311156101d857601f1990920191602091820191016101b8565b505050905090810190601f1680156102045780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156104b457fe5b610261600435610e39565b005b34156104c957fe5b610261600160a060020a0360043516610eaa565b005b34156104e757fe5b61016e600160a060020a0360043516602435610f07565b604080519115158252519081900360200190f35b341561051a57fe5b61016e600160a060020a0360043516610fe2565b604080519115158252519081900360200190f35b341561054a57fe5b610273600160a060020a0360043581169060243516610ff7565b60408051918252519081900360200190f35b341561057e57fe5b610261600435611024565b005b341561059357fe5b610261600160a060020a0360043516602435151561107c565b005b34156105b657fe5b6103de6110fe565b60408051600160a060020a039092168252519081900360200190f35b34156105e257fe5b610261600160a060020a036004351661110d565b005b341561060057fe5b6103de611156565b60408051600160a060020a039092168252519081900360200190f35b6007547501000000000000000000000000000000000000000000900460ff1681565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106cb5780601f106106a0576101008083540402835291602001916106cb565b820191906000526020600020905b8154815290600101906020018083116106ae57829003601f168201915b505050505081565b600160a060020a0333166000908152600a602052604081205460ff16156106fa5760006000fd5b811580159061072d5750600160a060020a0333811660009081526009602090815260408083209387168352929052205415155b1561073a5750600061079b565b600160a060020a03338116600081815260096020908152604080832094881680845294825291829020869055815186815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a35060015b92915050565b60005433600160a060020a039081169116146107bd5760006000fd5b600160a060020a03811615156107d35760006000fd5b60068054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556007805475ff000000000000000000000000000000000000000000191675010000000000000000000000000000000000000000001790555b5b50565b60045481565b600160a060020a0383166000908152600a602052604081205460ff16156108665760006000fd5b600160a060020a03808516600090815260096020908152604080832033909416835292905220548290101561089d57506000610999565b600160a060020a03808516600090815260096020908152604080832033909416835292905220546108ce9083611165565b600160a060020a03808616600081815260096020908152604080832033909516835293815283822094909455908152600890925290205461090f9083611165565b600160a060020a03808616600090815260086020526040808220939093559085168152205461093e908361117c565b600160a060020a0380851660008181526008602090815260409182902094909455805186815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35060015b9392505050565b60035481565b60075460009060a060020a900460ff1680156109dd57506007547501000000000000000000000000000000000000000000900460ff165b90505b90565b60005433600160a060020a039081169116146109ff5760006000fd5b600b805474ff0000000000000000000000000000000000000000191660a060020a1790555b5b565b60075460a060020a900460ff1681565b60065460009033600160a060020a0390811691161480610a65575060005433600160a060020a039081169116145b1515610a715760006000fd5b600160a060020a0383161515610a875760006000fd5b610a9682600354600a0a6111a4565b90506000600554118015610aaa5750600081115b8015610ac35750600554610ac06004548361117c565b11155b1515610acb57fe5b600160a060020a038316600090815260086020526040902054610aee908261117c565b600160a060020a038416600090815260086020526040902055600454610b14908261117c565b60045560408051600160a060020a03851681526020810183905281517f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885929181900390910190a1604080518281529051600160a060020a038516916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35b5b505050565b600160a060020a033316600090815260086020526040812054821115610bcb57506000610cf6565b600160a060020a033316600090815260086020526040902054610bee9083611165565b600160a060020a033316600090815260086020526040902055600454610c149083611165565b6004908155600b54604080516000602091820181905282517f9dc29fac000000000000000000000000000000000000000000000000000000008152600160a060020a03338116968201969096526024810188905292519490931693639dc29fac936044808501948390030190829087803b1515610c8d57fe5b6102c65a03f11515610c9b57fe5b505060405151915050801515610cb15760006000fd5b60408051600160a060020a03331681526020810184905281517fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5929181900390910190a15b919050565b60005433600160a060020a03908116911614610d175760006000fd5b600160a060020a0381161515610d2d5760006000fd5b6007805460a060020a73ffffffffffffffffffffffffffffffffffffffff19909116600160a060020a0384161774ff000000000000000000000000000000000000000019161790555b5b50565b600160a060020a0381166000908152600860205260409020545b919050565b600054600160a060020a031681565b60055481565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156106cb5780601f106106a0576101008083540402835291602001916106cb565b820191906000526020600020905b8154815290600101906020018083116106ae57829003601f168201915b505050505081565b60065433600160a060020a0390811691161480610e64575060005433600160a060020a039081169116145b1515610e705760006000fd5b60008111610e7a57fe5b60075460a060020a900460ff161515610e8f57fe5b60075461083590600160a060020a031682610a37565b5b5b50565b60005433600160a060020a03908116911614610ec65760006000fd5b600b5460a060020a900460ff1615610eda57fe5b600b805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b600160a060020a0333166000908152600a602052604081205460ff1615610f2e5760006000fd5b600160a060020a033316600090815260086020526040902054610f519083611165565b600160a060020a033381166000908152600860205260408082209390935590851681522054610f80908361117c565b600160a060020a038085166000818152600860209081526040918290209490945580518681529051919333909316927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35060015b92915050565b600a6020526000908152604090205460ff1681565b600160a060020a038083166000908152600960209081526040808320938516835292905220545b92915050565b60065433600160a060020a039081169116148061104f575060005433600160a060020a039081169116145b151561105b5760006000fd5b6000811161106557fe5b61107481600354600a0a6111a4565b6005555b5b50565b60005433600160a060020a039081169116146110985760006000fd5b600160a060020a0382166000818152600a6020908152604091829020805460ff191685151590811790915582519384529083015280517f48335238b4855f35377ed80f164e8c6f3c366e54ac00b96a6402d4a9814a03a59281900390910190a15b5b5050565b600654600160a060020a031681565b60005433600160a060020a039081169116146111295760006000fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b600754600160a060020a031681565b60008282111561117157fe5b508082035b92915050565b60008282018381108015906111915750828110155b151561119957fe5b8091505b5092915050565b600082820283158061119157508284828115156111bd57fe5b04145b151561119957fe5b8091505b50929150505600a165627a7a723058209651feccf0f562624e1377e02235995cfd2669aeceb3727c972a32b37748ad980029

Swarm Source

bzzr://9651feccf0f562624e1377e02235995cfd2669aeceb3727c972a32b37748ad98
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.