ETH Price: $3,361.30 (-1.62%)
Gas: 7 Gwei

Token

0N1 Comics (COMICS)
 

Overview

Max Total Supply

7,777 COMICS

Holders

4,333

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A

Other Info

Balance
1 COMICS
0x0De852B301aCbaE09B752b1D22b3BAfd8F851057
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:
Comics

Compiler Version
v0.8.5+commit.a4f2e591

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 2 : Comics.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8;

import "./Ownable.sol";

interface ERC721TokenReceiver {
    function onERC721Received(
        address operator,
        address from,
        uint256 tokenId,
        bytes calldata data
    ) external returns (bytes4);
}

// @author: jolan.eth
contract Comics is Ownable {
    string public symbol = "COMICS";
    string public name = "0N1 Comics";
    string public CID;

    address public NANOHUB;

    uint256 private currentId = 1;

    mapping(uint256 => uint256) private packedOwnerships;
    mapping(address => uint256) private packedAddressData;

    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);

    constructor() {}

    function setCID(string memory _CID)
    public onlyOwner {
        CID = _CID;
    }

    function setNANOHUB(address _NANOHUB)
    public onlyOwner {
        NANOHUB = _NANOHUB;
    }

    function mintComics(address to)
    public {
        require(msg.sender == NANOHUB, "error NANOHUB");
        _mint(to, 1);
    }

    function transferFrom(address from, address to, uint tokenId)
    public {
        require(msg.sender == NANOHUB, "error NANOHUB");
        _transfer(from, to, tokenId);
    }

    function exist(uint256 tokenId)
    public view returns (bool) {
        return 1 <= tokenId && tokenId < currentId && (
            packedOwnerships[tokenId] & (1 << 224) == 0
        );
    }

    function supportsInterface(bytes4 interfaceId)
    public pure returns (bool) {
        return interfaceId == 0x80ac58cd || interfaceId == 0x5b5e139f;
    }

    function totalSupply()
    public view returns (uint256) {
        unchecked {
            return currentId - 1;
        }
    }

    function balanceOf(address owner)
    public view returns (uint256) {
        if (owner == address(0)) revert BalanceQueryForZeroAddress();
        return packedAddressData[owner] & ((1 << 64) - 1);
    }

    function ownerOf(uint256 tokenId)
    public view returns (address) {
        return address(uint160(_packedOwnershipOf(tokenId)));
    }

    function tokenURI(uint256 tokenId)
    public view returns (string memory) {
        if (!exist(tokenId)) revert URIQueryForNonexistentToken();
        return string(
            abi.encodePacked("ipfs://", CID, "/", _toString(tokenId))
        );
    }

    function _mint(address to, uint256 quantity)
    internal {
        uint256 startTokenId = currentId;
        if (to == address(0)) revert MintToZeroAddress();
        if (quantity == 0) revert MintZeroQuantity();

        unchecked {
            packedAddressData[to] += quantity * ((1 << 64) | 1);
            packedOwnerships[startTokenId] = (
                _addressToUint256(to) |
                (block.timestamp << 160) |
                (_boolToUint256(quantity == 1) << 225)
            );

            uint256 updatedIndex = startTokenId;
            uint256 end = updatedIndex + quantity;

            while (updatedIndex < end)
                emit Transfer(address(0), to, updatedIndex++);

            currentId = updatedIndex;
        }
    }

    function _transfer(address from, address to, uint256 tokenId)
    private {
        uint256 prevOwnershipPacked = _packedOwnershipOf(tokenId);

        if (address(uint160(prevOwnershipPacked)) != from)
            revert TransferFromIncorrectOwner();
        if (to == address(0))
            revert TransferToZeroAddress();

        unchecked {
            --packedAddressData[from];
            ++packedAddressData[to];

            packedOwnerships[tokenId] =
                _addressToUint256(to) | (block.timestamp << 160) | (1 << 225);

            if (prevOwnershipPacked & (1 << 225) == 0) {
                uint256 nextTokenId = tokenId + 1;
                if (packedOwnerships[nextTokenId] == 0)
                    if (nextTokenId != currentId)
                        packedOwnerships[nextTokenId] = prevOwnershipPacked;
            }
        }

        emit Transfer(from, to, tokenId);

        if (to.code.length != 0)
            if (!_checkContractOnERC721Received(from, to, tokenId, ''))
                revert TransferToNonERC721ReceiverImplementer();
    }

    function _packedOwnershipOf(uint256 tokenId)
    private view returns (uint256) {
        uint256 curr = tokenId;

        unchecked {
            if (1 <= curr)
                if (curr < currentId) {
                    uint256 packed = packedOwnerships[curr];
                    if (packed & (1 << 224) == 0) {
                        while (packed == 0) {
                            packed = packedOwnerships[--curr];
                        }
                        return packed;
                    }
                }
        }
        revert OwnerQueryForNonexistentToken();
    }

    function _unpackedOwnership(uint256 packed)
    private pure returns (address, uint64, bool) {
        return (
            address(uint160(packed)),
            uint64(packed >> 160),
            packed & (1 << 224) != 0
        );
    }

    function _initializeOwnershipAt(uint256 index)
    internal {
        if (packedOwnerships[index] == 0)
            packedOwnerships[index] = _packedOwnershipOf(index);
    }

    function _ownershipOf(uint256 tokenId)
    internal view returns (address, uint64, bool) {
        return _unpackedOwnership(_packedOwnershipOf(tokenId));
    }

    function _checkContractOnERC721Received(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) private returns (bool) {
        try ERC721TokenReceiver(to).onERC721Received(
            msg.sender, from, tokenId, _data
        ) returns (bytes4 retval) {
            return retval == ERC721TokenReceiver(to).onERC721Received.selector;
        } catch (bytes memory reason) {
            if (reason.length == 0)
                revert TransferToNonERC721ReceiverImplementer();
            else assembly {
                revert(add(32, reason), mload(reason))
            }
        }
    }

    function _toString(uint256 value)
    private pure returns (string memory) {
        if (value == 0) return "0";

        uint256 digits;
        uint256 tmp = value;

        while (tmp != 0) {
            digits++;
            tmp /= 10;
        }

        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }

        return string(buffer);
    }

    function _addressToUint256(address value)
    private pure returns (uint256 result) {
        assembly {
            result := value
        }
    }

    function _boolToUint256(bool value)
    private pure returns (uint256 result) {
        assembly {
            result := value
        }
    }

    error TransferToNonERC721ReceiverImplementer();
    error OwnerQueryForNonexistentToken();
    error URIQueryForNonexistentToken();
    error BalanceQueryForZeroAddress();
    error TransferFromIncorrectOwner();
    error TransferToZeroAddress();
    error MintToZeroAddress();
    error MintZeroQuantity();
}

File 2 of 2 : Ownable.sol
//SPDX-License-Identifier: MIT
pragma solidity ^0.8;

abstract contract Ownable {
    address private _owner;
    
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    
    modifier onlyOwner() {
        require(owner() == msg.sender, "error owner()");
        _;
    }

    constructor() { _transferOwnership(msg.sender); }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "error newOwner");
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"CID","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NANOHUB","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"exist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"mintComics","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_CID","type":"string"}],"name":"setCID","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_NANOHUB","type":"address"}],"name":"setNANOHUB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60c06040526006608081905265434f4d49435360d01b60a0908152620000299160019190620000d2565b5060408051808201909152600a80825269304e3120436f6d69637360b01b60209092019182526200005d91600291620000d2565b5060016005553480156200007057600080fd5b506200007c3362000082565b620001b5565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054620000e09062000178565b90600052602060002090601f0160209004810192826200010457600085556200014f565b82601f106200011f57805160ff19168380011785556200014f565b828001600101855582156200014f579182015b828111156200014f57825182559160200191906001019062000132565b506200015d92915062000161565b5090565b5b808211156200015d576000815560010162000162565b600181811c908216806200018d57607f821691505b60208210811415620001af57634e487b7160e01b600052602260045260246000fd5b50919050565b61108c80620001c56000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806370a08231116100a2578063b461802211610071578063b461802214610210578063c098004c14610223578063c3d6ee7f1461022b578063c87b56dd1461023e578063f2fde38b1461025157600080fd5b806370a08231146101dc578063715018a6146101ef5780638da5cb5b146101f757806395d89b411461020857600080fd5b806323b872dd116100de57806323b872dd146101785780634add9fb51461018b5780634ebbc92a146101b65780636352211e146101c957600080fd5b806301ffc9a71461011057806306fdde031461013857806318160ddd1461014d5780631ebe8c5814610163575b600080fd5b61012361011e366004610c86565b610264565b60405190151581526020015b60405180910390f35b61014061029b565b60405161012f9190610ed5565b600554600019015b60405190815260200161012f565b610176610171366004610c2f565b610329565b005b610176610186366004610c4a565b610386565b60045461019e906001600160a01b031681565b6040516001600160a01b03909116815260200161012f565b6101236101c4366004610d71565b6103e0565b61019e6101d7366004610d71565b610415565b6101556101ea366004610c2f565b610420565b61017661046f565b6000546001600160a01b031661019e565b6101406104b4565b61017661021e366004610c2f565b6104c1565b61014061051c565b610176610239366004610cc0565b610529565b61014061024c366004610d71565b610579565b61017661025f366004610c2f565b6105d3565b60006380ac58cd60e01b6001600160e01b0319831614806102955750635b5e139f60e01b6001600160e01b03198316145b92915050565b600280546102a890610f7e565b80601f01602080910402602001604051908101604052809291908181526020018280546102d490610f7e565b80156103215780601f106102f657610100808354040283529160200191610321565b820191906000526020600020905b81548152906001019060200180831161030457829003601f168201915b505050505081565b6004546001600160a01b031633146103785760405162461bcd60e51b815260206004820152600d60248201526c32b93937b9102720a727a42aa160991b60448201526064015b60405180910390fd5b61038381600161065c565b50565b6004546001600160a01b031633146103d05760405162461bcd60e51b815260206004820152600d60248201526c32b93937b9102720a727a42aa160991b604482015260640161036f565b6103db838383610740565b505050565b6000816001111580156103f4575060055482105b8015610295575050600090815260066020526040902054600160e01b161590565b6000610295826108bd565b60006001600160a01b038216610449576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b031660009081526007602052604090205467ffffffffffffffff1690565b336104826000546001600160a01b031690565b6001600160a01b0316146104a85760405162461bcd60e51b815260040161036f90610ee8565b6104b2600061092d565b565b600180546102a890610f7e565b336104d46000546001600160a01b031690565b6001600160a01b0316146104fa5760405162461bcd60e51b815260040161036f90610ee8565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600380546102a890610f7e565b3361053c6000546001600160a01b031690565b6001600160a01b0316146105625760405162461bcd60e51b815260040161036f90610ee8565b8051610575906003906020840190610b7a565b5050565b6060610584826103e0565b6105a157604051630a14c4b560e41b815260040160405180910390fd5b60036105ac8361097d565b6040516020016105bd929190610dd2565b6040516020818303038152906040529050919050565b336105e66000546001600160a01b031690565b6001600160a01b03161461060c5760405162461bcd60e51b815260040161036f90610ee8565b6001600160a01b0381166106535760405162461bcd60e51b815260206004820152600e60248201526d32b93937b9103732bba7bbb732b960911b604482015260640161036f565b6103838161092d565b6005546001600160a01b03831661068557604051622e076360e81b815260040160405180910390fd5b816106a35760405163b562e8dd60e01b815260040160405180910390fd5b6001600160a01b03831660009081526007602090815260408083208054680100000000000000018702019055838352600690915290204260a01b84176001841460e11b179055808083015b80821015610737576040516001830192906001600160a01b038716906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a46106ee565b50600555505050565b600061074b826108bd565b9050836001600160a01b0316816001600160a01b03161461077e5760405162a1148160e81b815260040160405180910390fd5b6001600160a01b0383166107a557604051633a954ecd60e21b815260040160405180910390fd5b6001600160a01b038481166000908152600760205260408082208054600019019055918516815220805460010190554260a01b836000848152600660205260409020600160e11b9290911782179055811661082e576001820160008181526006602052604090205461082c57600554811461082c5760008181526006602052604090208290555b505b81836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46001600160a01b0383163b156108b75761089a84848460405180602001604052806000815250610a83565b6108b7576040516368d2bf6b60e11b815260040160405180910390fd5b50505050565b600081600181106109145760055481101561091457600081815260066020526040902054600160e01b8116610912575b8061090b5750600019016000818152600660205260409020546108ed565b9392505050565b505b604051636f96cda160e11b815260040160405180910390fd5b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6060816109a15750506040805180820190915260018152600360fc1b602082015290565b6000825b80156109cb57816109b581610fb9565b92506109c49050600a82610f27565b90506109a5565b60008267ffffffffffffffff8111156109e6576109e661102a565b6040519080825280601f01601f191660200182016040528015610a10576020820181803683370190505b5090505b8415610a7b57610a25600184610f3b565b9250610a32600a86610fd4565b610a3d906030610f0f565b60f81b818481518110610a5257610a52611014565b60200101906001600160f81b031916908160001a905350610a74600a86610f27565b9450610a14565b949350505050565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a0290610ab8903390899088908890600401610ea2565b602060405180830381600087803b158015610ad257600080fd5b505af1925050508015610b02575060408051601f3d908101601f19168201909252610aff91810190610ca3565b60015b610b5d573d808015610b30576040519150601f19603f3d011682016040523d82523d6000602084013e610b35565b606091505b508051610b55576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050949350505050565b828054610b8690610f7e565b90600052602060002090601f016020900481019282610ba85760008555610bee565b82601f10610bc157805160ff1916838001178555610bee565b82800160010185558215610bee579182015b82811115610bee578251825591602001919060010190610bd3565b50610bfa929150610bfe565b5090565b5b80821115610bfa5760008155600101610bff565b80356001600160a01b0381168114610c2a57600080fd5b919050565b600060208284031215610c4157600080fd5b61090b82610c13565b600080600060608486031215610c5f57600080fd5b610c6884610c13565b9250610c7660208501610c13565b9150604084013590509250925092565b600060208284031215610c9857600080fd5b813561090b81611040565b600060208284031215610cb557600080fd5b815161090b81611040565b600060208284031215610cd257600080fd5b813567ffffffffffffffff80821115610cea57600080fd5b818401915084601f830112610cfe57600080fd5b813581811115610d1057610d1061102a565b604051601f8201601f19908116603f01168101908382118183101715610d3857610d3861102a565b81604052828152876020848701011115610d5157600080fd5b826020860160208301376000928101602001929092525095945050505050565b600060208284031215610d8357600080fd5b5035919050565b60008151808452610da2816020860160208601610f52565b601f01601f19169290920160200192915050565b60008151610dc8818560208601610f52565b9290920192915050565b66697066733a2f2f60c81b8152600060076000855481600182811c915080831680610dfe57607f831692505b6020808410821415610e1e57634e487b7160e01b86526022600452602486fd5b818015610e325760018114610e4757610e78565b60ff1986168a890152848a0188019650610e78565b60008c81526020902060005b86811015610e6e5781548c82018b0152908501908301610e53565b505087858b010196505b505050505050610e98610e9282602f60f81b815260010190565b86610db6565b9695505050505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090610e9890830184610d8a565b60208152600061090b6020830184610d8a565b6020808252600d908201526c6572726f72206f776e6572282960981b604082015260600190565b60008219821115610f2257610f22610fe8565b500190565b600082610f3657610f36610ffe565b500490565b600082821015610f4d57610f4d610fe8565b500390565b60005b83811015610f6d578181015183820152602001610f55565b838111156108b75750506000910152565b600181811c90821680610f9257607f821691505b60208210811415610fb357634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415610fcd57610fcd610fe8565b5060010190565b600082610fe357610fe3610ffe565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b03198116811461038357600080fdfea264697066735822122025c9929f39a824604955499baaf00bac7ba36abcaad7aa84784cd9cd9ebb532364736f6c63430008050033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061010b5760003560e01c806370a08231116100a2578063b461802211610071578063b461802214610210578063c098004c14610223578063c3d6ee7f1461022b578063c87b56dd1461023e578063f2fde38b1461025157600080fd5b806370a08231146101dc578063715018a6146101ef5780638da5cb5b146101f757806395d89b411461020857600080fd5b806323b872dd116100de57806323b872dd146101785780634add9fb51461018b5780634ebbc92a146101b65780636352211e146101c957600080fd5b806301ffc9a71461011057806306fdde031461013857806318160ddd1461014d5780631ebe8c5814610163575b600080fd5b61012361011e366004610c86565b610264565b60405190151581526020015b60405180910390f35b61014061029b565b60405161012f9190610ed5565b600554600019015b60405190815260200161012f565b610176610171366004610c2f565b610329565b005b610176610186366004610c4a565b610386565b60045461019e906001600160a01b031681565b6040516001600160a01b03909116815260200161012f565b6101236101c4366004610d71565b6103e0565b61019e6101d7366004610d71565b610415565b6101556101ea366004610c2f565b610420565b61017661046f565b6000546001600160a01b031661019e565b6101406104b4565b61017661021e366004610c2f565b6104c1565b61014061051c565b610176610239366004610cc0565b610529565b61014061024c366004610d71565b610579565b61017661025f366004610c2f565b6105d3565b60006380ac58cd60e01b6001600160e01b0319831614806102955750635b5e139f60e01b6001600160e01b03198316145b92915050565b600280546102a890610f7e565b80601f01602080910402602001604051908101604052809291908181526020018280546102d490610f7e565b80156103215780601f106102f657610100808354040283529160200191610321565b820191906000526020600020905b81548152906001019060200180831161030457829003601f168201915b505050505081565b6004546001600160a01b031633146103785760405162461bcd60e51b815260206004820152600d60248201526c32b93937b9102720a727a42aa160991b60448201526064015b60405180910390fd5b61038381600161065c565b50565b6004546001600160a01b031633146103d05760405162461bcd60e51b815260206004820152600d60248201526c32b93937b9102720a727a42aa160991b604482015260640161036f565b6103db838383610740565b505050565b6000816001111580156103f4575060055482105b8015610295575050600090815260066020526040902054600160e01b161590565b6000610295826108bd565b60006001600160a01b038216610449576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b031660009081526007602052604090205467ffffffffffffffff1690565b336104826000546001600160a01b031690565b6001600160a01b0316146104a85760405162461bcd60e51b815260040161036f90610ee8565b6104b2600061092d565b565b600180546102a890610f7e565b336104d46000546001600160a01b031690565b6001600160a01b0316146104fa5760405162461bcd60e51b815260040161036f90610ee8565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600380546102a890610f7e565b3361053c6000546001600160a01b031690565b6001600160a01b0316146105625760405162461bcd60e51b815260040161036f90610ee8565b8051610575906003906020840190610b7a565b5050565b6060610584826103e0565b6105a157604051630a14c4b560e41b815260040160405180910390fd5b60036105ac8361097d565b6040516020016105bd929190610dd2565b6040516020818303038152906040529050919050565b336105e66000546001600160a01b031690565b6001600160a01b03161461060c5760405162461bcd60e51b815260040161036f90610ee8565b6001600160a01b0381166106535760405162461bcd60e51b815260206004820152600e60248201526d32b93937b9103732bba7bbb732b960911b604482015260640161036f565b6103838161092d565b6005546001600160a01b03831661068557604051622e076360e81b815260040160405180910390fd5b816106a35760405163b562e8dd60e01b815260040160405180910390fd5b6001600160a01b03831660009081526007602090815260408083208054680100000000000000018702019055838352600690915290204260a01b84176001841460e11b179055808083015b80821015610737576040516001830192906001600160a01b038716906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a46106ee565b50600555505050565b600061074b826108bd565b9050836001600160a01b0316816001600160a01b03161461077e5760405162a1148160e81b815260040160405180910390fd5b6001600160a01b0383166107a557604051633a954ecd60e21b815260040160405180910390fd5b6001600160a01b038481166000908152600760205260408082208054600019019055918516815220805460010190554260a01b836000848152600660205260409020600160e11b9290911782179055811661082e576001820160008181526006602052604090205461082c57600554811461082c5760008181526006602052604090208290555b505b81836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46001600160a01b0383163b156108b75761089a84848460405180602001604052806000815250610a83565b6108b7576040516368d2bf6b60e11b815260040160405180910390fd5b50505050565b600081600181106109145760055481101561091457600081815260066020526040902054600160e01b8116610912575b8061090b5750600019016000818152600660205260409020546108ed565b9392505050565b505b604051636f96cda160e11b815260040160405180910390fd5b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6060816109a15750506040805180820190915260018152600360fc1b602082015290565b6000825b80156109cb57816109b581610fb9565b92506109c49050600a82610f27565b90506109a5565b60008267ffffffffffffffff8111156109e6576109e661102a565b6040519080825280601f01601f191660200182016040528015610a10576020820181803683370190505b5090505b8415610a7b57610a25600184610f3b565b9250610a32600a86610fd4565b610a3d906030610f0f565b60f81b818481518110610a5257610a52611014565b60200101906001600160f81b031916908160001a905350610a74600a86610f27565b9450610a14565b949350505050565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a0290610ab8903390899088908890600401610ea2565b602060405180830381600087803b158015610ad257600080fd5b505af1925050508015610b02575060408051601f3d908101601f19168201909252610aff91810190610ca3565b60015b610b5d573d808015610b30576040519150601f19603f3d011682016040523d82523d6000602084013e610b35565b606091505b508051610b55576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050949350505050565b828054610b8690610f7e565b90600052602060002090601f016020900481019282610ba85760008555610bee565b82601f10610bc157805160ff1916838001178555610bee565b82800160010185558215610bee579182015b82811115610bee578251825591602001919060010190610bd3565b50610bfa929150610bfe565b5090565b5b80821115610bfa5760008155600101610bff565b80356001600160a01b0381168114610c2a57600080fd5b919050565b600060208284031215610c4157600080fd5b61090b82610c13565b600080600060608486031215610c5f57600080fd5b610c6884610c13565b9250610c7660208501610c13565b9150604084013590509250925092565b600060208284031215610c9857600080fd5b813561090b81611040565b600060208284031215610cb557600080fd5b815161090b81611040565b600060208284031215610cd257600080fd5b813567ffffffffffffffff80821115610cea57600080fd5b818401915084601f830112610cfe57600080fd5b813581811115610d1057610d1061102a565b604051601f8201601f19908116603f01168101908382118183101715610d3857610d3861102a565b81604052828152876020848701011115610d5157600080fd5b826020860160208301376000928101602001929092525095945050505050565b600060208284031215610d8357600080fd5b5035919050565b60008151808452610da2816020860160208601610f52565b601f01601f19169290920160200192915050565b60008151610dc8818560208601610f52565b9290920192915050565b66697066733a2f2f60c81b8152600060076000855481600182811c915080831680610dfe57607f831692505b6020808410821415610e1e57634e487b7160e01b86526022600452602486fd5b818015610e325760018114610e4757610e78565b60ff1986168a890152848a0188019650610e78565b60008c81526020902060005b86811015610e6e5781548c82018b0152908501908301610e53565b505087858b010196505b505050505050610e98610e9282602f60f81b815260010190565b86610db6565b9695505050505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090610e9890830184610d8a565b60208152600061090b6020830184610d8a565b6020808252600d908201526c6572726f72206f776e6572282960981b604082015260600190565b60008219821115610f2257610f22610fe8565b500190565b600082610f3657610f36610ffe565b500490565b600082821015610f4d57610f4d610fe8565b500390565b60005b83811015610f6d578181015183820152602001610f55565b838111156108b75750506000910152565b600181811c90821680610f9257607f821691505b60208210811415610fb357634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415610fcd57610fcd610fe8565b5060010190565b600082610fe357610fe3610ffe565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b03198116811461038357600080fdfea264697066735822122025c9929f39a824604955499baaf00bac7ba36abcaad7aa84784cd9cd9ebb532364736f6c63430008050033

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.