ETH Price: $3,358.40 (-2.65%)
Gas: 4 Gwei

Token

MEME KONG (MKONG)
 

Overview

Max Total Supply

176,442,880.525943731 MKONG

Holders

755 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
2 MKONG

Value
$0.00
0x1ac9908e4af18c22d5449fff08ee5ab8cc8f1441
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
MEMEKongProxy

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 1000 runs

Other Settings:
default evmVersion
File 1 of 1 : MEMEKongProxy.sol
// SPDX-License-Identifier: Apache-2.0
pragma solidity ^0.8.0; 


/**
 * @title VZZNProxy
 * @dev This contract combines an upgradeability proxy with basic authorization control functionalities
 */
 
contract MEMEKongProxy {
    /**
     * @dev Event to show ownership has been transferred
     * @param previousOwner representing the address of the previous owner
     * @param newOwner representing the address of the new owner
     */
    event ProxyOwnershipTransferred(address previousOwner, address newOwner);

    /**
     * @dev This event will be emitted every time the implementation gets upgraded
     * @param implementation representing the address of the upgraded implementation
     */
    event Upgraded(address indexed implementation);

    // Storage position of the address of the maintenance boolean
    bytes32 private constant maintenancePosition = keccak256("com.proxy.maintenance");
    // Storage position of the address of the current implementation
    bytes32 private constant implementationPosition = keccak256("com.proxy.implementation");
    // Storage position of the owner of the contract
    bytes32 private constant proxyOwnerPosition = keccak256("com.proxy.owner");

    /**
     * @dev the constructor sets the original owner of the contract to the sender account.
     */
    constructor() {
        setUpgradeabilityOwner(msg.sender);
    }

    /**
     * @dev Tells if contract is on maintenance
     * @return _maintenance if contract is on maintenance
     */
    function maintenance() public view returns (bool _maintenance) {
        bytes32 position = maintenancePosition;
        assembly {
            _maintenance := sload(position)
        }
    }

    /**
     * @dev Sets if contract is on maintenance
     */
    function setMaintenance(bool _maintenance) external onlyProxyOwner {
        bytes32 position = maintenancePosition;
        assembly {
            sstore(position, _maintenance)
        }
    }

    /**
     * @dev Tells the address of the owner
     * @return owner the address of the owner
     */
    function proxyOwner() public view returns (address owner) {
        bytes32 position = proxyOwnerPosition;
        assembly {
            owner := sload(position)
        }
    }

    /**
     * @dev Sets the address of the owner
     */
    function setUpgradeabilityOwner(address newProxyOwner) internal {
        bytes32 position = proxyOwnerPosition;
        assembly {
            sstore(position, newProxyOwner)
        }
    }

    /**
     * @dev Allows the current owner to transfer control of the contract to a newOwner.
     * @param newOwner The address to transfer ownership to.
     */
    function transferProxyOwnership(address newOwner) public onlyProxyOwner {
        require(newOwner != address(0), 'VZZNProxy: INVALID');
        emit ProxyOwnershipTransferred(proxyOwner(), newOwner);
        setUpgradeabilityOwner(newOwner);
    }

    /*
     * @dev Allows the proxy owner to upgrade the current version of the proxy.
     * @param implementation representing the address of the new implementation to be set.
     */
    function upgradeTo(address newImplementation) public onlyProxyOwner {
        _upgradeTo(newImplementation);
    }

    /*
     * @dev Allows the proxy owner to upgrade the current version of the proxy and call the new implementation
     * to initialize whatever is needed through a low level call.
     * @param implementation representing the address of the new implementation to be set.
     * @param data represents the msg.data to bet sent in the low level call. This parameter may include the function
     * signature of the implementation to be called with the needed payload
     */
    function upgradeToAndCall(address newImplementation, bytes memory data) payable public onlyProxyOwner {
        upgradeTo(newImplementation);
        (bool success, ) = address(this).call{ value: msg.value }(data);
        require(success, "VZZNProxy: INVALID");
    }

    /**
     * @dev Fallback function allowing to perform a delegatecall to the given implementation.
     * This function will return whatever the implementation call returns
     */
    fallback() external payable {
        _fallback();
    }

    receive () external payable {
        _fallback();
    }

    /**
     * @dev Tells the address of the current implementation
     * @return impl address of the current implementation
     */
    function implementation() public view returns (address impl) {
        bytes32 position = implementationPosition;
        assembly {
            impl := sload(position)
        }
    }

    /**
     * @dev Sets the address of the current implementation
     * @param newImplementation address representing the new implementation to be set
     */
    function setImplementation(address newImplementation) internal {
        bytes32 position = implementationPosition;
        assembly {
            sstore(position, newImplementation)
        }
    }

    /**
     * @dev Upgrades the implementation address
     * @param newImplementation representing the address of the new implementation to be set
     */
    function _upgradeTo(address newImplementation) internal {
        address currentImplementation = implementation();
        require(currentImplementation != newImplementation, 'VZZNProxy: INVALID');
        setImplementation(newImplementation);
        emit Upgraded(newImplementation);
    }

    function _fallback() internal {
        if (maintenance()) {
            require(msg.sender == proxyOwner(), 'VZZNProxy: FORBIDDEN');
        }
        address _impl = implementation();
        require(_impl != address(0), 'VZZNProxy: INVALID');
        assembly {
            let ptr := mload(0x40)
            calldatacopy(ptr, 0, calldatasize())
            let result := delegatecall(gas(), _impl, ptr, calldatasize(), 0, 0)
            let size := returndatasize()
            returndatacopy(ptr, 0, size)

            switch result
            case 0 { revert(ptr, size) }
            default { return(ptr, size) }
        }
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyProxyOwner() {
        require(msg.sender == proxyOwner(), 'VZZNProxy: FORBIDDEN');
        _;
    }
}

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"ProxyOwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"impl","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maintenance","outputs":[{"internalType":"bool","name":"_maintenance","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxyOwner","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_maintenance","type":"bool"}],"name":"setMaintenance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferProxyOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405234801561001057600080fd5b50610039337f85bd7031deaf76b80f9733e7da132fe310adf86a8e73260691b76988b4b7e35d55565b61093a806100486000396000f3fe6080604052600436106100745760003560e01c80635c60da1b1161004e5780635c60da1b1461010b578063612f2f371461013f5780636c376cc51461015f578063f1739cae1461019e57610083565b8063025313a21461008b5780633659cfe6146100d85780634f1ef286146100f857610083565b36610083576100816101be565b005b6100816101be565b34801561009757600080fd5b507f85bd7031deaf76b80f9733e7da132fe310adf86a8e73260691b76988b4b7e35d545b6040516001600160a01b0390911681526020015b60405180910390f35b3480156100e457600080fd5b506100816100f33660046107a0565b6102ff565b6100816101063660046107f1565b610384565b34801561011757600080fd5b507ff968882b178b4a61d620bde63916829c95f3e1b54eb01ef03837ff1b870f4076546100bb565b34801561014b57600080fd5b5061008161015a3660046108b3565b6104ae565b34801561016b57600080fd5b507fce60c5db904241f4fe710c6b7d7c2e6f59bb4f2afc9ad1549ac9b29eb7f522b65460405190151581526020016100cf565b3480156101aa57600080fd5b506100816101b93660046107a0565b61054b565b7fce60c5db904241f4fe710c6b7d7c2e6f59bb4f2afc9ad1549ac9b29eb7f522b65415610263577f85bd7031deaf76b80f9733e7da132fe310adf86a8e73260691b76988b4b7e35d546001600160a01b0316336001600160a01b0316146102635760405162461bcd60e51b81526020600482015260146024820152732b2d2d27283937bc3c9d102327a92124a22222a760611b60448201526064015b60405180910390fd5b600061028d7ff968882b178b4a61d620bde63916829c95f3e1b54eb01ef03837ff1b870f40765490565b90506001600160a01b0381166102da5760405162461bcd60e51b815260206004820152601260248201527115969693941c9bde1e4e881253959053125160721b604482015260640161025a565b60405136600082376000803683855af43d806000843e8180156102fb578184f35b8184fd5b7f85bd7031deaf76b80f9733e7da132fe310adf86a8e73260691b76988b4b7e35d546001600160a01b0316336001600160a01b0316146103785760405162461bcd60e51b81526020600482015260146024820152732b2d2d27283937bc3c9d102327a92124a22222a760611b604482015260640161025a565b610381816106a2565b50565b7f85bd7031deaf76b80f9733e7da132fe310adf86a8e73260691b76988b4b7e35d546001600160a01b0316336001600160a01b0316146103fd5760405162461bcd60e51b81526020600482015260146024820152732b2d2d27283937bc3c9d102327a92124a22222a760611b604482015260640161025a565b610406826102ff565b6000306001600160a01b0316348360405161042191906108d5565b60006040518083038185875af1925050503d806000811461045e576040519150601f19603f3d011682016040523d82523d6000602084013e610463565b606091505b50509050806104a95760405162461bcd60e51b815260206004820152601260248201527115969693941c9bde1e4e881253959053125160721b604482015260640161025a565b505050565b7f85bd7031deaf76b80f9733e7da132fe310adf86a8e73260691b76988b4b7e35d546001600160a01b0316336001600160a01b0316146105275760405162461bcd60e51b81526020600482015260146024820152732b2d2d27283937bc3c9d102327a92124a22222a760611b604482015260640161025a565b7fce60c5db904241f4fe710c6b7d7c2e6f59bb4f2afc9ad1549ac9b29eb7f522b655565b7f85bd7031deaf76b80f9733e7da132fe310adf86a8e73260691b76988b4b7e35d546001600160a01b0316336001600160a01b0316146105c45760405162461bcd60e51b81526020600482015260146024820152732b2d2d27283937bc3c9d102327a92124a22222a760611b604482015260640161025a565b6001600160a01b03811661060f5760405162461bcd60e51b815260206004820152601260248201527115969693941c9bde1e4e881253959053125160721b604482015260640161025a565b7f5a3e66efaa1e445ebd894728a69d6959842ea1e97bd79b892797106e270efcd96106587f85bd7031deaf76b80f9733e7da132fe310adf86a8e73260691b76988b4b7e35d5490565b604080516001600160a01b03928316815291841660208301520160405180910390a1610381817f85bd7031deaf76b80f9733e7da132fe310adf86a8e73260691b76988b4b7e35d55565b60006106cc7ff968882b178b4a61d620bde63916829c95f3e1b54eb01ef03837ff1b870f40765490565b9050816001600160a01b0316816001600160a01b0316036107245760405162461bcd60e51b815260206004820152601260248201527115969693941c9bde1e4e881253959053125160721b604482015260640161025a565b61074c827ff968882b178b4a61d620bde63916829c95f3e1b54eb01ef03837ff1b870f407655565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a25050565b80356001600160a01b038116811461079b57600080fd5b919050565b6000602082840312156107b257600080fd5b6107bb82610784565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561080457600080fd5b61080d83610784565b9150602083013567ffffffffffffffff8082111561082a57600080fd5b818501915085601f83011261083e57600080fd5b813581811115610850576108506107c2565b604051601f8201601f19908116603f01168101908382118183101715610878576108786107c2565b8160405282815288602084870101111561089157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000602082840312156108c557600080fd5b813580151581146107bb57600080fd5b6000825160005b818110156108f657602081860181015185830152016108dc565b50600092019182525091905056fea26469706673582212200fcc13065f41cb4142d141032c2c3157a24e1944ff6cf007b5a0d6225b3797e064736f6c63430008120033

Deployed Bytecode

0x6080604052600436106100745760003560e01c80635c60da1b1161004e5780635c60da1b1461010b578063612f2f371461013f5780636c376cc51461015f578063f1739cae1461019e57610083565b8063025313a21461008b5780633659cfe6146100d85780634f1ef286146100f857610083565b36610083576100816101be565b005b6100816101be565b34801561009757600080fd5b507f85bd7031deaf76b80f9733e7da132fe310adf86a8e73260691b76988b4b7e35d545b6040516001600160a01b0390911681526020015b60405180910390f35b3480156100e457600080fd5b506100816100f33660046107a0565b6102ff565b6100816101063660046107f1565b610384565b34801561011757600080fd5b507ff968882b178b4a61d620bde63916829c95f3e1b54eb01ef03837ff1b870f4076546100bb565b34801561014b57600080fd5b5061008161015a3660046108b3565b6104ae565b34801561016b57600080fd5b507fce60c5db904241f4fe710c6b7d7c2e6f59bb4f2afc9ad1549ac9b29eb7f522b65460405190151581526020016100cf565b3480156101aa57600080fd5b506100816101b93660046107a0565b61054b565b7fce60c5db904241f4fe710c6b7d7c2e6f59bb4f2afc9ad1549ac9b29eb7f522b65415610263577f85bd7031deaf76b80f9733e7da132fe310adf86a8e73260691b76988b4b7e35d546001600160a01b0316336001600160a01b0316146102635760405162461bcd60e51b81526020600482015260146024820152732b2d2d27283937bc3c9d102327a92124a22222a760611b60448201526064015b60405180910390fd5b600061028d7ff968882b178b4a61d620bde63916829c95f3e1b54eb01ef03837ff1b870f40765490565b90506001600160a01b0381166102da5760405162461bcd60e51b815260206004820152601260248201527115969693941c9bde1e4e881253959053125160721b604482015260640161025a565b60405136600082376000803683855af43d806000843e8180156102fb578184f35b8184fd5b7f85bd7031deaf76b80f9733e7da132fe310adf86a8e73260691b76988b4b7e35d546001600160a01b0316336001600160a01b0316146103785760405162461bcd60e51b81526020600482015260146024820152732b2d2d27283937bc3c9d102327a92124a22222a760611b604482015260640161025a565b610381816106a2565b50565b7f85bd7031deaf76b80f9733e7da132fe310adf86a8e73260691b76988b4b7e35d546001600160a01b0316336001600160a01b0316146103fd5760405162461bcd60e51b81526020600482015260146024820152732b2d2d27283937bc3c9d102327a92124a22222a760611b604482015260640161025a565b610406826102ff565b6000306001600160a01b0316348360405161042191906108d5565b60006040518083038185875af1925050503d806000811461045e576040519150601f19603f3d011682016040523d82523d6000602084013e610463565b606091505b50509050806104a95760405162461bcd60e51b815260206004820152601260248201527115969693941c9bde1e4e881253959053125160721b604482015260640161025a565b505050565b7f85bd7031deaf76b80f9733e7da132fe310adf86a8e73260691b76988b4b7e35d546001600160a01b0316336001600160a01b0316146105275760405162461bcd60e51b81526020600482015260146024820152732b2d2d27283937bc3c9d102327a92124a22222a760611b604482015260640161025a565b7fce60c5db904241f4fe710c6b7d7c2e6f59bb4f2afc9ad1549ac9b29eb7f522b655565b7f85bd7031deaf76b80f9733e7da132fe310adf86a8e73260691b76988b4b7e35d546001600160a01b0316336001600160a01b0316146105c45760405162461bcd60e51b81526020600482015260146024820152732b2d2d27283937bc3c9d102327a92124a22222a760611b604482015260640161025a565b6001600160a01b03811661060f5760405162461bcd60e51b815260206004820152601260248201527115969693941c9bde1e4e881253959053125160721b604482015260640161025a565b7f5a3e66efaa1e445ebd894728a69d6959842ea1e97bd79b892797106e270efcd96106587f85bd7031deaf76b80f9733e7da132fe310adf86a8e73260691b76988b4b7e35d5490565b604080516001600160a01b03928316815291841660208301520160405180910390a1610381817f85bd7031deaf76b80f9733e7da132fe310adf86a8e73260691b76988b4b7e35d55565b60006106cc7ff968882b178b4a61d620bde63916829c95f3e1b54eb01ef03837ff1b870f40765490565b9050816001600160a01b0316816001600160a01b0316036107245760405162461bcd60e51b815260206004820152601260248201527115969693941c9bde1e4e881253959053125160721b604482015260640161025a565b61074c827ff968882b178b4a61d620bde63916829c95f3e1b54eb01ef03837ff1b870f407655565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a25050565b80356001600160a01b038116811461079b57600080fd5b919050565b6000602082840312156107b257600080fd5b6107bb82610784565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561080457600080fd5b61080d83610784565b9150602083013567ffffffffffffffff8082111561082a57600080fd5b818501915085601f83011261083e57600080fd5b813581811115610850576108506107c2565b604051601f8201601f19908116603f01168101908382118183101715610878576108786107c2565b8160405282815288602084870101111561089157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000602082840312156108c557600080fd5b813580151581146107bb57600080fd5b6000825160005b818110156108f657602081860181015185830152016108dc565b50600092019182525091905056fea26469706673582212200fcc13065f41cb4142d141032c2c3157a24e1944ff6cf007b5a0d6225b3797e064736f6c63430008120033

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

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