ETH Price: $3,287.77 (+1.24%)
Gas: 2 Gwei

Contract

0xCd26a16DfF96501F364332f6c15c931de17a691c
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set Approval For...198082872024-05-06 3:13:1183 days ago1714965191IN
0xCd26a16D...de17a691c
0 ETH0.000109134.16814006
Set Approval For...198082872024-05-06 3:13:1183 days ago1714965191IN
0xCd26a16D...de17a691c
0 ETH0.000192074.16814006
Set Approval For...170175452023-04-10 11:36:23475 days ago1681126583IN
0xCd26a16D...de17a691c
0 ETH0.0010088321.8922267
Set Approval For...168491302023-03-17 17:52:23499 days ago1679075543IN
0xCd26a16D...de17a691c
0 ETH0.0008259117.92271762
Safe Transfer Fr...167041972023-02-25 8:44:35519 days ago1677314675IN
0xCd26a16D...de17a691c
0 ETH0.0026392423.03207009
Set Approval For...158515042022-10-29 5:02:35638 days ago1667019755IN
0xCd26a16D...de17a691c
0 ETH0.000367477.95986266
Set Approval For...156584292022-10-02 5:40:35665 days ago1664689235IN
0xCd26a16D...de17a691c
0 ETH0.000224524.86336105
Set Approval For...153393622022-08-14 11:00:18714 days ago1660474818IN
0xCd26a16D...de17a691c
0 ETH0.000276926
Set Approval For...153257002022-08-12 7:29:33716 days ago1660289373IN
0xCd26a16D...de17a691c
0 ETH0.000456779.91221528
Mint152471052022-07-31 0:46:51729 days ago1659228411IN
0xCd26a16D...de17a691c
0 ETH0.000077973
Set Approval For...152434582022-07-30 11:15:55729 days ago1659179755IN
0xCd26a16D...de17a691c
0 ETH0.000335817.28733592
Set Approval For...152306542022-07-28 11:05:49731 days ago1659006349IN
0xCd26a16D...de17a691c
0 ETH0.000418329.07781952
Set Approval For...151471392022-07-15 12:05:46744 days ago1657886746IN
0xCd26a16D...de17a691c
0 ETH0.0005318911.54232204
Set Approval For...151128302022-07-10 4:49:50749 days ago1657428590IN
0xCd26a16D...de17a691c
0 ETH0.0004866310.56027901
Set Approval For...148279952022-05-23 6:25:10797 days ago1653287110IN
0xCd26a16D...de17a691c
0 ETH0.0007832716.96654822
Set Approval For...147276282022-05-07 4:06:44813 days ago1651896404IN
0xCd26a16D...de17a691c
0 ETH0.0007794932.13889789
Transfer From146884362022-04-30 23:16:37820 days ago1651360597IN
0xCd26a16D...de17a691c
0 ETH0.01422986152.82031066
Safe Transfer Fr...146617222022-04-26 18:31:42824 days ago1650997902IN
0xCd26a16D...de17a691c
0 ETH0.0027290656.8
Transfer From146616782022-04-26 18:20:11824 days ago1650997211IN
0xCd26a16D...de17a691c
0 ETH0.0053192957.12607269
Set Base URI146427852022-04-23 18:52:49827 days ago1650739969IN
0xCd26a16D...de17a691c
0 ETH0.0017300645.74589256
Withdraw146427812022-04-23 18:51:03827 days ago1650739863IN
0xCd26a16D...de17a691c
0 ETH0.0013263543.68052249
Transfer From146366562022-04-22 19:52:02828 days ago1650657122IN
0xCd26a16D...de17a691c
0 ETH0.0056910251.15991653
Mint146351422022-04-22 14:12:44828 days ago1650636764IN
0xCd26a16D...de17a691c
0 ETH0.0003006211.56620381
Transfer From146183192022-04-19 22:42:20831 days ago1650408140IN
0xCd26a16D...de17a691c
0 ETH0.0032488837.35633633
Transfer From146183102022-04-19 22:41:01831 days ago1650408061IN
0xCd26a16D...de17a691c
0 ETH0.0043364247.79741672
View all transactions

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block From To
146427812022-04-23 18:51:03827 days ago1650739863
0xCd26a16D...de17a691c
0.0322 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Stickz

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : 4_Stickz.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)
pragma solidity ^0.8.0;


abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

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

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

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

library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";

    function toString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 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 toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}

interface IERC165 {
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

interface IERC721 is IERC165 {

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

    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);

    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    function balanceOf(address owner) external view returns (uint256 balance);

    function ownerOf(uint256 tokenId) external view returns (address owner);

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;


    function approve(address to, uint256 tokenId) external;

    function getApproved(uint256 tokenId) external view returns (address operator);

    function setApprovalForAll(address operator, bool _approved) external;

    function isApprovedForAll(address owner, address operator) external view returns (bool);

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes calldata data
    ) external;
}

interface IERC721Receiver {

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


interface IERC721Metadata is IERC721 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function tokenURI(uint256 tokenId) external view returns (string memory);
}

interface IERC721Enumerable is IERC721 {

    function totalSupply() external view returns (uint256);
    function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId);
    function tokenByIndex(uint256 index) external view returns (uint256);
}

library Address {
    
    function isContract(address account) internal view returns (bool) {

        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

abstract contract ERC165 is IERC165 {
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}

contract ERC721A is Context, ERC165, IERC721, IERC721Metadata, IERC721Enumerable {
    using Address for address;
    using Strings for uint256;

    struct TokenOwnership {
        address addr;
        uint64 startTimestamp;
    }

    struct AddressData {
        uint128 balance;
        uint128 numberMinted;
    }

    uint256 internal currentIndex = 0;

    // Token name
    string private _name;

    // Token symbol
    string private _symbol;

    // Mapping from token ID to ownership details
    // An empty struct value does not necessarily mean the token is unowned. See ownershipOf implementation for details.
    mapping(uint256 => TokenOwnership) internal _ownerships;

    // Mapping owner address to address data
    mapping(address => AddressData) private _addressData;

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

    // Mapping from owner to operator approvals
    mapping(address => mapping(address => bool)) private _operatorApprovals;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev See {IERC721Enumerable-totalSupply}.
     */
    function totalSupply() public view override returns (uint256) {
        return currentIndex;
    }

    /**
     * @dev See {IERC721Enumerable-tokenByIndex}.
     */
    function tokenByIndex(uint256 index) public view override returns (uint256) {
        require(index < totalSupply(), 'ERC721A: global index out of bounds');
        return index;
    }

    function tokenOfOwnerByIndex(address owner, uint256 index) public view override returns (uint256) {
        require(index < balanceOf(owner), 'ERC721A: owner index out of bounds');
        uint256 numMintedSoFar = totalSupply();
        uint256 tokenIdsIdx = 0;
        address currOwnershipAddr = address(0);
        for (uint256 i = 0; i < numMintedSoFar; i++) {
            TokenOwnership memory ownership = _ownerships[i];
            if (ownership.addr != address(0)) {
                currOwnershipAddr = ownership.addr;
            }
            if (currOwnershipAddr == owner) {
                if (tokenIdsIdx == index) {
                    return i;
                }
                tokenIdsIdx++;
            }
        }
        revert('ERC721A: unable to get token of owner by index');
    }

    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
        return
            interfaceId == type(IERC721).interfaceId ||
            interfaceId == type(IERC721Metadata).interfaceId ||
            interfaceId == type(IERC721Enumerable).interfaceId ||
            super.supportsInterface(interfaceId);
    }

    /**
     * @dev See {IERC721-balanceOf}.
     */
    function balanceOf(address owner) public view override returns (uint256) {
        require(owner != address(0), 'ERC721A: balance query for the zero address');
        return uint256(_addressData[owner].balance);
    }

    function _numberMinted(address owner) internal view returns (uint256) {
        require(owner != address(0), 'ERC721A: number minted query for the zero address');
        return uint256(_addressData[owner].numberMinted);
    }

    function ownershipOf(uint256 tokenId) internal view returns (TokenOwnership memory) {
        require(_exists(tokenId), 'ERC721A: owner query for nonexistent token');

        for (uint256 curr = tokenId; ; curr--) {
            TokenOwnership memory ownership = _ownerships[curr];
            if (ownership.addr != address(0)) {
                return ownership;
            }
        }

        revert('ERC721A: unable to determine the owner of token');
    }

    /**
     * @dev See {IERC721-ownerOf}.
     */
    function ownerOf(uint256 tokenId) public view override returns (address) {
        return ownershipOf(tokenId).addr;
    }

    /**
     * @dev See {IERC721Metadata-name}.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev See {IERC721Metadata-symbol}.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev See {IERC721Metadata-tokenURI}.
     */
    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
        require(_exists(tokenId), 'ERC721Metadata: URI query for nonexistent token');

        string memory baseURI = _baseURI();
        return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : '';
    }

    /**
     * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each
     * token will be the concatenation of the `baseURI` and the `tokenId`. Empty
     * by default, can be overriden in child contracts.
     */
    function _baseURI() internal view virtual returns (string memory) {
        return '';
    }

    /**
     * @dev See {IERC721-approve}.
     */
    function approve(address to, uint256 tokenId) public override {
        address owner = ERC721A.ownerOf(tokenId);
        require(to != owner, 'ERC721A: approval to current owner');

        require(
            _msgSender() == owner || isApprovedForAll(owner, _msgSender()),
            'ERC721A: approve caller is not owner nor approved for all'
        );

        _approve(to, tokenId, owner);
    }

 
    function getApproved(uint256 tokenId) public view override returns (address) {
        require(_exists(tokenId), 'ERC721A: approved query for nonexistent token');

        return _tokenApprovals[tokenId];
    }


    function setApprovalForAll(address operator, bool approved) public override {
        require(operator != _msgSender(), 'ERC721A: approve to caller');

        _operatorApprovals[_msgSender()][operator] = approved;
        emit ApprovalForAll(_msgSender(), operator, approved);
    }

    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {
        return _operatorApprovals[owner][operator];
    }

    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public override {
        _transfer(from, to, tokenId);
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public override {
        safeTransferFrom(from, to, tokenId, '');
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) public override {
        _transfer(from, to, tokenId);
        require(
            _checkOnERC721Received(from, to, tokenId, _data),
            'ERC721A: transfer to non ERC721Receiver implementer'
        );
    }

    function _exists(uint256 tokenId) internal view returns (bool) {
        return tokenId < currentIndex;
    }

    function _safeMint(address to, uint256 quantity) internal {
        _safeMint(to, quantity, '');
    }

    function _safeMint(
        address to,
        uint256 quantity,
        bytes memory _data
    ) internal {
        uint256 startTokenId = currentIndex;
        require(to != address(0), 'ERC721A: mint to the zero address');
        // We know if the first token in the batch doesn't exist, the other ones don't as well, because of serial ordering.
        require(!_exists(startTokenId), 'ERC721A: token already minted');
        require(quantity > 0, 'ERC721A: quantity must be greater 0');

        _beforeTokenTransfers(address(0), to, startTokenId, quantity);

        AddressData memory addressData = _addressData[to];
        _addressData[to] = AddressData(
            addressData.balance + uint128(quantity),
            addressData.numberMinted + uint128(quantity)
        );
        _ownerships[startTokenId] = TokenOwnership(to, uint64(block.timestamp));

        uint256 updatedIndex = startTokenId;

        for (uint256 i = 0; i < quantity; i++) {
            emit Transfer(address(0), to, updatedIndex);
            require(
                _checkOnERC721Received(address(0), to, updatedIndex, _data),
                'ERC721A: transfer to non ERC721Receiver implementer'
            );
            updatedIndex++;
        }

        currentIndex = updatedIndex;
        _afterTokenTransfers(address(0), to, startTokenId, quantity);
    }

    function _transfer(
        address from,
        address to,
        uint256 tokenId
    ) private {
        TokenOwnership memory prevOwnership = ownershipOf(tokenId);

        bool isApprovedOrOwner = (_msgSender() == prevOwnership.addr ||
            getApproved(tokenId) == _msgSender() ||
            isApprovedForAll(prevOwnership.addr, _msgSender()));

        require(isApprovedOrOwner, 'ERC721A: transfer caller is not owner nor approved');

        require(prevOwnership.addr == from, 'ERC721A: transfer from incorrect owner');
        require(to != address(0), 'ERC721A: transfer to the zero address');

        _beforeTokenTransfers(from, to, tokenId, 1);

        _approve(address(0), tokenId, prevOwnership.addr);

        unchecked {
            _addressData[from].balance -= 1;
            _addressData[to].balance += 1;
        }

        _ownerships[tokenId] = TokenOwnership(to, uint64(block.timestamp));

        uint256 nextTokenId = tokenId + 1;
        if (_ownerships[nextTokenId].addr == address(0)) {
            if (_exists(nextTokenId)) {
                _ownerships[nextTokenId] = TokenOwnership(prevOwnership.addr, prevOwnership.startTimestamp);
            }
        }

        emit Transfer(from, to, tokenId);
        _afterTokenTransfers(from, to, tokenId, 1);
    }

    function _approve(
        address to,
        uint256 tokenId,
        address owner
    ) private {
        _tokenApprovals[tokenId] = to;
        emit Approval(owner, to, tokenId);
    }

    function _checkOnERC721Received(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) private returns (bool) {
        if (to.isContract()) {
            try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) {
                return retval == IERC721Receiver(to).onERC721Received.selector;
            } catch (bytes memory reason) {
                if (reason.length == 0) {
                    revert('ERC721A: transfer to non ERC721Receiver implementer');
                } else {
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        } else {
            return true;
        }
    }


    function _beforeTokenTransfers(
        address from,
        address to,
        uint256 startTokenId,
        uint256 quantity
    ) internal virtual {}


    function _afterTokenTransfers(
        address from,
        address to,
        uint256 startTokenId,
        uint256 quantity
    ) internal virtual {}
}

contract Stickz is ERC721A, Ownable {

    string public baseURI = "ipfs://QmYvHDiqRMqYpqrnvmAAe4nAd4hyqy57mdKcM9u6fc2kim/";
    string public constant baseExtension = ".json";
    address public constant proxyRegistryAddress = 0xa5409ec958C83C3f309868babACA7c86DCB077c1;
    address payable admin;

    mapping(address => uint256) public minted;
    uint256 public constant MAX_MINT = 5;
    uint256 public constant FREE_MAX_SUPPLY = 4444;
    uint256 public constant MAX_SUPPLY = 5555;
    uint256 public price = 0.01 ether;

    bool public paused = false;

    constructor() ERC721A("Stickz", "STICKZ") {}

    function mint(uint256 _amount) external payable {
        address _caller = _msgSender();
        require(!paused, "Paused");
        require(MAX_SUPPLY >= totalSupply() + _amount, "Exceeds max supply");
        require(_amount > 0, "No 0 mints");
        require(_amount <= MAX_MINT, "Mint Limit is 5");
        require(minted[_caller]+_amount <= MAX_MINT, "Max Mint Limit is 5!");

        if(totalSupply() > FREE_MAX_SUPPLY){
            require(_amount * price == msg.value, "Invalid funds provided, Free supply exiceeded");
        }

        minted[_caller] += _amount;
        _safeMint(_caller, _amount);
    }

    function ownerMint(uint256 _amount, address _to) public onlyOwner {
        require(MAX_SUPPLY >= totalSupply() + _amount, "Exceeds max supply");
        require(_amount > 0, "No 0 mints");

        for (uint256 i = 0; i < _amount; i++) {
            _safeMint(_to, _amount);
        }
    }

    function setPrice(uint256 newPrice) public {
        require(newPrice > 0);
        price = newPrice;
    }

    function isApprovedForAll(address owner, address operator)
        override
        public
        view
        returns (bool)
    {
        // Whitelist OpenSea proxy contract for easy trading.
        ProxyRegistry proxyRegistry = ProxyRegistry(proxyRegistryAddress);
        if (address(proxyRegistry.proxies(owner)) == operator) {
            return true;
        }

        return super.isApprovedForAll(owner, operator);
    }

    function withdraw() external onlyOwner {
        uint256 balance = address(this).balance;
        (bool success, ) = _msgSender().call{value: balance}("");
        require(success, "Failed to send");
    }

    function pause(bool _state) external onlyOwner {
        paused = _state;
    }

    function setBaseURI(string memory baseURI_) external onlyOwner {
        baseURI = baseURI_;
    }

    function tokenURI(uint256 _tokenId) public view override returns (string memory) {
        require(_exists(_tokenId), "Token does not exist.");
        return bytes(baseURI).length > 0 ? string(
            abi.encodePacked(
              baseURI,
              Strings.toString(_tokenId),
              baseExtension
            )
        ) : "";
    }

    function kill() public onlyOwner {
        selfdestruct(payable(admin));
    }
}

contract OwnableDelegateProxy { }
contract ProxyRegistry {
    mapping(address => OwnableDelegateProxy) public proxies;
}

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"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":"FREE_MAX_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_MINT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseExtension","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"kill","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"minted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"_amount","type":"uint256"},{"internalType":"address","name":"_to","type":"address"}],"name":"ownerMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxyRegistryAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI_","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPrice","type":"uint256"}],"name":"setPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6000805560e060405260366080818152906200275460a03980516200002d9160089160209091019062000136565b50662386f26fc10000600b55600c805460ff191690553480156200005057600080fd5b506040518060400160405280600681526020016529ba34b1b5bd60d11b8152506040518060400160405280600681526020016529aa24a1a5ad60d11b8152508160019080519060200190620000a792919062000136565b508051620000bd90600290602084019062000136565b505050620000da620000d4620000e060201b60201c565b620000e4565b62000218565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8280546200014490620001dc565b90600052602060002090601f016020900481019282620001685760008555620001b3565b82601f106200018357805160ff1916838001178555620001b3565b82800160010185558215620001b3579182015b82811115620001b357825182559160200191906001019062000196565b50620001c1929150620001c5565b5090565b5b80821115620001c15760008155600101620001c6565b600181811c90821680620001f157607f821691505b6020821081036200021257634e487b7160e01b600052602260045260246000fd5b50919050565b61252c80620002286000396000f3fe6080604052600436106102045760003560e01c80636c0360eb11610118578063a22cb465116100a0578063cd7c03261161006f578063cd7c0326146105ad578063d52c57e0146105d5578063e985e9c5146105f5578063f0292a0314610615578063f2fde38b1461062a57600080fd5b8063a22cb4651461051c578063b88d4fde1461053c578063c66828621461055c578063c87b56dd1461058d57600080fd5b80638da5cb5b116100e75780638da5cb5b146104a057806391b7f5ed146104be57806395d89b41146104de578063a035b1fe146104f3578063a0712d681461050957600080fd5b80636c0360eb1461044057806370a0823114610455578063715018a6146104755780638069876d1461048a57600080fd5b80632f745c591161019b57806342842e0e1161016a57806342842e0e146103a65780634f6ccce7146103c657806355f804b3146103e65780635c975abb146104065780636352211e1461042057600080fd5b80632f745c591461034657806332cb6b0c146103665780633ccfd60b1461037c57806341c0e1b51461039157600080fd5b8063095ea7b3116101d7578063095ea7b3146102ba57806318160ddd146102da5780631e7269c5146102f957806323b872dd1461032657600080fd5b806301ffc9a71461020957806302329a291461023e57806306fdde0314610260578063081812fc14610282575b600080fd5b34801561021557600080fd5b50610229610224366004611e89565b61064a565b60405190151581526020015b60405180910390f35b34801561024a57600080fd5b5061025e610259366004611ec2565b6106b7565b005b34801561026c57600080fd5b506102756106fd565b6040516102359190611f35565b34801561028e57600080fd5b506102a261029d366004611f48565b61078f565b6040516001600160a01b039091168152602001610235565b3480156102c657600080fd5b5061025e6102d5366004611f76565b61081a565b3480156102e657600080fd5b506000545b604051908152602001610235565b34801561030557600080fd5b506102eb610314366004611fa2565b600a6020526000908152604090205481565b34801561033257600080fd5b5061025e610341366004611fbf565b610931565b34801561035257600080fd5b506102eb610361366004611f76565b61093c565b34801561037257600080fd5b506102eb6115b381565b34801561038857600080fd5b5061025e610aa8565b34801561039d57600080fd5b5061025e610b61565b3480156103b257600080fd5b5061025e6103c1366004611fbf565b610b99565b3480156103d257600080fd5b506102eb6103e1366004611f48565b610bb4565b3480156103f257600080fd5b5061025e61040136600461208c565b610c16565b34801561041257600080fd5b50600c546102299060ff1681565b34801561042c57600080fd5b506102a261043b366004611f48565b610c53565b34801561044c57600080fd5b50610275610c65565b34801561046157600080fd5b506102eb610470366004611fa2565b610cf3565b34801561048157600080fd5b5061025e610d84565b34801561049657600080fd5b506102eb61115c81565b3480156104ac57600080fd5b506007546001600160a01b03166102a2565b3480156104ca57600080fd5b5061025e6104d9366004611f48565b610dba565b3480156104ea57600080fd5b50610275610dcc565b3480156104ff57600080fd5b506102eb600b5481565b61025e610517366004611f48565b610ddb565b34801561052857600080fd5b5061025e6105373660046120d5565b61101b565b34801561054857600080fd5b5061025e61055736600461210a565b6110df565b34801561056857600080fd5b5061027560405180604001604052806005815260200164173539b7b760d91b81525081565b34801561059957600080fd5b506102756105a8366004611f48565b611118565b3480156105b957600080fd5b506102a273a5409ec958c83c3f309868babaca7c86dcb077c181565b3480156105e157600080fd5b5061025e6105f036600461218a565b6111e4565b34801561060157600080fd5b506102296106103660046121ba565b6112cc565b34801561062157600080fd5b506102eb600581565b34801561063657600080fd5b5061025e610645366004611fa2565b61139b565b60006001600160e01b031982166380ac58cd60e01b148061067b57506001600160e01b03198216635b5e139f60e01b145b8061069657506001600160e01b0319821663780e9d6360e01b145b806106b157506301ffc9a760e01b6001600160e01b03198316145b92915050565b6007546001600160a01b031633146106ea5760405162461bcd60e51b81526004016106e1906121e8565b60405180910390fd5b600c805460ff1916911515919091179055565b60606001805461070c9061221d565b80601f01602080910402602001604051908101604052809291908181526020018280546107389061221d565b80156107855780601f1061075a57610100808354040283529160200191610785565b820191906000526020600020905b81548152906001019060200180831161076857829003601f168201915b5050505050905090565b600061079c826000541190565b6107fe5760405162461bcd60e51b815260206004820152602d60248201527f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560448201526c3c34b9ba32b73a103a37b5b2b760991b60648201526084016106e1565b506000908152600560205260409020546001600160a01b031690565b600061082582610c53565b9050806001600160a01b0316836001600160a01b0316036108935760405162461bcd60e51b815260206004820152602260248201527f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60448201526132b960f11b60648201526084016106e1565b336001600160a01b03821614806108af57506108af81336112cc565b6109215760405162461bcd60e51b815260206004820152603960248201527f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656420666f7220616c6c0000000000000060648201526084016106e1565b61092c838383611436565b505050565b61092c838383611492565b600061094783610cf3565b82106109a05760405162461bcd60e51b815260206004820152602260248201527f455243373231413a206f776e657220696e646578206f7574206f6620626f756e604482015261647360f01b60648201526084016106e1565b600080549080805b83811015610a48576000818152600360209081526040918290208251808401909352546001600160a01b038116808452600160a01b90910467ffffffffffffffff1691830191909152156109fb57805192505b876001600160a01b0316836001600160a01b031603610a3557868403610a27575093506106b192505050565b83610a318161226d565b9450505b5080610a408161226d565b9150506109a8565b5060405162461bcd60e51b815260206004820152602e60248201527f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060448201526d0deeedccae440c4f240d2dcc8caf60931b60648201526084016106e1565b6007546001600160a01b03163314610ad25760405162461bcd60e51b81526004016106e1906121e8565b6040514790600090339083908381818185875af1925050503d8060008114610b16576040519150601f19603f3d011682016040523d82523d6000602084013e610b1b565b606091505b5050905080610b5d5760405162461bcd60e51b815260206004820152600e60248201526d11985a5b1959081d1bc81cd95b9960921b60448201526064016106e1565b5050565b6007546001600160a01b03163314610b8b5760405162461bcd60e51b81526004016106e1906121e8565b6009546001600160a01b0316ff5b61092c838383604051806020016040528060008152506110df565b600080548210610c125760405162461bcd60e51b815260206004820152602360248201527f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f756044820152626e647360e81b60648201526084016106e1565b5090565b6007546001600160a01b03163314610c405760405162461bcd60e51b81526004016106e1906121e8565b8051610b5d906008906020840190611de3565b6000610c5e826117d9565b5192915050565b60088054610c729061221d565b80601f0160208091040260200160405190810160405280929190818152602001828054610c9e9061221d565b8015610ceb5780601f10610cc057610100808354040283529160200191610ceb565b820191906000526020600020905b815481529060010190602001808311610cce57829003601f168201915b505050505081565b60006001600160a01b038216610d5f5760405162461bcd60e51b815260206004820152602b60248201527f455243373231413a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b60648201526084016106e1565b506001600160a01b03166000908152600460205260409020546001600160801b031690565b6007546001600160a01b03163314610dae5760405162461bcd60e51b81526004016106e1906121e8565b610db860006118b9565b565b60008111610dc757600080fd5b600b55565b60606002805461070c9061221d565b600c54339060ff1615610e195760405162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b60448201526064016106e1565b81610e2360005490565b610e2d9190612286565b6115b31015610e735760405162461bcd60e51b815260206004820152601260248201527145786365656473206d617820737570706c7960701b60448201526064016106e1565b60008211610eb05760405162461bcd60e51b815260206004820152600a6024820152694e6f2030206d696e747360b01b60448201526064016106e1565b6005821115610ef35760405162461bcd60e51b815260206004820152600f60248201526e4d696e74204c696d6974206973203560881b60448201526064016106e1565b6001600160a01b0381166000908152600a6020526040902054600590610f1a908490612286565b1115610f5f5760405162461bcd60e51b81526020600482015260146024820152734d6178204d696e74204c696d697420697320352160601b60448201526064016106e1565b61115c610f6b60005490565b1115610fe35734600b5483610f80919061229e565b14610fe35760405162461bcd60e51b815260206004820152602d60248201527f496e76616c69642066756e64732070726f76696465642c20467265652073757060448201526c1c1b1e48195e1a58d959591959609a1b60648201526084016106e1565b6001600160a01b0381166000908152600a60205260408120805484929061100b908490612286565b90915550610b5d9050818361190b565b336001600160a01b038316036110735760405162461bcd60e51b815260206004820152601a60248201527f455243373231413a20617070726f766520746f2063616c6c657200000000000060448201526064016106e1565b3360008181526006602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6110ea848484611492565b6110f684848484611925565b6111125760405162461bcd60e51b81526004016106e1906122bd565b50505050565b6060611125826000541190565b6111695760405162461bcd60e51b81526020600482015260156024820152742a37b5b2b7103237b2b9903737ba1032bc34b9ba1760591b60448201526064016106e1565b6000600880546111789061221d565b90501161119457604051806020016040528060008152506106b1565b600861119f83611a26565b60405180604001604052806005815260200164173539b7b760d91b8152506040516020016111cf9392919061232c565b60405160208183030381529060405292915050565b6007546001600160a01b0316331461120e5760405162461bcd60e51b81526004016106e1906121e8565b8161121860005490565b6112229190612286565b6115b310156112685760405162461bcd60e51b815260206004820152601260248201527145786365656473206d617820737570706c7960701b60448201526064016106e1565b600082116112a55760405162461bcd60e51b815260206004820152600a6024820152694e6f2030206d696e747360b01b60448201526064016106e1565b60005b8281101561092c576112ba828461190b565b806112c48161226d565b9150506112a8565b60405163c455279160e01b81526001600160a01b03838116600483015260009173a5409ec958c83c3f309868babaca7c86dcb077c191841690829063c455279190602401602060405180830381865afa15801561132d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135191906123dc565b6001600160a01b0316036113695760019150506106b1565b6001600160a01b0380851660009081526006602090815260408083209387168352929052205460ff165b949350505050565b6007546001600160a01b031633146113c55760405162461bcd60e51b81526004016106e1906121e8565b6001600160a01b03811661142a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106e1565b611433816118b9565b50565b60008281526005602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b600061149d826117d9565b80519091506000906001600160a01b0316336001600160a01b031614806114d45750336114c98461078f565b6001600160a01b0316145b806114e6575081516114e690336112cc565b9050806115505760405162461bcd60e51b815260206004820152603260248201527f455243373231413a207472616e736665722063616c6c6572206973206e6f74206044820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b60648201526084016106e1565b846001600160a01b031682600001516001600160a01b0316146115c45760405162461bcd60e51b815260206004820152602660248201527f455243373231413a207472616e736665722066726f6d20696e636f72726563746044820152651037bbb732b960d11b60648201526084016106e1565b6001600160a01b0384166116285760405162461bcd60e51b815260206004820152602560248201527f455243373231413a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b60648201526084016106e1565b6116386000848460000151611436565b6001600160a01b03858116600090815260046020908152604080832080546fffffffffffffffffffffffffffffffff198082166001600160801b03928316600019018316179092558986168086528386208054938416938316600190810190931693909317909255825180840184529182524267ffffffffffffffff9081168386019081528a8752600390955292852091518254945196166001600160e01b031990941693909317600160a01b959092169490940217909255906116fd908590612286565b6000818152600360205260409020549091506001600160a01b031661178f57611727816000541190565b1561178f5760408051808201825284516001600160a01b03908116825260208087015167ffffffffffffffff9081168285019081526000878152600390935294909120925183549451909116600160a01b026001600160e01b03199094169116179190911790555b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b505050505050565b60408051808201909152600080825260208201526117f8826000541190565b6118575760405162461bcd60e51b815260206004820152602a60248201527f455243373231413a206f776e657220717565727920666f72206e6f6e657869736044820152693a32b73a103a37b5b2b760b11b60648201526084016106e1565b815b6000818152600360209081526040918290208251808401909352546001600160a01b038116808452600160a01b90910467ffffffffffffffff1691830191909152156118a6579392505050565b50806118b1816123f9565b915050611859565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b610b5d828260405180602001604052806000815250611b27565b60006001600160a01b0384163b15611a1b57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611969903390899088908890600401612410565b6020604051808303816000875af19250505080156119a4575060408051601f3d908101601f191682019092526119a191810190612443565b60015b611a01573d8080156119d2576040519150601f19603f3d011682016040523d82523d6000602084013e6119d7565b606091505b5080516000036119f95760405162461bcd60e51b81526004016106e1906122bd565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611393565b506001949350505050565b606081600003611a4d5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611a775780611a618161226d565b9150611a709050600a83612476565b9150611a51565b60008167ffffffffffffffff811115611a9257611a92612000565b6040519080825280601f01601f191660200182016040528015611abc576020820181803683370190505b5090505b841561139357611ad160018361248a565b9150611ade600a866124a1565b611ae9906030612286565b60f81b818381518110611afe57611afe6124b5565b60200101906001600160f81b031916908160001a905350611b20600a86612476565b9450611ac0565b6000546001600160a01b038416611b8a5760405162461bcd60e51b815260206004820152602160248201527f455243373231413a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b60648201526084016106e1565b611b95816000541190565b15611be25760405162461bcd60e51b815260206004820152601d60248201527f455243373231413a20746f6b656e20616c7265616479206d696e74656400000060448201526064016106e1565b60008311611c3e5760405162461bcd60e51b815260206004820152602360248201527f455243373231413a207175616e74697479206d7573742062652067726561746560448201526207220360ec1b60648201526084016106e1565b6001600160a01b0384166000908152600460209081526040918290208251808401845290546001600160801b038082168352600160801b9091041691810191909152815180830190925280519091908190611c9a9087906124cb565b6001600160801b03168152602001858360200151611cb891906124cb565b6001600160801b039081169091526001600160a01b0380881660008181526004602090815260408083208751978301518716600160801b0297909616969096179094558451808601865291825267ffffffffffffffff4281168386019081528883526003909552948120915182549451909516600160a01b026001600160e01b031990941694909216939093179190911790915582905b85811015611dd85760405182906001600160a01b038916906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4611d9c6000888488611925565b611db85760405162461bcd60e51b81526004016106e1906122bd565b81611dc28161226d565b9250508080611dd09061226d565b915050611d4f565b5060008190556117d1565b828054611def9061221d565b90600052602060002090601f016020900481019282611e115760008555611e57565b82601f10611e2a57805160ff1916838001178555611e57565b82800160010185558215611e57579182015b82811115611e57578251825591602001919060010190611e3c565b50610c129291505b80821115610c125760008155600101611e5f565b6001600160e01b03198116811461143357600080fd5b600060208284031215611e9b57600080fd5b8135611ea681611e73565b9392505050565b80358015158114611ebd57600080fd5b919050565b600060208284031215611ed457600080fd5b611ea682611ead565b60005b83811015611ef8578181015183820152602001611ee0565b838111156111125750506000910152565b60008151808452611f21816020860160208601611edd565b601f01601f19169290920160200192915050565b602081526000611ea66020830184611f09565b600060208284031215611f5a57600080fd5b5035919050565b6001600160a01b038116811461143357600080fd5b60008060408385031215611f8957600080fd5b8235611f9481611f61565b946020939093013593505050565b600060208284031215611fb457600080fd5b8135611ea681611f61565b600080600060608486031215611fd457600080fd5b8335611fdf81611f61565b92506020840135611fef81611f61565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff8084111561203157612031612000565b604051601f8501601f19908116603f0116810190828211818310171561205957612059612000565b8160405280935085815286868601111561207257600080fd5b858560208301376000602087830101525050509392505050565b60006020828403121561209e57600080fd5b813567ffffffffffffffff8111156120b557600080fd5b8201601f810184136120c657600080fd5b61139384823560208401612016565b600080604083850312156120e857600080fd5b82356120f381611f61565b915061210160208401611ead565b90509250929050565b6000806000806080858703121561212057600080fd5b843561212b81611f61565b9350602085013561213b81611f61565b925060408501359150606085013567ffffffffffffffff81111561215e57600080fd5b8501601f8101871361216f57600080fd5b61217e87823560208401612016565b91505092959194509250565b6000806040838503121561219d57600080fd5b8235915060208301356121af81611f61565b809150509250929050565b600080604083850312156121cd57600080fd5b82356121d881611f61565b915060208301356121af81611f61565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c9082168061223157607f821691505b60208210810361225157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60006001820161227f5761227f612257565b5060010190565b6000821982111561229957612299612257565b500190565b60008160001904831182151516156122b8576122b8612257565b500290565b60208082526033908201527f455243373231413a207472616e7366657220746f206e6f6e204552433732315260408201527232b1b2b4bb32b91034b6b83632b6b2b73a32b960691b606082015260800190565b60008151612322818560208601611edd565b9290920192915050565b600080855481600182811c91508083168061234857607f831692505b6020808410820361236757634e487b7160e01b86526022600452602486fd5b81801561237b576001811461238c576123b9565b60ff198616895284890196506123b9565b60008c81526020902060005b868110156123b15781548b820152908501908301612398565b505084890196505b5050505050506123d26123cc8287612310565b85612310565b9695505050505050565b6000602082840312156123ee57600080fd5b8151611ea681611f61565b60008161240857612408612257565b506000190190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906123d290830184611f09565b60006020828403121561245557600080fd5b8151611ea681611e73565b634e487b7160e01b600052601260045260246000fd5b60008261248557612485612460565b500490565b60008282101561249c5761249c612257565b500390565b6000826124b0576124b0612460565b500690565b634e487b7160e01b600052603260045260246000fd5b60006001600160801b038083168185168083038211156124ed576124ed612257565b0194935050505056fea264697066735822122037e8619f7f04fc38ac21bd93e04ec60f10f6092ecd0ef9c0590a585a182b1b9264736f6c634300080d0033697066733a2f2f516d597648446971524d71597071726e766d414165346e4164346879717935376d644b634d3975366663326b696d2f

Deployed Bytecode

0x6080604052600436106102045760003560e01c80636c0360eb11610118578063a22cb465116100a0578063cd7c03261161006f578063cd7c0326146105ad578063d52c57e0146105d5578063e985e9c5146105f5578063f0292a0314610615578063f2fde38b1461062a57600080fd5b8063a22cb4651461051c578063b88d4fde1461053c578063c66828621461055c578063c87b56dd1461058d57600080fd5b80638da5cb5b116100e75780638da5cb5b146104a057806391b7f5ed146104be57806395d89b41146104de578063a035b1fe146104f3578063a0712d681461050957600080fd5b80636c0360eb1461044057806370a0823114610455578063715018a6146104755780638069876d1461048a57600080fd5b80632f745c591161019b57806342842e0e1161016a57806342842e0e146103a65780634f6ccce7146103c657806355f804b3146103e65780635c975abb146104065780636352211e1461042057600080fd5b80632f745c591461034657806332cb6b0c146103665780633ccfd60b1461037c57806341c0e1b51461039157600080fd5b8063095ea7b3116101d7578063095ea7b3146102ba57806318160ddd146102da5780631e7269c5146102f957806323b872dd1461032657600080fd5b806301ffc9a71461020957806302329a291461023e57806306fdde0314610260578063081812fc14610282575b600080fd5b34801561021557600080fd5b50610229610224366004611e89565b61064a565b60405190151581526020015b60405180910390f35b34801561024a57600080fd5b5061025e610259366004611ec2565b6106b7565b005b34801561026c57600080fd5b506102756106fd565b6040516102359190611f35565b34801561028e57600080fd5b506102a261029d366004611f48565b61078f565b6040516001600160a01b039091168152602001610235565b3480156102c657600080fd5b5061025e6102d5366004611f76565b61081a565b3480156102e657600080fd5b506000545b604051908152602001610235565b34801561030557600080fd5b506102eb610314366004611fa2565b600a6020526000908152604090205481565b34801561033257600080fd5b5061025e610341366004611fbf565b610931565b34801561035257600080fd5b506102eb610361366004611f76565b61093c565b34801561037257600080fd5b506102eb6115b381565b34801561038857600080fd5b5061025e610aa8565b34801561039d57600080fd5b5061025e610b61565b3480156103b257600080fd5b5061025e6103c1366004611fbf565b610b99565b3480156103d257600080fd5b506102eb6103e1366004611f48565b610bb4565b3480156103f257600080fd5b5061025e61040136600461208c565b610c16565b34801561041257600080fd5b50600c546102299060ff1681565b34801561042c57600080fd5b506102a261043b366004611f48565b610c53565b34801561044c57600080fd5b50610275610c65565b34801561046157600080fd5b506102eb610470366004611fa2565b610cf3565b34801561048157600080fd5b5061025e610d84565b34801561049657600080fd5b506102eb61115c81565b3480156104ac57600080fd5b506007546001600160a01b03166102a2565b3480156104ca57600080fd5b5061025e6104d9366004611f48565b610dba565b3480156104ea57600080fd5b50610275610dcc565b3480156104ff57600080fd5b506102eb600b5481565b61025e610517366004611f48565b610ddb565b34801561052857600080fd5b5061025e6105373660046120d5565b61101b565b34801561054857600080fd5b5061025e61055736600461210a565b6110df565b34801561056857600080fd5b5061027560405180604001604052806005815260200164173539b7b760d91b81525081565b34801561059957600080fd5b506102756105a8366004611f48565b611118565b3480156105b957600080fd5b506102a273a5409ec958c83c3f309868babaca7c86dcb077c181565b3480156105e157600080fd5b5061025e6105f036600461218a565b6111e4565b34801561060157600080fd5b506102296106103660046121ba565b6112cc565b34801561062157600080fd5b506102eb600581565b34801561063657600080fd5b5061025e610645366004611fa2565b61139b565b60006001600160e01b031982166380ac58cd60e01b148061067b57506001600160e01b03198216635b5e139f60e01b145b8061069657506001600160e01b0319821663780e9d6360e01b145b806106b157506301ffc9a760e01b6001600160e01b03198316145b92915050565b6007546001600160a01b031633146106ea5760405162461bcd60e51b81526004016106e1906121e8565b60405180910390fd5b600c805460ff1916911515919091179055565b60606001805461070c9061221d565b80601f01602080910402602001604051908101604052809291908181526020018280546107389061221d565b80156107855780601f1061075a57610100808354040283529160200191610785565b820191906000526020600020905b81548152906001019060200180831161076857829003601f168201915b5050505050905090565b600061079c826000541190565b6107fe5760405162461bcd60e51b815260206004820152602d60248201527f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560448201526c3c34b9ba32b73a103a37b5b2b760991b60648201526084016106e1565b506000908152600560205260409020546001600160a01b031690565b600061082582610c53565b9050806001600160a01b0316836001600160a01b0316036108935760405162461bcd60e51b815260206004820152602260248201527f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60448201526132b960f11b60648201526084016106e1565b336001600160a01b03821614806108af57506108af81336112cc565b6109215760405162461bcd60e51b815260206004820152603960248201527f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656420666f7220616c6c0000000000000060648201526084016106e1565b61092c838383611436565b505050565b61092c838383611492565b600061094783610cf3565b82106109a05760405162461bcd60e51b815260206004820152602260248201527f455243373231413a206f776e657220696e646578206f7574206f6620626f756e604482015261647360f01b60648201526084016106e1565b600080549080805b83811015610a48576000818152600360209081526040918290208251808401909352546001600160a01b038116808452600160a01b90910467ffffffffffffffff1691830191909152156109fb57805192505b876001600160a01b0316836001600160a01b031603610a3557868403610a27575093506106b192505050565b83610a318161226d565b9450505b5080610a408161226d565b9150506109a8565b5060405162461bcd60e51b815260206004820152602e60248201527f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060448201526d0deeedccae440c4f240d2dcc8caf60931b60648201526084016106e1565b6007546001600160a01b03163314610ad25760405162461bcd60e51b81526004016106e1906121e8565b6040514790600090339083908381818185875af1925050503d8060008114610b16576040519150601f19603f3d011682016040523d82523d6000602084013e610b1b565b606091505b5050905080610b5d5760405162461bcd60e51b815260206004820152600e60248201526d11985a5b1959081d1bc81cd95b9960921b60448201526064016106e1565b5050565b6007546001600160a01b03163314610b8b5760405162461bcd60e51b81526004016106e1906121e8565b6009546001600160a01b0316ff5b61092c838383604051806020016040528060008152506110df565b600080548210610c125760405162461bcd60e51b815260206004820152602360248201527f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f756044820152626e647360e81b60648201526084016106e1565b5090565b6007546001600160a01b03163314610c405760405162461bcd60e51b81526004016106e1906121e8565b8051610b5d906008906020840190611de3565b6000610c5e826117d9565b5192915050565b60088054610c729061221d565b80601f0160208091040260200160405190810160405280929190818152602001828054610c9e9061221d565b8015610ceb5780601f10610cc057610100808354040283529160200191610ceb565b820191906000526020600020905b815481529060010190602001808311610cce57829003601f168201915b505050505081565b60006001600160a01b038216610d5f5760405162461bcd60e51b815260206004820152602b60248201527f455243373231413a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b60648201526084016106e1565b506001600160a01b03166000908152600460205260409020546001600160801b031690565b6007546001600160a01b03163314610dae5760405162461bcd60e51b81526004016106e1906121e8565b610db860006118b9565b565b60008111610dc757600080fd5b600b55565b60606002805461070c9061221d565b600c54339060ff1615610e195760405162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b60448201526064016106e1565b81610e2360005490565b610e2d9190612286565b6115b31015610e735760405162461bcd60e51b815260206004820152601260248201527145786365656473206d617820737570706c7960701b60448201526064016106e1565b60008211610eb05760405162461bcd60e51b815260206004820152600a6024820152694e6f2030206d696e747360b01b60448201526064016106e1565b6005821115610ef35760405162461bcd60e51b815260206004820152600f60248201526e4d696e74204c696d6974206973203560881b60448201526064016106e1565b6001600160a01b0381166000908152600a6020526040902054600590610f1a908490612286565b1115610f5f5760405162461bcd60e51b81526020600482015260146024820152734d6178204d696e74204c696d697420697320352160601b60448201526064016106e1565b61115c610f6b60005490565b1115610fe35734600b5483610f80919061229e565b14610fe35760405162461bcd60e51b815260206004820152602d60248201527f496e76616c69642066756e64732070726f76696465642c20467265652073757060448201526c1c1b1e48195e1a58d959591959609a1b60648201526084016106e1565b6001600160a01b0381166000908152600a60205260408120805484929061100b908490612286565b90915550610b5d9050818361190b565b336001600160a01b038316036110735760405162461bcd60e51b815260206004820152601a60248201527f455243373231413a20617070726f766520746f2063616c6c657200000000000060448201526064016106e1565b3360008181526006602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6110ea848484611492565b6110f684848484611925565b6111125760405162461bcd60e51b81526004016106e1906122bd565b50505050565b6060611125826000541190565b6111695760405162461bcd60e51b81526020600482015260156024820152742a37b5b2b7103237b2b9903737ba1032bc34b9ba1760591b60448201526064016106e1565b6000600880546111789061221d565b90501161119457604051806020016040528060008152506106b1565b600861119f83611a26565b60405180604001604052806005815260200164173539b7b760d91b8152506040516020016111cf9392919061232c565b60405160208183030381529060405292915050565b6007546001600160a01b0316331461120e5760405162461bcd60e51b81526004016106e1906121e8565b8161121860005490565b6112229190612286565b6115b310156112685760405162461bcd60e51b815260206004820152601260248201527145786365656473206d617820737570706c7960701b60448201526064016106e1565b600082116112a55760405162461bcd60e51b815260206004820152600a6024820152694e6f2030206d696e747360b01b60448201526064016106e1565b60005b8281101561092c576112ba828461190b565b806112c48161226d565b9150506112a8565b60405163c455279160e01b81526001600160a01b03838116600483015260009173a5409ec958c83c3f309868babaca7c86dcb077c191841690829063c455279190602401602060405180830381865afa15801561132d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135191906123dc565b6001600160a01b0316036113695760019150506106b1565b6001600160a01b0380851660009081526006602090815260408083209387168352929052205460ff165b949350505050565b6007546001600160a01b031633146113c55760405162461bcd60e51b81526004016106e1906121e8565b6001600160a01b03811661142a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106e1565b611433816118b9565b50565b60008281526005602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b600061149d826117d9565b80519091506000906001600160a01b0316336001600160a01b031614806114d45750336114c98461078f565b6001600160a01b0316145b806114e6575081516114e690336112cc565b9050806115505760405162461bcd60e51b815260206004820152603260248201527f455243373231413a207472616e736665722063616c6c6572206973206e6f74206044820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b60648201526084016106e1565b846001600160a01b031682600001516001600160a01b0316146115c45760405162461bcd60e51b815260206004820152602660248201527f455243373231413a207472616e736665722066726f6d20696e636f72726563746044820152651037bbb732b960d11b60648201526084016106e1565b6001600160a01b0384166116285760405162461bcd60e51b815260206004820152602560248201527f455243373231413a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b60648201526084016106e1565b6116386000848460000151611436565b6001600160a01b03858116600090815260046020908152604080832080546fffffffffffffffffffffffffffffffff198082166001600160801b03928316600019018316179092558986168086528386208054938416938316600190810190931693909317909255825180840184529182524267ffffffffffffffff9081168386019081528a8752600390955292852091518254945196166001600160e01b031990941693909317600160a01b959092169490940217909255906116fd908590612286565b6000818152600360205260409020549091506001600160a01b031661178f57611727816000541190565b1561178f5760408051808201825284516001600160a01b03908116825260208087015167ffffffffffffffff9081168285019081526000878152600390935294909120925183549451909116600160a01b026001600160e01b03199094169116179190911790555b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b505050505050565b60408051808201909152600080825260208201526117f8826000541190565b6118575760405162461bcd60e51b815260206004820152602a60248201527f455243373231413a206f776e657220717565727920666f72206e6f6e657869736044820152693a32b73a103a37b5b2b760b11b60648201526084016106e1565b815b6000818152600360209081526040918290208251808401909352546001600160a01b038116808452600160a01b90910467ffffffffffffffff1691830191909152156118a6579392505050565b50806118b1816123f9565b915050611859565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b610b5d828260405180602001604052806000815250611b27565b60006001600160a01b0384163b15611a1b57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611969903390899088908890600401612410565b6020604051808303816000875af19250505080156119a4575060408051601f3d908101601f191682019092526119a191810190612443565b60015b611a01573d8080156119d2576040519150601f19603f3d011682016040523d82523d6000602084013e6119d7565b606091505b5080516000036119f95760405162461bcd60e51b81526004016106e1906122bd565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611393565b506001949350505050565b606081600003611a4d5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611a775780611a618161226d565b9150611a709050600a83612476565b9150611a51565b60008167ffffffffffffffff811115611a9257611a92612000565b6040519080825280601f01601f191660200182016040528015611abc576020820181803683370190505b5090505b841561139357611ad160018361248a565b9150611ade600a866124a1565b611ae9906030612286565b60f81b818381518110611afe57611afe6124b5565b60200101906001600160f81b031916908160001a905350611b20600a86612476565b9450611ac0565b6000546001600160a01b038416611b8a5760405162461bcd60e51b815260206004820152602160248201527f455243373231413a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b60648201526084016106e1565b611b95816000541190565b15611be25760405162461bcd60e51b815260206004820152601d60248201527f455243373231413a20746f6b656e20616c7265616479206d696e74656400000060448201526064016106e1565b60008311611c3e5760405162461bcd60e51b815260206004820152602360248201527f455243373231413a207175616e74697479206d7573742062652067726561746560448201526207220360ec1b60648201526084016106e1565b6001600160a01b0384166000908152600460209081526040918290208251808401845290546001600160801b038082168352600160801b9091041691810191909152815180830190925280519091908190611c9a9087906124cb565b6001600160801b03168152602001858360200151611cb891906124cb565b6001600160801b039081169091526001600160a01b0380881660008181526004602090815260408083208751978301518716600160801b0297909616969096179094558451808601865291825267ffffffffffffffff4281168386019081528883526003909552948120915182549451909516600160a01b026001600160e01b031990941694909216939093179190911790915582905b85811015611dd85760405182906001600160a01b038916906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4611d9c6000888488611925565b611db85760405162461bcd60e51b81526004016106e1906122bd565b81611dc28161226d565b9250508080611dd09061226d565b915050611d4f565b5060008190556117d1565b828054611def9061221d565b90600052602060002090601f016020900481019282611e115760008555611e57565b82601f10611e2a57805160ff1916838001178555611e57565b82800160010185558215611e57579182015b82811115611e57578251825591602001919060010190611e3c565b50610c129291505b80821115610c125760008155600101611e5f565b6001600160e01b03198116811461143357600080fd5b600060208284031215611e9b57600080fd5b8135611ea681611e73565b9392505050565b80358015158114611ebd57600080fd5b919050565b600060208284031215611ed457600080fd5b611ea682611ead565b60005b83811015611ef8578181015183820152602001611ee0565b838111156111125750506000910152565b60008151808452611f21816020860160208601611edd565b601f01601f19169290920160200192915050565b602081526000611ea66020830184611f09565b600060208284031215611f5a57600080fd5b5035919050565b6001600160a01b038116811461143357600080fd5b60008060408385031215611f8957600080fd5b8235611f9481611f61565b946020939093013593505050565b600060208284031215611fb457600080fd5b8135611ea681611f61565b600080600060608486031215611fd457600080fd5b8335611fdf81611f61565b92506020840135611fef81611f61565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff8084111561203157612031612000565b604051601f8501601f19908116603f0116810190828211818310171561205957612059612000565b8160405280935085815286868601111561207257600080fd5b858560208301376000602087830101525050509392505050565b60006020828403121561209e57600080fd5b813567ffffffffffffffff8111156120b557600080fd5b8201601f810184136120c657600080fd5b61139384823560208401612016565b600080604083850312156120e857600080fd5b82356120f381611f61565b915061210160208401611ead565b90509250929050565b6000806000806080858703121561212057600080fd5b843561212b81611f61565b9350602085013561213b81611f61565b925060408501359150606085013567ffffffffffffffff81111561215e57600080fd5b8501601f8101871361216f57600080fd5b61217e87823560208401612016565b91505092959194509250565b6000806040838503121561219d57600080fd5b8235915060208301356121af81611f61565b809150509250929050565b600080604083850312156121cd57600080fd5b82356121d881611f61565b915060208301356121af81611f61565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c9082168061223157607f821691505b60208210810361225157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60006001820161227f5761227f612257565b5060010190565b6000821982111561229957612299612257565b500190565b60008160001904831182151516156122b8576122b8612257565b500290565b60208082526033908201527f455243373231413a207472616e7366657220746f206e6f6e204552433732315260408201527232b1b2b4bb32b91034b6b83632b6b2b73a32b960691b606082015260800190565b60008151612322818560208601611edd565b9290920192915050565b600080855481600182811c91508083168061234857607f831692505b6020808410820361236757634e487b7160e01b86526022600452602486fd5b81801561237b576001811461238c576123b9565b60ff198616895284890196506123b9565b60008c81526020902060005b868110156123b15781548b820152908501908301612398565b505084890196505b5050505050506123d26123cc8287612310565b85612310565b9695505050505050565b6000602082840312156123ee57600080fd5b8151611ea681611f61565b60008161240857612408612257565b506000190190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906123d290830184611f09565b60006020828403121561245557600080fd5b8151611ea681611e73565b634e487b7160e01b600052601260045260246000fd5b60008261248557612485612460565b500490565b60008282101561249c5761249c612257565b500390565b6000826124b0576124b0612460565b500690565b634e487b7160e01b600052603260045260246000fd5b60006001600160801b038083168185168083038211156124ed576124ed612257565b0194935050505056fea264697066735822122037e8619f7f04fc38ac21bd93e04ec60f10f6092ecd0ef9c0590a585a182b1b9264736f6c634300080d0033

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.