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)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
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
- No Contract Security Audit Submitted- Submit Audit Here
[{"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"}]
Contract Creation Code
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.