ETH Price: $2,922.92 (-6.83%)
Gas: 8.32 Gwei
 

Overview

Max Total Supply

200,000,000 IOEX

Holders

455

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 8 Decimals)

Balance
2 IOEX

Value
$0.00
0x32d15b41c681c1737d93e66abc7a5530955de935
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:
ioeXTokenERC20

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2018-09-17
*/

pragma solidity 0.4.24;

library SafeMath {

  /**
  * @dev Multiplies two numbers, reverts on overflow.
  */
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
    // benefit is lost if 'b' is also tested.
    // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
    if (a == 0) {
      return 0;
    }

    uint256 c = a * b;
    require(c / a == b);

    return c;
  }

  /**
  * @dev Integer division of two numbers truncating the quotient, reverts on division by zero.
  */
  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    require(b > 0); // Solidity only automatically asserts 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;
  }

  /**
  * @dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).
  */
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    require(b <= a);
    uint256 c = a - b;

    return c;
  }

  /**
  * @dev Adds two numbers, reverts on overflow.
  */
  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    require(c >= a);

    return c;
  }

  /**
  * @dev Divides two numbers and returns the remainder (unsigned integer modulo),
  * reverts when dividing by zero.
  */
  function mod(uint256 a, uint256 b) internal pure returns (uint256) {
    require(b != 0);
    return a % b;
  }
}

contract owned {
    address public owner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() public {
        owner = msg.sender;
    }

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

    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0));
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }
}


contract ERC20 {
    function totalSupply() public view returns (uint256);

    function balanceOf(address _who) public view returns (uint256);

    function transfer(address _to, uint256 _value) public returns (bool);

    event Transfer(
        address indexed from,
        address indexed to,
        uint256 value
    );
}


contract StandardToken is ERC20 {
    using SafeMath for uint256;

    mapping(address => uint256) internal balances;

    uint256 internal totalSupply_;

    /**
     * @dev Total number of tokens in existence
     */
    function totalSupply() public view returns (uint256) {
        return totalSupply_;
    }

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

    /**
     * @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, uint256 _value) public returns (bool) {
        require(_value <= balances[msg.sender]);
        require(_to != address(0));

        balances[msg.sender] = balances[msg.sender].sub(_value);
        balances[_to] = balances[_to].add(_value);
        emit Transfer(msg.sender, _to, _value);
        return true;
    }
}


contract ioeXTokenERC20 is StandardToken, owned {
    using SafeMath for uint256;

    // Public variables of the token
    bytes internal name_ = "Internet of Everything X";

    bytes internal symbol_ = "IOEX";

    uint256 public decimals = 8;

    uint256 private constant LOCK_TYPE_MAX = 3;
    uint256 private constant LOCK_STAGE_MAX = 4;

    mapping (address => bool) public frozenAccount;

    //Save lock type and amount of init tokens
    struct StructLockAccountInfo {
        uint256 lockType;
        uint256 initBalance;
        uint256 startTime;
    }

    mapping (address => StructLockAccountInfo) public lockAccountInfo;
 
    //Save 4 set of time and percent of unlocked tokens
    struct StructLockType {
        uint256[LOCK_STAGE_MAX] time;
        uint256[LOCK_STAGE_MAX] freePercent;
    }

    StructLockType[LOCK_TYPE_MAX] private lockType;

    // This generates a public event on the blockchain that will notify clients
    event Transfer(address indexed from, address indexed to, uint256 value);

    // This notifies clients about the amount burnt
    event Burn(address indexed from, uint256 value);

    // This generates a public event that record info about locked account,
    // including amount of init tokens and lock type
    event SetLockData(address indexed account, uint256 initBalance, uint256 lockType, uint256 startDate);

    /* This generates a public event on the blockchain that will notify clients */
    event FrozenFunds(address target, bool frozen);

    /**
     * Constructor function
     *
     * Initializes contract with initial supply tokens to the creator of the contract
     */
    constructor() public {
        totalSupply_ = 20000000000000000;
        balances[msg.sender] = totalSupply_;  // Give the creator all initial tokens

        //init all lock data
        //Lock type 1
        lockType[0].time[0] = 30;
        lockType[0].freePercent[0] = 40;     //40%
        lockType[0].time[1] = 60;
        lockType[0].freePercent[1] = 20;     //20%
        lockType[0].time[2] = 120;
        lockType[0].freePercent[2] = 20;     //20%
        lockType[0].time[3] = 180;
        lockType[0].freePercent[3] = 20;     //20%

        //Lock type 2
        lockType[1].time[0] = 30;
        lockType[1].freePercent[0] = 25;     //25%
        lockType[1].time[1] = 60;
        lockType[1].freePercent[1] = 25;     //25%
        lockType[1].time[2] = 120;
        lockType[1].freePercent[2] = 25;     //25%
        lockType[1].time[3] = 180;
        lockType[1].freePercent[3] = 25;     //25%

        //Lock type 3
        lockType[2].time[0] = 180;
        lockType[2].freePercent[0] = 25;     //25%
        lockType[2].time[1] = 360;
        lockType[2].freePercent[1] = 25;     //25%
        lockType[2].time[2] = 540;
        lockType[2].freePercent[2] = 25;     //25%
        lockType[2].time[3] = 720;
        lockType[2].freePercent[3] = 25;     //25%

        //init all lock data
    }

    /**
    * @dev Gets the token name
    * @return string representing the token name
    */
    function name() external view returns (string) {
        return string(name_);
    }

    /**
    * @dev Gets the token symbol
    * @return string representing the token symbol
    */
    function symbol() external view returns (string) {
        return string(symbol_);
    }

    /**
     * Calculate how much tokens must be locked
     * return the amount of locked tokens
     */
    function getLockBalance(address account) internal returns (uint256) {
        uint256 lockTypeIndex;
        uint256 amountLockedTokens = 0;
        uint256 resultFreePercent = 0;
        uint256 duration = 0;
        uint256 i;

        lockTypeIndex = lockAccountInfo[account].lockType;

        if (lockTypeIndex >= 1) {
            if (lockTypeIndex <= LOCK_TYPE_MAX) {
                lockTypeIndex = lockTypeIndex.sub(1);
                for (i = 0; i < LOCK_STAGE_MAX; i++) {
                    duration = (lockType[lockTypeIndex].time[i]).mul(1 days);
                    if (lockAccountInfo[account].startTime.add(duration) >= now) {
                        resultFreePercent = resultFreePercent.add(lockType[lockTypeIndex].freePercent[i]);
                    }
                }
            }

            amountLockedTokens = (lockAccountInfo[account].initBalance.mul(resultFreePercent)).div(100);

            if (amountLockedTokens == 0){
                lockAccountInfo[account].lockType = 0;
            }
        }

        return amountLockedTokens;
    }

    /**
     * Internal transfer, only can be called by this contract
     * Transfer toekns, and lock time and balance by selectType
     */
    function _transferForLock(address _to, uint256 _value, uint256 selectType) internal {
        require(selectType >= 1);
        require(selectType <= LOCK_TYPE_MAX);

        if ((lockAccountInfo[_to].lockType == 0) && 
            (lockAccountInfo[_to].initBalance == 0)) {
            require(_value <= balances[msg.sender]);
            require(_to != address(0));

            //write data
            lockAccountInfo[_to].lockType = selectType;
            lockAccountInfo[_to].initBalance = _value;
            lockAccountInfo[_to].startTime = now;
            emit SetLockData(_to,_value, lockAccountInfo[_to].lockType, lockAccountInfo[_to].startTime);
            //write data

            balances[msg.sender] = balances[msg.sender].sub(_value);
            balances[_to] = balances[_to].add(_value);
            emit Transfer(msg.sender, _to, _value);
        } else {
            revert();
        }
    }

    /**
     * Transfer tokens
     *
     * Send `_value` tokens to `_to` from your account
     *
     * @param _to The address of the recipient
     * @param _value the amount to send
     */
    function transfer(address _to, uint256 _value) public returns (bool) {
        //check
        uint256 freeBalance;

        if (lockAccountInfo[msg.sender].lockType > 0) {
            freeBalance = balances[msg.sender].sub(getLockBalance(msg.sender));
            require(freeBalance >=_value);
        }
        //check

        require(_value <= balances[msg.sender]);
        require(_to != address(0));
        require(!frozenAccount[msg.sender]);        // Check if sender is frozen
        require(!frozenAccount[_to]);               // Check if recipient is frozen

        balances[msg.sender] = balances[msg.sender].sub(_value);
        balances[_to] = balances[_to].add(_value);
        emit Transfer(msg.sender, _to, _value);
        return true;
    }

    /// @notice `freeze? Prevent | Allow` `target` from sending & receiving tokens
    /// @param target Address to be frozen
    /// @param freeze either to freeze it or not
    function freezeAccount(address target, bool freeze) public onlyOwner {
        frozenAccount[target] = freeze;
        emit FrozenFunds(target, freeze);
    }

    /**
     * Transfer tokens
     * Lock time and token by lock_type 1
     *
     * Send `_value` tokens to `_to` from your account
     *
     * @param _to The address of the recipient
     * @param _value the amount to send
     */
    function transferLockBalance_1(address _to, uint256 _value) public onlyOwner {
        _transferForLock(_to, _value, 1);
    }

    /**
     * Transfer tokens
     * Lock time and token by lock_type 2
     *
     * Send `_value` tokens to `_to` from your account
     *
     * @param _to The address of the recipient
     * @param _value the amount to send
     */
    function transferLockBalance_2(address _to, uint256 _value) public onlyOwner {
        _transferForLock(_to, _value, 2);
    }

    /**
     * Transfer tokens
     * Lock time and token by lock_type 3
     *
     * Send `_value` tokens to `_to` from your account
     *
     * @param _to The address of the recipient
     * @param _value the amount to send
     */
    function transferLockBalance_3(address _to, uint256 _value) public onlyOwner {
        _transferForLock(_to, _value, 3);
    }

    /**
     * Destroy tokens
     *
     * Remove `_value` tokens from the system irreversibly
     *
     * @param _value the amount of money to burn
     */
    function burn(uint256 _value) public onlyOwner {
        _burn(msg.sender, _value);
    }

    function _burn(address _who, uint256 _value) internal {
        require(_value <= balances[_who]);
        // no need to require value <= totalSupply, since that would imply the
        // sender's balance is greater than the totalSupply, which *should* be an assertion failure

        balances[_who] = balances[_who].sub(_value);
        totalSupply_ = totalSupply_.sub(_value);
        emit Burn(_who, _value);
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferLockBalance_1","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferLockBalance_2","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"lockAccountInfo","outputs":[{"name":"lockType","type":"uint256"},{"name":"initBalance","type":"uint256"},{"name":"startTime","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferLockBalance_3","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"frozenAccount","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"target","type":"address"},{"name":"freeze","type":"bool"}],"name":"freezeAccount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","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":"from","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"},{"indexed":false,"name":"initBalance","type":"uint256"},{"indexed":false,"name":"lockType","type":"uint256"},{"indexed":false,"name":"startDate","type":"uint256"}],"name":"SetLockData","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":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

60c0604052601860808190527f496e7465726e6574206f662045766572797468696e672058000000000000000060a090815261003e9160039190610168565b506040805180820190915260048082527f494f45580000000000000000000000000000000000000000000000000000000060209092019182526100819181610168565b50600860055534801561009357600080fd5b5060028054600160a060020a0319163390811790915566470de4df8200006001819055600091825260208290526040822055601e600855602890600c0155603c6009556014600c600101556078600a556014600c6002015560b4600b556014600c60030155601e6010556019601460000155603c60115560196014600101556078601255601960146002015560b4601355601960146003015560b46018556019601c600001556101686019908155601c6001015561021c601a556019601c600201556102d0601b556019601c60030155610203565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106101a957805160ff19168380011785556101d6565b828001600101855582156101d6579182015b828111156101d65782518255916020019190600101906101bb565b506101e29291506101e6565b5090565b61020091905b808211156101e257600081556001016101ec565b90565b610c5c806102126000396000f3006080604052600436106100da5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146100df5780631313b53a1461016957806318160ddd1461018f5780631c45f94b146101b65780632cb55c77146101da5780632e6da2d514610219578063313ce5671461023d57806342966c681461025257806370a082311461026a5780638da5cb5b1461028b57806395d89b41146102bc578063a9059cbb146102d1578063b414d4b614610309578063e724529c1461032a578063f2fde38b14610350575b600080fd5b3480156100eb57600080fd5b506100f4610371565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012e578181015183820152602001610116565b50505050905090810190601f16801561015b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561017557600080fd5b5061018d600160a060020a0360043516602435610407565b005b34801561019b57600080fd5b506101a461042e565b60408051918252519081900360200190f35b3480156101c257600080fd5b5061018d600160a060020a0360043516602435610434565b3480156101e657600080fd5b506101fb600160a060020a0360043516610457565b60408051938452602084019290925282820152519081900360600190f35b34801561022557600080fd5b5061018d600160a060020a0360043516602435610478565b34801561024957600080fd5b506101a461049b565b34801561025e57600080fd5b5061018d6004356104a1565b34801561027657600080fd5b506101a4600160a060020a03600435166104c5565b34801561029757600080fd5b506102a06104e0565b60408051600160a060020a039092168252519081900360200190f35b3480156102c857600080fd5b506100f46104ef565b3480156102dd57600080fd5b506102f5600160a060020a0360043516602435610550565b604080519115158252519081900360200190f35b34801561031557600080fd5b506102f5600160a060020a03600435166106c5565b34801561033657600080fd5b5061018d600160a060020a036004351660243515156106da565b34801561035c57600080fd5b5061018d600160a060020a0360043516610755565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103fd5780601f106103d2576101008083540402835291602001916103fd565b820191906000526020600020905b8154815290600101906020018083116103e057829003601f168201915b5050505050905090565b600254600160a060020a0316331461041e57600080fd5b61042a828260016107ea565b5050565b60015490565b600254600160a060020a0316331461044b57600080fd5b61042a828260026107ea565b60076020526000908152604090208054600182015460029092015490919083565b600254600160a060020a0316331461048f57600080fd5b61042a828260036107ea565b60055481565b600254600160a060020a031633146104b857600080fd5b6104c2338261098f565b50565b600160a060020a031660009081526020819052604090205490565b600254600160a060020a031681565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103fd5780601f106103d2576101008083540402835291602001916103fd565b3360009081526007602052604081205481908110156105a05761059161057533610a4f565b336000908152602081905260409020549063ffffffff610baf16565b9050828110156105a057600080fd5b336000908152602081905260409020548311156105bc57600080fd5b600160a060020a03841615156105d157600080fd5b3360009081526006602052604090205460ff16156105ee57600080fd5b600160a060020a03841660009081526006602052604090205460ff161561061457600080fd5b33600090815260208190526040902054610634908463ffffffff610baf16565b3360009081526020819052604080822092909255600160a060020a03861681522054610666908463ffffffff610bc616565b600160a060020a038516600081815260208181526040918290209390935580518681529051919233927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a3600191505b5092915050565b60066020526000908152604090205460ff1681565b600254600160a060020a031633146106f157600080fd5b600160a060020a038216600081815260066020908152604091829020805460ff191685151590811790915582519384529083015280517f48335238b4855f35377ed80f164e8c6f3c366e54ac00b96a6402d4a9814a03a59281900390910190a15050565b600254600160a060020a0316331461076c57600080fd5b600160a060020a038116151561078157600080fd5b600254604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60018110156107f857600080fd5b600381111561080657600080fd5b600160a060020a0383166000908152600760205260409020541580156108455750600160a060020a038316600090815260076020526040902060010154155b156100da573360009081526020819052604090205482111561086657600080fd5b600160a060020a038316151561087b57600080fd5b600160a060020a0383166000818152600760209081526040918290208481556001810186905542600290910181905582518681529182018590528183015290517f1e07d8ccaa3a137b6fe950998ebd96e18b805cdf857ec65eeca3ac134aeb21a99181900360600190a233600090815260208190526040902054610905908363ffffffff610baf16565b3360009081526020819052604080822092909255600160a060020a03851681522054610937908363ffffffff610bc616565b600160a060020a038416600081815260208181526040918290209390935580518581529051919233927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a3505050565b600160a060020a0382166000908152602081905260409020548111156109b457600080fd5b600160a060020a0382166000908152602081905260409020546109dd908263ffffffff610baf16565b600160a060020a038316600090815260208190526040902055600154610a09908263ffffffff610baf16565b600155604080518281529051600160a060020a038416917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a25050565b600160a060020a0381166000908152600760205260408120548180808060018510610ba45760038511610b4257610a8d85600163ffffffff610baf16565b9450600090505b6004811015610b4257610ace6201518060088760038110610ab157fe5b600802018360048110610ac057fe5b01549063ffffffff610bdf16565b600160a060020a0388166000908152600760205260409020600201549092504290610aff908463ffffffff610bc616565b10610b3a57610b3760088660038110610b1457fe5b6008020160040182600481101515610b2857fe5b0154849063ffffffff610bc616565b92505b600101610a94565b600160a060020a038716600090815260076020526040902060010154610b8190606490610b75908663ffffffff610bdf16565b9063ffffffff610c0d16565b9350831515610ba457600160a060020a0387166000908152600760205260408120555b509195945050505050565b60008083831115610bbf57600080fd5b5050900390565b600082820183811015610bd857600080fd5b9392505050565b600080831515610bf257600091506106be565b50828202828482811515610c0257fe5b0414610bd857600080fd5b600080808311610c1c57600080fd5b8284811515610c2757fe5b049493505050505600a165627a7a72305820382f432f239366ab587b2d01a7221ae48043284b37b06a7483adbdc1cb0fc4490029

Deployed Bytecode

0x6080604052600436106100da5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146100df5780631313b53a1461016957806318160ddd1461018f5780631c45f94b146101b65780632cb55c77146101da5780632e6da2d514610219578063313ce5671461023d57806342966c681461025257806370a082311461026a5780638da5cb5b1461028b57806395d89b41146102bc578063a9059cbb146102d1578063b414d4b614610309578063e724529c1461032a578063f2fde38b14610350575b600080fd5b3480156100eb57600080fd5b506100f4610371565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012e578181015183820152602001610116565b50505050905090810190601f16801561015b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561017557600080fd5b5061018d600160a060020a0360043516602435610407565b005b34801561019b57600080fd5b506101a461042e565b60408051918252519081900360200190f35b3480156101c257600080fd5b5061018d600160a060020a0360043516602435610434565b3480156101e657600080fd5b506101fb600160a060020a0360043516610457565b60408051938452602084019290925282820152519081900360600190f35b34801561022557600080fd5b5061018d600160a060020a0360043516602435610478565b34801561024957600080fd5b506101a461049b565b34801561025e57600080fd5b5061018d6004356104a1565b34801561027657600080fd5b506101a4600160a060020a03600435166104c5565b34801561029757600080fd5b506102a06104e0565b60408051600160a060020a039092168252519081900360200190f35b3480156102c857600080fd5b506100f46104ef565b3480156102dd57600080fd5b506102f5600160a060020a0360043516602435610550565b604080519115158252519081900360200190f35b34801561031557600080fd5b506102f5600160a060020a03600435166106c5565b34801561033657600080fd5b5061018d600160a060020a036004351660243515156106da565b34801561035c57600080fd5b5061018d600160a060020a0360043516610755565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103fd5780601f106103d2576101008083540402835291602001916103fd565b820191906000526020600020905b8154815290600101906020018083116103e057829003601f168201915b5050505050905090565b600254600160a060020a0316331461041e57600080fd5b61042a828260016107ea565b5050565b60015490565b600254600160a060020a0316331461044b57600080fd5b61042a828260026107ea565b60076020526000908152604090208054600182015460029092015490919083565b600254600160a060020a0316331461048f57600080fd5b61042a828260036107ea565b60055481565b600254600160a060020a031633146104b857600080fd5b6104c2338261098f565b50565b600160a060020a031660009081526020819052604090205490565b600254600160a060020a031681565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103fd5780601f106103d2576101008083540402835291602001916103fd565b3360009081526007602052604081205481908110156105a05761059161057533610a4f565b336000908152602081905260409020549063ffffffff610baf16565b9050828110156105a057600080fd5b336000908152602081905260409020548311156105bc57600080fd5b600160a060020a03841615156105d157600080fd5b3360009081526006602052604090205460ff16156105ee57600080fd5b600160a060020a03841660009081526006602052604090205460ff161561061457600080fd5b33600090815260208190526040902054610634908463ffffffff610baf16565b3360009081526020819052604080822092909255600160a060020a03861681522054610666908463ffffffff610bc616565b600160a060020a038516600081815260208181526040918290209390935580518681529051919233927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a3600191505b5092915050565b60066020526000908152604090205460ff1681565b600254600160a060020a031633146106f157600080fd5b600160a060020a038216600081815260066020908152604091829020805460ff191685151590811790915582519384529083015280517f48335238b4855f35377ed80f164e8c6f3c366e54ac00b96a6402d4a9814a03a59281900390910190a15050565b600254600160a060020a0316331461076c57600080fd5b600160a060020a038116151561078157600080fd5b600254604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60018110156107f857600080fd5b600381111561080657600080fd5b600160a060020a0383166000908152600760205260409020541580156108455750600160a060020a038316600090815260076020526040902060010154155b156100da573360009081526020819052604090205482111561086657600080fd5b600160a060020a038316151561087b57600080fd5b600160a060020a0383166000818152600760209081526040918290208481556001810186905542600290910181905582518681529182018590528183015290517f1e07d8ccaa3a137b6fe950998ebd96e18b805cdf857ec65eeca3ac134aeb21a99181900360600190a233600090815260208190526040902054610905908363ffffffff610baf16565b3360009081526020819052604080822092909255600160a060020a03851681522054610937908363ffffffff610bc616565b600160a060020a038416600081815260208181526040918290209390935580518581529051919233927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a3505050565b600160a060020a0382166000908152602081905260409020548111156109b457600080fd5b600160a060020a0382166000908152602081905260409020546109dd908263ffffffff610baf16565b600160a060020a038316600090815260208190526040902055600154610a09908263ffffffff610baf16565b600155604080518281529051600160a060020a038416917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a25050565b600160a060020a0381166000908152600760205260408120548180808060018510610ba45760038511610b4257610a8d85600163ffffffff610baf16565b9450600090505b6004811015610b4257610ace6201518060088760038110610ab157fe5b600802018360048110610ac057fe5b01549063ffffffff610bdf16565b600160a060020a0388166000908152600760205260409020600201549092504290610aff908463ffffffff610bc616565b10610b3a57610b3760088660038110610b1457fe5b6008020160040182600481101515610b2857fe5b0154849063ffffffff610bc616565b92505b600101610a94565b600160a060020a038716600090815260076020526040902060010154610b8190606490610b75908663ffffffff610bdf16565b9063ffffffff610c0d16565b9350831515610ba457600160a060020a0387166000908152600760205260408120555b509195945050505050565b60008083831115610bbf57600080fd5b5050900390565b600082820183811015610bd857600080fd5b9392505050565b600080831515610bf257600091506106be565b50828202828482811515610c0257fe5b0414610bd857600080fd5b600080808311610c1c57600080fd5b8284811515610c2757fe5b049493505050505600a165627a7a72305820382f432f239366ab587b2d01a7221ae48043284b37b06a7483adbdc1cb0fc4490029

Swarm Source

bzzr://382f432f239366ab587b2d01a7221ae48043284b37b06a7483adbdc1cb0fc449
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.