FTM Price: $1.26 (-2.88%)
Gas: 3.9 GWei
 

Overview

Max Total Supply

10,000 GOAT

Holders

195

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

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

OVERVIEW

GOAT404 is a groundbreaking ERC404-based memecoin on the Fantom network. It introduces a unique concept that combines an exceptional NFT collection curated by two renowned artists within the Fantom community.

Contract Source Code Verified (Exact Match)

Contract Name:
GOAT404

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : Goat404.sol
//SPDX-License-Identifier: UNLICENSED

  /**
   
 ██████╗  ██████╗  █████╗ ████████╗██╗  ██╗ ██████╗ ██╗  ██╗
██╔════╝ ██╔═══██╗██╔══██╗╚══██╔══╝██║  ██║██╔═████╗██║  ██║
██║  ███╗██║   ██║███████║   ██║   ███████║██║██╔██║███████║
██║   ██║██║   ██║██╔══██║   ██║   ╚════██║████╔╝██║╚════██║
╚██████╔╝╚██████╔╝██║  ██║   ██║        ██║╚██████╔╝     ██║
 ╚═════╝  ╚═════╝ ╚═╝  ╚═╝   ╚═╝        ╚═╝ ╚═════╝      ╚═╝
                                                                                           
 */

// website : goat404.tech
// GOAT404 is the first ERC404 Memecoin on Fantom Network
// Fantom GOAT , The Meta GOAT !

pragma solidity ^0.8.0;

pragma solidity ^0.8.20;

abstract contract ReentrancyGuard {
    uint256 private constant NOT_ENTERED = 1;
    uint256 private constant ENTERED = 2;

    uint256 private _status;

    error ReentrancyGuardReentrantCall();

    constructor() {
        _status = NOT_ENTERED;
    }

    modifier nonReentrant() {
        _nonReentrantBefore();
        _;
        _nonReentrantAfter();
    }

    function _nonReentrantBefore() private {
        if (_status == ENTERED) {
            revert ReentrancyGuardReentrantCall();
        }

        _status = ENTERED;
    }

    function _nonReentrantAfter() private {
        _status = NOT_ENTERED;
    }

    function _reentrancyGuardEntered() internal view returns (bool) {
        return _status == ENTERED;
    }
}

pragma solidity ^0.8.20;

library SignedMath {
    function max(int256 a, int256 b) internal pure returns (int256) {
        return a > b ? a : b;
    }

    function min(int256 a, int256 b) internal pure returns (int256) {
        return a < b ? a : b;
    }

    function average(int256 a, int256 b) internal pure returns (int256) {
        int256 x = (a & b) + ((a ^ b) >> 1);
        return x + (int256(uint256(x) >> 255) & (a ^ b));
    }

    function abs(int256 n) internal pure returns (uint256) {
        unchecked {
            return uint256(n >= 0 ? n : -n);
        }
    }
}

pragma solidity ^0.8.20;

library Math {
    error MathOverflowedMulDiv();

    enum Rounding {
        Floor, // Toward negative infinity
        Ceil, // Toward positive infinity
        Trunc, // Toward zero
        Expand // Away from zero
    }

    function tryAdd(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function max(uint256 a, uint256 b) internal pure returns (uint256) {
        return a > b ? a : b;
    }

    function min(uint256 a, uint256 b) internal pure returns (uint256) {
        return a < b ? a : b;
    }

    function average(uint256 a, uint256 b) internal pure returns (uint256) {
        return (a & b) + (a ^ b) / 2;
    }

    function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {
        if (b == 0) {
            return a / b;
        }

        return a == 0 ? 0 : (a - 1) / b + 1;
    }

    function mulDiv(
        uint256 x,
        uint256 y,
        uint256 denominator
    ) internal pure returns (uint256 result) {
        unchecked {
            uint256 prod0 = x * y;
            uint256 prod1;
            assembly {
                let mm := mulmod(x, y, not(0))
                prod1 := sub(sub(mm, prod0), lt(mm, prod0))
            }

            if (prod1 == 0) {
                return prod0 / denominator;
            }

            if (denominator <= prod1) {
                revert MathOverflowedMulDiv();
            }

            uint256 remainder;
            assembly {
                remainder := mulmod(x, y, denominator)

                prod1 := sub(prod1, gt(remainder, prod0))
                prod0 := sub(prod0, remainder)
            }

            uint256 twos = denominator & (0 - denominator);
            assembly {
                denominator := div(denominator, twos)

                prod0 := div(prod0, twos)

                twos := add(div(sub(0, twos), twos), 1)
            }

            prod0 |= prod1 * twos;

            uint256 inverse = (3 * denominator) ^ 2;

            inverse *= 2 - denominator * inverse; // inverse mod 2^8
            inverse *= 2 - denominator * inverse; // inverse mod 2^16
            inverse *= 2 - denominator * inverse; // inverse mod 2^32
            inverse *= 2 - denominator * inverse; // inverse mod 2^64
            inverse *= 2 - denominator * inverse; // inverse mod 2^128
            inverse *= 2 - denominator * inverse; // inverse mod 2^256

            result = prod0 * inverse;
            return result;
        }
    }

    function mulDiv(
        uint256 x,
        uint256 y,
        uint256 denominator,
        Rounding rounding
    ) internal pure returns (uint256) {
        uint256 result = mulDiv(x, y, denominator);
        if (unsignedRoundsUp(rounding) && mulmod(x, y, denominator) > 0) {
            result += 1;
        }
        return result;
    }

    function sqrt(uint256 a) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 result = 1 << (log2(a) >> 1);

        unchecked {
            result = (result + a / result) >> 1;
            result = (result + a / result) >> 1;
            result = (result + a / result) >> 1;
            result = (result + a / result) >> 1;
            result = (result + a / result) >> 1;
            result = (result + a / result) >> 1;
            result = (result + a / result) >> 1;
            return min(result, a / result);
        }
    }

    function sqrt(
        uint256 a,
        Rounding rounding
    ) internal pure returns (uint256) {
        unchecked {
            uint256 result = sqrt(a);
            return
                result +
                (unsignedRoundsUp(rounding) && result * result < a ? 1 : 0);
        }
    }

    function log2(uint256 value) internal pure returns (uint256) {
        uint256 result = 0;
        unchecked {
            if (value >> 128 > 0) {
                value >>= 128;
                result += 128;
            }
            if (value >> 64 > 0) {
                value >>= 64;
                result += 64;
            }
            if (value >> 32 > 0) {
                value >>= 32;
                result += 32;
            }
            if (value >> 16 > 0) {
                value >>= 16;
                result += 16;
            }
            if (value >> 8 > 0) {
                value >>= 8;
                result += 8;
            }
            if (value >> 4 > 0) {
                value >>= 4;
                result += 4;
            }
            if (value >> 2 > 0) {
                value >>= 2;
                result += 2;
            }
            if (value >> 1 > 0) {
                result += 1;
            }
        }
        return result;
    }

    function log2(
        uint256 value,
        Rounding rounding
    ) internal pure returns (uint256) {
        unchecked {
            uint256 result = log2(value);
            return
                result +
                (unsignedRoundsUp(rounding) && 1 << result < value ? 1 : 0);
        }
    }

    function log10(uint256 value) internal pure returns (uint256) {
        uint256 result = 0;
        unchecked {
            if (value >= 10 ** 64) {
                value /= 10 ** 64;
                result += 64;
            }
            if (value >= 10 ** 32) {
                value /= 10 ** 32;
                result += 32;
            }
            if (value >= 10 ** 16) {
                value /= 10 ** 16;
                result += 16;
            }
            if (value >= 10 ** 8) {
                value /= 10 ** 8;
                result += 8;
            }
            if (value >= 10 ** 4) {
                value /= 10 ** 4;
                result += 4;
            }
            if (value >= 10 ** 2) {
                value /= 10 ** 2;
                result += 2;
            }
            if (value >= 10 ** 1) {
                result += 1;
            }
        }
        return result;
    }

    function log10(
        uint256 value,
        Rounding rounding
    ) internal pure returns (uint256) {
        unchecked {
            uint256 result = log10(value);
            return
                result +
                (unsignedRoundsUp(rounding) && 10 ** result < value ? 1 : 0);
        }
    }

    function log256(uint256 value) internal pure returns (uint256) {
        uint256 result = 0;
        unchecked {
            if (value >> 128 > 0) {
                value >>= 128;
                result += 16;
            }
            if (value >> 64 > 0) {
                value >>= 64;
                result += 8;
            }
            if (value >> 32 > 0) {
                value >>= 32;
                result += 4;
            }
            if (value >> 16 > 0) {
                value >>= 16;
                result += 2;
            }
            if (value >> 8 > 0) {
                result += 1;
            }
        }
        return result;
    }

    function log256(
        uint256 value,
        Rounding rounding
    ) internal pure returns (uint256) {
        unchecked {
            uint256 result = log256(value);
            return
                result +
                (
                    unsignedRoundsUp(rounding) && 1 << (result << 3) < value
                        ? 1
                        : 0
                );
        }
    }

    function unsignedRoundsUp(Rounding rounding) internal pure returns (bool) {
        return uint8(rounding) % 2 == 1;
    }
}

pragma solidity ^0.8.20;

library Strings {
    bytes16 private constant HEX_DIGITS = "0123456789abcdef";
    uint8 private constant ADDRESS_LENGTH = 20;

    error StringsInsufficientHexLength(uint256 value, uint256 length);

    function toString(uint256 value) internal pure returns (string memory) {
        unchecked {
            uint256 length = Math.log10(value) + 1;
            string memory buffer = new string(length);
            uint256 ptr;

            assembly {
                ptr := add(buffer, add(32, length))
            }
            while (true) {
                ptr--;

                assembly {
                    mstore8(ptr, byte(mod(value, 10), HEX_DIGITS))
                }
                value /= 10;
                if (value == 0) break;
            }
            return buffer;
        }
    }

    function toStringSigned(
        int256 value
    ) internal pure returns (string memory) {
        return
            string.concat(
                value < 0 ? "-" : "",
                toString(SignedMath.abs(value))
            );
    }

    function toHexString(uint256 value) internal pure returns (string memory) {
        unchecked {
            return toHexString(value, Math.log256(value) + 1);
        }
    }

    function toHexString(
        uint256 value,
        uint256 length
    ) internal pure returns (string memory) {
        uint256 localValue = value;
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = HEX_DIGITS[localValue & 0xf];
            localValue >>= 4;
        }
        if (localValue != 0) {
            revert StringsInsufficientHexLength(value, length);
        }
        return string(buffer);
    }

    function toHexString(address addr) internal pure returns (string memory) {
        return toHexString(uint256(uint160(addr)), ADDRESS_LENGTH);
    }

    function equal(
        string memory a,
        string memory b
    ) internal pure returns (bool) {
        return
            bytes(a).length == bytes(b).length &&
            keccak256(bytes(a)) == keccak256(bytes(b));
    }
}

pragma solidity ^0.8.20;

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

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

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

pragma solidity ^0.8.20;

abstract contract Pausable is Context {
    bool private _paused;

    event Paused(address account);

    event Unpaused(address account);

    error EnforcedPause();

    error ExpectedPause();

    constructor() {
        _paused = false;
    }

    modifier whenNotPaused() {
        _requireNotPaused();
        _;
    }

    modifier whenPaused() {
        _requirePaused();
        _;
    }

    function paused() public view virtual returns (bool) {
        return _paused;
    }

    function _requireNotPaused() internal view virtual {
        if (paused()) {
            revert EnforcedPause();
        }
    }

    function _requirePaused() internal view virtual {
        if (!paused()) {
            revert ExpectedPause();
        }
    }

    function _pause() internal virtual whenNotPaused {
        _paused = true;
        emit Paused(_msgSender());
    }

    function _unpause() internal virtual whenPaused {
        _paused = false;
        emit Unpaused(_msgSender());
    }
}

pragma solidity ^0.8.20;

abstract contract Ownable is Context {
    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() != _msgSender()) {
            revert OwnableUnauthorizedAccount(_msgSender());
        }
    }

    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);
    }
}

pragma solidity ^0.8.20;

abstract contract Ownable2Step is Ownable {
    address private _pendingOwner;

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

    function pendingOwner() public view virtual returns (address) {
        return _pendingOwner;
    }

    function transferOwnership(
        address newOwner
    ) public virtual override onlyOwner {
        _pendingOwner = newOwner;
        emit OwnershipTransferStarted(owner(), newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual override {
        delete _pendingOwner;
        super._transferOwnership(newOwner);
    }

    function acceptOwnership() public virtual {
        address sender = _msgSender();
        if (pendingOwner() != sender) {
            revert OwnableUnauthorizedAccount(sender);
        }
        _transferOwnership(sender);
    }
}

pragma solidity ^0.8.0;

abstract contract ERC721Receiver {
    function onERC721Received(
        address,
        address,
        uint256,
        bytes calldata
    ) external virtual returns (bytes4) {
        return ERC721Receiver.onERC721Received.selector;
    }
}

abstract contract ERC404 is Ownable2Step {
    event ERC20Transfer(
        address indexed from,
        address indexed to,
        uint256 amount
    );
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 amount
    );
    event Transfer(
        address indexed from,
        address indexed to,
        uint256 indexed id
    );
    event ERC721Approval(
        address indexed owner,
        address indexed spender,
        uint256 indexed id
    );
    event ApprovalForAll(
        address indexed owner,
        address indexed operator,
        bool approved
    );

    error NotFound();
    error AlreadyExists();
    error InvalidRecipient();
    error InvalidSender();
    error UnsafeRecipient();
    error Unauthorized();
    error InvalidOwner();

    string public name;

    string public symbol;

    uint8 public immutable decimals;

    uint256 public immutable totalSupply;

    uint256 public minted;

    mapping(address => uint256) public balanceOf;

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

    mapping(uint256 => address) public getApproved;

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

    mapping(uint256 => address) internal _ownerOf;

    mapping(address => uint256[]) internal _owned;

    mapping(uint256 => uint256) internal _ownedIndex;

    mapping(address => bool) public whitelist;

    // Constructor
    constructor(
        string memory _name,
        string memory _symbol,
        uint8 _decimals,
        uint256 _totalNativeSupply,
        address _owner
    ) Ownable(_owner) {
        name = _name;
        symbol = _symbol;
        decimals = _decimals;
        totalSupply = _totalNativeSupply * (10 ** decimals);
    }

    function setWhitelist(address target, bool state) public onlyOwner {
        whitelist[target] = state;
    }

    function ownerOf(uint256 id) public view virtual returns (address owner) {
        owner = _ownerOf[id];

        if (owner == address(0)) {
            revert NotFound();
        }
    }

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

    function approve(
        address spender,
        uint256 amountOrId
    ) public virtual returns (bool) {
        if (amountOrId <= minted && amountOrId > 0) {
            address owner = _ownerOf[amountOrId];

            if (msg.sender != owner && !isApprovedForAll[owner][msg.sender]) {
                revert Unauthorized();
            }

            getApproved[amountOrId] = spender;

            emit Approval(owner, spender, amountOrId);
        } else {
            allowance[msg.sender][spender] = amountOrId;

            emit Approval(msg.sender, spender, amountOrId);
        }

        return true;
    }

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

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

    function transferFrom(
        address from,
        address to,
        uint256 amountOrId
    ) public virtual {
        if (amountOrId <= minted) {
            if (from != _ownerOf[amountOrId]) {
                revert InvalidSender();
            }

            if (to == address(0)) {
                revert InvalidRecipient();
            }

            if (
                msg.sender != from &&
                !isApprovedForAll[from][msg.sender] &&
                msg.sender != getApproved[amountOrId]
            ) {
                revert Unauthorized();
            }

            balanceOf[from] -= _getUnit();

            unchecked {
                balanceOf[to] += _getUnit();
            }

            _ownerOf[amountOrId] = to;
            delete getApproved[amountOrId];

            uint256 updatedId = _owned[from][_owned[from].length - 1];
            _owned[from][_ownedIndex[amountOrId]] = updatedId;

            _owned[from].pop();

            _ownedIndex[updatedId] = _ownedIndex[amountOrId];

            _owned[to].push(amountOrId);

            _ownedIndex[amountOrId] = _owned[to].length - 1;

            emit Transfer(from, to, amountOrId);
            emit ERC20Transfer(from, to, _getUnit());
        } else {
            uint256 allowed = allowance[from][msg.sender];

            if (allowed != type(uint256).max)
                allowance[from][msg.sender] = allowed - amountOrId;

            _transfer(from, to, amountOrId);
        }
    }

    function transfer(
        address to,
        uint256 amount
    ) public virtual returns (bool) {
        return _transfer(msg.sender, to, amount);
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 id
    ) public virtual {
        transferFrom(from, to, id);

        if (
            to.code.length != 0 &&
            ERC721Receiver(to).onERC721Received(msg.sender, from, id, "") !=
            ERC721Receiver.onERC721Received.selector
        ) {
            revert UnsafeRecipient();
        }
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        bytes calldata data
    ) public virtual {
        transferFrom(from, to, id);

        if (
            to.code.length != 0 &&
            ERC721Receiver(to).onERC721Received(msg.sender, from, id, data) !=
            ERC721Receiver.onERC721Received.selector
        ) {
            revert UnsafeRecipient();
        }
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual returns (bool) {
        uint256 unit = _getUnit();
        uint256 balanceBeforeSender = balanceOf[from];
        uint256 balanceBeforeReceiver = balanceOf[to];

        balanceOf[from] -= amount;

        unchecked {
            balanceOf[to] += amount;
        }

        if (!whitelist[from]) {
            uint256 tokens_to_burn = (balanceBeforeSender / unit) -
                (balanceOf[from] / unit);
            for (uint256 i = 0; i < tokens_to_burn; i++) {
                _burn(from);
            }
        }

        if (!whitelist[to]) {
            uint256 tokens_to_mint = (balanceOf[to] / unit) -
                (balanceBeforeReceiver / unit);
            for (uint256 i = 0; i < tokens_to_mint; i++) {
                _mint(to);
            }
        }

        emit ERC20Transfer(from, to, amount);
        return true;
    }

    function _getUnit() internal view returns (uint256) {
        return 10 ** decimals;
    }

    function _mint(address to) internal virtual {
        if (to == address(0)) {
            revert InvalidRecipient();
        }

        unchecked {
            minted++;
        }

        uint256 id = minted;

        if (_ownerOf[id] != address(0)) {
            revert AlreadyExists();
        }

        _ownerOf[id] = to;
        _owned[to].push(id);
        _ownedIndex[id] = _owned[to].length - 1;

        emit Transfer(address(0), to, id);
    }

    function _burn(address from) internal virtual {
        if (from == address(0)) {
            revert InvalidSender();
        }

        uint256 id = _owned[from][_owned[from].length - 1];
        _owned[from].pop();
        delete _ownedIndex[id];
        delete _ownerOf[id];
        delete getApproved[id];

        emit Transfer(from, address(0), id);
    }

    function _setNameSymbol(
        string memory _name,
        string memory _symbol
    ) internal {
        name = _name;
        symbol = _symbol;
    }
}

contract GOAT404 is ERC404, Pausable, ReentrancyGuard {
    string public baseTokenURI;
    uint256 public buyLimit;
    uint256 public sellLimit;
    uint256 public txLimit;
    mapping(address => uint256) public userBuylimit;
    mapping(address => uint256) public userSelllimit;
    using Strings for uint256;
    bool public applyTxLimit;

    constructor(
        address _owner,
        uint256 _initialSupply,
        uint8 _decimal,
        uint256 _buylimit,
        uint256 _selllimit
    ) ERC404("GOAT404", "GOAT", _decimal, _initialSupply, _owner) {
        balanceOf[_owner] = _initialSupply * 10 ** _decimal;
        buyLimit = _buylimit * 10 ** _decimal;
        sellLimit = _selllimit * 10 ** _decimal;
        txLimit = 10 * 10 ** _decimal;
    }

    function setLimit(uint256 _buylimit, uint256 _selllimit) public onlyOwner {
        buyLimit = _buylimit;
        sellLimit = _selllimit;
    }

    function _mint(address to) internal override whenNotPaused {
        return super._mint(to);
    }

    function startApplyingLimit() external onlyOwner {
        applyTxLimit = true;
    }

    function stopApplyingLimit() external onlyOwner {
        applyTxLimit = false;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual override whenNotPaused returns (bool) {
        if (applyTxLimit) {
            require(amount < txLimit, "limit exceeds");
        }
        if (!whitelist[from]) {
            userSelllimit[from] += amount;
            require(userSelllimit[from] <= sellLimit, "not allowed");
        }
        if (!whitelist[to]) {
            userBuylimit[to] += amount;
            require(userBuylimit[to] <= buyLimit, "not allowed");
        }
        return super._transfer(from, to, amount);
    }

    function setTokenURI(string memory _tokenURI) public onlyOwner {
        baseTokenURI = _tokenURI;
    }

    function setNameSymbol(
        string memory _name,
        string memory _symbol
    ) public onlyOwner {
        _setNameSymbol(_name, _symbol);
    }

    function tokenURI(uint256 id) public view override returns (string memory) {
        return
            bytes(baseTokenURI).length > 0
                ? string.concat(baseTokenURI, id.toString(), ".json")
                : "";
    }
}

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"uint256","name":"_initialSupply","type":"uint256"},{"internalType":"uint8","name":"_decimal","type":"uint8"},{"internalType":"uint256","name":"_buylimit","type":"uint256"},{"internalType":"uint256","name":"_selllimit","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AlreadyExists","type":"error"},{"inputs":[],"name":"EnforcedPause","type":"error"},{"inputs":[],"name":"ExpectedPause","type":"error"},{"inputs":[],"name":"InvalidOwner","type":"error"},{"inputs":[],"name":"InvalidRecipient","type":"error"},{"inputs":[],"name":"InvalidSender","type":"error"},{"inputs":[],"name":"NotFound","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"inputs":[],"name":"Unauthorized","type":"error"},{"inputs":[],"name":"UnsafeRecipient","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":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ERC20Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"ERC721Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferStarted","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":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"applyTxLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amountOrId","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseTokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","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":"id","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buylimit","type":"uint256"},{"internalType":"uint256","name":"_selllimit","type":"uint256"}],"name":"setLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"name":"setNameSymbol","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_tokenURI","type":"string"}],"name":"setTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"setWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startApplyingLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopApplyingLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","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":"amountOrId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"txLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userBuylimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userSelllimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]

60c06040523480156200001157600080fd5b506040516200241838038062002418833981016040819052620000349162000205565b604080518082018252600781526611d3d0550d0c0d60ca1b6020808301919091528251808401909352600483526311d3d05560e21b9083015290848688806001600160a01b038116620000a157604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000ac8162000197565b506002620000bb868262000313565b506003620000ca858262000313565b5060ff83166080819052620000e190600a620004f4565b620000ed90836200050c565b60a0525050600d805460ff1916905550506001600e55506200011183600a620004f4565b6200011d90856200050c565b6001600160a01b0386166000908152600560205260409020556200014383600a620004f4565b6200014f90836200050c565b6010556200015f83600a620004f4565b6200016b90826200050c565b6011556200017b83600a620004f4565b6200018890600a6200050c565b60125550620005269350505050565b600180546001600160a01b0319169055620001b281620001b5565b50565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080600080600060a086880312156200021e57600080fd5b85516001600160a01b03811681146200023657600080fd5b60208701516040880151919650945060ff811681146200025557600080fd5b6060870151608090970151959894975095949392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200029957607f821691505b602082108103620002ba57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200030e57600081815260208120601f850160051c81016020861015620002e95750805b601f850160051c820191505b818110156200030a57828155600101620002f5565b5050505b505050565b81516001600160401b038111156200032f576200032f6200026e565b620003478162000340845462000284565b84620002c0565b602080601f8311600181146200037f5760008415620003665750858301515b600019600386901b1c1916600185901b1785556200030a565b600085815260208120601f198616915b82811015620003b0578886015182559484019460019091019084016200038f565b5085821015620003cf5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004365781600019048211156200041a576200041a620003df565b808516156200042857918102915b93841c9390800290620003fa565b509250929050565b6000826200044f57506001620004ee565b816200045e57506000620004ee565b81600181146200047757600281146200048257620004a2565b6001915050620004ee565b60ff841115620004965762000496620003df565b50506001821b620004ee565b5060208310610133831016604e8410600b8410161715620004c7575081810a620004ee565b620004d38383620003f5565b8060001904821115620004ea57620004ea620003df565b0290505b92915050565b60006200050560ff8416836200043e565b9392505050565b8082028115828204841417620004ee57620004ee620003df565b60805160a051611ec56200055360003960006102b301526000818161031d0152610f3c0152611ec56000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c8063715018a611610130578063c87b56dd116100b8578063e30c39781161007c578063e30c3978146104f2578063e985e9c514610503578063f0306ea414610531578063f2fde38b14610539578063f349b1731461054c57600080fd5b8063c87b56dd14610479578063d547cfb71461048c578063dd62ed3e14610494578063e0df5b6f146104bf578063e2d6f33a146104d257600080fd5b80639b19251a116100ff5780639b19251a14610415578063a22cb46514610438578063a9059cbb1461044b578063b88d4fde1461045e578063c6a6035a1461047157600080fd5b8063715018a6146103ec57806379ba5097146103f45780638da5cb5b146103fc57806395d89b411461040d57600080fd5b80634f02c420116101b3578063589210d911610182578063589210d91461039c5780635c975abb146103a55780636352211e146103b05780636caae832146103c357806370a08231146103cc57600080fd5b80634f02c420146103645780634f91e48c1461036d578063504334c21461037657806353d6fd591461038957600080fd5b80631e70b6df116101fa5780631e70b6df146102e3578063207add91146102f057806323b872dd14610305578063313ce5671461031857806342842e0e1461035157600080fd5b806306fdde031461022c578063081812fc1461024a578063095ea7b31461028b57806318160ddd146102ae575b600080fd5b61023461056c565b6040516102419190611750565b60405180910390f35b610273610258366004611783565b6007602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610241565b61029e6102993660046117b3565b6105fa565b6040519015158152602001610241565b6102d57f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610241565b60155461029e9060ff1681565b6103036102fe3660046117dd565b61074b565b005b6103036103133660046117ff565b61075e565b61033f7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610241565b61030361035f3660046117ff565b610ae7565b6102d560045481565b6102d560115481565b6103036103843660046118de565b610bbc565b610303610397366004611942565b610bd2565b6102d560105481565b600d5460ff1661029e565b6102736103be366004611783565b610c05565b6102d560125481565b6102d56103da36600461197e565b60056020526000908152604090205481565b610303610c40565b610303610c54565b6000546001600160a01b0316610273565b610234610c9d565b61029e61042336600461197e565b600c6020526000908152604090205460ff1681565b610303610446366004611942565b610caa565b61029e6104593660046117b3565b610d16565b61030361046c366004611999565b610d2a565b610303610ded565b610234610487366004611783565b610e04565b610234610e62565b6102d56104a2366004611a34565b600660209081526000928352604080842090915290825290205481565b6103036104cd366004611a67565b610e6f565b6102d56104e036600461197e565b60136020526000908152604090205481565b6001546001600160a01b0316610273565b61029e610511366004611a34565b600860209081526000928352604080842090915290825290205460ff1681565b610303610e83565b61030361054736600461197e565b610e97565b6102d561055a36600461197e565b60146020526000908152604090205481565b6002805461057990611a9c565b80601f01602080910402602001604051908101604052809291908181526020018280546105a590611a9c565b80156105f25780601f106105c7576101008083540402835291602001916105f2565b820191906000526020600020905b8154815290600101906020018083116105d557829003601f168201915b505050505081565b6000600454821115801561060e5750600082115b156106e5576000828152600960205260409020546001600160a01b031633811480159061065f57506001600160a01b038116600090815260086020908152604080832033845290915290205460ff16155b1561067c576040516282b42960e81b815260040160405180910390fd5b60008381526007602090815260409182902080546001600160a01b0319166001600160a01b038881169182179092559251868152908416917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350610741565b3360008181526006602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b5060015b92915050565b610753610f08565b601091909155601155565b6004548111610a78576000818152600960205260409020546001600160a01b038481169116146107a157604051636edaef2f60e11b815260040160405180910390fd5b6001600160a01b0382166107c857604051634e46966960e11b815260040160405180910390fd5b336001600160a01b0384161480159061080557506001600160a01b038316600090815260086020908152604080832033845290915290205460ff16155b801561082857506000818152600760205260409020546001600160a01b03163314155b15610845576040516282b42960e81b815260040160405180910390fd5b61084d610f35565b6001600160a01b03841660009081526005602052604081208054909190610875908490611aec565b909155506108839050610f35565b6001600160a01b03808416600081815260056020908152604080832080549096019095558582526009815284822080546001600160a01b031990811690941790556007815284822080549093169092559186168252600a905290812080546108ed90600190611aec565b815481106108fd576108fd611aff565b60009182526020808320909101546001600160a01b0387168352600a82526040808420868552600b9093529092205481549293508392811061094157610941611aff565b60009182526020808320909101929092556001600160a01b0386168152600a9091526040902080548061097657610976611b15565b600082815260208082208301600019908101839055909201909255838252600b8152604080832054848452818420556001600160a01b038616808452600a835290832080546001818101835582865293852001869055925290546109da9190611aec565b6000838152600b602052604080822092909255905183916001600160a01b0380871692908816917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4826001600160a01b0316846001600160a01b03167fe59fdd36d0d223c0c7d996db7ad796880f45e1936cb0bb7ac102e7082e031487610a61610f35565b60405190815260200160405180910390a350505050565b6001600160a01b03831660009081526006602090815260408083203384529091529020546000198114610ad457610aaf8282611aec565b6001600160a01b03851660009081526006602090815260408083203384529091529020555b610adf848484610f67565b50505b505050565b610af283838361075e565b6001600160a01b0382163b15801590610b9e5750604051630a85bd0160e11b8082523360048301526001600160a01b03858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610b6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b919190611b2b565b6001600160e01b03191614155b15610ae257604051633da6393160e01b815260040160405180910390fd5b610bc4610f08565b610bce828261111a565b5050565b610bda610f08565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000818152600960205260409020546001600160a01b031680610c3b5760405163c5723b5160e01b815260040160405180910390fd5b919050565b610c48610f08565b610c526000611133565b565b60015433906001600160a01b03168114610c915760405163118cdaa760e01b81526001600160a01b03821660048201526024015b60405180910390fd5b610c9a81611133565b50565b6003805461057990611a9c565b3360008181526008602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6000610d23338484610f67565b9392505050565b610d3585858561075e565b6001600160a01b0384163b15801590610dcf5750604051630a85bd0160e11b808252906001600160a01b0386169063150b7a0290610d7f9033908a90899089908990600401611b55565b6020604051808303816000875af1158015610d9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc29190611b2b565b6001600160e01b03191614155b15610adf57604051633da6393160e01b815260040160405180910390fd5b610df5610f08565b6015805460ff19166001179055565b60606000600f8054610e1590611a9c565b905011610e315760405180602001604052806000815250610745565b600f610e3c8361114c565b604051602001610e4d929190611ba9565b60405160208183030381529060405292915050565b600f805461057990611a9c565b610e77610f08565b600f610bce8282611c8e565b610e8b610f08565b6015805460ff19169055565b610e9f610f08565b600180546001600160a01b0383166001600160a01b03199091168117909155610ed06000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000546001600160a01b03163314610c525760405163118cdaa760e01b8152336004820152602401610c88565b6000610f627f0000000000000000000000000000000000000000000000000000000000000000600a611e32565b905090565b6000610f716111df565b60155460ff1615610fbd576012548210610fbd5760405162461bcd60e51b815260206004820152600d60248201526c6c696d6974206578636565647360981b6044820152606401610c88565b6001600160a01b0384166000908152600c602052604090205460ff16611062576001600160a01b03841660009081526014602052604081208054849290611005908490611e41565b90915550506011546001600160a01b03851660009081526014602052604090205411156110625760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b6044820152606401610c88565b6001600160a01b0383166000908152600c602052604090205460ff16611107576001600160a01b038316600090815260136020526040812080548492906110aa908490611e41565b90915550506010546001600160a01b03841660009081526013602052604090205411156111075760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b6044820152606401610c88565b611112848484611203565b949350505050565b60026111268382611c8e565b506003610ae28282611c8e565b600180546001600160a01b0319169055610c9a816113c5565b6060600061115983611415565b600101905060008167ffffffffffffffff8111156111795761117961183b565b6040519080825280601f01601f1916602001820160405280156111a3576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846111ad57509392505050565b600d5460ff1615610c525760405163d93c066560e01b815260040160405180910390fd5b60008061120e610f35565b6001600160a01b038087166000818152600560205260408082208054948a168352908220549282529394509192909186919061124a8386611aec565b90915550506001600160a01b03808716600090815260056020908152604080832080548a019055928a168252600c9052205460ff166112e6576001600160a01b0387166000908152600560205260408120546112a7908590611e54565b6112b18585611e54565b6112bb9190611aec565b905060005b818110156112e3576112d1896114ed565b806112db81611e76565b9150506112c0565b50505b6001600160a01b0386166000908152600c602052604090205460ff1661136b5760006113128483611e54565b6001600160a01b038816600090815260056020526040902054611336908690611e54565b6113409190611aec565b905060005b818110156113685761135688611615565b8061136081611e76565b915050611345565b50505b856001600160a01b0316876001600160a01b03167fe59fdd36d0d223c0c7d996db7ad796880f45e1936cb0bb7ac102e7082e031487876040516113b091815260200190565b60405180910390a35060019695505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106114545772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611480576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061149e57662386f26fc10000830492506010015b6305f5e10083106114b6576305f5e100830492506008015b61271083106114ca57612710830492506004015b606483106114dc576064830492506002015b600a83106107455760010192915050565b6001600160a01b03811661151457604051636edaef2f60e11b815260040160405180910390fd5b6001600160a01b0381166000908152600a60205260408120805461153a90600190611aec565b8154811061154a5761154a611aff565b90600052602060002001549050600a6000836001600160a01b03166001600160a01b0316815260200190815260200160002080548061158b5761158b611b15565b600082815260208082208301600019908101839055909201909255828252600b815260408083208390556009825280832080546001600160a01b031990811690915560079092528083208054909216909155518291906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b61161d6111df565b610c9a816001600160a01b03811661164857604051634e46966960e11b815260040160405180910390fd5b60048054600101908190556000818152600960205260409020546001600160a01b0316156116895760405163119b4fd360e11b815260040160405180910390fd5b600081815260096020908152604080832080546001600160a01b0319166001600160a01b038716908117909155808452600a835290832080546001818101835582865293852001859055925290546116e19190611aec565b6000828152600b602052604080822092909255905182916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60005b8381101561174757818101518382015260200161172f565b50506000910152565b602081526000825180602084015261176f81604085016020870161172c565b601f01601f19169190910160400192915050565b60006020828403121561179557600080fd5b5035919050565b80356001600160a01b0381168114610c3b57600080fd5b600080604083850312156117c657600080fd5b6117cf8361179c565b946020939093013593505050565b600080604083850312156117f057600080fd5b50508035926020909101359150565b60008060006060848603121561181457600080fd5b61181d8461179c565b925061182b6020850161179c565b9150604084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261186257600080fd5b813567ffffffffffffffff8082111561187d5761187d61183b565b604051601f8301601f19908116603f011681019082821181831017156118a5576118a561183b565b816040528381528660208588010111156118be57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080604083850312156118f157600080fd5b823567ffffffffffffffff8082111561190957600080fd5b61191586838701611851565b9350602085013591508082111561192b57600080fd5b5061193885828601611851565b9150509250929050565b6000806040838503121561195557600080fd5b61195e8361179c565b91506020830135801515811461197357600080fd5b809150509250929050565b60006020828403121561199057600080fd5b610d238261179c565b6000806000806000608086880312156119b157600080fd5b6119ba8661179c565b94506119c86020870161179c565b935060408601359250606086013567ffffffffffffffff808211156119ec57600080fd5b818801915088601f830112611a0057600080fd5b813581811115611a0f57600080fd5b896020828501011115611a2157600080fd5b9699959850939650602001949392505050565b60008060408385031215611a4757600080fd5b611a508361179c565b9150611a5e6020840161179c565b90509250929050565b600060208284031215611a7957600080fd5b813567ffffffffffffffff811115611a9057600080fd5b61111284828501611851565b600181811c90821680611ab057607f821691505b602082108103611ad057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561074557610745611ad6565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b600060208284031215611b3d57600080fd5b81516001600160e01b031981168114610d2357600080fd5b6001600160a01b038681168252851660208201526040810184905260806060820181905281018290526000828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b6000808454611bb781611a9c565b60018281168015611bcf5760018114611be457611c13565b60ff1984168752821515830287019450611c13565b8860005260208060002060005b85811015611c0a5781548a820152908401908201611bf1565b50505082870194505b505050508351611c2781836020880161172c565b64173539b7b760d91b9101908152600501949350505050565b601f821115610ae257600081815260208120601f850160051c81016020861015611c675750805b601f850160051c820191505b81811015611c8657828155600101611c73565b505050505050565b815167ffffffffffffffff811115611ca857611ca861183b565b611cbc81611cb68454611a9c565b84611c40565b602080601f831160018114611cf15760008415611cd95750858301515b600019600386901b1c1916600185901b178555611c86565b600085815260208120601f198616915b82811015611d2057888601518255948401946001909101908401611d01565b5085821015611d3e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600181815b80851115611d89578160001904821115611d6f57611d6f611ad6565b80851615611d7c57918102915b93841c9390800290611d53565b509250929050565b600082611da057506001610745565b81611dad57506000610745565b8160018114611dc35760028114611dcd57611de9565b6001915050610745565b60ff841115611dde57611dde611ad6565b50506001821b610745565b5060208310610133831016604e8410600b8410161715611e0c575081810a610745565b611e168383611d4e565b8060001904821115611e2a57611e2a611ad6565b029392505050565b6000610d2360ff841683611d91565b8082018082111561074557610745611ad6565b600082611e7157634e487b7160e01b600052601260045260246000fd5b500490565b600060018201611e8857611e88611ad6565b506001019056fea2646970667358221220f09fd6f77e697c68ca5e7baa8e277a7d0035ee0af28119d923bc4b9844b322cc64736f6c6343000814003300000000000000000000000085f069efd8901be2e477eb13d85ef657e553dbab0000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106102275760003560e01c8063715018a611610130578063c87b56dd116100b8578063e30c39781161007c578063e30c3978146104f2578063e985e9c514610503578063f0306ea414610531578063f2fde38b14610539578063f349b1731461054c57600080fd5b8063c87b56dd14610479578063d547cfb71461048c578063dd62ed3e14610494578063e0df5b6f146104bf578063e2d6f33a146104d257600080fd5b80639b19251a116100ff5780639b19251a14610415578063a22cb46514610438578063a9059cbb1461044b578063b88d4fde1461045e578063c6a6035a1461047157600080fd5b8063715018a6146103ec57806379ba5097146103f45780638da5cb5b146103fc57806395d89b411461040d57600080fd5b80634f02c420116101b3578063589210d911610182578063589210d91461039c5780635c975abb146103a55780636352211e146103b05780636caae832146103c357806370a08231146103cc57600080fd5b80634f02c420146103645780634f91e48c1461036d578063504334c21461037657806353d6fd591461038957600080fd5b80631e70b6df116101fa5780631e70b6df146102e3578063207add91146102f057806323b872dd14610305578063313ce5671461031857806342842e0e1461035157600080fd5b806306fdde031461022c578063081812fc1461024a578063095ea7b31461028b57806318160ddd146102ae575b600080fd5b61023461056c565b6040516102419190611750565b60405180910390f35b610273610258366004611783565b6007602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610241565b61029e6102993660046117b3565b6105fa565b6040519015158152602001610241565b6102d57f00000000000000000000000000000000000000000000021e19e0c9bab240000081565b604051908152602001610241565b60155461029e9060ff1681565b6103036102fe3660046117dd565b61074b565b005b6103036103133660046117ff565b61075e565b61033f7f000000000000000000000000000000000000000000000000000000000000001281565b60405160ff9091168152602001610241565b61030361035f3660046117ff565b610ae7565b6102d560045481565b6102d560115481565b6103036103843660046118de565b610bbc565b610303610397366004611942565b610bd2565b6102d560105481565b600d5460ff1661029e565b6102736103be366004611783565b610c05565b6102d560125481565b6102d56103da36600461197e565b60056020526000908152604090205481565b610303610c40565b610303610c54565b6000546001600160a01b0316610273565b610234610c9d565b61029e61042336600461197e565b600c6020526000908152604090205460ff1681565b610303610446366004611942565b610caa565b61029e6104593660046117b3565b610d16565b61030361046c366004611999565b610d2a565b610303610ded565b610234610487366004611783565b610e04565b610234610e62565b6102d56104a2366004611a34565b600660209081526000928352604080842090915290825290205481565b6103036104cd366004611a67565b610e6f565b6102d56104e036600461197e565b60136020526000908152604090205481565b6001546001600160a01b0316610273565b61029e610511366004611a34565b600860209081526000928352604080842090915290825290205460ff1681565b610303610e83565b61030361054736600461197e565b610e97565b6102d561055a36600461197e565b60146020526000908152604090205481565b6002805461057990611a9c565b80601f01602080910402602001604051908101604052809291908181526020018280546105a590611a9c565b80156105f25780601f106105c7576101008083540402835291602001916105f2565b820191906000526020600020905b8154815290600101906020018083116105d557829003601f168201915b505050505081565b6000600454821115801561060e5750600082115b156106e5576000828152600960205260409020546001600160a01b031633811480159061065f57506001600160a01b038116600090815260086020908152604080832033845290915290205460ff16155b1561067c576040516282b42960e81b815260040160405180910390fd5b60008381526007602090815260409182902080546001600160a01b0319166001600160a01b038881169182179092559251868152908416917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350610741565b3360008181526006602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35b5060015b92915050565b610753610f08565b601091909155601155565b6004548111610a78576000818152600960205260409020546001600160a01b038481169116146107a157604051636edaef2f60e11b815260040160405180910390fd5b6001600160a01b0382166107c857604051634e46966960e11b815260040160405180910390fd5b336001600160a01b0384161480159061080557506001600160a01b038316600090815260086020908152604080832033845290915290205460ff16155b801561082857506000818152600760205260409020546001600160a01b03163314155b15610845576040516282b42960e81b815260040160405180910390fd5b61084d610f35565b6001600160a01b03841660009081526005602052604081208054909190610875908490611aec565b909155506108839050610f35565b6001600160a01b03808416600081815260056020908152604080832080549096019095558582526009815284822080546001600160a01b031990811690941790556007815284822080549093169092559186168252600a905290812080546108ed90600190611aec565b815481106108fd576108fd611aff565b60009182526020808320909101546001600160a01b0387168352600a82526040808420868552600b9093529092205481549293508392811061094157610941611aff565b60009182526020808320909101929092556001600160a01b0386168152600a9091526040902080548061097657610976611b15565b600082815260208082208301600019908101839055909201909255838252600b8152604080832054848452818420556001600160a01b038616808452600a835290832080546001818101835582865293852001869055925290546109da9190611aec565b6000838152600b602052604080822092909255905183916001600160a01b0380871692908816917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4826001600160a01b0316846001600160a01b03167fe59fdd36d0d223c0c7d996db7ad796880f45e1936cb0bb7ac102e7082e031487610a61610f35565b60405190815260200160405180910390a350505050565b6001600160a01b03831660009081526006602090815260408083203384529091529020546000198114610ad457610aaf8282611aec565b6001600160a01b03851660009081526006602090815260408083203384529091529020555b610adf848484610f67565b50505b505050565b610af283838361075e565b6001600160a01b0382163b15801590610b9e5750604051630a85bd0160e11b8082523360048301526001600160a01b03858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610b6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b919190611b2b565b6001600160e01b03191614155b15610ae257604051633da6393160e01b815260040160405180910390fd5b610bc4610f08565b610bce828261111a565b5050565b610bda610f08565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000818152600960205260409020546001600160a01b031680610c3b5760405163c5723b5160e01b815260040160405180910390fd5b919050565b610c48610f08565b610c526000611133565b565b60015433906001600160a01b03168114610c915760405163118cdaa760e01b81526001600160a01b03821660048201526024015b60405180910390fd5b610c9a81611133565b50565b6003805461057990611a9c565b3360008181526008602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6000610d23338484610f67565b9392505050565b610d3585858561075e565b6001600160a01b0384163b15801590610dcf5750604051630a85bd0160e11b808252906001600160a01b0386169063150b7a0290610d7f9033908a90899089908990600401611b55565b6020604051808303816000875af1158015610d9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc29190611b2b565b6001600160e01b03191614155b15610adf57604051633da6393160e01b815260040160405180910390fd5b610df5610f08565b6015805460ff19166001179055565b60606000600f8054610e1590611a9c565b905011610e315760405180602001604052806000815250610745565b600f610e3c8361114c565b604051602001610e4d929190611ba9565b60405160208183030381529060405292915050565b600f805461057990611a9c565b610e77610f08565b600f610bce8282611c8e565b610e8b610f08565b6015805460ff19169055565b610e9f610f08565b600180546001600160a01b0383166001600160a01b03199091168117909155610ed06000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000546001600160a01b03163314610c525760405163118cdaa760e01b8152336004820152602401610c88565b6000610f627f0000000000000000000000000000000000000000000000000000000000000012600a611e32565b905090565b6000610f716111df565b60155460ff1615610fbd576012548210610fbd5760405162461bcd60e51b815260206004820152600d60248201526c6c696d6974206578636565647360981b6044820152606401610c88565b6001600160a01b0384166000908152600c602052604090205460ff16611062576001600160a01b03841660009081526014602052604081208054849290611005908490611e41565b90915550506011546001600160a01b03851660009081526014602052604090205411156110625760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b6044820152606401610c88565b6001600160a01b0383166000908152600c602052604090205460ff16611107576001600160a01b038316600090815260136020526040812080548492906110aa908490611e41565b90915550506010546001600160a01b03841660009081526013602052604090205411156111075760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b6044820152606401610c88565b611112848484611203565b949350505050565b60026111268382611c8e565b506003610ae28282611c8e565b600180546001600160a01b0319169055610c9a816113c5565b6060600061115983611415565b600101905060008167ffffffffffffffff8111156111795761117961183b565b6040519080825280601f01601f1916602001820160405280156111a3576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846111ad57509392505050565b600d5460ff1615610c525760405163d93c066560e01b815260040160405180910390fd5b60008061120e610f35565b6001600160a01b038087166000818152600560205260408082208054948a168352908220549282529394509192909186919061124a8386611aec565b90915550506001600160a01b03808716600090815260056020908152604080832080548a019055928a168252600c9052205460ff166112e6576001600160a01b0387166000908152600560205260408120546112a7908590611e54565b6112b18585611e54565b6112bb9190611aec565b905060005b818110156112e3576112d1896114ed565b806112db81611e76565b9150506112c0565b50505b6001600160a01b0386166000908152600c602052604090205460ff1661136b5760006113128483611e54565b6001600160a01b038816600090815260056020526040902054611336908690611e54565b6113409190611aec565b905060005b818110156113685761135688611615565b8061136081611e76565b915050611345565b50505b856001600160a01b0316876001600160a01b03167fe59fdd36d0d223c0c7d996db7ad796880f45e1936cb0bb7ac102e7082e031487876040516113b091815260200190565b60405180910390a35060019695505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106114545772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611480576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061149e57662386f26fc10000830492506010015b6305f5e10083106114b6576305f5e100830492506008015b61271083106114ca57612710830492506004015b606483106114dc576064830492506002015b600a83106107455760010192915050565b6001600160a01b03811661151457604051636edaef2f60e11b815260040160405180910390fd5b6001600160a01b0381166000908152600a60205260408120805461153a90600190611aec565b8154811061154a5761154a611aff565b90600052602060002001549050600a6000836001600160a01b03166001600160a01b0316815260200190815260200160002080548061158b5761158b611b15565b600082815260208082208301600019908101839055909201909255828252600b815260408083208390556009825280832080546001600160a01b031990811690915560079092528083208054909216909155518291906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b61161d6111df565b610c9a816001600160a01b03811661164857604051634e46966960e11b815260040160405180910390fd5b60048054600101908190556000818152600960205260409020546001600160a01b0316156116895760405163119b4fd360e11b815260040160405180910390fd5b600081815260096020908152604080832080546001600160a01b0319166001600160a01b038716908117909155808452600a835290832080546001818101835582865293852001859055925290546116e19190611aec565b6000828152600b602052604080822092909255905182916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60005b8381101561174757818101518382015260200161172f565b50506000910152565b602081526000825180602084015261176f81604085016020870161172c565b601f01601f19169190910160400192915050565b60006020828403121561179557600080fd5b5035919050565b80356001600160a01b0381168114610c3b57600080fd5b600080604083850312156117c657600080fd5b6117cf8361179c565b946020939093013593505050565b600080604083850312156117f057600080fd5b50508035926020909101359150565b60008060006060848603121561181457600080fd5b61181d8461179c565b925061182b6020850161179c565b9150604084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261186257600080fd5b813567ffffffffffffffff8082111561187d5761187d61183b565b604051601f8301601f19908116603f011681019082821181831017156118a5576118a561183b565b816040528381528660208588010111156118be57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080604083850312156118f157600080fd5b823567ffffffffffffffff8082111561190957600080fd5b61191586838701611851565b9350602085013591508082111561192b57600080fd5b5061193885828601611851565b9150509250929050565b6000806040838503121561195557600080fd5b61195e8361179c565b91506020830135801515811461197357600080fd5b809150509250929050565b60006020828403121561199057600080fd5b610d238261179c565b6000806000806000608086880312156119b157600080fd5b6119ba8661179c565b94506119c86020870161179c565b935060408601359250606086013567ffffffffffffffff808211156119ec57600080fd5b818801915088601f830112611a0057600080fd5b813581811115611a0f57600080fd5b896020828501011115611a2157600080fd5b9699959850939650602001949392505050565b60008060408385031215611a4757600080fd5b611a508361179c565b9150611a5e6020840161179c565b90509250929050565b600060208284031215611a7957600080fd5b813567ffffffffffffffff811115611a9057600080fd5b61111284828501611851565b600181811c90821680611ab057607f821691505b602082108103611ad057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561074557610745611ad6565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b600060208284031215611b3d57600080fd5b81516001600160e01b031981168114610d2357600080fd5b6001600160a01b038681168252851660208201526040810184905260806060820181905281018290526000828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b6000808454611bb781611a9c565b60018281168015611bcf5760018114611be457611c13565b60ff1984168752821515830287019450611c13565b8860005260208060002060005b85811015611c0a5781548a820152908401908201611bf1565b50505082870194505b505050508351611c2781836020880161172c565b64173539b7b760d91b9101908152600501949350505050565b601f821115610ae257600081815260208120601f850160051c81016020861015611c675750805b601f850160051c820191505b81811015611c8657828155600101611c73565b505050505050565b815167ffffffffffffffff811115611ca857611ca861183b565b611cbc81611cb68454611a9c565b84611c40565b602080601f831160018114611cf15760008415611cd95750858301515b600019600386901b1c1916600185901b178555611c86565b600085815260208120601f198616915b82811015611d2057888601518255948401946001909101908401611d01565b5085821015611d3e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600181815b80851115611d89578160001904821115611d6f57611d6f611ad6565b80851615611d7c57918102915b93841c9390800290611d53565b509250929050565b600082611da057506001610745565b81611dad57506000610745565b8160018114611dc35760028114611dcd57611de9565b6001915050610745565b60ff841115611dde57611dde611ad6565b50506001821b610745565b5060208310610133831016604e8410600b8410161715611e0c575081810a610745565b611e168383611d4e565b8060001904821115611e2a57611e2a611ad6565b029392505050565b6000610d2360ff841683611d91565b8082018082111561074557610745611ad6565b600082611e7157634e487b7160e01b600052601260045260246000fd5b500490565b600060018201611e8857611e88611ad6565b506001019056fea2646970667358221220f09fd6f77e697c68ca5e7baa8e277a7d0035ee0af28119d923bc4b9844b322cc64736f6c63430008140033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000085f069efd8901be2e477eb13d85ef657e553dbab0000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001

-----Decoded View---------------
Arg [0] : _owner (address): 0x85F069efd8901Be2e477EB13D85Ef657E553dBaB
Arg [1] : _initialSupply (uint256): 10000
Arg [2] : _decimal (uint8): 18
Arg [3] : _buylimit (uint256): 1
Arg [4] : _selllimit (uint256): 1

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 00000000000000000000000085f069efd8901be2e477eb13d85ef657e553dbab
Arg [1] : 0000000000000000000000000000000000000000000000000000000000002710
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000001


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.