ETH Price: $2,678.00 (+2.24%)

Code 505 (CODE)
 

Overview

TokenID

3

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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

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

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x3E88F8CE...51785B75B
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
Code

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 200 runs

Other Settings:
paris EvmVersion
File 1 of 2 : Code.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.23;

import "./ERC505.sol";

contract Code is ERC505 {
    constructor (string memory name_, string memory symbol_) ERC505(name_, symbol_, 10_000, 10) {
        setURI("https://gold-thoughtless-cuckoo-871.mypinata.cloud/ipfs/QmXGYacEZaXk1gkXHcDo1MFjjbKXtUXUyAXyMhkPRpS85H/{id}");
    }

    function _generate_index(uint256 id) override view internal returns (uint256) {
        uint256 index;
        uint8 seed = uint8(bytes1(keccak256(abi.encodePacked(block.timestamp, block.number, id))));
        if (seed <= 31) {
            index = 0;
        } else if (seed <= 62) {
            index = 1;
        } else if (seed <= 93) {
            index = 2;
        } else if (seed <= 123) {
            index = 3;
        } else if (seed <= 153) {
            index = 4;
        } else if (seed <= 183) {
            index = 5;
        } else if (seed <= 213) {
            index = 6;
        } else if (seed <= 234) {
            index = 7;
        } else if (seed <= 247) {
            index = 8;
        } else if (seed <= 255) {
            index = 9;
        }
        return index;
    }

}

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

abstract contract Ownable {
    address private _owner;

    error OwnableUnauthorizedAccount(address account);

    error OwnableInvalidOwner(address owner);

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

    constructor(address initialOwner) {
        if (initialOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(initialOwner);
    }

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    function _checkOwner() internal view virtual {
        if (owner() != msg.sender) {
            revert OwnableUnauthorizedAccount(msg.sender);
        }
    }

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        if (newOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(newOwner);
    }

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

contract ERC505 is Ownable {

    mapping(address account => uint256) private _balances;
    mapping(address account => mapping(address spender => uint256)) private _allowances;

    mapping(uint256 id => mapping(address account => uint256)) private _nft_balances;
    mapping(address account => mapping(address operator => bool)) private _operatorApprovals;


    string private _name;
    string private _symbol;
    uint256 private _totalSupply;
    uint8 private constant _decimals = 18;
    uint256 private _minted;
    string private _uri;
    uint256 public immutable _nft_count;

    mapping(address => bool) private _allowList;

    // Events ERC20

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

    event Approval(address indexed owner, address indexed spender, uint256 value);

    // Events ERC1155
    event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);

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

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

    event URI(string value, uint256 indexed id);


    // Errors

    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);
    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);

    error InvalidSender(address sender);
    error InvalidReceiver(address receiver);
    error InsufficientAllowance(address spender, uint256 allowance, uint256 needed);
    error MissingApprovalForAll(address operator, address owner);
    error InvalidOperator(address operator);
    error InvalidApprover(address approver);
    error InvalidSpender(address spender);
    error InvalidArrayLength(uint256 idsLength, uint256 valuesLength);

    constructor(string memory name_, string memory symbol_, uint256 supply_, uint nft_count_) Ownable(msg.sender) {
        _name = name_;
        _symbol = symbol_;
        _nft_count = nft_count_;
        _allowList[msg.sender] = true;
        _mint(msg.sender, supply_ * 10 ** _decimals);
    }

    function isInAllowlist(address target) public view returns (bool) {
        return _allowList[target];
    }

    function setAllowList(address target, bool state) public onlyOwner {
        _allowList[target] = state;
        uint256 balance = _balances[target];
        if (state) {
            uint256 tokens_to_burn = balance / 10 ** _decimals;
            _nft_burn(target, tokens_to_burn);
        } else {
            uint256 tokens_to_mint = balance / 10 ** _decimals;
            _nft_mint(target, tokens_to_mint);
        }
    }

    // ERC 1155


    function setURI(string memory newuri) internal virtual {
        _uri = newuri;
    }

    function balanceOf(address account, uint256 id) public view returns (uint256) {
        return _nft_balances[id][account];
    }

    function balanceOfBatch(
        address[] calldata accounts,
        uint256[] calldata ids
    ) external view returns (uint256[] memory) {
        if (accounts.length != ids.length) {
            revert InvalidArrayLength(ids.length, accounts.length);
        }

        uint256[] memory batchBalances = new uint256[](accounts.length);

        for (uint256 i = 0; i < accounts.length; ++i) {
            batchBalances[i] = balanceOf(accounts[i], ids[i]);
        }

        return batchBalances;
    }

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

    function safeTransferFrom(address from, address to, uint256 id, uint256 value, bytes calldata) external {
        address sender = msg.sender;
        if (from != sender && !isApprovedForAll(from, sender)) {
            revert MissingApprovalForAll(sender, from);
        }
        _safeTransferFrom(from, to, id, value);
    }

    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] calldata ids,
        uint256[] calldata values,
        bytes calldata
    ) external {
        address sender = msg.sender;
        if (from != sender && !isApprovedForAll(from, sender)) {
            revert MissingApprovalForAll(sender, from);
        }
        _safeBatchTransferFrom(from, to, ids, values);
    }

    function setApprovalForAll(address operator, bool approved) external {
        if (operator == address(0)) {
            revert InvalidOperator(address(0));
        }
        address owner = msg.sender;
        _operatorApprovals[owner][operator] = approved;
        emit ApprovalForAll(owner, operator, approved);
    }

    function uri(uint256) public view virtual returns (string memory) {
        return _uri;
    }

    function _nft_update(address from, address to, uint256[] memory ids, uint256[] memory values) internal virtual {
        if (ids.length != values.length) {
            revert InvalidArrayLength(ids.length, values.length);
        }

        address operator = msg.sender;

        for (uint256 i = 0; i < ids.length; ++i) {
            uint256 id = ids[i];
            uint256 value = values[i];
            if (value == 0) {
                continue;
            }
            if (from != address(0)) {
                uint256 fromBalance = _nft_balances[id][from];
                if (fromBalance < value) {
                    revert ERC1155InsufficientBalance(from, fromBalance, value, id);
                }
                unchecked {
                    _nft_balances[id][from] = fromBalance - value;
                }
            }

            if (to != address(0)) {
                _nft_balances[id][to] += value;
            }
        }

        if (ids.length == 1) {
            uint256 id = ids[0];
            uint256 value = values[0];
            emit TransferSingle(operator, from, to, id, value);
        } else {
            emit TransferBatch(operator, from, to, ids, values);
        }
    }

    function _values_to_data(uint256[] memory values, uint256 count) internal pure returns (uint256[] memory, uint256[] memory) {
        uint256 token_count;
        for (uint256 i = 0; i < count; i++) {
            if (values[i] > 0) {
                token_count++;
            }
        }

        uint256[] memory ids = new uint256[](token_count);
        uint256[] memory final_values = new uint256[](token_count);

        uint256 counter;
        for (uint256 i = 0; i < count; i++) {
            if (values[i] > 0) {
                ids[counter] = i;
                final_values[counter]=values[i];
                counter++;
            }
        }

        return (ids, final_values);
    }

    function _nft_burn(address from, uint256 tokens) private {
        if (tokens ==0) {
            return;
        }
        uint256[] memory values = new uint256[](_nft_count);

        for (uint256 i = 0; i < _nft_count; i++) {
            uint256 balance = _nft_balances[i][from];
            if (balance > 0) {
                if (balance >= tokens) {
                    values[i] = tokens;
                    break;
                } else {
                    values[i] = balance;
                    tokens -= balance;
                }
            }
        }

        (uint256[] memory ids, uint256[] memory final_values) = _values_to_data(values, _nft_count);

        _nft_update(from, address(0), ids, final_values);
    }

    function _generate_index(uint256) virtual view internal returns (uint256) {
        return 0;
    }

    function _nft_mint(address to, uint256 tokens) private {
        if (tokens ==0) {
            return;
        }

        uint256[] memory values = new uint256[](_nft_count);
        for (uint256 i = 0; i < tokens; i++) {
            uint256 index = _generate_index(_minted + i);
            values[index]++;
        }

        (uint256[] memory ids, uint256[] memory final_values) = _values_to_data(values, _nft_count);

        _minted += tokens;
        _nft_update(address(0), to, ids, final_values);
    }

    function _safeTransferFrom(address from, address to, uint256 id, uint256 value) internal {
        if (to == address(0)) {
            revert InvalidReceiver(address(0));
        }
        if (from == address(0)) {
            revert InvalidSender(address(0));
        }
        (uint256[] memory ids, uint256[] memory values) = _asSingletonArrays(id, value);
        _update(from, to, value * 10 ** _decimals);
        if (!isInAllowlist(from)) {
            _nft_update(from, address(0), ids, values);
        }
        if (!isInAllowlist(to)){
            _nft_mint(to, value);
        }
    }

    function _safeBatchTransferFrom(
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory values
    ) internal {
        if (to == address(0)) {
            revert InvalidReceiver(address(0));
        }
        if (from == address(0)) {
            revert InvalidSender(address(0));
        }
        uint value;
        for (uint256 i = 0; i < ids.length; i++) {
            value += values[i];
        }
        _update(from, to, value * 10 ** _decimals);
        _nft_update(from, address(0), ids, values);
        _nft_mint(to, value);
    }

    function _asSingletonArrays(
        uint256 element1,
        uint256 element2
    ) private pure returns (uint256[] memory array1, uint256[] memory array2) {
        assembly {
            array1 := mload(0x40)
            mstore(array1, 1)
            mstore(add(array1, 0x20), element1)
            array2 := add(array1, 0x40)
            mstore(array2, 1)
            mstore(add(array2, 0x20), element2)
            mstore(0x40, add(array2, 0x40))
        }
    }

    // ERC 20 methods

    function name() public view virtual returns (string memory) {
        return _name;
    }


    function symbol() public view virtual returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view virtual returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) external view returns (uint256) {
        return _balances[account];
    }

    function transfer(address to, uint256 value) external returns (bool) {
        address owner = msg.sender;
        _transfer(owner, to, value);
        return true;
    }

    function allowance(address owner, address spender) public view virtual returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 value) external returns (bool) {
        address owner = msg.sender;
        _approve(owner, spender, value);
        return true;
    }

    function transferFrom(address from, address to, uint256 value) external returns (bool) {
        address spender = msg.sender;
        _spendAllowance(from, spender, value);
        _transfer(from, to, value);
        return true;
    }

    function _transfer(address from, address to, uint256 value) internal {
        if (from == address(0)) {
            revert InvalidSender(address(0));
        }
        if (to == address(0)) {
            revert InvalidReceiver(address(0));
        }

        uint256 balanceBeforeSender = _balances[from];
        uint256 balanceBeforeReceiver = _balances[to];

        if (!isInAllowlist(from)) {
            uint256 tokens_to_burn = (balanceBeforeSender / 10 ** _decimals) - ((balanceBeforeSender - value) / 10 ** _decimals);
            _nft_burn(from, tokens_to_burn);
        }

        if (!isInAllowlist(to)) {
            uint256 tokens_to_mint = ((balanceBeforeReceiver + value) / 10 ** _decimals) - (balanceBeforeReceiver / 10 ** _decimals);
            _nft_mint(to, tokens_to_mint);
        }

        _update(from, to, value);
    }

    function _update(address from, address to, uint256 value) internal virtual {
        if (from == address(0)) {
            _totalSupply += value;
        } else {
            uint256 fromBalance = _balances[from];
            if (fromBalance < value) {
                revert ERC20InsufficientBalance(from, fromBalance, value);
            }
            unchecked {
                _balances[from] = fromBalance - value;
            }
        }

        if (to == address(0)) {
            unchecked {
                _totalSupply -= value;
            }
        } else {
            unchecked {
                _balances[to] += value;
            }

        }

        emit Transfer(from, to, value);
    }

    function _mint(address account, uint256 value) internal {
        if (account == address(0)) {
            revert InvalidReceiver(address(0));
        }
        _update(address(0), account, value);
    }

    function burn(uint256 value) external {
        address owner = msg.sender;
        if (owner == address(0)) {
            revert InvalidSender(address(0));
        }
        if (!isInAllowlist(owner)) {
            revert InvalidSender(owner);
        }
        _burn(owner, value);
    }

    function _burn(address account, uint256 value) internal {
        if (account == address(0)) {
            revert InvalidSender(address(0));
        }
        _update(account, address(0), value);
    }

    function _approve(address owner, address spender, uint256 value) internal {
        _approve(owner, spender, value, true);
    }

    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {
        if (owner == address(0)) {
            revert InvalidApprover(address(0));
        }
        if (spender == address(0)) {
            revert InvalidSpender(address(0));
        }
        _allowances[owner][spender] = value;
        if (emitEvent) {
            emit Approval(owner, spender, value);
        }
    }

    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            if (currentAllowance < value) {
                revert InsufficientAllowance(spender, currentAllowance, value);
            }
            unchecked {
                _approve(owner, spender, currentAllowance - value, false);
            }
        }
    }

}

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC1155InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"InvalidApprover","type":"error"},{"inputs":[{"internalType":"uint256","name":"idsLength","type":"uint256"},{"internalType":"uint256","name":"valuesLength","type":"uint256"}],"name":"InvalidArrayLength","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"InvalidOperator","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"InvalidSpender","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"MissingApprovalForAll","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","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":"values","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":"value","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":[],"name":"_nft_count","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"isInAllowlist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes","name":"","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":"value","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"setAllowList","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":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]

60a06040523480156200001157600080fd5b50604051620024b0380380620024b083398101604081905262000034916200039c565b8181612710600a33806200006357604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6200006e8162000105565b5060056200007d858262000497565b5060066200008c848262000497565b506080819052336000818152600a60208190526040909120805460ff19166001179055620000d59190620000c39060129062000678565b620000cf908562000690565b62000155565b50505050620000fd6040518060a00160405280606b815260200162002445606b913962000193565b5050620006c0565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0382166200018157604051639cfea58360e01b8152600060048201526024016200005a565b6200018f60008383620001a1565b5050565b60096200018f828262000497565b6001600160a01b038316620001d0578060076000828254620001c49190620006aa565b90915550620002449050565b6001600160a01b03831660009081526001602052604090205481811015620002255760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016200005a565b6001600160a01b03841660009081526001602052604090209082900390555b6001600160a01b038216620002625760078054829003905562000281565b6001600160a01b03821660009081526001602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620002c791815260200190565b60405180910390a3505050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620002fc57600080fd5b81516001600160401b0380821115620003195762000319620002d4565b604051601f8301601f19908116603f01168101908282118183101715620003445762000344620002d4565b81604052838152602092508660208588010111156200036257600080fd5b600091505b8382101562000386578582018301518183018401529082019062000367565b6000602085830101528094505050505092915050565b60008060408385031215620003b057600080fd5b82516001600160401b0380821115620003c857600080fd5b620003d686838701620002ea565b93506020850151915080821115620003ed57600080fd5b50620003fc85828601620002ea565b9150509250929050565b600181811c908216806200041b57607f821691505b6020821081036200043c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000492576000816000526020600020601f850160051c810160208610156200046d5750805b601f850160051c820191505b818110156200048e5782815560010162000479565b5050505b505050565b81516001600160401b03811115620004b357620004b3620002d4565b620004cb81620004c4845462000406565b8462000442565b602080601f831160018114620005035760008415620004ea5750858301515b600019600386901b1c1916600185901b1785556200048e565b600085815260208120601f198616915b82811015620005345788860151825594840194600190910190840162000513565b5085821015620005535787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620005ba5781600019048211156200059e576200059e62000563565b80851615620005ac57918102915b93841c93908002906200057e565b509250929050565b600082620005d35750600162000672565b81620005e25750600062000672565b8160018114620005fb5760028114620006065762000626565b600191505062000672565b60ff8411156200061a576200061a62000563565b50506001821b62000672565b5060208310610133831016604e8410600b84101617156200064b575081810a62000672565b62000657838362000579565b80600019048211156200066e576200066e62000563565b0290505b92915050565b60006200068960ff841683620005c2565b9392505050565b808202811582820484141762000672576200067262000563565b8082018082111562000672576200067262000563565b608051611d46620006ff6000396000818161024c01528181610cd001528181610d3801528181610df101528181610e360152610efb0152611d466000f3fe608060405234801561001057600080fd5b506004361061014c5760003560e01c80634f5dd7a0116100c3578063a22cb4651161007c578063a22cb465146102d5578063a9059cbb146102e8578063dd62ed3e146102fb578063e985e9c514610334578063f242432a14610347578063f2fde38b1461035a57600080fd5b80634f5dd7a01461024757806370a082311461026e578063715018a6146102975780637666f1251461029f5780638da5cb5b146102b257806395d89b41146102cd57600080fd5b806323b872dd1161011557806323b872dd146101ca57806329d0fdc0146101dd5780632eb2c2d6146101f0578063313ce5671461020557806342966c68146102145780634e1273f41461022757600080fd5b8062fdd58e1461015157806306fdde0314610177578063095ea7b31461018c5780630e89341c146101af57806318160ddd146101c2575b600080fd5b61016461015f366004611727565b61036d565b6040519081526020015b60405180910390f35b61017f610397565b60405161016e9190611751565b61019f61019a366004611727565b610429565b604051901515815260200161016e565b61017f6101bd3660046117a0565b610441565b600754610164565b61019f6101d83660046117b9565b6104d5565b61019f6101eb3660046117f5565b6104f9565b6102036101fe36600461189e565b610517565b005b6040516012815260200161016e565b6102036102223660046117a0565b6105e8565b61023a610235366004611959565b610649565b60405161016e9190611a01565b6101647f000000000000000000000000000000000000000000000000000000000000000081565b61016461027c3660046117f5565b6001600160a01b031660009081526001602052604090205490565b61020361073e565b6102036102ad366004611a14565b610752565b6000546040516001600160a01b03909116815260200161016e565b61017f6107e7565b6102036102e3366004611a14565b6107f6565b61019f6102f6366004611727565b61088d565b610164610309366004611a50565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b61019f610342366004611a50565b61089b565b610203610355366004611a83565b6108c9565b6102036103683660046117f5565b610930565b60008181526003602090815260408083206001600160a01b03861684529091529020545b92915050565b6060600580546103a690611afb565b80601f01602080910402602001604051908101604052809291908181526020018280546103d290611afb565b801561041f5780601f106103f45761010080835404028352916020019161041f565b820191906000526020600020905b81548152906001019060200180831161040257829003601f168201915b5050505050905090565b60003361043781858561096e565b5060019392505050565b60606009805461045090611afb565b80601f016020809104026020016040519081016040528092919081815260200182805461047c90611afb565b80156104c95780601f1061049e576101008083540402835291602001916104c9565b820191906000526020600020905b8154815290600101906020018083116104ac57829003601f168201915b50505050509050919050565b6000336104e385828561097b565b6104ee8585856109f3565b506001949350505050565b6001600160a01b03166000908152600a602052604090205460ff1690565b336001600160a01b03891681148015906105385750610536898261089b565b155b1561056e57604051634843fdfb60e01b81526001600160a01b0380831660048301528a1660248201526044015b60405180910390fd5b6105dd898989898080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b918291850190849080828437600092019190915250610b3692505050565b505050505050505050565b338061060a576040516313053d9360e21b815260006004820152602401610565565b610613816104f9565b61063b576040516313053d9360e21b81526001600160a01b0382166004820152602401610565565b6106458183610bfe565b5050565b606083821461067557604051633b5cfc6960e21b81526004810183905260248101859052604401610565565b60008467ffffffffffffffff81111561069057610690611b35565b6040519080825280602002602001820160405280156106b9578160200160208202803683370190505b50905060005b858110156107345761070f8787838181106106dc576106dc611b4b565b90506020020160208101906106f191906117f5565b86868481811061070357610703611b4b565b9050602002013561036d565b82828151811061072157610721611b4b565b60209081029190910101526001016106bf565b5095945050505050565b610746610c34565b6107506000610c70565b565b61075a610c34565b6001600160a01b0382166000908152600a60209081526040808320805460ff19168515801591909117909155600190925290912054906107be5760006107a26012600a611c5b565b6107ac9083611c6a565b90506107b88482610cc0565b50505050565b60006107cc6012600a611c5b565b6107d69083611c6a565b90506107b88482610e26565b505050565b6060600680546103a690611afb565b6001600160a01b03821661082057604051633eaa03e360e01b815260006004820152602401610565565b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155905190815283917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3191015b60405180910390a3505050565b6000336104378185856109f3565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b336001600160a01b03871681148015906108ea57506108e8878261089b565b155b1561091b57604051634843fdfb60e01b81526001600160a01b03808316600483015288166024820152604401610565565b61092787878787610f48565b50505050505050565b610938610c34565b6001600160a01b03811661096257604051631e4fbdf760e01b815260006004820152602401610565565b61096b81610c70565b50565b6107e28383836001611015565b6001600160a01b0383811660009081526002602090815260408083209386168352929052205460001981146107b857818110156109e457604051630c95cf2760e11b81526001600160a01b03841660048201526024810182905260448101839052606401610565565b6107b884848484036000611015565b6001600160a01b038316610a1d576040516313053d9360e21b815260006004820152602401610565565b6001600160a01b038216610a4757604051639cfea58360e01b815260006004820152602401610565565b6001600160a01b03808416600090815260016020526040808220549285168252902054610a73856104f9565b610ac7576000610a856012600a611c5b565b610a8f8585611c8c565b610a999190611c6a565b610aa56012600a611c5b565b610aaf9085611c6a565b610ab99190611c8c565b9050610ac58682610cc0565b505b610ad0846104f9565b610b24576000610ae26012600a611c5b565b610aec9083611c6a565b610af86012600a611c5b565b610b028685611c9f565b610b0c9190611c6a565b610b169190611c8c565b9050610b228582610e26565b505b610b2f8585856110ea565b5050505050565b6001600160a01b038316610b6057604051639cfea58360e01b815260006004820152602401610565565b6001600160a01b038416610b8a576040516313053d9360e21b815260006004820152602401610565565b6000805b8351811015610bc657828181518110610ba957610ba9611b4b565b602002602001015182610bbc9190611c9f565b9150600101610b8e565b50610be78585610bd86012600a611c5b565b610be29085611cb2565b6110ea565b610bf48560008585611207565b610b2f8482610e26565b6001600160a01b038216610c28576040516313053d9360e21b815260006004820152602401610565565b610645826000836110ea565b33610c476000546001600160a01b031690565b6001600160a01b0316146107505760405163118cdaa760e01b8152336004820152602401610565565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80600003610ccc575050565b60007f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff811115610d0757610d07611b35565b604051908082528060200260200182016040528015610d30578160200160208202803683370190505b50905060005b7f0000000000000000000000000000000000000000000000000000000000000000811015610de75760008181526003602090815260408083206001600160a01b03881684529091529020548015610dde57838110610db35783838381518110610da157610da1611b4b565b60200260200101818152505050610de7565b80838381518110610dc657610dc6611b4b565b6020908102919091010152610ddb8185611c8c565b93505b50600101610d36565b50600080610e15837f0000000000000000000000000000000000000000000000000000000000000000611489565b91509150610b2f8560008484611207565b80600003610e32575050565b60007f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff811115610e6d57610e6d611b35565b604051908082528060200260200182016040528015610e96578160200160208202803683370190505b50905060005b82811015610ef1576000610ebc82600854610eb79190611c9f565b611609565b9050828181518110610ed057610ed0611b4b565b602002602001018051809190610ee590611cc9565b90525050600101610e9c565b50600080610f1f837f0000000000000000000000000000000000000000000000000000000000000000611489565b915091508360086000828254610f359190611c9f565b90915550610b2f90506000868484611207565b6001600160a01b038316610f7257604051639cfea58360e01b815260006004820152602401610565565b6001600160a01b038416610f9c576040516313053d9360e21b815260006004820152602401610565565b60408051600180825260208201859052818301908152606082018490526080820190925290610fdc8686610fd26012600a611c5b565b610be29087611cb2565b610fe5866104f9565b610ff657610ff68660008484611207565b610fff856104f9565b61100d5761100d8584610e26565b505050505050565b6001600160a01b03841661103f576040516322f051b160e21b815260006004820152602401610565565b6001600160a01b0383166110695760405163270af7ed60e11b815260006004820152602401610565565b6001600160a01b03808516600090815260026020908152604080832093871683529290522082905580156107b857826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516110dc91815260200190565b60405180910390a350505050565b6001600160a01b03831661111557806007600082825461110a9190611c9f565b909155506111879050565b6001600160a01b038316600090815260016020526040902054818110156111685760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610565565b6001600160a01b03841660009081526001602052604090209082900390555b6001600160a01b0382166111a3576007805482900390556111c2565b6001600160a01b03821660009081526001602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161088091815260200190565b80518251146112365781518151604051633b5cfc6960e21b815260048101929092526024820152604401610565565b3360005b835181101561137c57600084828151811061125757611257611b4b565b60200260200101519050600084838151811061127557611275611b4b565b602002602001015190508060000361128e575050611374565b6001600160a01b0388161561132a5760008281526003602090815260408083206001600160a01b038c16845290915290205481811015611301576040516303dee4c560e01b81526001600160a01b038a166004820152602481018290526044810183905260648101849052608401610565565b60008381526003602090815260408083206001600160a01b038d16845290915290209082900390555b6001600160a01b038716156113715760008281526003602090815260408083206001600160a01b038b1684529091528120805483929061136b908490611c9f565b90915550505b50505b60010161123a565b50825160010361142b5760008360008151811061139b5761139b611b4b565b602002602001015190506000836000815181106113ba576113ba611b4b565b60200260200101519050856001600160a01b0316876001600160a01b0316846001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62858560405161141c929190918252602082015260400190565b60405180910390a45050610b2f565b836001600160a01b0316856001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb868660405161147a929190611ce2565b60405180910390a45050505050565b6060806000805b848110156114d05760008682815181106114ac576114ac611b4b565b602002602001015111156114c857816114c481611cc9565b9250505b600101611490565b5060008167ffffffffffffffff8111156114ec576114ec611b35565b604051908082528060200260200182016040528015611515578160200160208202803683370190505b50905060008267ffffffffffffffff81111561153357611533611b35565b60405190808252806020026020018201604052801561155c578160200160208202803683370190505b5090506000805b878110156115f957600089828151811061157f5761157f611b4b565b602002602001015111156115f157808483815181106115a0576115a0611b4b565b6020026020010181815250508881815181106115be576115be611b4b565b60200260200101518383815181106115d8576115d8611b4b565b6020908102919091010152816115ed81611cc9565b9250505b600101611563565b50919450925050505b9250929050565b6040805142602080830191909152438284015260608083018590528351808403909101815260809092019092528051910120600090819060f81c601f81116116545760009150611704565b603e8160ff16116116685760019150611704565b605d8160ff161161167c5760029150611704565b607b8160ff16116116905760039150611704565b60998160ff16116116a45760049150611704565b60b78160ff16116116b85760059150611704565b60d58160ff16116116cc5760069150611704565b60ea8160ff16116116e05760079150611704565b60f78160ff16116116f45760089150611704565b60ff8160ff161161170457600991505b5092915050565b80356001600160a01b038116811461172257600080fd5b919050565b6000806040838503121561173a57600080fd5b6117438361170b565b946020939093013593505050565b60006020808352835180602085015260005b8181101561177f57858101830151858201604001528201611763565b506000604082860101526040601f19601f8301168501019250505092915050565b6000602082840312156117b257600080fd5b5035919050565b6000806000606084860312156117ce57600080fd5b6117d78461170b565b92506117e56020850161170b565b9150604084013590509250925092565b60006020828403121561180757600080fd5b6118108261170b565b9392505050565b60008083601f84011261182957600080fd5b50813567ffffffffffffffff81111561184157600080fd5b6020830191508360208260051b850101111561160257600080fd5b60008083601f84011261186e57600080fd5b50813567ffffffffffffffff81111561188657600080fd5b60208301915083602082850101111561160257600080fd5b60008060008060008060008060a0898b0312156118ba57600080fd5b6118c38961170b565b97506118d160208a0161170b565b9650604089013567ffffffffffffffff808211156118ee57600080fd5b6118fa8c838d01611817565b909850965060608b013591508082111561191357600080fd5b61191f8c838d01611817565b909650945060808b013591508082111561193857600080fd5b506119458b828c0161185c565b999c989b5096995094979396929594505050565b6000806000806040858703121561196f57600080fd5b843567ffffffffffffffff8082111561198757600080fd5b61199388838901611817565b909650945060208701359150808211156119ac57600080fd5b506119b987828801611817565b95989497509550505050565b60008151808452602080850194506020840160005b838110156119f6578151875295820195908201906001016119da565b509495945050505050565b60208152600061181060208301846119c5565b60008060408385031215611a2757600080fd5b611a308361170b565b915060208301358015158114611a4557600080fd5b809150509250929050565b60008060408385031215611a6357600080fd5b611a6c8361170b565b9150611a7a6020840161170b565b90509250929050565b60008060008060008060a08789031215611a9c57600080fd5b611aa58761170b565b9550611ab36020880161170b565b94506040870135935060608701359250608087013567ffffffffffffffff811115611add57600080fd5b611ae989828a0161185c565b979a9699509497509295939492505050565b600181811c90821680611b0f57607f821691505b602082108103611b2f57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611bb2578160001904821115611b9857611b98611b61565b80851615611ba557918102915b93841c9390800290611b7c565b509250929050565b600082611bc957506001610391565b81611bd657506000610391565b8160018114611bec5760028114611bf657611c12565b6001915050610391565b60ff841115611c0757611c07611b61565b50506001821b610391565b5060208310610133831016604e8410600b8410161715611c35575081810a610391565b611c3f8383611b77565b8060001904821115611c5357611c53611b61565b029392505050565b600061181060ff841683611bba565b600082611c8757634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561039157610391611b61565b8082018082111561039157610391611b61565b808202811582820484141761039157610391611b61565b600060018201611cdb57611cdb611b61565b5060010190565b604081526000611cf560408301856119c5565b8281036020840152611d0781856119c5565b9594505050505056fea2646970667358221220e158293b7714673bbbd226aa81a48e53bcf4ed7be7ee3beffbf0340d19fd147264736f6c6343000817003368747470733a2f2f676f6c642d74686f756768746c6573732d6375636b6f6f2d3837312e6d7970696e6174612e636c6f75642f697066732f516d5847596163455a61586b31676b584863446f314d466a6a624b5874555855794158794d686b505270533835482f7b69647d000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000004436f6465000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004434f444500000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061014c5760003560e01c80634f5dd7a0116100c3578063a22cb4651161007c578063a22cb465146102d5578063a9059cbb146102e8578063dd62ed3e146102fb578063e985e9c514610334578063f242432a14610347578063f2fde38b1461035a57600080fd5b80634f5dd7a01461024757806370a082311461026e578063715018a6146102975780637666f1251461029f5780638da5cb5b146102b257806395d89b41146102cd57600080fd5b806323b872dd1161011557806323b872dd146101ca57806329d0fdc0146101dd5780632eb2c2d6146101f0578063313ce5671461020557806342966c68146102145780634e1273f41461022757600080fd5b8062fdd58e1461015157806306fdde0314610177578063095ea7b31461018c5780630e89341c146101af57806318160ddd146101c2575b600080fd5b61016461015f366004611727565b61036d565b6040519081526020015b60405180910390f35b61017f610397565b60405161016e9190611751565b61019f61019a366004611727565b610429565b604051901515815260200161016e565b61017f6101bd3660046117a0565b610441565b600754610164565b61019f6101d83660046117b9565b6104d5565b61019f6101eb3660046117f5565b6104f9565b6102036101fe36600461189e565b610517565b005b6040516012815260200161016e565b6102036102223660046117a0565b6105e8565b61023a610235366004611959565b610649565b60405161016e9190611a01565b6101647f000000000000000000000000000000000000000000000000000000000000000a81565b61016461027c3660046117f5565b6001600160a01b031660009081526001602052604090205490565b61020361073e565b6102036102ad366004611a14565b610752565b6000546040516001600160a01b03909116815260200161016e565b61017f6107e7565b6102036102e3366004611a14565b6107f6565b61019f6102f6366004611727565b61088d565b610164610309366004611a50565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b61019f610342366004611a50565b61089b565b610203610355366004611a83565b6108c9565b6102036103683660046117f5565b610930565b60008181526003602090815260408083206001600160a01b03861684529091529020545b92915050565b6060600580546103a690611afb565b80601f01602080910402602001604051908101604052809291908181526020018280546103d290611afb565b801561041f5780601f106103f45761010080835404028352916020019161041f565b820191906000526020600020905b81548152906001019060200180831161040257829003601f168201915b5050505050905090565b60003361043781858561096e565b5060019392505050565b60606009805461045090611afb565b80601f016020809104026020016040519081016040528092919081815260200182805461047c90611afb565b80156104c95780601f1061049e576101008083540402835291602001916104c9565b820191906000526020600020905b8154815290600101906020018083116104ac57829003601f168201915b50505050509050919050565b6000336104e385828561097b565b6104ee8585856109f3565b506001949350505050565b6001600160a01b03166000908152600a602052604090205460ff1690565b336001600160a01b03891681148015906105385750610536898261089b565b155b1561056e57604051634843fdfb60e01b81526001600160a01b0380831660048301528a1660248201526044015b60405180910390fd5b6105dd898989898080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b918291850190849080828437600092019190915250610b3692505050565b505050505050505050565b338061060a576040516313053d9360e21b815260006004820152602401610565565b610613816104f9565b61063b576040516313053d9360e21b81526001600160a01b0382166004820152602401610565565b6106458183610bfe565b5050565b606083821461067557604051633b5cfc6960e21b81526004810183905260248101859052604401610565565b60008467ffffffffffffffff81111561069057610690611b35565b6040519080825280602002602001820160405280156106b9578160200160208202803683370190505b50905060005b858110156107345761070f8787838181106106dc576106dc611b4b565b90506020020160208101906106f191906117f5565b86868481811061070357610703611b4b565b9050602002013561036d565b82828151811061072157610721611b4b565b60209081029190910101526001016106bf565b5095945050505050565b610746610c34565b6107506000610c70565b565b61075a610c34565b6001600160a01b0382166000908152600a60209081526040808320805460ff19168515801591909117909155600190925290912054906107be5760006107a26012600a611c5b565b6107ac9083611c6a565b90506107b88482610cc0565b50505050565b60006107cc6012600a611c5b565b6107d69083611c6a565b90506107b88482610e26565b505050565b6060600680546103a690611afb565b6001600160a01b03821661082057604051633eaa03e360e01b815260006004820152602401610565565b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155905190815283917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3191015b60405180910390a3505050565b6000336104378185856109f3565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b336001600160a01b03871681148015906108ea57506108e8878261089b565b155b1561091b57604051634843fdfb60e01b81526001600160a01b03808316600483015288166024820152604401610565565b61092787878787610f48565b50505050505050565b610938610c34565b6001600160a01b03811661096257604051631e4fbdf760e01b815260006004820152602401610565565b61096b81610c70565b50565b6107e28383836001611015565b6001600160a01b0383811660009081526002602090815260408083209386168352929052205460001981146107b857818110156109e457604051630c95cf2760e11b81526001600160a01b03841660048201526024810182905260448101839052606401610565565b6107b884848484036000611015565b6001600160a01b038316610a1d576040516313053d9360e21b815260006004820152602401610565565b6001600160a01b038216610a4757604051639cfea58360e01b815260006004820152602401610565565b6001600160a01b03808416600090815260016020526040808220549285168252902054610a73856104f9565b610ac7576000610a856012600a611c5b565b610a8f8585611c8c565b610a999190611c6a565b610aa56012600a611c5b565b610aaf9085611c6a565b610ab99190611c8c565b9050610ac58682610cc0565b505b610ad0846104f9565b610b24576000610ae26012600a611c5b565b610aec9083611c6a565b610af86012600a611c5b565b610b028685611c9f565b610b0c9190611c6a565b610b169190611c8c565b9050610b228582610e26565b505b610b2f8585856110ea565b5050505050565b6001600160a01b038316610b6057604051639cfea58360e01b815260006004820152602401610565565b6001600160a01b038416610b8a576040516313053d9360e21b815260006004820152602401610565565b6000805b8351811015610bc657828181518110610ba957610ba9611b4b565b602002602001015182610bbc9190611c9f565b9150600101610b8e565b50610be78585610bd86012600a611c5b565b610be29085611cb2565b6110ea565b610bf48560008585611207565b610b2f8482610e26565b6001600160a01b038216610c28576040516313053d9360e21b815260006004820152602401610565565b610645826000836110ea565b33610c476000546001600160a01b031690565b6001600160a01b0316146107505760405163118cdaa760e01b8152336004820152602401610565565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80600003610ccc575050565b60007f000000000000000000000000000000000000000000000000000000000000000a67ffffffffffffffff811115610d0757610d07611b35565b604051908082528060200260200182016040528015610d30578160200160208202803683370190505b50905060005b7f000000000000000000000000000000000000000000000000000000000000000a811015610de75760008181526003602090815260408083206001600160a01b03881684529091529020548015610dde57838110610db35783838381518110610da157610da1611b4b565b60200260200101818152505050610de7565b80838381518110610dc657610dc6611b4b565b6020908102919091010152610ddb8185611c8c565b93505b50600101610d36565b50600080610e15837f000000000000000000000000000000000000000000000000000000000000000a611489565b91509150610b2f8560008484611207565b80600003610e32575050565b60007f000000000000000000000000000000000000000000000000000000000000000a67ffffffffffffffff811115610e6d57610e6d611b35565b604051908082528060200260200182016040528015610e96578160200160208202803683370190505b50905060005b82811015610ef1576000610ebc82600854610eb79190611c9f565b611609565b9050828181518110610ed057610ed0611b4b565b602002602001018051809190610ee590611cc9565b90525050600101610e9c565b50600080610f1f837f000000000000000000000000000000000000000000000000000000000000000a611489565b915091508360086000828254610f359190611c9f565b90915550610b2f90506000868484611207565b6001600160a01b038316610f7257604051639cfea58360e01b815260006004820152602401610565565b6001600160a01b038416610f9c576040516313053d9360e21b815260006004820152602401610565565b60408051600180825260208201859052818301908152606082018490526080820190925290610fdc8686610fd26012600a611c5b565b610be29087611cb2565b610fe5866104f9565b610ff657610ff68660008484611207565b610fff856104f9565b61100d5761100d8584610e26565b505050505050565b6001600160a01b03841661103f576040516322f051b160e21b815260006004820152602401610565565b6001600160a01b0383166110695760405163270af7ed60e11b815260006004820152602401610565565b6001600160a01b03808516600090815260026020908152604080832093871683529290522082905580156107b857826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516110dc91815260200190565b60405180910390a350505050565b6001600160a01b03831661111557806007600082825461110a9190611c9f565b909155506111879050565b6001600160a01b038316600090815260016020526040902054818110156111685760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610565565b6001600160a01b03841660009081526001602052604090209082900390555b6001600160a01b0382166111a3576007805482900390556111c2565b6001600160a01b03821660009081526001602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161088091815260200190565b80518251146112365781518151604051633b5cfc6960e21b815260048101929092526024820152604401610565565b3360005b835181101561137c57600084828151811061125757611257611b4b565b60200260200101519050600084838151811061127557611275611b4b565b602002602001015190508060000361128e575050611374565b6001600160a01b0388161561132a5760008281526003602090815260408083206001600160a01b038c16845290915290205481811015611301576040516303dee4c560e01b81526001600160a01b038a166004820152602481018290526044810183905260648101849052608401610565565b60008381526003602090815260408083206001600160a01b038d16845290915290209082900390555b6001600160a01b038716156113715760008281526003602090815260408083206001600160a01b038b1684529091528120805483929061136b908490611c9f565b90915550505b50505b60010161123a565b50825160010361142b5760008360008151811061139b5761139b611b4b565b602002602001015190506000836000815181106113ba576113ba611b4b565b60200260200101519050856001600160a01b0316876001600160a01b0316846001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62858560405161141c929190918252602082015260400190565b60405180910390a45050610b2f565b836001600160a01b0316856001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb868660405161147a929190611ce2565b60405180910390a45050505050565b6060806000805b848110156114d05760008682815181106114ac576114ac611b4b565b602002602001015111156114c857816114c481611cc9565b9250505b600101611490565b5060008167ffffffffffffffff8111156114ec576114ec611b35565b604051908082528060200260200182016040528015611515578160200160208202803683370190505b50905060008267ffffffffffffffff81111561153357611533611b35565b60405190808252806020026020018201604052801561155c578160200160208202803683370190505b5090506000805b878110156115f957600089828151811061157f5761157f611b4b565b602002602001015111156115f157808483815181106115a0576115a0611b4b565b6020026020010181815250508881815181106115be576115be611b4b565b60200260200101518383815181106115d8576115d8611b4b565b6020908102919091010152816115ed81611cc9565b9250505b600101611563565b50919450925050505b9250929050565b6040805142602080830191909152438284015260608083018590528351808403909101815260809092019092528051910120600090819060f81c601f81116116545760009150611704565b603e8160ff16116116685760019150611704565b605d8160ff161161167c5760029150611704565b607b8160ff16116116905760039150611704565b60998160ff16116116a45760049150611704565b60b78160ff16116116b85760059150611704565b60d58160ff16116116cc5760069150611704565b60ea8160ff16116116e05760079150611704565b60f78160ff16116116f45760089150611704565b60ff8160ff161161170457600991505b5092915050565b80356001600160a01b038116811461172257600080fd5b919050565b6000806040838503121561173a57600080fd5b6117438361170b565b946020939093013593505050565b60006020808352835180602085015260005b8181101561177f57858101830151858201604001528201611763565b506000604082860101526040601f19601f8301168501019250505092915050565b6000602082840312156117b257600080fd5b5035919050565b6000806000606084860312156117ce57600080fd5b6117d78461170b565b92506117e56020850161170b565b9150604084013590509250925092565b60006020828403121561180757600080fd5b6118108261170b565b9392505050565b60008083601f84011261182957600080fd5b50813567ffffffffffffffff81111561184157600080fd5b6020830191508360208260051b850101111561160257600080fd5b60008083601f84011261186e57600080fd5b50813567ffffffffffffffff81111561188657600080fd5b60208301915083602082850101111561160257600080fd5b60008060008060008060008060a0898b0312156118ba57600080fd5b6118c38961170b565b97506118d160208a0161170b565b9650604089013567ffffffffffffffff808211156118ee57600080fd5b6118fa8c838d01611817565b909850965060608b013591508082111561191357600080fd5b61191f8c838d01611817565b909650945060808b013591508082111561193857600080fd5b506119458b828c0161185c565b999c989b5096995094979396929594505050565b6000806000806040858703121561196f57600080fd5b843567ffffffffffffffff8082111561198757600080fd5b61199388838901611817565b909650945060208701359150808211156119ac57600080fd5b506119b987828801611817565b95989497509550505050565b60008151808452602080850194506020840160005b838110156119f6578151875295820195908201906001016119da565b509495945050505050565b60208152600061181060208301846119c5565b60008060408385031215611a2757600080fd5b611a308361170b565b915060208301358015158114611a4557600080fd5b809150509250929050565b60008060408385031215611a6357600080fd5b611a6c8361170b565b9150611a7a6020840161170b565b90509250929050565b60008060008060008060a08789031215611a9c57600080fd5b611aa58761170b565b9550611ab36020880161170b565b94506040870135935060608701359250608087013567ffffffffffffffff811115611add57600080fd5b611ae989828a0161185c565b979a9699509497509295939492505050565b600181811c90821680611b0f57607f821691505b602082108103611b2f57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611bb2578160001904821115611b9857611b98611b61565b80851615611ba557918102915b93841c9390800290611b7c565b509250929050565b600082611bc957506001610391565b81611bd657506000610391565b8160018114611bec5760028114611bf657611c12565b6001915050610391565b60ff841115611c0757611c07611b61565b50506001821b610391565b5060208310610133831016604e8410600b8410161715611c35575081810a610391565b611c3f8383611b77565b8060001904821115611c5357611c53611b61565b029392505050565b600061181060ff841683611bba565b600082611c8757634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561039157610391611b61565b8082018082111561039157610391611b61565b808202811582820484141761039157610391611b61565b600060018201611cdb57611cdb611b61565b5060010190565b604081526000611cf560408301856119c5565b8281036020840152611d0781856119c5565b9594505050505056fea2646970667358221220e158293b7714673bbbd226aa81a48e53bcf4ed7be7ee3beffbf0340d19fd147264736f6c63430008170033

Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.