ETH Price: $3,679.38 (-5.25%)

Token

ERC-20: ()
 

Overview

Max Total Supply

40 ERC-20:

Holders

15

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 0 Decimals)

Balance
1 ERC-20:

Value
$0.00
0x305ce3ca65d9b84b8561b0055ecaefeba2217fc8
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:
HeroesToken

Compiler Version
v0.4.21+commit.dfe3193c

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-03-16
*/

pragma solidity ^0.4.18;


/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {

  /**
  * @dev Multiplies two numbers, throws on overflow.
  */
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    if (a == 0) {
      return 0;
    }
    uint256 c = a * b;
    assert(c / a == b);
    return c;
  }

  /**
  * @dev Integer division of two numbers, truncating the quotient.
  */
  function div(uint256 a, uint256 b) internal pure 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;
  }

  /**
  * @dev Substracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
  */
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    assert(b <= a);
    return a - b;
  }

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

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


  event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);


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

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

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

}

/**
 * @title ERC20Basic
 * @dev Simpler version of ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/179
 */
contract ERC20Basic {
  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);
}

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

/**
 * @title SafeERC20
 * @dev Wrappers around ERC20 operations that throw on failure.
 * To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,
 * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
 */
library SafeERC20 {
  function safeTransfer(ERC20Basic token, address to, uint256 value) internal {
    assert(token.transfer(to, value));
  }

  function safeTransferFrom(ERC20 token, address from, address to, uint256 value) internal {
    assert(token.transferFrom(from, to, value));
  }

  function safeApprove(ERC20 token, address spender, uint256 value) internal {
    assert(token.approve(spender, value));
  }
}

/**
 * @title ERC721 interface
 * @dev see https://github.com/ethereum/eips/issues/721
 */
contract ERC721 {
  event Transfer(address indexed _from, address indexed _to, uint256 _tokenId);
  event Approval(address indexed _owner, address indexed _approved, uint256 _tokenId);

  function balanceOf(address _owner) public view returns (uint256 _balance);
  function ownerOf(uint256 _tokenId) public view returns (address _owner);
  function transfer(address _to, uint256 _tokenId) public;
  function approve(address _to, uint256 _tokenId) public;
  function takeOwnership(uint256 _tokenId) public;
}

/**
 * @title ERC721Token
 * Generic implementation for the required functionality of the ERC721 standard
 */
contract ERC721Token is ERC721 {
  using SafeMath for uint256;

  // Total amount of tokens
  uint256 private totalTokens;

  // Mapping from token ID to owner
  mapping (uint256 => address) private tokenOwner;

  // Mapping from token ID to approved address
  mapping (uint256 => address) private tokenApprovals;

  // Mapping from owner to list of owned token IDs
  mapping (address => uint256[]) private ownedTokens;

  // Mapping from token ID to index of the owner tokens list
  mapping(uint256 => uint256) private ownedTokensIndex;

  /**
  * @dev Guarantees msg.sender is owner of the given token
  * @param _tokenId uint256 ID of the token to validate its ownership belongs to msg.sender
  */
  modifier onlyOwnerOf(uint256 _tokenId) {
    require(ownerOf(_tokenId) == msg.sender);
    _;
  }

  /**
  * @dev Gets the total amount of tokens stored by the contract
  * @return uint256 representing the total amount of tokens
  */
  function totalSupply() public view returns (uint256) {
    return totalTokens;
  }

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

  /**
  * @dev Gets the list of tokens owned by a given address
  * @param _owner address to query the tokens of
  * @return uint256[] representing the list of tokens owned by the passed address
  */
  function tokensOf(address _owner) public view returns (uint256[]) {
    return ownedTokens[_owner];
  }

  /**
  * @dev Gets the owner of the specified token ID
  * @param _tokenId uint256 ID of the token to query the owner of
  * @return owner address currently marked as the owner of the given token ID
  */
  function ownerOf(uint256 _tokenId) public view returns (address) {
    address owner = tokenOwner[_tokenId];
    require(owner != address(0));
    return owner;
  }

  /**
   * @dev Gets the approved address to take ownership of a given token ID
   * @param _tokenId uint256 ID of the token to query the approval of
   * @return address currently approved to take ownership of the given token ID
   */
  function approvedFor(uint256 _tokenId) public view returns (address) {
    return tokenApprovals[_tokenId];
  }

  /**
  * @dev Transfers the ownership of a given token ID to another address
  * @param _to address to receive the ownership of the given token ID
  * @param _tokenId uint256 ID of the token to be transferred
  */
  function transfer(address _to, uint256 _tokenId) public onlyOwnerOf(_tokenId) {
    clearApprovalAndTransfer(msg.sender, _to, _tokenId);
  }

  /**
  * @dev Approves another address to claim for the ownership of the given token ID
  * @param _to address to be approved for the given token ID
  * @param _tokenId uint256 ID of the token to be approved
  */
  function approve(address _to, uint256 _tokenId) public onlyOwnerOf(_tokenId) {
    address owner = ownerOf(_tokenId);
    require(_to != owner);
    if (approvedFor(_tokenId) != 0 || _to != 0) {
      tokenApprovals[_tokenId] = _to;
      emit Approval(owner, _to, _tokenId);
    }
  }

  /**
  * @dev Claims the ownership of a given token ID
  * @param _tokenId uint256 ID of the token being claimed by the msg.sender
  */
  function takeOwnership(uint256 _tokenId) public {
    require(isApprovedFor(msg.sender, _tokenId));
    clearApprovalAndTransfer(ownerOf(_tokenId), msg.sender, _tokenId);
  }

  /**
  * @dev Mint token function
  * @param _to The address that will own the minted token
  * @param _tokenId uint256 ID of the token to be minted by the msg.sender
  */
  function _mint(address _to, uint256 _tokenId) internal {
    require(_to != address(0));
    addToken(_to, _tokenId);
    emit Transfer(0x0, _to, _tokenId);
  }

  /**
  * @dev Burns a specific token
  * @param _tokenId uint256 ID of the token being burned by the msg.sender
  */
  function _burn(uint256 _tokenId) onlyOwnerOf(_tokenId) internal {
    if (approvedFor(_tokenId) != 0) {
      clearApproval(msg.sender, _tokenId);
    }
    removeToken(msg.sender, _tokenId);
    emit Transfer(msg.sender, 0x0, _tokenId);
  }

  /**
   * @dev Tells whether the msg.sender is approved for the given token ID or not
   * This function is not private so it can be extended in further implementations like the operatable ERC721
   * @param _owner address of the owner to query the approval of
   * @param _tokenId uint256 ID of the token to query the approval of
   * @return bool whether the msg.sender is approved for the given token ID or not
   */
  function isApprovedFor(address _owner, uint256 _tokenId) internal view returns (bool) {
    return approvedFor(_tokenId) == _owner;
  }

  /**
  * @dev Internal function to clear current approval and transfer the ownership of a given token ID
  * @param _from address which you want to send tokens from
  * @param _to address which you want to transfer the token to
  * @param _tokenId uint256 ID of the token to be transferred
  */
  function clearApprovalAndTransfer(address _from, address _to, uint256 _tokenId) internal {
    require(_to != address(0));
    require(_to != ownerOf(_tokenId));
    require(ownerOf(_tokenId) == _from);

    clearApproval(_from, _tokenId);
    removeToken(_from, _tokenId);
    addToken(_to, _tokenId);
    emit Transfer(_from, _to, _tokenId);
  }

  /**
  * @dev Internal function to clear current approval of a given token ID
  * @param _tokenId uint256 ID of the token to be transferred
  */
  function clearApproval(address _owner, uint256 _tokenId) private {
    require(ownerOf(_tokenId) == _owner);
    tokenApprovals[_tokenId] = 0;
    emit Approval(_owner, 0, _tokenId);
  }

  /**
  * @dev Internal function to add a token ID to the list of a given address
  * @param _to address representing the new owner of the given token ID
  * @param _tokenId uint256 ID of the token to be added to the tokens list of the given address
  */
  function addToken(address _to, uint256 _tokenId) private {
    require(tokenOwner[_tokenId] == address(0));
    tokenOwner[_tokenId] = _to;
    uint256 length = balanceOf(_to);
    ownedTokens[_to].push(_tokenId);
    ownedTokensIndex[_tokenId] = length;
    totalTokens = totalTokens.add(1);
  }

  /**
  * @dev Internal function to remove a token ID from the list of a given address
  * @param _from address representing the previous owner of the given token ID
  * @param _tokenId uint256 ID of the token to be removed from the tokens list of the given address
  */
  function removeToken(address _from, uint256 _tokenId) private {
    require(ownerOf(_tokenId) == _from);

    uint256 tokenIndex = ownedTokensIndex[_tokenId];
    uint256 lastTokenIndex = balanceOf(_from).sub(1);
    uint256 lastToken = ownedTokens[_from][lastTokenIndex];

    tokenOwner[_tokenId] = 0;
    ownedTokens[_from][tokenIndex] = lastToken;
    ownedTokens[_from][lastTokenIndex] = 0;
    // Note that this will handle single-element arrays. In that case, both tokenIndex and lastTokenIndex are going to
    // be zero. Then we can make sure that we will remove _tokenId from the ownedTokens list since we are first swapping
    // the lastToken to the first position, and then dropping the element placed in the last position of the list

    ownedTokens[_from].length--;
    ownedTokensIndex[_tokenId] = 0;
    ownedTokensIndex[lastToken] = tokenIndex;
    totalTokens = totalTokens.sub(1);
  }
}

/**
 * @title Contracts that should be able to recover tokens
 * @author SylTi
 * @dev This allow a contract to recover any ERC20 token received in a contract by transferring the balance to the contract owner.
 * This will prevent any accidental loss of tokens.
 */
contract CanReclaimToken is Ownable {
  using SafeERC20 for ERC20Basic;

  /**
   * @dev Reclaim all ERC20Basic compatible tokens
   * @param token ERC20Basic The address of the token contract
   */
  function reclaimToken(ERC20Basic token) external onlyOwner {
    uint256 balance = token.balanceOf(this);
    token.safeTransfer(owner, balance);
  }

}

contract HeroesToken is ERC721Token, CanReclaimToken {
    using SafeMath for uint256;

    event Bought (uint256 indexed _tokenId, address indexed _owner, uint256 _price);
    event Sold (uint256 indexed _tokenId, address indexed _owner, uint256 _price);

    uint256[] private listedTokens;
    mapping (uint256 => uint256) private priceOfToken;

    uint256[4] private limits = [0.05 ether, 0.5 ether, 5.0 ether];

    uint256[4] private fees = [6, 5, 4, 3]; // 6%, 5%; 4%, 3%
    uint256[4] private increases = [200, 150, 130, 120]; // +100%, +50%; +30%, +20%

    function HeroesToken() ERC721Token() public {}

    function mint(address _to, uint256 _tokenId, uint256 _price) public onlyOwner {
        require(_to != address(this));

        super._mint(_to, _tokenId);
        listedTokens.push(_tokenId);
        priceOfToken[_tokenId] = _price;
    }

    function priceOf(uint256 _tokenId) public view returns (uint256) {
        return priceOfToken[_tokenId];
    }

    function calculateFee(uint256 _price) public view returns (uint256) {
        if (_price < limits[0]) {
            return _price.mul(fees[0]).div(100);
        } else if (_price < limits[1]) {
            return _price.mul(fees[1]).div(100);
        } else if (_price < limits[2]) {
            return _price.mul(fees[2]).div(100);
        } else {
            return _price.mul(fees[3]).div(100);
        }
    }

    function calculatePrice(uint256 _price) public view returns (uint256) {
        if (_price < limits[0]) {
            return _price.mul(increases[0]).div(100 - fees[0]);
        } else if (_price < limits[1]) {
            return _price.mul(increases[1]).div(100 - fees[1]);
        } else if (_price < limits[2]) {
            return _price.mul(increases[2]).div(100 - fees[2]);
        } else {
            return _price.mul(increases[3]).div(100 - fees[3]);
        }
    }

    function buy(uint256 _tokenId) public payable {
        require(priceOf(_tokenId) > 0);
        require(ownerOf(_tokenId) != address(0));
        require(msg.value >= priceOf(_tokenId));
        require(ownerOf(_tokenId) != msg.sender);
        require(!isContract(msg.sender));
        require(msg.sender != address(0));

        address oldOwner = ownerOf(_tokenId);
        address newOwner = msg.sender;
        uint256 price = priceOf(_tokenId);
        uint256 excess = msg.value.sub(price);

        super.clearApprovalAndTransfer(oldOwner, newOwner, _tokenId);
        priceOfToken[_tokenId] = calculatePrice(price);

        emit Bought(_tokenId, newOwner, price);
        emit Sold(_tokenId, oldOwner, price);

        uint256 fee = calculateFee(price);
        oldOwner.transfer(price.sub(fee));

        if (excess > 0) {
            newOwner.transfer(excess);
        }
    }

    function withdrawAll() public onlyOwner {
        owner.transfer(address(this).balance);
    }

    function withdrawAmount(uint256 _amount) public onlyOwner {
        owner.transfer(_amount);
    }

    function listedTokensAsBytes(uint256 _from, uint256 _to) public constant returns (bytes) {
        require(_from >= 0);
        require(_to >= _from);
        require(_to < listedTokens.length);
      
        // Size of bytes
        uint256 size = 32 * (_to - _from + 1);
        uint256 counter = 0;
        bytes memory b = new bytes(size);
        for (uint256 x = _from; x < _to + 1; x++) {
            uint256 elem = listedTokens[x];
            for (uint y = 0; y < 32; y++) {
                b[counter] = byte(uint8(elem / (2 ** (8 * (31 - y)))));
                counter++;
            }
        }
        return b;
    }

    function isContract(address _addr) internal view returns (bool) {
        uint size;
        assembly { size := extcodesize(_addr) }
        return size > 0;
    }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"withdrawAmount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"},{"name":"_price","type":"uint256"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"}],"name":"reclaimToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"approvedFor","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"tokensOf","outputs":[{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_from","type":"uint256"},{"name":"_to","type":"uint256"}],"name":"listedTokensAsBytes","outputs":[{"name":"","type":"bytes"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdrawAll","outputs":[],"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":"_price","type":"uint256"}],"name":"calculateFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_price","type":"uint256"}],"name":"calculatePrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"takeOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"priceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"buy","outputs":[],"payable":true,"stateMutability":"payable","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":"_tokenId","type":"uint256"},{"indexed":true,"name":"_owner","type":"address"},{"indexed":false,"name":"_price","type":"uint256"}],"name":"Bought","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_tokenId","type":"uint256"},{"indexed":true,"name":"_owner","type":"address"},{"indexed":false,"name":"_price","type":"uint256"}],"name":"Sold","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_approved","type":"address"},{"indexed":false,"name":"_tokenId","type":"uint256"}],"name":"Approval","type":"event"}]

60606040526060604051908101604090815266b1a2bc2ec5000082526706f05b59d3b200006020830152674563918244f400009082015262000046906008906003620000e0565b506080604051908101604090815260068252600560208301526004908201819052600360608301526200007c91600c916200012f565b506080604051908101604090815260c882526096602083015260829082015260786060820152620000b29060109060046200012f565b503415620000bf57600080fd5b60058054600160a060020a03191633600160a060020a031617905562000185565b82600481019282156200011d579160200282015b828111156200011d578251829067ffffffffffffffff16905591602001919060010190620000f4565b506200012b92915062000165565b5090565b82600481019282156200011d579160200282015b828111156200011d578251829060ff1690559160200191906001019062000143565b6200018291905b808211156200012b57600081556001016200016c565b90565b61124e80620001956000396000f3006060604052600436106100ed5763ffffffff60e060020a6000350416630562b9f781146100f2578063095ea7b31461010a578063156e29f61461012c57806317ffc3201461015157806318160ddd146101705780632a6dd48f146101955780635a3f2672146101c75780635c3dcfde146102395780636352211e146102c957806370a08231146102df578063853828b6146102fe5780638da5cb5b1461031157806399a5d74714610324578063a9059cbb1461033a578063ae1042651461035c578063b2e6ceeb14610372578063b9186d7d14610388578063d96a094a1461039e578063f2fde38b146103a9575b600080fd5b34156100fd57600080fd5b6101086004356103c8565b005b341561011557600080fd5b610108600160a060020a0360043516602435610419565b341561013757600080fd5b610108600160a060020a036004351660243560443561050b565b341561015c57600080fd5b610108600160a060020a0360043516610586565b341561017b57600080fd5b61018361062f565b60405190815260200160405180910390f35b34156101a057600080fd5b6101ab600435610636565b604051600160a060020a03909116815260200160405180910390f35b34156101d257600080fd5b6101e6600160a060020a0360043516610654565b60405160208082528190810183818151815260200191508051906020019060200280838360005b8381101561022557808201518382015260200161020d565b505050509050019250505060405180910390f35b341561024457600080fd5b6102526004356024356106d7565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561028e578082015183820152602001610276565b50505050905090810190601f1680156102bb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156102d457600080fd5b6101ab600435610817565b34156102ea57600080fd5b610183600160a060020a0360043516610841565b341561030957600080fd5b61010861085c565b341561031c57600080fd5b6101ab6108b2565b341561032f57600080fd5b6101836004356108c1565b341561034557600080fd5b610108600160a060020a0360043516602435610944565b341561036757600080fd5b61018360043561097b565b341561037d57600080fd5b6101086004356109f4565b341561039357600080fd5b610183600435610a1c565b610108600435610a2e565b34156103b457600080fd5b610108600160a060020a0360043516610c2e565b60055433600160a060020a039081169116146103e357600080fd5b600554600160a060020a031681156108fc0282604051600060405180830381858888f19350505050151561041657600080fd5b50565b60008133600160a060020a031661042f82610817565b600160a060020a03161461044257600080fd5b61044b83610817565b9150600160a060020a03848116908316141561046657600080fd5b61046f83610636565b600160a060020a031615158061048d5750600160a060020a03841615155b156105055760008381526002602052604090819020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0387811691821790925591908416907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259086905190815260200160405180910390a35b50505050565b60055433600160a060020a0390811691161461052657600080fd5b30600160a060020a031683600160a060020a03161415151561054757600080fd5b6105518383610cc9565b600680546001810161056383826111ce565b506000918252602080832091909101849055928152600790925260409091205550565b60055460009033600160a060020a039081169116146105a457600080fd5b81600160a060020a03166370a082313060405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156105f257600080fd5b5af115156105ff57600080fd5b505050604051805160055490925061062b9150600160a060020a0384811691168363ffffffff610d2b16565b5050565b6000545b90565b600081815260026020526040902054600160a060020a03165b919050565b61065c6111f2565b6003600083600160a060020a0316600160a060020a031681526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156106cb57602002820191906000526020600020905b8154815260200190600101908083116106b7575b50505050509050919050565b6106df6111f2565b6000806106ea6111f2565b60008080808910156106fb57600080fd5b8888101561070857600080fd5b600654881061071657600080fd5b888803600101602002955060009450856040518059106107335750595b818152601f19601f8301168101602001604052905093508892505b8760010183101561080a57600680548490811061076757fe5b6000918252602082200154925090505b60208110156107ff5780601f0360080260020a8281151561079457fe5b047f0100000000000000000000000000000000000000000000000000000000000000028486815181106107c357fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060019485019401610777565b60019092019161074e565b5091979650505050505050565b600081815260016020526040812054600160a060020a031680151561083b57600080fd5b92915050565b600160a060020a031660009081526003602052604090205490565b60055433600160a060020a0390811691161461087757600080fd5b600554600160a060020a039081169030163180156108fc0290604051600060405180830381858888f1935050505015156108b057600080fd5b565b600554600160a060020a031681565b6008546000908210156108fd576108f660646108ea600c60005b0154859063ffffffff610d9e16565b9063ffffffff610dd416565b905061064f565b600954821015610918576108f660646108ea600c60016108db565b600a54821015610933576108f660646108ea600c60026108db565b6108f660646108ea600c60036108db565b8033600160a060020a031661095882610817565b600160a060020a03161461096b57600080fd5b610976338484610deb565b505050565b60085460009082101561099e57600c546108f6906064036108ea601060006108db565b6009548210156109be57600d546108f6906064036108ea601060016108db565b600a548210156109de57600e546108f6906064036108ea601060026108db565b600f546108f6906064036108ea601060036108db565b6109fe3382610eb1565b1515610a0957600080fd5b610416610a1582610817565b3383610deb565b60009081526007602052604090205490565b600080600080600080610a4087610a1c565b11610a4a57600080fd5b6000610a5587610817565b600160a060020a03161415610a6957600080fd5b610a7286610a1c565b341015610a7e57600080fd5b33600160a060020a0316610a9187610817565b600160a060020a03161415610aa557600080fd5b610aae33610ed7565b15610ab857600080fd5b33600160a060020a03161515610acd57600080fd5b610ad686610817565b9450339350610ae486610a1c565b9250610af6348463ffffffff610edf16565b9150610b03858588610deb565b610b0c8361097b565b600760008881526020019081526020016000208190555083600160a060020a0316867fd2728f908c7e0feb83c6278798370fcb86b62f236c9dbf1a3f541096c21590408560405190815260200160405180910390a384600160a060020a0316867f66f5cd880edf48cdde6c966e5da0784fcc4c5e85572b8b3b62c4357798d447d78560405190815260200160405180910390a3610ba8836108c1565b9050600160a060020a0385166108fc610bc7858463ffffffff610edf16565b9081150290604051600060405180830381858888f193505050501515610bec57600080fd5b6000821115610c2657600160a060020a03841682156108fc0283604051600060405180830381858888f193505050501515610c2657600080fd5b505050505050565b60055433600160a060020a03908116911614610c4957600080fd5b600160a060020a0381161515610c5e57600080fd5b600554600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36005805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600160a060020a0382161515610cde57600080fd5b610ce88282610ef1565b81600160a060020a031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405190815260200160405180910390a35050565b82600160a060020a031663a9059cbb838360405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610d7f57600080fd5b5af11515610d8c57600080fd5b50505060405180519050151561097657fe5b600080831515610db15760009150610dcd565b50828202828482811515610dc157fe5b0414610dc957fe5b8091505b5092915050565b6000808284811515610de257fe5b04949350505050565b600160a060020a0382161515610e0057600080fd5b610e0981610817565b600160a060020a0383811691161415610e2157600080fd5b82600160a060020a0316610e3482610817565b600160a060020a031614610e4757600080fd5b610e518382610fb6565b610e5b8382611048565b610e658282610ef1565b81600160a060020a031683600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405190815260200160405180910390a3505050565b600082600160a060020a0316610ec683610636565b600160a060020a0316149392505050565b6000903b1190565b600082821115610eeb57fe5b50900390565b600081815260016020526040812054600160a060020a031615610f1357600080fd5b6000828152600160205260409020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038516179055610f5083610841565b600160a060020a038416600090815260036020526040902080549192509060018101610f7c83826111ce565b506000918252602080832091909101849055838252600490526040812082905554610fae90600163ffffffff6111bf16565b600055505050565b81600160a060020a0316610fc982610817565b600160a060020a031614610fdc57600080fd5b600081815260026020526040808220805473ffffffffffffffffffffffffffffffffffffffff19169055600160a060020a038416907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259084905190815260200160405180910390a35050565b600080600084600160a060020a031661106085610817565b600160a060020a03161461107357600080fd5b600084815260046020526040902054925061109e600161109287610841565b9063ffffffff610edf16565b600160a060020a0386166000908152600360205260409020805491935090839081106110c657fe5b6000918252602080832090910154868352600182526040808420805473ffffffffffffffffffffffffffffffffffffffff19169055600160a060020a038916845260039092529120805491925082918590811061111f57fe5b6000918252602080832090910192909255600160a060020a038716815260039091526040812080548490811061115157fe5b6000918252602080832090910192909255600160a060020a03871681526003909152604090208054906111889060001983016111ce565b506000848152600460205260408082208290558282528120849055546111b590600163ffffffff610edf16565b6000555050505050565b600082820183811015610dc957fe5b81548183558181151161097657600083815260209020610976918101908301611204565b60206040519081016040526000815290565b61063391905b8082111561121e576000815560010161120a565b50905600a165627a7a723058205c7baa01238a24688792131afbddec1bf62c8a2ff9efa016c5cc5ebf3321d4150029

Deployed Bytecode

0x6060604052600436106100ed5763ffffffff60e060020a6000350416630562b9f781146100f2578063095ea7b31461010a578063156e29f61461012c57806317ffc3201461015157806318160ddd146101705780632a6dd48f146101955780635a3f2672146101c75780635c3dcfde146102395780636352211e146102c957806370a08231146102df578063853828b6146102fe5780638da5cb5b1461031157806399a5d74714610324578063a9059cbb1461033a578063ae1042651461035c578063b2e6ceeb14610372578063b9186d7d14610388578063d96a094a1461039e578063f2fde38b146103a9575b600080fd5b34156100fd57600080fd5b6101086004356103c8565b005b341561011557600080fd5b610108600160a060020a0360043516602435610419565b341561013757600080fd5b610108600160a060020a036004351660243560443561050b565b341561015c57600080fd5b610108600160a060020a0360043516610586565b341561017b57600080fd5b61018361062f565b60405190815260200160405180910390f35b34156101a057600080fd5b6101ab600435610636565b604051600160a060020a03909116815260200160405180910390f35b34156101d257600080fd5b6101e6600160a060020a0360043516610654565b60405160208082528190810183818151815260200191508051906020019060200280838360005b8381101561022557808201518382015260200161020d565b505050509050019250505060405180910390f35b341561024457600080fd5b6102526004356024356106d7565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561028e578082015183820152602001610276565b50505050905090810190601f1680156102bb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156102d457600080fd5b6101ab600435610817565b34156102ea57600080fd5b610183600160a060020a0360043516610841565b341561030957600080fd5b61010861085c565b341561031c57600080fd5b6101ab6108b2565b341561032f57600080fd5b6101836004356108c1565b341561034557600080fd5b610108600160a060020a0360043516602435610944565b341561036757600080fd5b61018360043561097b565b341561037d57600080fd5b6101086004356109f4565b341561039357600080fd5b610183600435610a1c565b610108600435610a2e565b34156103b457600080fd5b610108600160a060020a0360043516610c2e565b60055433600160a060020a039081169116146103e357600080fd5b600554600160a060020a031681156108fc0282604051600060405180830381858888f19350505050151561041657600080fd5b50565b60008133600160a060020a031661042f82610817565b600160a060020a03161461044257600080fd5b61044b83610817565b9150600160a060020a03848116908316141561046657600080fd5b61046f83610636565b600160a060020a031615158061048d5750600160a060020a03841615155b156105055760008381526002602052604090819020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0387811691821790925591908416907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259086905190815260200160405180910390a35b50505050565b60055433600160a060020a0390811691161461052657600080fd5b30600160a060020a031683600160a060020a03161415151561054757600080fd5b6105518383610cc9565b600680546001810161056383826111ce565b506000918252602080832091909101849055928152600790925260409091205550565b60055460009033600160a060020a039081169116146105a457600080fd5b81600160a060020a03166370a082313060405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156105f257600080fd5b5af115156105ff57600080fd5b505050604051805160055490925061062b9150600160a060020a0384811691168363ffffffff610d2b16565b5050565b6000545b90565b600081815260026020526040902054600160a060020a03165b919050565b61065c6111f2565b6003600083600160a060020a0316600160a060020a031681526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156106cb57602002820191906000526020600020905b8154815260200190600101908083116106b7575b50505050509050919050565b6106df6111f2565b6000806106ea6111f2565b60008080808910156106fb57600080fd5b8888101561070857600080fd5b600654881061071657600080fd5b888803600101602002955060009450856040518059106107335750595b818152601f19601f8301168101602001604052905093508892505b8760010183101561080a57600680548490811061076757fe5b6000918252602082200154925090505b60208110156107ff5780601f0360080260020a8281151561079457fe5b047f0100000000000000000000000000000000000000000000000000000000000000028486815181106107c357fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060019485019401610777565b60019092019161074e565b5091979650505050505050565b600081815260016020526040812054600160a060020a031680151561083b57600080fd5b92915050565b600160a060020a031660009081526003602052604090205490565b60055433600160a060020a0390811691161461087757600080fd5b600554600160a060020a039081169030163180156108fc0290604051600060405180830381858888f1935050505015156108b057600080fd5b565b600554600160a060020a031681565b6008546000908210156108fd576108f660646108ea600c60005b0154859063ffffffff610d9e16565b9063ffffffff610dd416565b905061064f565b600954821015610918576108f660646108ea600c60016108db565b600a54821015610933576108f660646108ea600c60026108db565b6108f660646108ea600c60036108db565b8033600160a060020a031661095882610817565b600160a060020a03161461096b57600080fd5b610976338484610deb565b505050565b60085460009082101561099e57600c546108f6906064036108ea601060006108db565b6009548210156109be57600d546108f6906064036108ea601060016108db565b600a548210156109de57600e546108f6906064036108ea601060026108db565b600f546108f6906064036108ea601060036108db565b6109fe3382610eb1565b1515610a0957600080fd5b610416610a1582610817565b3383610deb565b60009081526007602052604090205490565b600080600080600080610a4087610a1c565b11610a4a57600080fd5b6000610a5587610817565b600160a060020a03161415610a6957600080fd5b610a7286610a1c565b341015610a7e57600080fd5b33600160a060020a0316610a9187610817565b600160a060020a03161415610aa557600080fd5b610aae33610ed7565b15610ab857600080fd5b33600160a060020a03161515610acd57600080fd5b610ad686610817565b9450339350610ae486610a1c565b9250610af6348463ffffffff610edf16565b9150610b03858588610deb565b610b0c8361097b565b600760008881526020019081526020016000208190555083600160a060020a0316867fd2728f908c7e0feb83c6278798370fcb86b62f236c9dbf1a3f541096c21590408560405190815260200160405180910390a384600160a060020a0316867f66f5cd880edf48cdde6c966e5da0784fcc4c5e85572b8b3b62c4357798d447d78560405190815260200160405180910390a3610ba8836108c1565b9050600160a060020a0385166108fc610bc7858463ffffffff610edf16565b9081150290604051600060405180830381858888f193505050501515610bec57600080fd5b6000821115610c2657600160a060020a03841682156108fc0283604051600060405180830381858888f193505050501515610c2657600080fd5b505050505050565b60055433600160a060020a03908116911614610c4957600080fd5b600160a060020a0381161515610c5e57600080fd5b600554600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36005805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600160a060020a0382161515610cde57600080fd5b610ce88282610ef1565b81600160a060020a031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405190815260200160405180910390a35050565b82600160a060020a031663a9059cbb838360405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610d7f57600080fd5b5af11515610d8c57600080fd5b50505060405180519050151561097657fe5b600080831515610db15760009150610dcd565b50828202828482811515610dc157fe5b0414610dc957fe5b8091505b5092915050565b6000808284811515610de257fe5b04949350505050565b600160a060020a0382161515610e0057600080fd5b610e0981610817565b600160a060020a0383811691161415610e2157600080fd5b82600160a060020a0316610e3482610817565b600160a060020a031614610e4757600080fd5b610e518382610fb6565b610e5b8382611048565b610e658282610ef1565b81600160a060020a031683600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405190815260200160405180910390a3505050565b600082600160a060020a0316610ec683610636565b600160a060020a0316149392505050565b6000903b1190565b600082821115610eeb57fe5b50900390565b600081815260016020526040812054600160a060020a031615610f1357600080fd5b6000828152600160205260409020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038516179055610f5083610841565b600160a060020a038416600090815260036020526040902080549192509060018101610f7c83826111ce565b506000918252602080832091909101849055838252600490526040812082905554610fae90600163ffffffff6111bf16565b600055505050565b81600160a060020a0316610fc982610817565b600160a060020a031614610fdc57600080fd5b600081815260026020526040808220805473ffffffffffffffffffffffffffffffffffffffff19169055600160a060020a038416907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259084905190815260200160405180910390a35050565b600080600084600160a060020a031661106085610817565b600160a060020a03161461107357600080fd5b600084815260046020526040902054925061109e600161109287610841565b9063ffffffff610edf16565b600160a060020a0386166000908152600360205260409020805491935090839081106110c657fe5b6000918252602080832090910154868352600182526040808420805473ffffffffffffffffffffffffffffffffffffffff19169055600160a060020a038916845260039092529120805491925082918590811061111f57fe5b6000918252602080832090910192909255600160a060020a038716815260039091526040812080548490811061115157fe5b6000918252602080832090910192909255600160a060020a03871681526003909152604090208054906111889060001983016111ce565b506000848152600460205260408082208290558282528120849055546111b590600163ffffffff610edf16565b6000555050505050565b600082820183811015610dc957fe5b81548183558181151161097657600083815260209020610976918101908301611204565b60206040519081016040526000815290565b61063391905b8082111561121e576000815560010161120a565b50905600a165627a7a723058205c7baa01238a24688792131afbddec1bf62c8a2ff9efa016c5cc5ebf3321d4150029

Swarm Source

bzzr://5c7baa01238a24688792131afbddec1bf62c8a2ff9efa016c5cc5ebf3321d415
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.