ETH Price: $3,399.06 (+1.53%)

Token

Odyssey Genesis Collection (ODC)
 

Overview

Max Total Supply

1,002 ODC

Holders

401

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
0xa5db44e5002d9558a04337f50f9212d5ce715a8a
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:
OdysseyERC1155

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2022-04-30
*/

// SPDX-License-Identifier: MIT
pragma solidity >=0.8.12;

/// @notice Minimalist and gas efficient standard ERC1155 implementation.
/// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC1155.sol)
abstract contract ERC1155 {
    /*///////////////////////////////////////////////////////////////
                                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 memory 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[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) public virtual {
        uint256 idsLength = ids.length; // Saves MLOADs.

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

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

        for (uint256 i = 0; i < idsLength; ) {
            uint256 id = ids[i];
            uint256 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[] memory owners, uint256[] memory ids)
        public
        view
        virtual
        returns (uint256[] memory balances)
    {
        uint256 ownersLength = owners.length; // Saves MLOADs.

        require(ownersLength == 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 < ownersLength; i++) {
                balances[i] = balanceOf[owners[i]][ids[i]];
            }
        }
    }

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

    function supportsInterface(bytes4 interfaceId) public pure virtual returns (bool) {
        return
            interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165
            interfaceId == 0xd9b67a26 || // ERC165 Interface ID for ERC1155
            interfaceId == 0x0e89341c; // ERC165 Interface ID for ERC1155MetadataURI
    }

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

    function _mint(
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) internal {
        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 {
        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 {
        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 {
        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/Rari-Capital/solmate/blob/main/src/tokens/ERC1155.sol)
interface ERC1155TokenReceiver {
    function onERC1155Received(
        address operator,
        address from,
        uint256 id,
        uint256 amount,
        bytes calldata data
    ) external returns (bytes4);

    function onERC1155BatchReceived(
        address operator,
        address from,
        uint256[] calldata ids,
        uint256[] calldata amounts,
        bytes calldata data
    ) external returns (bytes4);
}library UInt2Str {
    function uint2str(uint256 _i)
        internal
        pure
        returns (string memory _uintAsString)
    {
        if (_i == 0) {
            return "0";
        }
        uint256 j = _i;
        uint256 len;
        while (j != 0) {
            len++;
            j /= 10;
        }
        bytes memory bstr = new bytes(len);
        uint256 k = len;
        while (_i != 0) {
            k = k - 1;
            uint8 temp = (48 + uint8(_i - (_i / 10) * 10));
            bytes1 b1 = bytes1(temp);
            bstr[k] = b1;
            _i /= 10;
        }
        return string(bstr);
    }
}
contract OdysseyERC1155 is ERC1155 {
    using UInt2Str for uint256;

    /*///////////////////////////////////////////////////////////////
                            CUSTOM ERRORS
    //////////////////////////////////////////////////////////////*/
    error OdysseyERC1155_AlreadyInit();
    error OdysseyERC1155_Unauthorized();
    error OdysseyERC1155_BadAddress();

    /*///////////////////////////////////////////////////////////////
                            METADATA STORAGE
    //////////////////////////////////////////////////////////////*/
    address launcher;
    address public owner;
    string public name;
    string public symbol;
    string public baseURI;
    bool initialized;
    uint256 public royaltyFeeInBips; // 1% = 100
    address public royaltyReceiver;
    string public contractURI;

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

    function uri(uint256 id)
        public
        view
        virtual
        override
        returns (string memory)
    {
        return string(abi.encodePacked(baseURI, id.uint2str()));
    }

    /*///////////////////////////////////////////////////////////////
                              FACTORY LOGIC
    //////////////////////////////////////////////////////////////*/

    function initialize(
        address _launcher,
        address _owner,
        string calldata _name,
        string calldata _symbol,
        string calldata _baseURI
    ) external {
        if (isInit()) {
            revert OdysseyERC1155_AlreadyInit();
        }
        initialized = true;
        launcher = _launcher;
        owner = _owner;
        name = _name;
        symbol = _symbol;
        baseURI = _baseURI;
    }

    function isInit() internal view returns (bool) {
        return initialized;
    }

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

    function transferOwnership(address newOwner) public virtual {
        if (newOwner == address(0)) {
            revert OdysseyERC1155_BadAddress();
        }
        if (msg.sender != owner) {
            revert OdysseyERC1155_Unauthorized();
        }
        owner = newOwner;
    }

    function mint(address user, uint256 id) external {
        if (msg.sender != launcher) {
            revert OdysseyERC1155_Unauthorized();
        }
        _mint(user, id, 1, "");
    }

    function mintBatch(
        address user,
        uint256 id,
        uint256 amount
    ) external {
        if (msg.sender != launcher) {
            revert OdysseyERC1155_Unauthorized();
        }
        _mint(user, id, amount, "");
    }

    /*///////////////////////////////////////////////////////////////
                              EIP2981 LOGIC
    //////////////////////////////////////////////////////////////*/

    function royaltyInfo(uint256, uint256 _salePrice)
        external
        view
        returns (address receiver, uint256 royaltyAmount)
    {
        return (royaltyReceiver, (_salePrice / 10000) * royaltyFeeInBips);
    }

    function setRoyaltyInfo(address _royaltyReceiver, uint256 _royaltyFeeInBips)
        external
    {
        if (_royaltyReceiver == address(0)) {
            revert OdysseyERC1155_BadAddress();
        }
        if (msg.sender != owner) {
            revert OdysseyERC1155_Unauthorized();
        }
        royaltyReceiver = _royaltyReceiver;
        royaltyFeeInBips = _royaltyFeeInBips;
    }

    function setContractURI(string memory _uri) public {
        if (msg.sender != owner) {
            revert OdysseyERC1155_Unauthorized();
        }
        contractURI = _uri;
    }

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

    function supportsInterface(bytes4 interfaceID)
        public
        pure
        override(ERC1155)
        returns (bool)
    {
        return
            bytes4(keccak256("royaltyInfo(uint256,uint256)")) == interfaceID ||
            super.supportsInterface(interfaceID);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"name":"OdysseyERC1155_AlreadyInit","type":"error"},{"inputs":[],"name":"OdysseyERC1155_BadAddress","type":"error"},{"inputs":[],"name":"OdysseyERC1155_Unauthorized","type":"error"},{"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":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_launcher","type":"address"},{"internalType":"address","name":"_owner","type":"address"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_baseURI","type":"string"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"royaltyFeeInBips","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"_salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"royaltyAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"royaltyReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"string","name":"_uri","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_royaltyReceiver","type":"address"},{"internalType":"uint256","name":"_royaltyFeeInBips","type":"uint256"}],"name":"setRoyaltyInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]

608060405234801561001057600080fd5b50611ac8806100206000396000f3fe608060405234801561001057600080fd5b50600436106101415760003560e01c80636c0360eb116100b8578063a22cb4651161007c578063a22cb465146102d6578063e2e784d5146102e9578063e8a3d485146102fc578063e985e9c514610304578063f242432a14610332578063f2fde38b1461034557600080fd5b80636c0360eb146102755780638da5cb5b1461027d578063938e3d7b146102a857806395d89b41146102bb5780639fbc8713146102c357600080fd5b80632e81aaea1161010a5780632e81aaea146101fe5780632eb2c2d6146102135780633f2f5ee21461022657806340c10f19146102395780634e1273f41461024c5780635df478381461026c57600080fd5b8062fdd58e1461014657806301ffc9a71461018157806306fdde03146101a45780630e89341c146101b95780632a55205a146101cc575b600080fd5b61016e610154366004611126565b600060208181529281526040808220909352908152205481565b6040519081526020015b60405180910390f35b61019461018f366004611169565b610358565b6040519015158152602001610178565b6101ac610383565b60405161017891906111e5565b6101ac6101c73660046111f8565b610411565b6101df6101da366004611211565b610445565b604080516001600160a01b039093168352602083019190915201610178565b61021161020c366004611233565b61047e565b005b6102116102213660046113b4565b6104c9565b6102116102343660046114a0565b610780565b610211610247366004611126565b610811565b61025f61025a36600461155b565b61085c565b6040516101789190611656565b61016e60085481565b6101ac61098a565b600354610290906001600160a01b031681565b6040516001600160a01b039091168152602001610178565b6102116102b6366004611669565b610997565b6101ac6109d5565b600954610290906001600160a01b031681565b6102116102e43660046116ba565b6109e2565b6102116102f7366004611126565b610a4e565b6101ac610ac6565b6101946103123660046116f6565b600160209081526000928352604080842090915290825290205460ff1681565b610211610340366004611729565b610ad3565b61021161035336600461178e565b610cca565b600063152a902d60e11b6001600160e01b03198316148061037d575061037d82610d3e565b92915050565b60048054610390906117a9565b80601f01602080910402602001604051908101604052809291908181526020018280546103bc906117a9565b80156104095780601f106103de57610100808354040283529160200191610409565b820191906000526020600020905b8154815290600101906020018083116103ec57829003601f168201915b505050505081565b6060600661041e83610d8c565b60405160200161042f929190611800565b6040516020818303038152906040529050919050565b60095460085460009182916001600160a01b0390911690610468612710866118bd565b61047291906118df565b915091505b9250929050565b6002546001600160a01b031633146104a95760405163154cdd6360e31b815260040160405180910390fd5b6104c483838360405180602001604052806000815250610eb5565b505050565b8251825181146105125760405162461bcd60e51b815260206004820152600f60248201526e0988a9c8ea890be9a92a69a82a8869608b1b60448201526064015b60405180910390fd5b336001600160a01b038716148061054c57506001600160a01b038616600090815260016020908152604080832033845290915290205460ff165b6105895760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b6044820152606401610509565b60005b8181101561065e5760008582815181106105a8576105a86118fe565b6020026020010151905060008583815181106105c6576105c66118fe565b60200260200101519050806000808b6001600160a01b03166001600160a01b03168152602001908152602001600020600084815260200190815260200160002060008282546106159190611914565b90915550506001600160a01b0388166000908152602081815260408083208584529091528120805483929061064b90849061192b565b90915550506001909201915061058c9050565b50846001600160a01b0316866001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516106ae929190611943565b60405180910390a46001600160a01b0385163b1561074f5760405163bc197c8160e01b808252906001600160a01b0387169063bc197c81906106fc9033908b908a908a908a90600401611968565b6020604051808303816000875af115801561071b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073f91906119c6565b6001600160e01b0319161461075c565b6001600160a01b03851615155b6107785760405162461bcd60e51b8152600401610509906119e3565b505050505050565b60075460ff16156107a357604051620489d760e91b815260040160405180910390fd5b6007805460ff19166001179055600280546001600160a01b03808b166001600160a01b03199283161790925560038054928a16929091169190911790556107ec60048787610ffd565b506107f960058585610ffd565b5061080660068383610ffd565b505050505050505050565b6002546001600160a01b0316331461083c5760405163154cdd6360e31b815260040160405180910390fd5b6108588282600160405180602001604052806000815250610eb5565b5050565b815181516060919081146108a45760405162461bcd60e51b815260206004820152600f60248201526e0988a9c8ea890be9a92a69a82a8869608b1b6044820152606401610509565b835167ffffffffffffffff8111156108be576108be611266565b6040519080825280602002602001820160405280156108e7578160200160208202803683370190505b50915060005b818110156109825760008086838151811061090a5761090a6118fe565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000858381518110610946576109466118fe565b602002602001015181526020019081526020016000205483828151811061096f5761096f6118fe565b60209081029190910101526001016108ed565b505092915050565b60068054610390906117a9565b6003546001600160a01b031633146109c25760405163154cdd6360e31b815260040160405180910390fd5b805161085890600a906020840190611081565b60058054610390906117a9565b3360008181526001602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6001600160a01b038216610a7557604051634ba7322360e11b815260040160405180910390fd5b6003546001600160a01b03163314610aa05760405163154cdd6360e31b815260040160405180910390fd5b600980546001600160a01b0319166001600160a01b039390931692909217909155600855565b600a8054610390906117a9565b336001600160a01b0386161480610b0d57506001600160a01b038516600090815260016020908152604080832033845290915290205460ff165b610b4a5760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b6044820152606401610509565b6001600160a01b03851660009081526020818152604080832086845290915281208054849290610b7b908490611914565b90915550506001600160a01b03841660009081526020818152604080832086845290915281208054849290610bb190849061192b565b909155505060408051848152602081018490526001600160a01b03808716929088169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46001600160a01b0384163b15610c9a5760405163f23a6e6160e01b808252906001600160a01b0386169063f23a6e6190610c479033908a90899089908990600401611a0d565b6020604051808303816000875af1158015610c66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8a91906119c6565b6001600160e01b03191614610ca7565b6001600160a01b03841615155b610cc35760405162461bcd60e51b8152600401610509906119e3565b5050505050565b6001600160a01b038116610cf157604051634ba7322360e11b815260040160405180910390fd5b6003546001600160a01b03163314610d1c5760405163154cdd6360e31b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b60006301ffc9a760e01b6001600160e01b031983161480610d6f5750636cdb3d1360e11b6001600160e01b03198316145b8061037d5750506001600160e01b0319166303a24d0760e21b1490565b606081610db05750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610dda5780610dc481611a52565b9150610dd39050600a836118bd565b9150610db4565b60008167ffffffffffffffff811115610df557610df5611266565b6040519080825280601f01601f191660200182016040528015610e1f576020820181803683370190505b509050815b8515610eac57610e35600182611914565b90506000610e44600a886118bd565b610e4f90600a6118df565b610e599088611914565b610e64906030611a6d565b905060008160f81b905080848481518110610e8157610e816118fe565b60200101906001600160f81b031916908160001a905350610ea3600a896118bd565b97505050610e24565b50949350505050565b6001600160a01b03841660009081526020818152604080832086845290915281208054849290610ee690849061192b565b909155505060408051848152602081018490526001600160a01b0386169160009133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46001600160a01b0384163b15610fce5760405163f23a6e6160e01b808252906001600160a01b0386169063f23a6e6190610f7b903390600090899089908990600401611a0d565b6020604051808303816000875af1158015610f9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbe91906119c6565b6001600160e01b03191614610fdb565b6001600160a01b03841615155b610ff75760405162461bcd60e51b8152600401610509906119e3565b50505050565b828054611009906117a9565b90600052602060002090601f01602090048101928261102b5760008555611071565b82601f106110445782800160ff19823516178555611071565b82800160010185558215611071579182015b82811115611071578235825591602001919060010190611056565b5061107d9291506110f5565b5090565b82805461108d906117a9565b90600052602060002090601f0160209004810192826110af5760008555611071565b82601f106110c857805160ff1916838001178555611071565b82800160010185558215611071579182015b828111156110715782518255916020019190600101906110da565b5b8082111561107d57600081556001016110f6565b80356001600160a01b038116811461112157600080fd5b919050565b6000806040838503121561113957600080fd5b6111428361110a565b946020939093013593505050565b6001600160e01b03198116811461116657600080fd5b50565b60006020828403121561117b57600080fd5b813561118681611150565b9392505050565b60005b838110156111a8578181015183820152602001611190565b83811115610ff75750506000910152565b600081518084526111d181602086016020860161118d565b601f01601f19169290920160200192915050565b60208152600061118660208301846111b9565b60006020828403121561120a57600080fd5b5035919050565b6000806040838503121561122457600080fd5b50508035926020909101359150565b60008060006060848603121561124857600080fd5b6112518461110a565b95602085013595506040909401359392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156112a5576112a5611266565b604052919050565b600067ffffffffffffffff8211156112c7576112c7611266565b5060051b60200190565b600082601f8301126112e257600080fd5b813560206112f76112f2836112ad565b61127c565b82815260059290921b8401810191818101908684111561131657600080fd5b8286015b84811015611331578035835291830191830161131a565b509695505050505050565b600067ffffffffffffffff83111561135657611356611266565b611369601f8401601f191660200161127c565b905082815283838301111561137d57600080fd5b828260208301376000602084830101529392505050565b600082601f8301126113a557600080fd5b6111868383356020850161133c565b600080600080600060a086880312156113cc57600080fd5b6113d58661110a565b94506113e36020870161110a565b9350604086013567ffffffffffffffff8082111561140057600080fd5b61140c89838a016112d1565b9450606088013591508082111561142257600080fd5b61142e89838a016112d1565b9350608088013591508082111561144457600080fd5b5061145188828901611394565b9150509295509295909350565b60008083601f84011261147057600080fd5b50813567ffffffffffffffff81111561148857600080fd5b60208301915083602082850101111561047757600080fd5b60008060008060008060008060a0898b0312156114bc57600080fd5b6114c58961110a565b97506114d360208a0161110a565b9650604089013567ffffffffffffffff808211156114f057600080fd5b6114fc8c838d0161145e565b909850965060608b013591508082111561151557600080fd5b6115218c838d0161145e565b909650945060808b013591508082111561153a57600080fd5b506115478b828c0161145e565b999c989b5096995094979396929594505050565b6000806040838503121561156e57600080fd5b823567ffffffffffffffff8082111561158657600080fd5b818501915085601f83011261159a57600080fd5b813560206115aa6112f2836112ad565b82815260059290921b840181019181810190898411156115c957600080fd5b948201945b838610156115ee576115df8661110a565b825294820194908201906115ce565b9650508601359250508082111561160457600080fd5b50611611858286016112d1565b9150509250929050565b600081518084526020808501945080840160005b8381101561164b5781518752958201959082019060010161162f565b509495945050505050565b602081526000611186602083018461161b565b60006020828403121561167b57600080fd5b813567ffffffffffffffff81111561169257600080fd5b8201601f810184136116a357600080fd5b6116b28482356020840161133c565b949350505050565b600080604083850312156116cd57600080fd5b6116d68361110a565b9150602083013580151581146116eb57600080fd5b809150509250929050565b6000806040838503121561170957600080fd5b6117128361110a565b91506117206020840161110a565b90509250929050565b600080600080600060a0868803121561174157600080fd5b61174a8661110a565b94506117586020870161110a565b93506040860135925060608601359150608086013567ffffffffffffffff81111561178257600080fd5b61145188828901611394565b6000602082840312156117a057600080fd5b6111868261110a565b600181811c908216806117bd57607f821691505b602082108114156117de57634e487b7160e01b600052602260045260246000fd5b50919050565b600081516117f681856020860161118d565b9290920192915050565b600080845481600182811c91508083168061181c57607f831692505b602080841082141561183c57634e487b7160e01b86526022600452602486fd5b81801561185057600181146118615761188e565b60ff1986168952848901965061188e565b60008b81526020902060005b868110156118865781548b82015290850190830161186d565b505084890196505b50505050505061189e81856117e4565b95945050505050565b634e487b7160e01b600052601160045260246000fd5b6000826118da57634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156118f9576118f96118a7565b500290565b634e487b7160e01b600052603260045260246000fd5b600082821015611926576119266118a7565b500390565b6000821982111561193e5761193e6118a7565b500190565b604081526000611956604083018561161b565b828103602084015261189e818561161b565b6001600160a01b0386811682528516602082015260a0604082018190526000906119949083018661161b565b82810360608401526119a6818661161b565b905082810360808401526119ba81856111b9565b98975050505050505050565b6000602082840312156119d857600080fd5b815161118681611150565b60208082526010908201526f155394d0519157d49150d2541251539560821b604082015260600190565b6001600160a01b03868116825285166020820152604081018490526060810183905260a060808201819052600090611a47908301846111b9565b979650505050505050565b6000600019821415611a6657611a666118a7565b5060010190565b600060ff821660ff84168060ff03821115611a8a57611a8a6118a7565b01939250505056fea2646970667358221220b4968124272ff911d5ec7df4207835b0ca22b335b4cbed407e8b89ccef6260a364736f6c634300080c0033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101415760003560e01c80636c0360eb116100b8578063a22cb4651161007c578063a22cb465146102d6578063e2e784d5146102e9578063e8a3d485146102fc578063e985e9c514610304578063f242432a14610332578063f2fde38b1461034557600080fd5b80636c0360eb146102755780638da5cb5b1461027d578063938e3d7b146102a857806395d89b41146102bb5780639fbc8713146102c357600080fd5b80632e81aaea1161010a5780632e81aaea146101fe5780632eb2c2d6146102135780633f2f5ee21461022657806340c10f19146102395780634e1273f41461024c5780635df478381461026c57600080fd5b8062fdd58e1461014657806301ffc9a71461018157806306fdde03146101a45780630e89341c146101b95780632a55205a146101cc575b600080fd5b61016e610154366004611126565b600060208181529281526040808220909352908152205481565b6040519081526020015b60405180910390f35b61019461018f366004611169565b610358565b6040519015158152602001610178565b6101ac610383565b60405161017891906111e5565b6101ac6101c73660046111f8565b610411565b6101df6101da366004611211565b610445565b604080516001600160a01b039093168352602083019190915201610178565b61021161020c366004611233565b61047e565b005b6102116102213660046113b4565b6104c9565b6102116102343660046114a0565b610780565b610211610247366004611126565b610811565b61025f61025a36600461155b565b61085c565b6040516101789190611656565b61016e60085481565b6101ac61098a565b600354610290906001600160a01b031681565b6040516001600160a01b039091168152602001610178565b6102116102b6366004611669565b610997565b6101ac6109d5565b600954610290906001600160a01b031681565b6102116102e43660046116ba565b6109e2565b6102116102f7366004611126565b610a4e565b6101ac610ac6565b6101946103123660046116f6565b600160209081526000928352604080842090915290825290205460ff1681565b610211610340366004611729565b610ad3565b61021161035336600461178e565b610cca565b600063152a902d60e11b6001600160e01b03198316148061037d575061037d82610d3e565b92915050565b60048054610390906117a9565b80601f01602080910402602001604051908101604052809291908181526020018280546103bc906117a9565b80156104095780601f106103de57610100808354040283529160200191610409565b820191906000526020600020905b8154815290600101906020018083116103ec57829003601f168201915b505050505081565b6060600661041e83610d8c565b60405160200161042f929190611800565b6040516020818303038152906040529050919050565b60095460085460009182916001600160a01b0390911690610468612710866118bd565b61047291906118df565b915091505b9250929050565b6002546001600160a01b031633146104a95760405163154cdd6360e31b815260040160405180910390fd5b6104c483838360405180602001604052806000815250610eb5565b505050565b8251825181146105125760405162461bcd60e51b815260206004820152600f60248201526e0988a9c8ea890be9a92a69a82a8869608b1b60448201526064015b60405180910390fd5b336001600160a01b038716148061054c57506001600160a01b038616600090815260016020908152604080832033845290915290205460ff165b6105895760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b6044820152606401610509565b60005b8181101561065e5760008582815181106105a8576105a86118fe565b6020026020010151905060008583815181106105c6576105c66118fe565b60200260200101519050806000808b6001600160a01b03166001600160a01b03168152602001908152602001600020600084815260200190815260200160002060008282546106159190611914565b90915550506001600160a01b0388166000908152602081815260408083208584529091528120805483929061064b90849061192b565b90915550506001909201915061058c9050565b50846001600160a01b0316866001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516106ae929190611943565b60405180910390a46001600160a01b0385163b1561074f5760405163bc197c8160e01b808252906001600160a01b0387169063bc197c81906106fc9033908b908a908a908a90600401611968565b6020604051808303816000875af115801561071b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073f91906119c6565b6001600160e01b0319161461075c565b6001600160a01b03851615155b6107785760405162461bcd60e51b8152600401610509906119e3565b505050505050565b60075460ff16156107a357604051620489d760e91b815260040160405180910390fd5b6007805460ff19166001179055600280546001600160a01b03808b166001600160a01b03199283161790925560038054928a16929091169190911790556107ec60048787610ffd565b506107f960058585610ffd565b5061080660068383610ffd565b505050505050505050565b6002546001600160a01b0316331461083c5760405163154cdd6360e31b815260040160405180910390fd5b6108588282600160405180602001604052806000815250610eb5565b5050565b815181516060919081146108a45760405162461bcd60e51b815260206004820152600f60248201526e0988a9c8ea890be9a92a69a82a8869608b1b6044820152606401610509565b835167ffffffffffffffff8111156108be576108be611266565b6040519080825280602002602001820160405280156108e7578160200160208202803683370190505b50915060005b818110156109825760008086838151811061090a5761090a6118fe565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000858381518110610946576109466118fe565b602002602001015181526020019081526020016000205483828151811061096f5761096f6118fe565b60209081029190910101526001016108ed565b505092915050565b60068054610390906117a9565b6003546001600160a01b031633146109c25760405163154cdd6360e31b815260040160405180910390fd5b805161085890600a906020840190611081565b60058054610390906117a9565b3360008181526001602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6001600160a01b038216610a7557604051634ba7322360e11b815260040160405180910390fd5b6003546001600160a01b03163314610aa05760405163154cdd6360e31b815260040160405180910390fd5b600980546001600160a01b0319166001600160a01b039390931692909217909155600855565b600a8054610390906117a9565b336001600160a01b0386161480610b0d57506001600160a01b038516600090815260016020908152604080832033845290915290205460ff165b610b4a5760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b6044820152606401610509565b6001600160a01b03851660009081526020818152604080832086845290915281208054849290610b7b908490611914565b90915550506001600160a01b03841660009081526020818152604080832086845290915281208054849290610bb190849061192b565b909155505060408051848152602081018490526001600160a01b03808716929088169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46001600160a01b0384163b15610c9a5760405163f23a6e6160e01b808252906001600160a01b0386169063f23a6e6190610c479033908a90899089908990600401611a0d565b6020604051808303816000875af1158015610c66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8a91906119c6565b6001600160e01b03191614610ca7565b6001600160a01b03841615155b610cc35760405162461bcd60e51b8152600401610509906119e3565b5050505050565b6001600160a01b038116610cf157604051634ba7322360e11b815260040160405180910390fd5b6003546001600160a01b03163314610d1c5760405163154cdd6360e31b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b60006301ffc9a760e01b6001600160e01b031983161480610d6f5750636cdb3d1360e11b6001600160e01b03198316145b8061037d5750506001600160e01b0319166303a24d0760e21b1490565b606081610db05750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610dda5780610dc481611a52565b9150610dd39050600a836118bd565b9150610db4565b60008167ffffffffffffffff811115610df557610df5611266565b6040519080825280601f01601f191660200182016040528015610e1f576020820181803683370190505b509050815b8515610eac57610e35600182611914565b90506000610e44600a886118bd565b610e4f90600a6118df565b610e599088611914565b610e64906030611a6d565b905060008160f81b905080848481518110610e8157610e816118fe565b60200101906001600160f81b031916908160001a905350610ea3600a896118bd565b97505050610e24565b50949350505050565b6001600160a01b03841660009081526020818152604080832086845290915281208054849290610ee690849061192b565b909155505060408051848152602081018490526001600160a01b0386169160009133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46001600160a01b0384163b15610fce5760405163f23a6e6160e01b808252906001600160a01b0386169063f23a6e6190610f7b903390600090899089908990600401611a0d565b6020604051808303816000875af1158015610f9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbe91906119c6565b6001600160e01b03191614610fdb565b6001600160a01b03841615155b610ff75760405162461bcd60e51b8152600401610509906119e3565b50505050565b828054611009906117a9565b90600052602060002090601f01602090048101928261102b5760008555611071565b82601f106110445782800160ff19823516178555611071565b82800160010185558215611071579182015b82811115611071578235825591602001919060010190611056565b5061107d9291506110f5565b5090565b82805461108d906117a9565b90600052602060002090601f0160209004810192826110af5760008555611071565b82601f106110c857805160ff1916838001178555611071565b82800160010185558215611071579182015b828111156110715782518255916020019190600101906110da565b5b8082111561107d57600081556001016110f6565b80356001600160a01b038116811461112157600080fd5b919050565b6000806040838503121561113957600080fd5b6111428361110a565b946020939093013593505050565b6001600160e01b03198116811461116657600080fd5b50565b60006020828403121561117b57600080fd5b813561118681611150565b9392505050565b60005b838110156111a8578181015183820152602001611190565b83811115610ff75750506000910152565b600081518084526111d181602086016020860161118d565b601f01601f19169290920160200192915050565b60208152600061118660208301846111b9565b60006020828403121561120a57600080fd5b5035919050565b6000806040838503121561122457600080fd5b50508035926020909101359150565b60008060006060848603121561124857600080fd5b6112518461110a565b95602085013595506040909401359392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156112a5576112a5611266565b604052919050565b600067ffffffffffffffff8211156112c7576112c7611266565b5060051b60200190565b600082601f8301126112e257600080fd5b813560206112f76112f2836112ad565b61127c565b82815260059290921b8401810191818101908684111561131657600080fd5b8286015b84811015611331578035835291830191830161131a565b509695505050505050565b600067ffffffffffffffff83111561135657611356611266565b611369601f8401601f191660200161127c565b905082815283838301111561137d57600080fd5b828260208301376000602084830101529392505050565b600082601f8301126113a557600080fd5b6111868383356020850161133c565b600080600080600060a086880312156113cc57600080fd5b6113d58661110a565b94506113e36020870161110a565b9350604086013567ffffffffffffffff8082111561140057600080fd5b61140c89838a016112d1565b9450606088013591508082111561142257600080fd5b61142e89838a016112d1565b9350608088013591508082111561144457600080fd5b5061145188828901611394565b9150509295509295909350565b60008083601f84011261147057600080fd5b50813567ffffffffffffffff81111561148857600080fd5b60208301915083602082850101111561047757600080fd5b60008060008060008060008060a0898b0312156114bc57600080fd5b6114c58961110a565b97506114d360208a0161110a565b9650604089013567ffffffffffffffff808211156114f057600080fd5b6114fc8c838d0161145e565b909850965060608b013591508082111561151557600080fd5b6115218c838d0161145e565b909650945060808b013591508082111561153a57600080fd5b506115478b828c0161145e565b999c989b5096995094979396929594505050565b6000806040838503121561156e57600080fd5b823567ffffffffffffffff8082111561158657600080fd5b818501915085601f83011261159a57600080fd5b813560206115aa6112f2836112ad565b82815260059290921b840181019181810190898411156115c957600080fd5b948201945b838610156115ee576115df8661110a565b825294820194908201906115ce565b9650508601359250508082111561160457600080fd5b50611611858286016112d1565b9150509250929050565b600081518084526020808501945080840160005b8381101561164b5781518752958201959082019060010161162f565b509495945050505050565b602081526000611186602083018461161b565b60006020828403121561167b57600080fd5b813567ffffffffffffffff81111561169257600080fd5b8201601f810184136116a357600080fd5b6116b28482356020840161133c565b949350505050565b600080604083850312156116cd57600080fd5b6116d68361110a565b9150602083013580151581146116eb57600080fd5b809150509250929050565b6000806040838503121561170957600080fd5b6117128361110a565b91506117206020840161110a565b90509250929050565b600080600080600060a0868803121561174157600080fd5b61174a8661110a565b94506117586020870161110a565b93506040860135925060608601359150608086013567ffffffffffffffff81111561178257600080fd5b61145188828901611394565b6000602082840312156117a057600080fd5b6111868261110a565b600181811c908216806117bd57607f821691505b602082108114156117de57634e487b7160e01b600052602260045260246000fd5b50919050565b600081516117f681856020860161118d565b9290920192915050565b600080845481600182811c91508083168061181c57607f831692505b602080841082141561183c57634e487b7160e01b86526022600452602486fd5b81801561185057600181146118615761188e565b60ff1986168952848901965061188e565b60008b81526020902060005b868110156118865781548b82015290850190830161186d565b505084890196505b50505050505061189e81856117e4565b95945050505050565b634e487b7160e01b600052601160045260246000fd5b6000826118da57634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156118f9576118f96118a7565b500290565b634e487b7160e01b600052603260045260246000fd5b600082821015611926576119266118a7565b500390565b6000821982111561193e5761193e6118a7565b500190565b604081526000611956604083018561161b565b828103602084015261189e818561161b565b6001600160a01b0386811682528516602082015260a0604082018190526000906119949083018661161b565b82810360608401526119a6818661161b565b905082810360808401526119ba81856111b9565b98975050505050505050565b6000602082840312156119d857600080fd5b815161118681611150565b60208082526010908201526f155394d0519157d49150d2541251539560821b604082015260600190565b6001600160a01b03868116825285166020820152604081018490526060810183905260a060808201819052600090611a47908301846111b9565b979650505050505050565b6000600019821415611a6657611a666118a7565b5060010190565b600060ff821660ff84168060ff03821115611a8a57611a8a6118a7565b01939250505056fea2646970667358221220b4968124272ff911d5ec7df4207835b0ca22b335b4cbed407e8b89ccef6260a364736f6c634300080c0033

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.