Token ThingsOpreatingSystem

 

Overview [ERC-20]

Price
$0.00 @ 0.000000 Eth
Fully Diluted Market Cap
Max Total Supply:
1,000,000,000 TOS

Holders:
108,131 ( 0.001%)

Transfers:
-

 
Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

OVERVIEW

Decentralized layered block network Technology based on SDAG.

Market

Volume (24H):$1.36
Market Capitalization:$17,757.52
Circulating Supply:790,000,000.00 TOS
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TosToken

Compiler Version
v0.4.19+commit.c4cbbb05

Optimization Enabled:
Yes with 200 runs

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

/**
 * Copyright 2018 TosChain Foundation.
 */

pragma solidity ^0.4.16;

/** Owner permissions */
contract owned {
    address public owner;

    function owned() public {
        owner = msg.sender;
    }

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

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

interface tokenRecipient { function receiveApproval(address _from, uint256 _value, address _token, bytes _extraData) public; }

/// ERC20 standard,Define the minimum unit of money to 18 decimal places,
/// transfer out, destroy coins, others use your account spending pocket money.
contract TokenERC20 {
    uint256 public totalSupply;
    // This creates an array with all balances.
    mapping (address => uint256) public balanceOf;
    mapping (address => mapping (address => uint256)) public allowance;

    // 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);

    /**
     * Internal transfer, only can be called by this contract.
     */
    function _transfer(address _from, address _to, uint _value) internal {
        // Prevent transfer to 0x0 address. Use burn() instead.
        require(_to != 0x0);
        // Check if the sender has enough.
        require(balanceOf[_from] >= _value);
        // Check for overflows.
        require(balanceOf[_to] + _value > balanceOf[_to]);
        // Save this for an assertion in the future.
        uint previousBalances = balanceOf[_from] + balanceOf[_to];
        // Subtract from the sender.
        balanceOf[_from] -= _value;
        // Add the same to the recipient.
        balanceOf[_to] += _value;
        Transfer(_from, _to, _value);
        // Asserts are used to use static analysis to find bugs in your code. They should never fail.
        assert(balanceOf[_from] + balanceOf[_to] == previousBalances);
    }

    /**
     * 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 {
        _transfer(msg.sender, _to, _value);
    }

    /**
     * Transfer tokens from other address.
     *
     * Send `_value` tokens to `_to` in behalf of `_from`.
     *
     * @param _from The address of the sender.
     * @param _to The address of the recipient.
     * @param _value the amount to send.
     */
    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) {
        // Check allowance
        require(_value <= allowance[_from][msg.sender]);
        allowance[_from][msg.sender] -= _value;
        _transfer(_from, _to, _value);
        return true;
    }

    /**
     * Set allowance for other address.
     *
     * Allows `_spender` to spend no more than `_value` tokens in your behalf.
     *
     * @param _spender The address authorized to spend.
     * @param _value the max amount they can spend.
     */
    function approve(address _spender, uint256 _value) public
        returns (bool success) {
        allowance[msg.sender][_spender] = _value;
        return true;
    }

    /**
     * Set allowance for other address and notify.
     *
     * Allows `_spender` to spend no more than `_value` tokens in your behalf, and then ping the contract about it.
     *
     * @param _spender The address authorized to spend.
     * @param _value the max amount they can spend.
     * @param _extraData some extra information to send to the approved contract.
     */
    function approveAndCall(address _spender, uint256 _value, bytes _extraData)
        public
        returns (bool success) {
        tokenRecipient spender = tokenRecipient(_spender);
        if (approve(_spender, _value)) {
            spender.receiveApproval(msg.sender, _value, this, _extraData);
            return true;
        }
    }

    /**
     * Destroy tokens
     *
     * Remove `_value` tokens from the system irreversibly.
     *
     * @param _value the amount of money to burn.
     */
    function burn(uint256 _value) public returns (bool success) {
        // Check if the sender has enough
        require(balanceOf[msg.sender] >= _value);
        // Subtract from the sender
        balanceOf[msg.sender] -= _value;
        // Updates totalSupply
        totalSupply -= _value;
        Burn(msg.sender, _value);
        return true;
    }

    /**
     * Destroy tokens from other account.
     *
     * Remove `_value` tokens from the system irreversibly on behalf of `_from`.
     *
     * @param _from the address of the sender.
     * @param _value the amount of money to burn.
     */
    function burnFrom(address _from, uint256 _value) public returns (bool success) {
        // Check if the targeted balance is enough.
        require(balanceOf[_from] >= _value);
        // Check allowance
        require(_value <= allowance[_from][msg.sender]);
        // Subtract from the targeted balance.
        balanceOf[_from] -= _value;
        // Subtract from the sender's allowance.
        allowance[_from][msg.sender] -= _value;
        // Update totalSupply
        totalSupply -= _value;
        Burn(_from, _value);
        return true;
    }
}

/******************************************/
/*       TOS TOKEN STARTS HERE       */
/******************************************/

/// @title TOS Protocol Token.
contract TosToken is owned, TokenERC20 {

    /// The full name of the TOS token.
    string public constant name = "ThingsOpreatingSystem";
    /// Symbol of the TOS token.
    string public constant symbol = "TOS";
    /// 18 decimals is the strongly suggested default, avoid changing it.
    uint8 public constant decimals = 18;


    uint256 public totalSupply = 1000000000 * 10 ** uint256(decimals);
    /// Amount of TOS token to first issue.
    uint256 public MAX_FUNDING_SUPPLY = totalSupply * 500 / 1000;

    /**
     *  Locked tokens system
     */
    /// Stores the address of the locked tokens.
    address public lockJackpots;
    /// Reward for depositing the TOS token into a locked tokens.
    /// uint256 public totalLockReward = totalSupply * 50 / 1000;
    /// Remaining rewards in the locked tokens.
    uint256 public remainingReward;

    /// The start time to lock tokens. 2018/03/15 0:0:0
    uint256 public lockStartTime = 1521043200;
    /// The last time to lock tokens. 2018/04/29 0:0:0
    uint256 public lockDeadline = 1524931200;
    /// Release tokens lock time,Timestamp format 1544803200 ==  2018/12/15 0:0:0
    uint256 public unLockTime = 1544803200;

    /// Reward factor for locked tokens 
    uint public constant NUM_OF_PHASE = 3;
    uint[3] public lockRewardsPercentages = [
        1000,   //100%
        500,    //50%
        300    //30%
    ];

    /// Locked account details
    mapping (address => uint256) public lockBalanceOf;

    /**
     *  Freeze the account system
     */
    /* This generates a public event on the blockchain that will notify clients. */
    mapping (address => bool) public frozenAccount;
    event FrozenFunds(address target, bool frozen);

    /* Initializes contract with initial supply tokens to the creator of the contract. */
    function TosToken() public {
        /// Give the creator all initial tokens.
        balanceOf[msg.sender] = totalSupply;
    }

    /**
     * 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 {
        /// Locked account can not complete the transfer.
        require(!(lockJackpots != 0x0 && msg.sender == lockJackpots));

        /// Transponding the TOS token to a locked tokens account will be deemed a lock-up activity.
        if (lockJackpots != 0x0 && _to == lockJackpots) {
            _lockToken(_value);
        }
        else {
            /// To unlock the time, automatically unlock tokens.
            if (unLockTime <= now && lockBalanceOf[msg.sender] > 0) {
                lockBalanceOf[msg.sender] = 0;
            }

            _transfer(msg.sender, _to, _value);
        }
    }

    /**
     * transfer token for a specified address.Internal transfer, only can be called by this contract.
     *
     * @param _from The address to transfer from.
     * @param _to The address to transfer to.
     * @param _value The amount to be transferred.
     */
    function _transfer(address _from, address _to, uint _value) internal {
        // Prevent transfer to 0x0 address. Use burn() instead.
        require(_to != 0x0);
        //Check for overflows.
        require(lockBalanceOf[_from] + _value > lockBalanceOf[_from]);
        // Check if the sender has enough.
        require(balanceOf[_from] >= lockBalanceOf[_from] + _value);
        // Check for overflows.
        require(balanceOf[_to] + _value > balanceOf[_to]);
        // Check if sender is frozen.
        require(!frozenAccount[_from]);
        // Check if recipient is frozen.
        require(!frozenAccount[_to]);
        // Subtract from the sender.
        balanceOf[_from] -= _value;
        // Add the same to the recipient.
        balanceOf[_to] += _value;
        Transfer(_from, _to, _value);
    }

    /**
     * `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) onlyOwner public {
        frozenAccount[target] = freeze;
        FrozenFunds(target, freeze);
    }

    /**
     * Increase the token reward.
     *
     * @param _value Increase the amount of tokens awarded.
     */
    function increaseLockReward(uint256 _value) public{
        require(_value > 0);
        _transfer(msg.sender, lockJackpots, _value * 10 ** uint256(decimals));
        _calcRemainReward();
    }

    /**
     * Locked tokens, in the locked token reward calculation and distribution.
     *
     * @param _lockValue Lock token reward.
     */
    function _lockToken(uint256 _lockValue) internal {
        /// Lock the tokens necessary safety checks.
        require(lockJackpots != 0x0);
        require(now >= lockStartTime);
        require(now <= lockDeadline);
        require(lockBalanceOf[msg.sender] + _lockValue > lockBalanceOf[msg.sender]);
        /// Check account tokens must be sufficient.
        require(balanceOf[msg.sender] >= lockBalanceOf[msg.sender] + _lockValue);

        uint256 _reward =  _lockValue * _calcLockRewardPercentage() / 1000;
        /// Distribute bonus tokens.
        _transfer(lockJackpots, msg.sender, _reward);

        /// Save locked accounts and rewards.
        lockBalanceOf[msg.sender] += _lockValue + _reward;
        _calcRemainReward();
    }

    uint256 lockRewardFactor;
    /* Calculate locked token reward percentage,Actual value: rewardFactor/1000 */
    function _calcLockRewardPercentage() internal returns (uint factor){

        uint phase = NUM_OF_PHASE * (now - lockStartTime)/( lockDeadline - lockStartTime);
        if (phase  >= NUM_OF_PHASE) {
            phase = NUM_OF_PHASE - 1;
        }
    
        lockRewardFactor = lockRewardsPercentages[phase];
        return lockRewardFactor;
    }

    /** The activity is over and the token in the prize pool is sent to the manager for fund development. */
    function rewardActivityEnd() onlyOwner public {
        /// The activity is over.
        require(unLockTime < now);
        /// Send the token from the prize pool to the manager.
        _transfer(lockJackpots, owner, balanceOf[lockJackpots]);
        _calcRemainReward();
    }

    function() payable public {}

    /**
     * Set lock token address,only once.
     *
     * @param newLockJackpots The lock token address.
     */
    function setLockJackpots(address newLockJackpots) onlyOwner public {
        require(lockJackpots == 0x0 && newLockJackpots != 0x0 && newLockJackpots != owner);
        lockJackpots = newLockJackpots;
        _calcRemainReward();
    }

    /** Remaining rewards in the locked tokens. */
    function _calcRemainReward() internal {
        remainingReward = balanceOf[lockJackpots];
    }

    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) {
        // Check allowance
        require(_from != lockJackpots);
        return super.transferFrom(_from, _to, _value);
    }

    function approve(address _spender, uint256 _value) public
        returns (bool success) {
        require(msg.sender != lockJackpots);
        return super.approve(_spender, _value);
    }

    function approveAndCall(address _spender, uint256 _value, bytes _extraData)
        public
        returns (bool success) {
        require(msg.sender != lockJackpots);
        return super.approveAndCall(_spender, _value, _extraData);
    }

    function burn(uint256 _value) public returns (bool success) {
        require(msg.sender != lockJackpots);
        return super.burn(_value);
    }

    function burnFrom(address _from, uint256 _value) public returns (bool success) {
        require(_from != lockJackpots);
        return super.burnFrom(_from, _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":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"lockBalanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","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,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burn","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"MAX_FUNDING_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newLockJackpots","type":"address"}],"name":"setLockJackpots","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"lockRewardsPercentages","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lockStartTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"increaseLockReward","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_value","type":"uint256"}],"name":"burnFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","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":true,"inputs":[],"name":"lockJackpots","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[],"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":"_spender","type":"address"},{"name":"_value","type":"uint256"},{"name":"_extraData","type":"bytes"}],"name":"approveAndCall","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"NUM_OF_PHASE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"remainingReward","outputs":[{"name":"","type":"uint256"}],"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"},{"constant":true,"inputs":[],"name":"lockDeadline","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"unLockTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"rewardActivityEnd","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"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":"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"}]

606060408181526b033b2e3c9fd0803ce80000006004556b019d971e4fe8401e74000000600555635aa94700600855635ae49a80600955635c13d380600a555190810160409081526103e882526101f4602083015261012c9082015261006990600b9060036100a8565b50341561007557600080fd5b60008054600160a060020a03191633600160a060020a031690811782556004549082526002602052604090912055610109565b82600381019282156100dc579160200282015b828111156100dc578251829061ffff169055916020019190600101906100bb565b506100e89291506100ec565b5090565b61010691905b808211156100e857600081556001016100f2565b90565b61101a806101186000396000f3006060604052600436106101695763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde03811461016b578063095ea7b3146101f557806310e776ed1461022b57806318160ddd1461025c57806323b872dd1461026f578063313ce5671461029757806342966c68146102c057806343525d73146102d6578063465af554146102e95780634a52ac6a1461030857806362c7fa761461031e5780636843aef91461033157806370a082311461034757806379cc6790146103665780638da5cb5b1461038857806395d89b41146103b7578063a841da4b146103ca578063a9059cbb146103dd578063b414d4b6146103ff578063cae9ca511461041e578063dbefe78914610483578063dd62ed3e14610496578063e1c4c9fe146104bb578063e724529c146104ce578063f2fde38b146104f2578063fa4d0c3c14610511578063facc790514610524578063fc1b928614610537575b005b341561017657600080fd5b61017e61054a565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101ba5780820151838201526020016101a2565b50505050905090810190601f1680156101e75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561020057600080fd5b610217600160a060020a0360043516602435610581565b604051901515815260200160405180910390f35b341561023657600080fd5b61024a600160a060020a03600435166105b1565b60405190815260200160405180910390f35b341561026757600080fd5b61024a6105c3565b341561027a57600080fd5b610217600160a060020a03600435811690602435166044356105c9565b34156102a257600080fd5b6102aa6105fa565b60405160ff909116815260200160405180910390f35b34156102cb57600080fd5b6102176004356105ff565b34156102e157600080fd5b61024a61062d565b34156102f457600080fd5b610169600160a060020a0360043516610633565b341561031357600080fd5b61024a6004356106c7565b341561032957600080fd5b61024a6106db565b341561033c57600080fd5b6101696004356106e1565b341561035257600080fd5b61024a600160a060020a0360043516610718565b341561037157600080fd5b610217600160a060020a036004351660243561072a565b341561039357600080fd5b61039b610752565b604051600160a060020a03909116815260200160405180910390f35b34156103c257600080fd5b61017e610761565b34156103d557600080fd5b61039b610798565b34156103e857600080fd5b610169600160a060020a03600435166024356107a7565b341561040a57600080fd5b610217600160a060020a0360043516610869565b341561042957600080fd5b61021760048035600160a060020a03169060248035919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061087e95505050505050565b341561048e57600080fd5b61024a6108a8565b34156104a157600080fd5b61024a600160a060020a03600435811690602435166108ad565b34156104c657600080fd5b61024a6108ca565b34156104d957600080fd5b610169600160a060020a036004351660243515156108d0565b34156104fd57600080fd5b610169600160a060020a036004351661095c565b341561051c57600080fd5b61024a6109a6565b341561052f57600080fd5b61024a6109ac565b341561054257600080fd5b6101696109b2565b60408051908101604052601581527f5468696e67734f7072656174696e6753797374656d0000000000000000000000602082015281565b60065460009033600160a060020a03908116911614156105a057600080fd5b6105aa8383610a13565b9392505050565b600e6020526000908152604090205481565b60045481565b600654600090600160a060020a03858116911614156105e757600080fd5b6105f2848484610a43565b949350505050565b601281565b60065460009033600160a060020a039081169116141561061e57600080fd5b61062782610aba565b92915050565b60055481565b60005433600160a060020a0390811691161461064e57600080fd5b600654600160a060020a031615801561066f5750600160a060020a03811615155b80156106895750600054600160a060020a03828116911614155b151561069457600080fd5b6006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790556106c4610b45565b50565b600b81600381106106d457fe5b0154905081565b60085481565b600081116106ee57600080fd5b600654610710903390600160a060020a0316670de0b6b3a76400008402610b65565b6106c4610b45565b60026020526000908152604090205481565b600654600090600160a060020a038481169116141561074857600080fd5b6105aa8383610cb0565b600054600160a060020a031681565b60408051908101604052600381527f544f530000000000000000000000000000000000000000000000000000000000602082015281565b600654600160a060020a031681565b600654600160a060020a0316158015906107cf575060065433600160a060020a039081169116145b156107d957600080fd5b600654600160a060020a0316158015906108005750600654600160a060020a038381169116145b156108135761080e81610d8c565b610865565b42600a541115801561083b5750600160a060020a0333166000908152600e6020526040812054115b1561085a57600160a060020a0333166000908152600e60205260408120555b610865338383610b65565b5050565b600f6020526000908152604090205460ff1681565b60065460009033600160a060020a039081169116141561089d57600080fd5b6105f2848484610e78565b600381565b600360209081526000928352604080842090915290825290205481565b60075481565b60005433600160a060020a039081169116146108eb57600080fd5b600160a060020a0382166000908152600f602052604090819020805460ff19168315151790557f48335238b4855f35377ed80f164e8c6f3c366e54ac00b96a6402d4a9814a03a5908390839051600160a060020a039092168252151560208201526040908101905180910390a15050565b60005433600160a060020a0390811691161461097757600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60095481565b600a5481565b60005433600160a060020a039081169116146109cd57600080fd5b600a544290106109dc57600080fd5b60065460008054600160a060020a039283168083526002602052604090922054610a099390911690610b65565b610a11610b45565b565b600160a060020a033381166000908152600360209081526040808320938616835292905220819055600192915050565b600160a060020a03808416600090815260036020908152604080832033909416835292905290812054821115610a7857600080fd5b600160a060020a0380851660009081526003602090815260408083203390941683529290522080548390039055610ab0848484610b65565b5060019392505050565b600160a060020a03331660009081526002602052604081205482901015610ae057600080fd5b600160a060020a03331660008181526002602052604090819020805485900390556001805485900390557fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca59084905190815260200160405180910390a2506001919050565b600654600160a060020a0316600090815260026020526040902054600755565b600160a060020a0382161515610b7a57600080fd5b600160a060020a0383166000908152600e602052604090205481810111610ba057600080fd5b600160a060020a0383166000908152600e6020908152604080832054600290925290912054908201901015610bd457600080fd5b600160a060020a03821660009081526002602052604090205481810111610bfa57600080fd5b600160a060020a0383166000908152600f602052604090205460ff1615610c2057600080fd5b600160a060020a0382166000908152600f602052604090205460ff1615610c4657600080fd5b600160a060020a038084166000818152600260205260408082208054869003905592851680825290839020805485019055917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9084905190815260200160405180910390a3505050565b600160a060020a03821660009081526002602052604081205482901015610cd657600080fd5b600160a060020a0380841660009081526003602090815260408083203390941683529290522054821115610d0957600080fd5b600160a060020a038084166000818152600260209081526040808320805488900390556003825280832033909516835293905282902080548590039055600180548590039055907fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca59084905190815260200160405180910390a250600192915050565b600654600090600160a060020a03161515610da657600080fd5b600854421015610db557600080fd5b600954421115610dc457600080fd5b600160a060020a0333166000908152600e602052604090205482810111610dea57600080fd5b600160a060020a0333166000908152600e6020908152604080832054600290925290912054908301901015610e1e57600080fd5b6103e8610e29610faa565b8302811515610e3457fe5b6006549190049150610e5090600160a060020a03163383610b65565b600160a060020a0333166000908152600e602052604090208054838301019055610865610b45565b600083610e858185610581565b15610fa25780600160a060020a0316638f4ffcb1338630876040518563ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018085600160a060020a0316600160a060020a0316815260200184815260200183600160a060020a0316600160a060020a0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610f3b578082015183820152602001610f23565b50505050905090810190601f168015610f685780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1515610f8957600080fd5b6102c65a03f11515610f9a57600080fd5b505050600191505b509392505050565b600080600854600954036008544203600302811515610fc557fe5b04905060038110610fd4575060025b600b8160038110610fe157fe5b01546010819055915050905600a165627a7a7230582045401a9affd6a5e5f67dd0a9a65ad59f93e78d6b824637741fae1b41fafb4c1b0029

Swarm Source

bzzr://45401a9affd6a5e5f67dd0a9a65ad59f93e78d6b824637741fae1b41fafb4c1b

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.