ETH Price: $3,212.73 (-3.28%)

EterArt (WAW)
 

Overview

TokenID

1422582129051313656027858718484492443648...

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 0 Decimals)

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

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

Contract Source Code Verified (Exact Match)

Contract Name:
EterArt

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

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

// File: contracts/ERC721.sol

// eterart-contract
// contracts/ERC721.sol


pragma solidity ^0.4.24;


/**
 * @title ERC-721 contract interface.
 */
contract ERC721 {
    // ERC20 compatible functions.
    function name() public constant returns (string);
    function symbol() public constant returns (string);
    function totalSupply() public constant returns (uint256);
    function balanceOf(address _owner) public constant returns (uint);
    // Functions that define ownership.
    function ownerOf(uint256 _tokenId) public constant returns (address);
    function approve(address _to, uint256 _tokenId) public;
    function takeOwnership(uint256 _tokenId) public;
    function transfer(address _to, uint256 _tokenId) public;
    function tokenOfOwnerByIndex(address _owner, uint256 _index) public constant returns (uint);
    // Token metadata.
    function tokenMetadata(uint256 _tokenId) public constant returns (string);
    // Events.
    event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId);
    event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId);
}

// File: contracts/EterArt.sol

// eterart-contract
// contracts/EterArt.sol


pragma solidity ^0.4.24;


/**
 * @title EterArt contract.
 */
contract EterArt is ERC721 {

    // Art structure for tokens ownership registry.
    struct Art {
        uint256 price;
        address owner;
        address newOwner;
    }

    struct Token {
        uint256[] items;
        mapping(uint256 => uint) lookup;
    }

    // Mapping from token ID to owner.
    mapping (address => Token) internal ownedTokens;

    // All minted tokens number (ERC-20 compatibility).
    uint256 public totalTokenSupply;

    // Token issuer address
    address public _issuer;

    // Tokens ownership registry.
    mapping (uint => Art) public registry;

    // Token metadata base URL.
    string public baseInfoUrl = "https://www.eterart.com/art/";

    // Fee in percents
    uint public feePercent = 5;

    // Change price event
    event ChangePrice(uint indexed token, uint indexed price);

    /**
    * @dev Constructor sets the `issuer` of the contract to the sender
    * account.
    */
    constructor() public {
        _issuer = msg.sender;
    }

    /**
   * @return the address of the issuer.
   */
    function issuer() public view returns(address) {
        return _issuer;
    }

    /**
    * @dev Reject all Ether from being sent here. (Hopefully, we can prevent user accidents.)
    */
    function() external payable {
        require(msg.sender == address(this));
    }

    /**
     * @dev Gets token name (ERC-20 compatibility).
     * @return string token name.
     */
    function name() public constant returns (string) {
        return "EterArt";
    }

    /**
     * @dev Gets token symbol (ERC-20 compatibility).
     * @return string token symbol.
     */
    function symbol() public constant returns (string) {
        return "WAW";
    }

    /**
     * @dev Gets token URL.
     * @param _tokenId uint256 ID of the token to get URL of.
     * @return string token URL.
     */
    function tokenMetadata(uint256 _tokenId) public constant returns (string) {
        return strConcat(baseInfoUrl, strConcat("0x", uint2hexstr(_tokenId)));
    }

    /**
     * @dev Gets contract all minted tokens number.
     * @return uint256 contract all minted tokens number.
     */
    function totalSupply() public constant returns (uint256) {
        return totalTokenSupply;
    }

    /**
     * @dev Gets tokens number of specified address.
     * @param _owner address to query tokens number of.
     * @return uint256 number of tokens owned by the specified address.
     */
    function balanceOf(address _owner) public constant returns (uint balance) {
        balance = ownedTokens[_owner].items.length;
    }

    /**
     * @dev Gets token by index of specified address.
     * @param _owner address to query tokens number of.
     * @param _index uint256 index of the token to get.
     * @return uint256 token ID from specified address tokens list by specified index.
     */
    function tokenOfOwnerByIndex(address _owner, uint256 _index) public constant returns (uint tokenId) {
        tokenId = ownedTokens[_owner].items[_index];
    }

    /**
     * @dev Approve token ownership transfer to another address.
     * @param _to address to change token ownership to.
     * @param _tokenId uint256 token ID to change ownership of.
     */
    function approve(address _to, uint256 _tokenId) public {
        require(_to != msg.sender);
        require(registry[_tokenId].owner == msg.sender);
        registry[_tokenId].newOwner = _to;
        emit Approval(registry[_tokenId].owner, _to, _tokenId);
    }

    /**
     * @dev Internal method that transfer token to another address.
     * Run some checks and internal contract data manipulations.
     * @param _to address new token owner address.
     * @param _tokenId uint256 token ID to transfer to specified address.
     */
    function _transfer(address _to, uint256 _tokenId) internal {
        if (registry[_tokenId].owner != address(0)) {
            require(registry[_tokenId].owner != _to);
            removeByValue(registry[_tokenId].owner, _tokenId);
        }
        else {
            totalTokenSupply = totalTokenSupply + 1;
        }

        require(_to != address(0));

        push(_to, _tokenId);
        emit Transfer(registry[_tokenId].owner, _to, _tokenId);
        registry[_tokenId].owner = _to;
        registry[_tokenId].newOwner = address(0);
        registry[_tokenId].price = 0;
    }

    /**
     * @dev Take ownership of specified token.
     * Only if current token owner approve that.
     * @param _tokenId uint256 token ID to take ownership of.
     */
    function takeOwnership(uint256 _tokenId) public {
        require(registry[_tokenId].newOwner == msg.sender);
        _transfer(msg.sender, _tokenId);
    }

    /**
     * @dev Change baseInfoUrl contract property value.
     * @param url string new baseInfoUrl value.
     */
    function changeBaseInfoUrl(string url) public {
        require(msg.sender == _issuer);
        baseInfoUrl = url;
    }

    /**
     * @dev Change issuer contract address.
     * @param _to address of new contract issuer.
     */
    function changeIssuer(address _to) public {
        require(msg.sender == _issuer);
        _issuer = _to;
    }

    /**
     * @dev Withdraw all contract balance value to contract issuer.
     */
    function withdraw() public {
        require(msg.sender == _issuer);
        withdraw(_issuer, address(this).balance);
    }

    /**
     * @dev Withdraw all contract balance value to specified address.
     * @param _to address to transfer value.
     */
    function withdraw(address _to) public {
        require(msg.sender == _issuer);
        withdraw(_to, address(this).balance);
    }

    /**
     * @dev Withdraw specified wei number to address.
     * @param _to address to transfer value.
     * @param _value uint wei amount value.
     */
    function withdraw(address _to, uint _value) public {
        require(msg.sender == _issuer);
        require(_value <= address(this).balance);
        _to.transfer(address(this).balance);
    }

    /**
     * @dev Gets specified token owner address.
     * @param token uint256 token ID.
     * @return address specified token owner address.
     */
    function ownerOf(uint256 token) public constant returns (address owner) {
        owner = registry[token].owner;
    }

    /**
     * @dev Gets specified token price.
     * @param token uint256 token ID.
     * @return uint specified token price.
     */
    function getPrice(uint token) public view returns (uint) {
        return registry[token].price;
    }

    /**
     * @dev Direct transfer specified token to another address.
     * @param _to address new token owner address.
     * @param _tokenId uint256 token ID to transfer to specified address.
     */
    function transfer(address _to, uint256 _tokenId) public {
        require(registry[_tokenId].owner == msg.sender);
        _transfer(_to, _tokenId);
    }

    /**
     * @dev Change specified token price.
     * Used for: change token price,
     * withdraw token from sale (set token price to 0 (zero))
     * and for put up token for sale (set token price > 0)
     * @param token uint token ID to change price of.
     * @param price uint new token price.
     */
    function changePrice(uint token, uint price) public {
        require(registry[token].owner == msg.sender);
        registry[token].price = price;
        emit ChangePrice(token, price);
    }

    /**
     * @dev Buy specified token if it's marked as for sale (token price > 0).
     * Run some checks, calculate fee and transfer token to msg.sender.
     * @param _tokenId uint token ID to buy.
     */
    function buy(uint _tokenId) public payable {
        require(registry[_tokenId].price > 0);

        uint fee = ((registry[_tokenId].price / 100) * feePercent);
        uint value = msg.value - fee;

        require(registry[_tokenId].price <= value);
        registry[_tokenId].owner.transfer(value);
        _transfer(msg.sender, _tokenId);
    }

    /**
     * @dev Mint token.
     */
    function mint(uint _tokenId, address _to) public {
        require(msg.sender == _issuer);
        require(registry[_tokenId].owner == 0x0);
        _transfer(_to, _tokenId);
    }

    /**
     * @dev Mint token.
     */
    function mint(
        string length,
        uint _tokenId,
        uint price,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) public payable {

        string memory m_price = uint2hexstr(price);
        string memory m_token = uint2hexstr(_tokenId);

        require(msg.value >= price);
        require(ecrecover(keccak256("\x19Ethereum Signed Message:\n", length, m_token, m_price), v, r, s) == _issuer);
        require(registry[_tokenId].owner == 0x0);
        _transfer(msg.sender, _tokenId);
    }

    /**
     * UTILS
     */

    /**
     * @dev Add token to specified address tokens list.
     * @param owner address address of token owner to add token to.
     * @param value uint token ID to add.
     */
    function push(address owner, uint value) private {

        if (ownedTokens[owner].lookup[value] > 0) {
            return;
        }
        ownedTokens[owner].lookup[value] = ownedTokens[owner].items.push(value);
    }

    /**
     * @dev Remove token by ID from specified address tokens list.
     * @param owner address address of token owner to remove token from.
     * @param value uint token ID to remove.
     */
    function removeByValue(address owner, uint value) private {
        uint index = ownedTokens[owner].lookup[value];
        if (index == 0) {
            return;
        }
        if (index < ownedTokens[owner].items.length) {
            uint256 lastItem = ownedTokens[owner].items[ownedTokens[owner].items.length - 1];
            ownedTokens[owner].items[index - 1] = lastItem;
            ownedTokens[owner].lookup[lastItem] = index;
        }
        ownedTokens[owner].items.length -= 1;
        delete ownedTokens[owner].lookup[value];
    }

    /**
     * @dev String concatenation.
     * @param _a string first string.
     * @param _b string second string.
     * @return string result of string concatenation.
     */
    function strConcat(string _a, string _b) internal pure returns (string){
        bytes memory _ba = bytes(_a);
        bytes memory _bb = bytes(_b);
        string memory abcde = new string(_ba.length + _bb.length);
        bytes memory babcde = bytes(abcde);
        uint k = 0;
        for (uint i = 0; i < _ba.length; i++) babcde[k++] = _ba[i];
        for (i = 0; i < _bb.length; i++) babcde[k++] = _bb[i];

        return string(babcde);
    }

    /**
     * @dev Convert long to hex string.
     * @param i uint value to convert.
     * @return string specified value converted to hex string.
     */
    function uint2hexstr(uint i) internal pure returns (string) {
        if (i == 0) return "0";
        uint j = i;
        uint length;
        while (j != 0) {
            length++;
            j = j >> 4;
        }
        uint mask = 15;
        bytes memory bstr = new bytes(length);
        uint k = length - 1;
        while (i != 0) {
            uint curr = (i & mask);
            bstr[k--] = curr > 9 ? byte(55 + curr) : byte(48 + curr); // 55 = 65 - 10
            i = i >> 4;
        }

        return string(bstr);
    }

}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"approve","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":"totalTokenSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"issuer","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"name":"tokenId","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_issuer","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"registry","outputs":[{"name":"price","type":"uint256"},{"name":"owner","type":"address"},{"name":"newOwner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"token","type":"uint256"}],"name":"ownerOf","outputs":[{"name":"owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"tokenMetadata","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"}],"name":"changeIssuer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"feePercent","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"_to","type":"address"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"takeOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"uint256"},{"name":"price","type":"uint256"}],"name":"changePrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"baseInfoUrl","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"length","type":"string"},{"name":"_tokenId","type":"uint256"},{"name":"price","type":"uint256"},{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"mint","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"buy","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"url","type":"string"}],"name":"changeBaseInfoUrl","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"token","type":"uint256"}],"name":"getPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"token","type":"uint256"},{"indexed":true,"name":"price","type":"uint256"}],"name":"ChangePrice","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":true,"name":"_tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_approved","type":"address"},{"indexed":true,"name":"_tokenId","type":"uint256"}],"name":"Approval","type":"event"}]

60c0604052601c60808190527f68747470733a2f2f7777772e657465726172742e636f6d2f6172742f0000000060a09081526200004091600491906200006b565b50600580553480156200005257600080fd5b5060028054600160a060020a0319163317905562000110565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000ae57805160ff1916838001178555620000de565b82800160010185558215620000de579182015b82811115620000de578251825591602001919060010190620000c1565b50620000ec929150620000f0565b5090565b6200010d91905b80821115620000ec5760008155600101620000f7565b90565b6113ed80620001206000396000f3006080604052600436106101535763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610161578063095ea7b3146101eb57806318160ddd1461020f5780631ca8b6cb146102365780631d1438481461024b5780632f745c591461027c5780633429e35c146102a05780633ccfd60b146102b557806351cff8d9146102ca5780635893253c146102eb5780636352211e1461032b5780636914db601461034357806370a082311461035b5780637e8931591461037c5780637fd6f15c1461039d57806394bf804d146103b257806395d89b41146103d6578063a9059cbb146103eb578063b2e6ceeb1461040f578063b3de019c14610427578063c22f20cc14610442578063cd26c64b14610457578063d96a094a146104bd578063dfe56acd146104c8578063e757223014610521578063f3fef3a314610539575b33301461015f57600080fd5b005b34801561016d57600080fd5b5061017661055d565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101b0578181015183820152602001610198565b50505050905090810190601f1680156101dd5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101f757600080fd5b5061015f600160a060020a0360043516602435610595565b34801561021b57600080fd5b50610224610645565b60408051918252519081900360200190f35b34801561024257600080fd5b5061022461064b565b34801561025757600080fd5b50610260610651565b60408051600160a060020a039092168252519081900360200190f35b34801561028857600080fd5b50610224600160a060020a0360043516602435610660565b3480156102ac57600080fd5b50610260610697565b3480156102c157600080fd5b5061015f6106a6565b3480156102d657600080fd5b5061015f600160a060020a03600435166106d6565b3480156102f757600080fd5b506103036004356106fb565b60408051938452600160a060020a039283166020850152911682820152519081900360600190f35b34801561033757600080fd5b50610260600435610728565b34801561034f57600080fd5b50610176600435610746565b34801561036757600080fd5b50610224600160a060020a0360043516610827565b34801561038857600080fd5b5061015f600160a060020a0360043516610842565b3480156103a957600080fd5b50610224610888565b3480156103be57600080fd5b5061015f600435600160a060020a036024351661088e565b3480156103e257600080fd5b506101766108d8565b3480156103f757600080fd5b5061015f600160a060020a036004351660243561090f565b34801561041b57600080fd5b5061015f60043561093f565b34801561043357600080fd5b5061015f60043560243561096f565b34801561044e57600080fd5b506101766109d4565b6040805160206004803580820135601f810184900484028501840190955284845261015f9436949293602493928401919081908401838280828437509497505084359550505060208301359260ff60408201351692506060810135915060800135610a62565b61015f600435610c80565b3480156104d457600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261015f943694929360249392840191908190840183828082843750949750610d209650505050505050565b34801561052d57600080fd5b50610224600435610d4a565b34801561054557600080fd5b5061015f600160a060020a0360043516602435610d5c565b60408051808201909152600781527f457465724172740000000000000000000000000000000000000000000000000060208201525b90565b600160a060020a0382163314156105ab57600080fd5b600081815260036020526040902060010154600160a060020a031633146105d157600080fd5b60008181526003602052604080822060028101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03878116918217909255600190920154925185949293909116917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a45050565b60015490565b60015481565b600254600160a060020a031690565b600160a060020a038216600090815260208190526040812080548390811061068457fe5b9060005260206000200154905092915050565b600254600160a060020a031681565b600254600160a060020a031633146106bd57600080fd5b6002546106d490600160a060020a03163031610d5c565b565b600254600160a060020a031633146106ed57600080fd5b6106f8813031610d5c565b50565b6003602052600090815260409020805460018201546002909201549091600160a060020a03908116911683565b600090815260036020526040902060010154600160a060020a031690565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815260609361082193919290918301828280156107d55780601f106107aa576101008083540402835291602001916107d5565b820191906000526020600020905b8154815290600101906020018083116107b857829003601f168201915b505050505061081c6040805190810160405280600281526020017f307800000000000000000000000000000000000000000000000000000000000081525061081c86610db7565b610ee1565b92915050565b600160a060020a031660009081526020819052604090205490565b600254600160a060020a0316331461085957600080fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60055481565b600254600160a060020a031633146108a557600080fd5b600082815260036020526040902060010154600160a060020a0316156108ca57600080fd5b6108d48183611030565b5050565b60408051808201909152600381527f5741570000000000000000000000000000000000000000000000000000000000602082015290565b600081815260036020526040902060010154600160a060020a0316331461093557600080fd5b6108d48282611030565b600081815260036020526040902060020154600160a060020a0316331461096557600080fd5b6106f83382611030565b600082815260036020526040902060010154600160a060020a0316331461099557600080fd5b60008281526003602052604080822083905551829184917f7a23754ec05fb9abcc146d222035598f3cf9aac8c35fe1c74b08f0b7717713a49190a35050565b6004805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610a5a5780601f10610a2f57610100808354040283529160200191610a5a565b820191906000526020600020905b815481529060010190602001808311610a3d57829003601f168201915b505050505081565b606080610a6e86610db7565b9150610a7987610db7565b905034861115610a8857600080fd5b6002546040517f19457468657265756d205369676e6564204d6573736167653a0a00000000000081528951600160a060020a03909216916001918b9185918791601a82019060208601908083835b60208310610af55780518252601f199092019160209182019101610ad6565b51815160209384036101000a600019018019909216911617905286519190930192860191508083835b60208310610b3d5780518252601f199092019160209182019101610b1e565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b60208310610b855780518252601f199092019160209182019101610b66565b6001836020036101000a03801982511681845116808217855250505050505090500193505050506040518091039020878787604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015610c28573d6000803e3d6000fd5b50505060206040510351600160a060020a0316141515610c4757600080fd5b600087815260036020526040902060010154600160a060020a031615610c6c57600080fd5b610c763388611030565b5050505050505050565b60008181526003602052604081205481908110610c9c57600080fd5b505060055460008281526003602052604090205460648104909102903482900390811015610cc957600080fd5b600083815260036020526040808220600101549051600160a060020a039091169183156108fc02918491818181858888f19350505050158015610d10573d6000803e3d6000fd5b50610d1b3384611030565b505050565b600254600160a060020a03163314610d3757600080fd5b80516108d4906004906020840190611309565b60009081526003602052604090205490565b600254600160a060020a03163314610d7357600080fd5b3031811115610d8157600080fd5b604051600160a060020a03831690303180156108fc02916000818181858888f19350505050158015610d1b573d6000803e3d6000fd5b606060008080838180871515610e025760408051808201909152600181527f300000000000000000000000000000000000000000000000000000000000000060208201529650610ed6565b8795505b8515610e1d57601090950494600190940193610e06565b600f9350846040519080825280601f01601f191660200182016040528015610e4f578160200160208202803883390190505b5092506001850391505b8715610ed2575086831660098111610e7a578060300160f860020a02610e85565b8060370160f860020a025b835160001984019385918110610e9757fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350601090970496610e59565b8296505b505050505050919050565b606080606080606060008088955087945084518651016040519080825280601f01601f191660200182016040528015610f24578160200160208202803883390190505b50935083925060009150600090505b8551811015610fa9578581815181101515610f4a57fe5b90602001015160f860020a900460f860020a028383806001019450815181101515610f7157fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600101610f33565b5060005b8451811015611023578481815181101515610fc457fe5b90602001015160f860020a900460f860020a028383806001019450815181101515610feb57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600101610fad565b5090979650505050505050565b600081815260036020526040902060010154600160a060020a0316156110a457600081815260036020526040902060010154600160a060020a038381169116141561107a57600080fd5b60008181526003602052604090206001015461109f90600160a060020a031682611160565b6110ad565b60018054810190555b600160a060020a03821615156110c257600080fd5b6110cc828261129b565b6000818152600360205260408082206001015490518392600160a060020a038087169316917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9190a46000908152600360205260408120600181018054600160a060020a0390941673ffffffffffffffffffffffffffffffffffffffff199485161790556002810180549093169092559055565b600160a060020a0382166000908152602081815260408083208484526001019091528120549081151561119257611295565b600160a060020a03841660009081526020819052604090205482101561124557600160a060020a0384166000908152602081905260409020805460001981019081106111da57fe5b6000918252602080832090910154600160a060020a038716835290829052604090912080549192508291600019850190811061121257fe5b6000918252602080832090910192909255600160a060020a03861681528082526040808220848352600101909252208290555b600160a060020a03841660009081526020819052604090208054600019019061126e9082611387565b50600160a060020a0384166000908152602081815260408083208684526001019091528120555b50505050565b600160a060020a03821660009081526020818152604080832084845260010190915281205411156112cb576108d4565b600160a060020a0391909116600090815260208181526040808320805460018082018084558387528587209092018790559585529401909152902055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061134a57805160ff1916838001178555611377565b82800160010185558215611377579182015b8281111561137757825182559160200191906001019061135c565b506113839291506113a7565b5090565b815481835581811115610d1b57600083815260209020610d1b9181019083015b61059291905b8082111561138357600081556001016113ad5600a165627a7a723058200e43c7ea76993b479e3f05555049d7cf0399fcc2b10d6b82576cd043797172840029

Deployed Bytecode

0x6080604052600436106101535763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610161578063095ea7b3146101eb57806318160ddd1461020f5780631ca8b6cb146102365780631d1438481461024b5780632f745c591461027c5780633429e35c146102a05780633ccfd60b146102b557806351cff8d9146102ca5780635893253c146102eb5780636352211e1461032b5780636914db601461034357806370a082311461035b5780637e8931591461037c5780637fd6f15c1461039d57806394bf804d146103b257806395d89b41146103d6578063a9059cbb146103eb578063b2e6ceeb1461040f578063b3de019c14610427578063c22f20cc14610442578063cd26c64b14610457578063d96a094a146104bd578063dfe56acd146104c8578063e757223014610521578063f3fef3a314610539575b33301461015f57600080fd5b005b34801561016d57600080fd5b5061017661055d565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101b0578181015183820152602001610198565b50505050905090810190601f1680156101dd5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101f757600080fd5b5061015f600160a060020a0360043516602435610595565b34801561021b57600080fd5b50610224610645565b60408051918252519081900360200190f35b34801561024257600080fd5b5061022461064b565b34801561025757600080fd5b50610260610651565b60408051600160a060020a039092168252519081900360200190f35b34801561028857600080fd5b50610224600160a060020a0360043516602435610660565b3480156102ac57600080fd5b50610260610697565b3480156102c157600080fd5b5061015f6106a6565b3480156102d657600080fd5b5061015f600160a060020a03600435166106d6565b3480156102f757600080fd5b506103036004356106fb565b60408051938452600160a060020a039283166020850152911682820152519081900360600190f35b34801561033757600080fd5b50610260600435610728565b34801561034f57600080fd5b50610176600435610746565b34801561036757600080fd5b50610224600160a060020a0360043516610827565b34801561038857600080fd5b5061015f600160a060020a0360043516610842565b3480156103a957600080fd5b50610224610888565b3480156103be57600080fd5b5061015f600435600160a060020a036024351661088e565b3480156103e257600080fd5b506101766108d8565b3480156103f757600080fd5b5061015f600160a060020a036004351660243561090f565b34801561041b57600080fd5b5061015f60043561093f565b34801561043357600080fd5b5061015f60043560243561096f565b34801561044e57600080fd5b506101766109d4565b6040805160206004803580820135601f810184900484028501840190955284845261015f9436949293602493928401919081908401838280828437509497505084359550505060208301359260ff60408201351692506060810135915060800135610a62565b61015f600435610c80565b3480156104d457600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261015f943694929360249392840191908190840183828082843750949750610d209650505050505050565b34801561052d57600080fd5b50610224600435610d4a565b34801561054557600080fd5b5061015f600160a060020a0360043516602435610d5c565b60408051808201909152600781527f457465724172740000000000000000000000000000000000000000000000000060208201525b90565b600160a060020a0382163314156105ab57600080fd5b600081815260036020526040902060010154600160a060020a031633146105d157600080fd5b60008181526003602052604080822060028101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03878116918217909255600190920154925185949293909116917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a45050565b60015490565b60015481565b600254600160a060020a031690565b600160a060020a038216600090815260208190526040812080548390811061068457fe5b9060005260206000200154905092915050565b600254600160a060020a031681565b600254600160a060020a031633146106bd57600080fd5b6002546106d490600160a060020a03163031610d5c565b565b600254600160a060020a031633146106ed57600080fd5b6106f8813031610d5c565b50565b6003602052600090815260409020805460018201546002909201549091600160a060020a03908116911683565b600090815260036020526040902060010154600160a060020a031690565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815260609361082193919290918301828280156107d55780601f106107aa576101008083540402835291602001916107d5565b820191906000526020600020905b8154815290600101906020018083116107b857829003601f168201915b505050505061081c6040805190810160405280600281526020017f307800000000000000000000000000000000000000000000000000000000000081525061081c86610db7565b610ee1565b92915050565b600160a060020a031660009081526020819052604090205490565b600254600160a060020a0316331461085957600080fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60055481565b600254600160a060020a031633146108a557600080fd5b600082815260036020526040902060010154600160a060020a0316156108ca57600080fd5b6108d48183611030565b5050565b60408051808201909152600381527f5741570000000000000000000000000000000000000000000000000000000000602082015290565b600081815260036020526040902060010154600160a060020a0316331461093557600080fd5b6108d48282611030565b600081815260036020526040902060020154600160a060020a0316331461096557600080fd5b6106f83382611030565b600082815260036020526040902060010154600160a060020a0316331461099557600080fd5b60008281526003602052604080822083905551829184917f7a23754ec05fb9abcc146d222035598f3cf9aac8c35fe1c74b08f0b7717713a49190a35050565b6004805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610a5a5780601f10610a2f57610100808354040283529160200191610a5a565b820191906000526020600020905b815481529060010190602001808311610a3d57829003601f168201915b505050505081565b606080610a6e86610db7565b9150610a7987610db7565b905034861115610a8857600080fd5b6002546040517f19457468657265756d205369676e6564204d6573736167653a0a00000000000081528951600160a060020a03909216916001918b9185918791601a82019060208601908083835b60208310610af55780518252601f199092019160209182019101610ad6565b51815160209384036101000a600019018019909216911617905286519190930192860191508083835b60208310610b3d5780518252601f199092019160209182019101610b1e565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b60208310610b855780518252601f199092019160209182019101610b66565b6001836020036101000a03801982511681845116808217855250505050505090500193505050506040518091039020878787604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015610c28573d6000803e3d6000fd5b50505060206040510351600160a060020a0316141515610c4757600080fd5b600087815260036020526040902060010154600160a060020a031615610c6c57600080fd5b610c763388611030565b5050505050505050565b60008181526003602052604081205481908110610c9c57600080fd5b505060055460008281526003602052604090205460648104909102903482900390811015610cc957600080fd5b600083815260036020526040808220600101549051600160a060020a039091169183156108fc02918491818181858888f19350505050158015610d10573d6000803e3d6000fd5b50610d1b3384611030565b505050565b600254600160a060020a03163314610d3757600080fd5b80516108d4906004906020840190611309565b60009081526003602052604090205490565b600254600160a060020a03163314610d7357600080fd5b3031811115610d8157600080fd5b604051600160a060020a03831690303180156108fc02916000818181858888f19350505050158015610d1b573d6000803e3d6000fd5b606060008080838180871515610e025760408051808201909152600181527f300000000000000000000000000000000000000000000000000000000000000060208201529650610ed6565b8795505b8515610e1d57601090950494600190940193610e06565b600f9350846040519080825280601f01601f191660200182016040528015610e4f578160200160208202803883390190505b5092506001850391505b8715610ed2575086831660098111610e7a578060300160f860020a02610e85565b8060370160f860020a025b835160001984019385918110610e9757fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350601090970496610e59565b8296505b505050505050919050565b606080606080606060008088955087945084518651016040519080825280601f01601f191660200182016040528015610f24578160200160208202803883390190505b50935083925060009150600090505b8551811015610fa9578581815181101515610f4a57fe5b90602001015160f860020a900460f860020a028383806001019450815181101515610f7157fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600101610f33565b5060005b8451811015611023578481815181101515610fc457fe5b90602001015160f860020a900460f860020a028383806001019450815181101515610feb57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600101610fad565b5090979650505050505050565b600081815260036020526040902060010154600160a060020a0316156110a457600081815260036020526040902060010154600160a060020a038381169116141561107a57600080fd5b60008181526003602052604090206001015461109f90600160a060020a031682611160565b6110ad565b60018054810190555b600160a060020a03821615156110c257600080fd5b6110cc828261129b565b6000818152600360205260408082206001015490518392600160a060020a038087169316917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9190a46000908152600360205260408120600181018054600160a060020a0390941673ffffffffffffffffffffffffffffffffffffffff199485161790556002810180549093169092559055565b600160a060020a0382166000908152602081815260408083208484526001019091528120549081151561119257611295565b600160a060020a03841660009081526020819052604090205482101561124557600160a060020a0384166000908152602081905260409020805460001981019081106111da57fe5b6000918252602080832090910154600160a060020a038716835290829052604090912080549192508291600019850190811061121257fe5b6000918252602080832090910192909255600160a060020a03861681528082526040808220848352600101909252208290555b600160a060020a03841660009081526020819052604090208054600019019061126e9082611387565b50600160a060020a0384166000908152602081815260408083208684526001019091528120555b50505050565b600160a060020a03821660009081526020818152604080832084845260010190915281205411156112cb576108d4565b600160a060020a0391909116600090815260208181526040808320805460018082018084558387528587209092018790559585529401909152902055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061134a57805160ff1916838001178555611377565b82800160010185558215611377579182015b8281111561137757825182559160200191906001019061135c565b506113839291506113a7565b5090565b815481835581811115610d1b57600083815260209020610d1b9181019083015b61059291905b8082111561138357600081556001016113ad5600a165627a7a723058200e43c7ea76993b479e3f05555049d7cf0399fcc2b10d6b82576cd043797172840029

Swarm Source

bzzr://0e43c7ea76993b479e3f05555049d7cf0399fcc2b10d6b82576cd04379717284
Loading...
Loading
Loading...
Loading
[ 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.