ETH Price: $2,721.56 (+0.61%)

Token

sudo sunday (SUSU)
 

Overview

Max Total Supply

1,000 SUSU

Holders

27

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A

Other Info

0xcfff9d4fc0dca2c94f02a1ccacb265fef9de7c37
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:
Sunday

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 1000000 runs

Other Settings:
default evmVersion
File 1 of 5 : Sunday.sol
import {ERC2981} from "@openzeppelin/contracts/token/common/ERC2981.sol";

// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;

/// @notice Minimalist and gas efficient standard ERC1155 implementation.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC1155.sol)
abstract contract ERC1155 is ERC2981 {
    /*//////////////////////////////////////////////////////////////
                                 EVENTS
    //////////////////////////////////////////////////////////////*/

    event TransferSingle(
        address indexed operator,
        address indexed from,
        address indexed to,
        uint256 id,
        uint256 amount
    );

    event TransferBatch(
        address indexed operator,
        address indexed from,
        address indexed to,
        uint256[] ids,
        uint256[] amounts
    );

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

    event URI(string value, uint256 indexed id);

    /*//////////////////////////////////////////////////////////////
                             ERC1155 STORAGE
    //////////////////////////////////////////////////////////////*/

    mapping(address => mapping(uint256 => uint256)) public balanceOf;

    mapping(address => mapping(address => bool)) public isApprovedForAll;

    /*//////////////////////////////////////////////////////////////
                             METADATA LOGIC
    //////////////////////////////////////////////////////////////*/

    function uri(uint256 id) public view virtual returns (string memory);

    /*//////////////////////////////////////////////////////////////
                              ERC1155 LOGIC
    //////////////////////////////////////////////////////////////*/

    function setApprovalForAll(address operator, bool approved) public virtual {
        isApprovedForAll[msg.sender][operator] = approved;

        emit ApprovalForAll(msg.sender, operator, approved);
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes calldata data
    ) public virtual {
        require(
            msg.sender == from || isApprovedForAll[from][msg.sender],
            "NOT_AUTHORIZED"
        );

        balanceOf[from][id] -= amount;
        balanceOf[to][id] += amount;

        emit TransferSingle(msg.sender, from, to, id, amount);

        require(
            to.code.length == 0
                ? to != address(0)
                : ERC1155TokenReceiver(to).onERC1155Received(
                    msg.sender,
                    from,
                    id,
                    amount,
                    data
                ) == ERC1155TokenReceiver.onERC1155Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] calldata ids,
        uint256[] calldata amounts,
        bytes calldata data
    ) public virtual {
        require(ids.length == amounts.length, "LENGTH_MISMATCH");

        require(
            msg.sender == from || isApprovedForAll[from][msg.sender],
            "NOT_AUTHORIZED"
        );

        // Storing these outside the loop saves ~15 gas per iteration.
        uint256 id;
        uint256 amount;

        for (uint256 i = 0; i < ids.length; ) {
            id = ids[i];
            amount = amounts[i];

            balanceOf[from][id] -= amount;
            balanceOf[to][id] += amount;

            // An array can't have a total length
            // larger than the max uint256 value.
            unchecked {
                ++i;
            }
        }

        emit TransferBatch(msg.sender, from, to, ids, amounts);

        require(
            to.code.length == 0
                ? to != address(0)
                : ERC1155TokenReceiver(to).onERC1155BatchReceived(
                    msg.sender,
                    from,
                    ids,
                    amounts,
                    data
                ) == ERC1155TokenReceiver.onERC1155BatchReceived.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function balanceOfBatch(
        address[] calldata owners,
        uint256[] calldata ids
    ) public view virtual returns (uint256[] memory balances) {
        require(owners.length == ids.length, "LENGTH_MISMATCH");

        balances = new uint256[](owners.length);

        // Unchecked because the only math done is incrementing
        // the array index counter which cannot possibly overflow.
        unchecked {
            for (uint256 i = 0; i < owners.length; ++i) {
                balances[i] = balanceOf[owners[i]][ids[i]];
            }
        }
    }

    /*//////////////////////////////////////////////////////////////
                              ERC165 LOGIC
    //////////////////////////////////////////////////////////////*/

    function supportsInterface(
        bytes4 interfaceId
    ) public view override returns (bool) {
        return
            interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165
            interfaceId == 0xd9b67a26 || // ERC165 Interface ID for ERC1155
            interfaceId == 0x0e89341c || // ERC165 Interface ID for ERC1155MetadataURI
            super.supportsInterface(interfaceId); // ERC2981 interface
    }

    /*//////////////////////////////////////////////////////////////
                        INTERNAL MINT/BURN LOGIC
    //////////////////////////////////////////////////////////////*/

    function _mint(
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) internal virtual {
        balanceOf[to][id] += amount;

        emit TransferSingle(msg.sender, address(0), to, id, amount);

        require(
            to.code.length == 0
                ? to != address(0)
                : ERC1155TokenReceiver(to).onERC1155Received(
                    msg.sender,
                    address(0),
                    id,
                    amount,
                    data
                ) == ERC1155TokenReceiver.onERC1155Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function _batchMint(
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) internal virtual {
        uint256 idsLength = ids.length; // Saves MLOADs.

        require(idsLength == amounts.length, "LENGTH_MISMATCH");

        for (uint256 i = 0; i < idsLength; ) {
            balanceOf[to][ids[i]] += amounts[i];

            // An array can't have a total length
            // larger than the max uint256 value.
            unchecked {
                ++i;
            }
        }

        emit TransferBatch(msg.sender, address(0), to, ids, amounts);

        require(
            to.code.length == 0
                ? to != address(0)
                : ERC1155TokenReceiver(to).onERC1155BatchReceived(
                    msg.sender,
                    address(0),
                    ids,
                    amounts,
                    data
                ) == ERC1155TokenReceiver.onERC1155BatchReceived.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function _batchBurn(
        address from,
        uint256[] memory ids,
        uint256[] memory amounts
    ) internal virtual {
        uint256 idsLength = ids.length; // Saves MLOADs.

        require(idsLength == amounts.length, "LENGTH_MISMATCH");

        for (uint256 i = 0; i < idsLength; ) {
            balanceOf[from][ids[i]] -= amounts[i];

            // An array can't have a total length
            // larger than the max uint256 value.
            unchecked {
                ++i;
            }
        }

        emit TransferBatch(msg.sender, from, address(0), ids, amounts);
    }

    function _burn(address from, uint256 id, uint256 amount) internal virtual {
        balanceOf[from][id] -= amount;

        emit TransferSingle(msg.sender, from, address(0), id, amount);
    }
}

/// @notice A generic interface for a contract which properly accepts ERC1155 tokens.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC1155.sol)
abstract contract ERC1155TokenReceiver {
    function onERC1155Received(
        address,
        address,
        uint256,
        uint256,
        bytes calldata
    ) external virtual returns (bytes4) {
        return ERC1155TokenReceiver.onERC1155Received.selector;
    }

    function onERC1155BatchReceived(
        address,
        address,
        uint256[] calldata,
        uint256[] calldata,
        bytes calldata
    ) external virtual returns (bytes4) {
        return ERC1155TokenReceiver.onERC1155BatchReceived.selector;
    }
}

contract Sunday is ERC1155 {
    constructor() {
        _mint(0x75d4bdBf6593ed463e9625694272a0FF9a6D346F, 0, 1000, "");
        _setDefaultRoyalty(0x75d4bdBf6593ed463e9625694272a0FF9a6D346F, 50);
    }

    function uri(uint256) public pure override returns (string memory) {
        return "ipfs://QmUuTx8XX7TKGpeDzvyKxrE86JpUWayj2gEc6MJixxMhW5";
    }

    function name() public pure returns (string memory) {
        return "sudo sunday";
    }

    function symbol() public pure returns (string memory) {
        return "SUSU";
    }
}

File 2 of 5 : ERC2981.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (token/common/ERC2981.sol)

pragma solidity ^0.8.0;

import "../../interfaces/IERC2981.sol";
import "../../utils/introspection/ERC165.sol";

/**
 * @dev Implementation of the NFT Royalty Standard, a standardized way to retrieve royalty payment information.
 *
 * Royalty information can be specified globally for all token ids via {_setDefaultRoyalty}, and/or individually for
 * specific token ids via {_setTokenRoyalty}. The latter takes precedence over the first.
 *
 * Royalty is specified as a fraction of sale price. {_feeDenominator} is overridable but defaults to 10000, meaning the
 * fee is specified in basis points by default.
 *
 * IMPORTANT: ERC-2981 only specifies a way to signal royalty information and does not enforce its payment. See
 * https://eips.ethereum.org/EIPS/eip-2981#optional-royalty-payments[Rationale] in the EIP. Marketplaces are expected to
 * voluntarily pay royalties together with sales, but note that this standard is not yet widely supported.
 *
 * _Available since v4.5._
 */
abstract contract ERC2981 is IERC2981, ERC165 {
    struct RoyaltyInfo {
        address receiver;
        uint96 royaltyFraction;
    }

    RoyaltyInfo private _defaultRoyaltyInfo;
    mapping(uint256 => RoyaltyInfo) private _tokenRoyaltyInfo;

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

    /**
     * @inheritdoc IERC2981
     */
    function royaltyInfo(uint256 _tokenId, uint256 _salePrice) public view virtual override returns (address, uint256) {
        RoyaltyInfo memory royalty = _tokenRoyaltyInfo[_tokenId];

        if (royalty.receiver == address(0)) {
            royalty = _defaultRoyaltyInfo;
        }

        uint256 royaltyAmount = (_salePrice * royalty.royaltyFraction) / _feeDenominator();

        return (royalty.receiver, royaltyAmount);
    }

    /**
     * @dev The denominator with which to interpret the fee set in {_setTokenRoyalty} and {_setDefaultRoyalty} as a
     * fraction of the sale price. Defaults to 10000 so fees are expressed in basis points, but may be customized by an
     * override.
     */
    function _feeDenominator() internal pure virtual returns (uint96) {
        return 10000;
    }

    /**
     * @dev Sets the royalty information that all ids in this contract will default to.
     *
     * Requirements:
     *
     * - `receiver` cannot be the zero address.
     * - `feeNumerator` cannot be greater than the fee denominator.
     */
    function _setDefaultRoyalty(address receiver, uint96 feeNumerator) internal virtual {
        require(feeNumerator <= _feeDenominator(), "ERC2981: royalty fee will exceed salePrice");
        require(receiver != address(0), "ERC2981: invalid receiver");

        _defaultRoyaltyInfo = RoyaltyInfo(receiver, feeNumerator);
    }

    /**
     * @dev Removes default royalty information.
     */
    function _deleteDefaultRoyalty() internal virtual {
        delete _defaultRoyaltyInfo;
    }

    /**
     * @dev Sets the royalty information for a specific token id, overriding the global default.
     *
     * Requirements:
     *
     * - `receiver` cannot be the zero address.
     * - `feeNumerator` cannot be greater than the fee denominator.
     */
    function _setTokenRoyalty(
        uint256 tokenId,
        address receiver,
        uint96 feeNumerator
    ) internal virtual {
        require(feeNumerator <= _feeDenominator(), "ERC2981: royalty fee will exceed salePrice");
        require(receiver != address(0), "ERC2981: Invalid parameters");

        _tokenRoyaltyInfo[tokenId] = RoyaltyInfo(receiver, feeNumerator);
    }

    /**
     * @dev Resets royalty information for the token id back to the global default.
     */
    function _resetTokenRoyalty(uint256 tokenId) internal virtual {
        delete _tokenRoyaltyInfo[tokenId];
    }
}

File 3 of 5 : IERC2981.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.0) (interfaces/IERC2981.sol)

pragma solidity ^0.8.0;

import "../utils/introspection/IERC165.sol";

/**
 * @dev Interface for the NFT Royalty Standard.
 *
 * A standardized way to retrieve royalty payment information for non-fungible tokens (NFTs) to enable universal
 * support for royalty payments across all NFT marketplaces and ecosystem participants.
 *
 * _Available since v4.5._
 */
interface IERC2981 is IERC165 {
    /**
     * @dev Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of
     * exchange. The royalty amount is denominated and should be paid in that same unit of exchange.
     */
    function royaltyInfo(uint256 tokenId, uint256 salePrice)
        external
        view
        returns (address receiver, uint256 royaltyAmount);
}

File 4 of 5 : ERC165.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)

pragma solidity ^0.8.0;

import "./IERC165.sol";

/**
 * @dev Implementation of the {IERC165} interface.
 *
 * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check
 * for the additional interface id that will be supported. For example:
 *
 * ```solidity
 * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
 *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);
 * }
 * ```
 *
 * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.
 */
abstract contract ERC165 is IERC165 {
    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}

File 5 of 5 : IERC165.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC165 standard, as defined in the
 * https://eips.ethereum.org/EIPS/eip-165[EIP].
 *
 * Implementers can declare support of contract interfaces, which can then be
 * queried by others ({ERC165Checker}).
 *
 * For an implementation, see {ERC165}.
 */
interface IERC165 {
    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`. See the corresponding
     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
     * to learn more about how these ids are created.
     *
     * This function call must use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

Settings
{
  "remappings": [
    "@manifoldxyz/=lib/",
    "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
    "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
    "@prb/math/=lib/prb-math/src/",
    "clones-with-immutable-args/=lib/clones-with-immutable-args/src/",
    "create3-factory/=lib/create3-factory/src/",
    "ds-test/=lib/clones-with-immutable-args/lib/ds-test/src/",
    "forge-std/=lib/forge-std/src/",
    "foundry-huff/=lib/foundry-huff/src/",
    "huffmate/=lib/huffmate/src/",
    "manifoldxyz/=lib/royalty-registry-solidity/contracts/",
    "solmate/=lib/solmate/src/",
    "stringutils/=lib/foundry-huff/lib/solidity-stringutils/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 1000000
  },
  "metadata": {
    "bytecodeHash": "ipfs",
    "appendCBOR": true
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "paris",
  "libraries": {}
}

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":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"owners","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"balances","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"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":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"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":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"}]

60806040523480156200001157600080fd5b506200004c7375d4bdbf6593ed463e9625694272a0ff9a6d346f60006103e8604051806020016040528060008152506200007360201b60201c565b6200006d7375d4bdbf6593ed463e9625694272a0ff9a6d346f6032620001ef565b620003c5565b6001600160a01b038416600090815260026020908152604080832086845290915281208054849290620000a8908490620002f0565b909155505060408051848152602081018490526001600160a01b0386169160009133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46001600160a01b0384163b15620001975760405163f23a6e6160e01b808252906001600160a01b0386169063f23a6e61906200014090339060009089908990899060040162000318565b6020604051808303816000875af115801562000160573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000186919062000392565b6001600160e01b03191614620001a4565b6001600160a01b03841615155b620001e95760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b60448201526064015b60405180910390fd5b50505050565b6127106001600160601b03821611156200025f5760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b6064820152608401620001e0565b6001600160a01b038216620002b75760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c6964207265636569766572000000000000006044820152606401620001e0565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600055565b808201808211156200031257634e487b7160e01b600052601160045260246000fd5b92915050565b600060018060a01b03808816835260208188168185015286604085015285606085015260a06080850152845191508160a085015260005b828110156200036d5785810182015185820160c0015281016200034f565b5050600060c0828501015260c0601f19601f8301168401019150509695505050505050565b600060208284031215620003a557600080fd5b81516001600160e01b031981168114620003be57600080fd5b9392505050565b61159580620003d56000396000f3fe608060405234801561001057600080fd5b50600436106100c85760003560e01c80632eb2c2d611610081578063a22cb4651161005b578063a22cb46514610230578063e985e9c514610243578063f242432a1461027157600080fd5b80632eb2c2d6146101c25780634e1273f4146101d757806395d89b41146101f757600080fd5b806306fdde03116100b257806306fdde031461012e5780630e89341c146101705780632a55205a1461018357600080fd5b8062fdd58e146100cd57806301ffc9a71461010b575b600080fd5b6100f86100db366004610e65565b600260209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b61011e610119366004610ec0565b610284565b6040519015158152602001610102565b60408051808201909152600b81527f7375646f2073756e64617900000000000000000000000000000000000000000060208201525b6040516101029190610ee4565b61016361017e366004610f50565b610378565b610196610191366004610f69565b610399565b6040805173ffffffffffffffffffffffffffffffffffffffff9093168352602083019190915201610102565b6101d56101d0366004611012565b610492565b005b6101ea6101e53660046110cd565b61088c565b6040516101029190611139565b60408051808201909152600481527f53555355000000000000000000000000000000000000000000000000000000006020820152610163565b6101d561023e36600461117d565b610a04565b61011e6102513660046111b9565b600360209081526000928352604080842090915290825290205460ff1681565b6101d561027f3660046111ec565b610a9b565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061031757507fd9b67a26000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b8061036357507f0e89341c000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b80610372575061037282610da5565b92915050565b606060405180606001604052806035815260200161152b6035913992915050565b600082815260016020908152604080832081518083019092525473ffffffffffffffffffffffffffffffffffffffff8116808352740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff1692820192909252829161045457506040805180820190915260005473ffffffffffffffffffffffffffffffffffffffff811682527401000000000000000000000000000000000000000090046bffffffffffffffffffffffff1660208201525b602081015160009061271090610478906bffffffffffffffffffffffff1687611293565b61048291906112aa565b91519350909150505b9250929050565b848314610500576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4c454e4754485f4d49534d41544348000000000000000000000000000000000060448201526064015b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff89161480610554575073ffffffffffffffffffffffffffffffffffffffff8816600090815260036020908152604080832033845290915290205460ff165b6105ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064016104f7565b60008060005b87811015610693578888828181106105da576105da6112e5565b9050602002013592508686828181106105f5576105f56112e5565b73ffffffffffffffffffffffffffffffffffffffff8e16600090815260026020908152604080832089845282528220805493909102949094013595508593925090610641908490611314565b909155505073ffffffffffffffffffffffffffffffffffffffff8a16600090815260026020908152604080832086845290915281208054849290610686908490611327565b90915550506001016105c0565b508873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8b8b8b8b60405161070e9493929190611385565b60405180910390a473ffffffffffffffffffffffffffffffffffffffff89163b15610800576040517fbc197c81000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff8b169063bc197c81906107959033908f908e908e908e908e908e908e90600401611400565b6020604051808303816000875af11580156107b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d89190611471565b7fffffffff00000000000000000000000000000000000000000000000000000000161461081a565b73ffffffffffffffffffffffffffffffffffffffff891615155b610880576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e540000000000000000000000000000000060448201526064016104f7565b50505050505050505050565b60608382146108f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4c454e4754485f4d49534d41544348000000000000000000000000000000000060448201526064016104f7565b8367ffffffffffffffff8111156109105761091061148e565b604051908082528060200260200182016040528015610939578160200160208202803683370190505b50905060005b848110156109fb576002600087878481811061095d5761095d6112e5565b905060200201602081019061097291906114bd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008585848181106109c0576109c06112e5565b905060200201358152602001908152602001600020548282815181106109e8576109e86112e5565b602090810291909101015260010161093f565b50949350505050565b33600081815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b3373ffffffffffffffffffffffffffffffffffffffff87161480610aef575073ffffffffffffffffffffffffffffffffffffffff8616600090815260036020908152604080832033845290915290205460ff165b610b55576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064016104f7565b73ffffffffffffffffffffffffffffffffffffffff8616600090815260026020908152604080832087845290915281208054859290610b95908490611314565b909155505073ffffffffffffffffffffffffffffffffffffffff8516600090815260026020908152604080832087845290915281208054859290610bda908490611327565b9091555050604080518581526020810185905273ffffffffffffffffffffffffffffffffffffffff808816929089169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a473ffffffffffffffffffffffffffffffffffffffff85163b15610d1d576040517ff23a6e61000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff87169063f23a6e6190610cb29033908b908a908a908a908a906004016114d8565b6020604051808303816000875af1158015610cd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf59190611471565b7fffffffff000000000000000000000000000000000000000000000000000000001614610d37565b73ffffffffffffffffffffffffffffffffffffffff851615155b610d9d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e540000000000000000000000000000000060448201526064016104f7565b505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f2a55205a00000000000000000000000000000000000000000000000000000000148061037257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610372565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e6057600080fd5b919050565b60008060408385031215610e7857600080fd5b610e8183610e3c565b946020939093013593505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610ebd57600080fd5b50565b600060208284031215610ed257600080fd5b8135610edd81610e8f565b9392505050565b600060208083528351808285015260005b81811015610f1157858101830151858201604001528201610ef5565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b600060208284031215610f6257600080fd5b5035919050565b60008060408385031215610f7c57600080fd5b50508035926020909101359150565b60008083601f840112610f9d57600080fd5b50813567ffffffffffffffff811115610fb557600080fd5b6020830191508360208260051b850101111561048b57600080fd5b60008083601f840112610fe257600080fd5b50813567ffffffffffffffff811115610ffa57600080fd5b60208301915083602082850101111561048b57600080fd5b60008060008060008060008060a0898b03121561102e57600080fd5b61103789610e3c565b975061104560208a01610e3c565b9650604089013567ffffffffffffffff8082111561106257600080fd5b61106e8c838d01610f8b565b909850965060608b013591508082111561108757600080fd5b6110938c838d01610f8b565b909650945060808b01359150808211156110ac57600080fd5b506110b98b828c01610fd0565b999c989b5096995094979396929594505050565b600080600080604085870312156110e357600080fd5b843567ffffffffffffffff808211156110fb57600080fd5b61110788838901610f8b565b9096509450602087013591508082111561112057600080fd5b5061112d87828801610f8b565b95989497509550505050565b6020808252825182820181905260009190848201906040850190845b8181101561117157835183529284019291840191600101611155565b50909695505050505050565b6000806040838503121561119057600080fd5b61119983610e3c565b9150602083013580151581146111ae57600080fd5b809150509250929050565b600080604083850312156111cc57600080fd5b6111d583610e3c565b91506111e360208401610e3c565b90509250929050565b60008060008060008060a0878903121561120557600080fd5b61120e87610e3c565b955061121c60208801610e3c565b94506040870135935060608701359250608087013567ffffffffffffffff81111561124657600080fd5b61125289828a01610fd0565b979a9699509497509295939492505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761037257610372611264565b6000826112e0577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8181038181111561037257610372611264565b8082018082111561037257610372611264565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561136c57600080fd5b8260051b80836020870137939093016020019392505050565b60408152600061139960408301868861133a565b82810360208401526113ac81858761133a565b979650505050505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808b168352808a1660208401525060a0604083015261143a60a08301888a61133a565b828103606084015261144d81878961133a565b905082810360808401526114628185876113b7565b9b9a5050505050505050505050565b60006020828403121561148357600080fd5b8151610edd81610e8f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156114cf57600080fd5b610edd82610e3c565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015260a0608083015261151e60a0830184866113b7565b9897505050505050505056fe697066733a2f2f516d5575547838585837544b477065447a76794b78724538364a70555761796a32674563364d4a6978784d685735a2646970667358221220cee8e1696065e9c99e4516aeec54a782012fbdf98dbcd5b5c63aea49cae4842a64736f6c63430008140033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100c85760003560e01c80632eb2c2d611610081578063a22cb4651161005b578063a22cb46514610230578063e985e9c514610243578063f242432a1461027157600080fd5b80632eb2c2d6146101c25780634e1273f4146101d757806395d89b41146101f757600080fd5b806306fdde03116100b257806306fdde031461012e5780630e89341c146101705780632a55205a1461018357600080fd5b8062fdd58e146100cd57806301ffc9a71461010b575b600080fd5b6100f86100db366004610e65565b600260209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b61011e610119366004610ec0565b610284565b6040519015158152602001610102565b60408051808201909152600b81527f7375646f2073756e64617900000000000000000000000000000000000000000060208201525b6040516101029190610ee4565b61016361017e366004610f50565b610378565b610196610191366004610f69565b610399565b6040805173ffffffffffffffffffffffffffffffffffffffff9093168352602083019190915201610102565b6101d56101d0366004611012565b610492565b005b6101ea6101e53660046110cd565b61088c565b6040516101029190611139565b60408051808201909152600481527f53555355000000000000000000000000000000000000000000000000000000006020820152610163565b6101d561023e36600461117d565b610a04565b61011e6102513660046111b9565b600360209081526000928352604080842090915290825290205460ff1681565b6101d561027f3660046111ec565b610a9b565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061031757507fd9b67a26000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b8061036357507f0e89341c000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b80610372575061037282610da5565b92915050565b606060405180606001604052806035815260200161152b6035913992915050565b600082815260016020908152604080832081518083019092525473ffffffffffffffffffffffffffffffffffffffff8116808352740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff1692820192909252829161045457506040805180820190915260005473ffffffffffffffffffffffffffffffffffffffff811682527401000000000000000000000000000000000000000090046bffffffffffffffffffffffff1660208201525b602081015160009061271090610478906bffffffffffffffffffffffff1687611293565b61048291906112aa565b91519350909150505b9250929050565b848314610500576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4c454e4754485f4d49534d41544348000000000000000000000000000000000060448201526064015b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff89161480610554575073ffffffffffffffffffffffffffffffffffffffff8816600090815260036020908152604080832033845290915290205460ff165b6105ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064016104f7565b60008060005b87811015610693578888828181106105da576105da6112e5565b9050602002013592508686828181106105f5576105f56112e5565b73ffffffffffffffffffffffffffffffffffffffff8e16600090815260026020908152604080832089845282528220805493909102949094013595508593925090610641908490611314565b909155505073ffffffffffffffffffffffffffffffffffffffff8a16600090815260026020908152604080832086845290915281208054849290610686908490611327565b90915550506001016105c0565b508873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8b8b8b8b60405161070e9493929190611385565b60405180910390a473ffffffffffffffffffffffffffffffffffffffff89163b15610800576040517fbc197c81000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff8b169063bc197c81906107959033908f908e908e908e908e908e908e90600401611400565b6020604051808303816000875af11580156107b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d89190611471565b7fffffffff00000000000000000000000000000000000000000000000000000000161461081a565b73ffffffffffffffffffffffffffffffffffffffff891615155b610880576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e540000000000000000000000000000000060448201526064016104f7565b50505050505050505050565b60608382146108f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4c454e4754485f4d49534d41544348000000000000000000000000000000000060448201526064016104f7565b8367ffffffffffffffff8111156109105761091061148e565b604051908082528060200260200182016040528015610939578160200160208202803683370190505b50905060005b848110156109fb576002600087878481811061095d5761095d6112e5565b905060200201602081019061097291906114bd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008585848181106109c0576109c06112e5565b905060200201358152602001908152602001600020548282815181106109e8576109e86112e5565b602090810291909101015260010161093f565b50949350505050565b33600081815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b3373ffffffffffffffffffffffffffffffffffffffff87161480610aef575073ffffffffffffffffffffffffffffffffffffffff8616600090815260036020908152604080832033845290915290205460ff165b610b55576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064016104f7565b73ffffffffffffffffffffffffffffffffffffffff8616600090815260026020908152604080832087845290915281208054859290610b95908490611314565b909155505073ffffffffffffffffffffffffffffffffffffffff8516600090815260026020908152604080832087845290915281208054859290610bda908490611327565b9091555050604080518581526020810185905273ffffffffffffffffffffffffffffffffffffffff808816929089169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a473ffffffffffffffffffffffffffffffffffffffff85163b15610d1d576040517ff23a6e61000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff87169063f23a6e6190610cb29033908b908a908a908a908a906004016114d8565b6020604051808303816000875af1158015610cd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf59190611471565b7fffffffff000000000000000000000000000000000000000000000000000000001614610d37565b73ffffffffffffffffffffffffffffffffffffffff851615155b610d9d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e540000000000000000000000000000000060448201526064016104f7565b505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f2a55205a00000000000000000000000000000000000000000000000000000000148061037257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610372565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e6057600080fd5b919050565b60008060408385031215610e7857600080fd5b610e8183610e3c565b946020939093013593505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610ebd57600080fd5b50565b600060208284031215610ed257600080fd5b8135610edd81610e8f565b9392505050565b600060208083528351808285015260005b81811015610f1157858101830151858201604001528201610ef5565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b600060208284031215610f6257600080fd5b5035919050565b60008060408385031215610f7c57600080fd5b50508035926020909101359150565b60008083601f840112610f9d57600080fd5b50813567ffffffffffffffff811115610fb557600080fd5b6020830191508360208260051b850101111561048b57600080fd5b60008083601f840112610fe257600080fd5b50813567ffffffffffffffff811115610ffa57600080fd5b60208301915083602082850101111561048b57600080fd5b60008060008060008060008060a0898b03121561102e57600080fd5b61103789610e3c565b975061104560208a01610e3c565b9650604089013567ffffffffffffffff8082111561106257600080fd5b61106e8c838d01610f8b565b909850965060608b013591508082111561108757600080fd5b6110938c838d01610f8b565b909650945060808b01359150808211156110ac57600080fd5b506110b98b828c01610fd0565b999c989b5096995094979396929594505050565b600080600080604085870312156110e357600080fd5b843567ffffffffffffffff808211156110fb57600080fd5b61110788838901610f8b565b9096509450602087013591508082111561112057600080fd5b5061112d87828801610f8b565b95989497509550505050565b6020808252825182820181905260009190848201906040850190845b8181101561117157835183529284019291840191600101611155565b50909695505050505050565b6000806040838503121561119057600080fd5b61119983610e3c565b9150602083013580151581146111ae57600080fd5b809150509250929050565b600080604083850312156111cc57600080fd5b6111d583610e3c565b91506111e360208401610e3c565b90509250929050565b60008060008060008060a0878903121561120557600080fd5b61120e87610e3c565b955061121c60208801610e3c565b94506040870135935060608701359250608087013567ffffffffffffffff81111561124657600080fd5b61125289828a01610fd0565b979a9699509497509295939492505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761037257610372611264565b6000826112e0577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8181038181111561037257610372611264565b8082018082111561037257610372611264565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561136c57600080fd5b8260051b80836020870137939093016020019392505050565b60408152600061139960408301868861133a565b82810360208401526113ac81858761133a565b979650505050505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808b168352808a1660208401525060a0604083015261143a60a08301888a61133a565b828103606084015261144d81878961133a565b905082810360808401526114628185876113b7565b9b9a5050505050505050505050565b60006020828403121561148357600080fd5b8151610edd81610e8f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156114cf57600080fd5b610edd82610e3c565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015260a0608083015261151e60a0830184866113b7565b9897505050505050505056fe697066733a2f2f516d5575547838585837544b477065447a76794b78724538364a70555761796a32674563364d4a6978784d685735a2646970667358221220cee8e1696065e9c99e4516aeec54a782012fbdf98dbcd5b5c63aea49cae4842a64736f6c63430008140033

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.