ETH Price: $3,713.39 (+3.39%)

Token

Planet Degen (PDEGEN)
 

Overview

Max Total Supply

3,333 PDEGEN

Holders

1,227

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Filtered by Token Holder
kdawgnft.eth
Balance
1 PDEGEN
0xc2136927eb5c00d65a9afce9e231772a3d8f9eb8
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

3333 degens far from home with a thirst for vengeance. Planet Degen is building an alpha community of degens, focused on providing all of the benefits that a true degen would need, including top tier alpha from a number of well-respected projects, high quality tools from the m...

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
PlanetDegenProxy

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 10000 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2023-03-14
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.7;

/**
 * @dev Library for reading and writing primitive types to specific storage slots.
 *
 * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.
 * This library helps with reading and writing to such slots without the need for inline assembly.
 *
 * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.
 */
library StorageSlot {
    struct AddressSlot {
        address value;
    }

    struct BooleanSlot {
        bool value;
    }

    /**
     * @dev Returns an `AddressSlot` with member `value` located at `slot`.
     */
    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {
        assembly {
            r.slot := slot
        }
    }

    /**
     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.
     */
    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {
        assembly {
            r.slot := slot
        }
    }
}

library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     *
     * [IMPORTANT]
     * ====
     * You shouldn't rely on `isContract` to protect against flash loan attacks!
     *
     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets
     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract
     * constructor.
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize/address.code.length, which returns 0
        // for contracts in construction, since the code is only stored at the end
        // of the constructor execution.

        return account.code.length > 0;
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResultFromTarget(target, success, returndata, errorMessage);
    }

    /**
     * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling
     * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.
     *
     * _Available since v4.8._
     */
    function verifyCallResultFromTarget(
        address target,
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        if (success) {
            if (returndata.length == 0) {
                // only check isContract if the call was successful and the return data is empty
                // otherwise we already know that it was a contract
                require(isContract(target), "Address: call to non-contract");
            }
            return returndata;
        } else {
            _revert(returndata, errorMessage);
        }
    }

    function _revert(bytes memory returndata, string memory errorMessage) private pure {
        // Look for revert reason and bubble it up if present
        if (returndata.length > 0) {
            // The easiest way to bubble the revert reason is using memory via assembly
            /// @solidity memory-safe-assembly
            assembly {
                let returndata_size := mload(returndata)
                revert(add(32, returndata), returndata_size)
            }
        } else {
            revert(errorMessage);
        }
    }
}

/**
 * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM
 * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to
 * be specified by overriding the virtual {_implementation} function.
 *
 * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a
 * different contract through the {_delegate} function.
 *
 * The success and return data of the delegated call will be returned back to the caller of the proxy.
 */
abstract contract Proxy {
    /**
     * @dev Delegates the current call to `implementation`.
     *
     * This function does not return to its internal call site, it will return directly to the external caller.
     */
    function _delegate(address implementation) internal virtual {
        assembly {
            // Copy msg.data. We take full control of memory in this inline assembly
            // block because it will not return to Solidity code. We overwrite the
            // Solidity scratch pad at memory position 0.
            calldatacopy(0, 0, calldatasize())

            // Call the implementation.
            // out and outsize are 0 because we don't know the size yet.
            let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)

            // Copy the returned data.
            returndatacopy(0, 0, returndatasize())

            switch result
            // delegatecall returns 0 on error.
            case 0 {
                revert(0, returndatasize())
            }
            default {
                return(0, returndatasize())
            }
        }
    }

    /**
     * @dev This is a virtual function that should be overridden so it returns the address to which the fallback function
     * and {_fallback} should delegate.
     */
    function _implementation() internal view virtual returns (address);

    /**
     * @dev Delegates the current call to the address returned by `_implementation()`.
     *
     * This function does not return to its internal call site, it will return directly to the external caller.
     */
    function _fallback() internal virtual {
        _beforeFallback();
        _delegate(_implementation());
    }

    /**
     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other
     * function in the contract matches the call data.
     */
    fallback() external payable virtual {
        _fallback();
    }

    /**
     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data
     * is empty.
     */
    receive() external payable virtual {
        _fallback();
    }

    /**
     * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`
     * call, or as part of the Solidity `fallback` or `receive` functions.
     *
     * If overridden should call `super._beforeFallback()`.
     */
    function _beforeFallback() internal virtual {}
}

/**
 * @dev This abstract contract provides getters and event emitting update functions for
 * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.
 */
abstract contract ERC1967Upgrade {
    // This is the keccak-256 hash of "eip1967.proxy.rollback" subtracted by 1
    bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;

    /**
     * @dev Storage slot with the address of the current implementation.
     * This is the keccak-256 hash of "eip1967.proxy.implementation" subtracted by 1, and is
     * validated in the constructor.
     */
    bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;

    /**
     * @dev Emitted when the implementation is upgraded.
     */
    event Upgraded(address indexed implementation);

    /**
     * @dev Returns the current implementation address.
     */
    function _getImplementation() internal view returns (address) {
        return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;
    }

    /**
     * @dev Stores a new address in the EIP1967 implementation slot.
     */
    function _setImplementation(address newImplementation) private {
        require(Address.isContract(newImplementation), "ERC1967: new implementation is not a contract");
        StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;
    }

    /**
     * @dev Perform implementation upgrade
     *
     * Emits an {Upgraded} event.
     */
    function _upgradeTo(address newImplementation) internal {
        _setImplementation(newImplementation);
        emit Upgraded(newImplementation);
    }

    /**
     * @dev Perform implementation upgrade with additional setup call.
     *
     * Emits an {Upgraded} event.
     */
    function _upgradeToAndCall(
        address newImplementation,
        bytes memory data,
        bool forceCall
    ) internal {
        _upgradeTo(newImplementation);
        if (data.length > 0 || forceCall) {
            Address.functionDelegateCall(newImplementation, data);
        }
    }

    /**
     * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.
     *
     * Emits an {Upgraded} event.
     */
    function _upgradeToAndCallSecure(
        address newImplementation,
        bytes memory data,
        bool forceCall
    ) internal {
        address oldImplementation = _getImplementation();

        // Initial upgrade and setup call
        _setImplementation(newImplementation);
        if (data.length > 0 || forceCall) {
            Address.functionDelegateCall(newImplementation, data);
        }

        // Perform rollback test if not already in progress
        StorageSlot.BooleanSlot storage rollbackTesting = StorageSlot.getBooleanSlot(_ROLLBACK_SLOT);
        if (!rollbackTesting.value) {
            // Trigger rollback using upgradeTo from the new implementation
            rollbackTesting.value = true;
            Address.functionDelegateCall(
                newImplementation,
                abi.encodeWithSignature("upgradeTo(address)", oldImplementation)
            );
            rollbackTesting.value = false;
            // Check rollback was effective
            require(oldImplementation == _getImplementation(), "ERC1967Upgrade: upgrade breaks further upgrades");
            // Finally reset to the new implementation and log the upgrade
            _upgradeTo(newImplementation);
        }
    }

    /**
     * @dev Storage slot with the admin of the contract.
     * This is the keccak-256 hash of "eip1967.proxy.admin" subtracted by 1, and is
     * validated in the constructor.
     */
    bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;

    /**
     * @dev Emitted when the admin account has changed.
     */
    event AdminChanged(address previousAdmin, address newAdmin);

    /**
     * @dev Returns the current admin.
     */
    function _getAdmin() internal view returns (address) {
        return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;
    }

    /**
     * @dev Stores a new address in the EIP1967 admin slot.
     */
    function _setAdmin(address newAdmin) private {
        require(newAdmin != address(0), "ERC1967: new admin is the zero address");
        StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;
    }

    /**
     * @dev Changes the admin of the proxy.
     *
     * Emits an {AdminChanged} event.
     */
    function _changeAdmin(address newAdmin) internal {
        emit AdminChanged(_getAdmin(), newAdmin);
        _setAdmin(newAdmin);
    }
}

/**
 * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an
 * implementation address that can be changed. This address is stored in storage in the location specified by
 * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the
 * implementation behind the proxy.
 */
contract ERC1967Proxy is Proxy, ERC1967Upgrade {
    /**
     * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.
     *
     * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded
     * function call, and allows initializing the storage of the proxy like a Solidity constructor.
     */
    constructor(address _logic, bytes memory _data) payable {
        assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256("eip1967.proxy.implementation")) - 1));
        _upgradeToAndCall(_logic, _data, false);
    }

    /**
     * @dev Returns the current implementation address.
     */
    function _implementation() internal view virtual override returns (address impl) {
        return ERC1967Upgrade._getImplementation();
    }
}

contract PlanetDegenProxy is ERC1967Proxy {

    modifier onlyAdmin() {
        require(msg.sender == _getAdmin(), "Only Admin Function!");
        _;
    }
    
    constructor (address _logic, bytes memory _data) ERC1967Proxy(_logic, _data) {
        _changeAdmin(msg.sender);
    }

    function getAdmin() external view returns(address) {
        return _getAdmin();
    }

    function implementation() external view returns(address) {
        return _implementation();
    }
    
    function changeAdmin(address newAdmin) external onlyAdmin {
        _changeAdmin(newAdmin);
    }

    function upgradeTo(address _newImplementation) external onlyAdmin {
        _upgradeTo(_newImplementation);
    }

    function upgradeToAndCall(address newImplementation, bytes memory data) external onlyAdmin {
        _upgradeToAndCall(newImplementation, data, false);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040523480156200001157600080fd5b506040516200113b3803806200113b8339810160408190526200003491620004c5565b81816200006360017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd620005a0565b600080516020620010f483398151915214620000835762000083620005c2565b6200009182826000620000a7565b506200009f905033620000e4565b50506200062b565b620000b2836200013f565b600082511180620000c05750805b15620000df57620000dd83836200018160201b620003511760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6200010f620001b2565b604080516001600160a01b03928316815291841660208301520160405180910390a16200013c81620001eb565b50565b6200014a81620002a0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060620001a98383604051806060016040528060278152602001620011146027913962000343565b90505b92915050565b6000620001dc600080516020620010d483398151915260001b620003c260201b6200037d1760201c565b546001600160a01b0316919050565b6001600160a01b038116620002565760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200027f600080516020620010d483398151915260001b620003c260201b6200037d1760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b620002b681620003c560201b620003801760201c565b6200031a5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016200024d565b806200027f600080516020620010f483398151915260001b620003c260201b6200037d1760201c565b6060600080856001600160a01b031685604051620003629190620005d8565b600060405180830381855af49150503d80600081146200039f576040519150601f19603f3d011682016040523d82523d6000602084013e620003a4565b606091505b509092509050620003b886838387620003d4565b9695505050505050565b90565b6001600160a01b03163b151590565b606083156200044857825160000362000440576001600160a01b0385163b620004405760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016200024d565b508162000454565b6200045483836200045c565b949350505050565b8151156200046d5781518083602001fd5b8060405162461bcd60e51b81526004016200024d9190620005f6565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620004bc578181015183820152602001620004a2565b50506000910152565b60008060408385031215620004d957600080fd5b82516001600160a01b0381168114620004f157600080fd5b60208401519092506001600160401b03808211156200050f57600080fd5b818501915085601f8301126200052457600080fd5b81518181111562000539576200053962000489565b604051601f8201601f19908116603f0116810190838211818310171562000564576200056462000489565b816040528281528860208487010111156200057e57600080fd5b620005918360208301602088016200049f565b80955050505050509250929050565b81810381811115620001ac57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052600160045260246000fd5b60008251620005ec8184602087016200049f565b9190910192915050565b6020815260008251806020840152620006178160408501602087016200049f565b601f01601f19169190910160400192915050565b610a99806200063b6000396000f3fe60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100b55780636e9960c3146100f35780638f283970146101085761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b610128565b005b61006b610128565b34801561008157600080fd5b5061006b610090366004610881565b61013a565b3480156100a157600080fd5b5061006b6100b03660046108cb565b6101e7565b3480156100c157600080fd5b506100ca610293565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100ff57600080fd5b506100ca6102a2565b34801561011457600080fd5b5061006b610123366004610881565b6102ac565b61013861013361039c565b6103a6565b565b6101426103cf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4f6e6c792041646d696e2046756e6374696f6e2100000000000000000000000060448201526064015b60405180910390fd5b6101e48161040f565b50565b6101ef6103cf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610283576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4f6e6c792041646d696e2046756e6374696f6e2100000000000000000000000060448201526064016101d2565b61028f8282600061045c565b5050565b600061029d61039c565b905090565b600061029d6103cf565b6102b46103cf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610348576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4f6e6c792041646d696e2046756e6374696f6e2100000000000000000000000060448201526064016101d2565b6101e481610487565b60606103768383604051806060016040528060278152602001610a3d602791396104e8565b9392505050565b90565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b600061029d61056d565b3660008037600080366000845af43d6000803e8080156103c5573d6000f35b3d6000fd5b505050565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b5473ffffffffffffffffffffffffffffffffffffffff16919050565b61041881610595565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6104658361040f565b6000825111806104725750805b156103ca576104818383610351565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104b06103cf565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301520160405180910390a16101e4816106a2565b60606000808573ffffffffffffffffffffffffffffffffffffffff168560405161051291906109cf565b600060405180830381855af49150503d806000811461054d576040519150601f19603f3d011682016040523d82523d6000602084013e610552565b606091505b50915091506105638683838761076c565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6103f3565b73ffffffffffffffffffffffffffffffffffffffff81163b610639576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016101d2565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b73ffffffffffffffffffffffffffffffffffffffff8116610745576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016101d2565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610361065c565b606083156108025782516000036107fb5773ffffffffffffffffffffffffffffffffffffffff85163b6107fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101d2565b508161080c565b61080c8383610814565b949350505050565b8151156108245781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101d291906109eb565b803573ffffffffffffffffffffffffffffffffffffffff8116811461087c57600080fd5b919050565b60006020828403121561089357600080fd5b61037682610858565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156108de57600080fd5b6108e783610858565b9150602083013567ffffffffffffffff8082111561090457600080fd5b818501915085601f83011261091857600080fd5b81358181111561092a5761092a61089c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156109705761097061089c565b8160405282815288602084870101111561098957600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b838110156109c65781810151838201526020016109ae565b50506000910152565b600082516109e18184602087016109ab565b9190910192915050565b6020815260008251806020840152610a0a8160408501602087016109ab565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122078886c8f953032180f6cdc0bfe105d06810ba7fdc322b876ab39cef0f33c763064736f6c63430008120033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000006f7ff432b377dbbc16b99ecf82390d5dc4b840b7000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000c4c1cfda2100000000000000000000000000000000000000000000000000000000000002b200000000000000000000000000000000000000000000000000000000000001bc0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002868747470733a2f2f7064672e6e7963332e6469676974616c6f6365616e7370616365732e636f6d2f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100b55780636e9960c3146100f35780638f283970146101085761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b610128565b005b61006b610128565b34801561008157600080fd5b5061006b610090366004610881565b61013a565b3480156100a157600080fd5b5061006b6100b03660046108cb565b6101e7565b3480156100c157600080fd5b506100ca610293565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100ff57600080fd5b506100ca6102a2565b34801561011457600080fd5b5061006b610123366004610881565b6102ac565b61013861013361039c565b6103a6565b565b6101426103cf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4f6e6c792041646d696e2046756e6374696f6e2100000000000000000000000060448201526064015b60405180910390fd5b6101e48161040f565b50565b6101ef6103cf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610283576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4f6e6c792041646d696e2046756e6374696f6e2100000000000000000000000060448201526064016101d2565b61028f8282600061045c565b5050565b600061029d61039c565b905090565b600061029d6103cf565b6102b46103cf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610348576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4f6e6c792041646d696e2046756e6374696f6e2100000000000000000000000060448201526064016101d2565b6101e481610487565b60606103768383604051806060016040528060278152602001610a3d602791396104e8565b9392505050565b90565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b600061029d61056d565b3660008037600080366000845af43d6000803e8080156103c5573d6000f35b3d6000fd5b505050565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b5473ffffffffffffffffffffffffffffffffffffffff16919050565b61041881610595565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6104658361040f565b6000825111806104725750805b156103ca576104818383610351565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104b06103cf565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301520160405180910390a16101e4816106a2565b60606000808573ffffffffffffffffffffffffffffffffffffffff168560405161051291906109cf565b600060405180830381855af49150503d806000811461054d576040519150601f19603f3d011682016040523d82523d6000602084013e610552565b606091505b50915091506105638683838761076c565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6103f3565b73ffffffffffffffffffffffffffffffffffffffff81163b610639576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016101d2565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b73ffffffffffffffffffffffffffffffffffffffff8116610745576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016101d2565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610361065c565b606083156108025782516000036107fb5773ffffffffffffffffffffffffffffffffffffffff85163b6107fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101d2565b508161080c565b61080c8383610814565b949350505050565b8151156108245781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101d291906109eb565b803573ffffffffffffffffffffffffffffffffffffffff8116811461087c57600080fd5b919050565b60006020828403121561089357600080fd5b61037682610858565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156108de57600080fd5b6108e783610858565b9150602083013567ffffffffffffffff8082111561090457600080fd5b818501915085601f83011261091857600080fd5b81358181111561092a5761092a61089c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156109705761097061089c565b8160405282815288602084870101111561098957600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b838110156109c65781810151838201526020016109ae565b50506000910152565b600082516109e18184602087016109ab565b9190910192915050565b6020815260008251806020840152610a0a8160408501602087016109ab565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122078886c8f953032180f6cdc0bfe105d06810ba7fdc322b876ab39cef0f33c763064736f6c63430008120033

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

0000000000000000000000006f7ff432b377dbbc16b99ecf82390d5dc4b840b7000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000c4c1cfda2100000000000000000000000000000000000000000000000000000000000002b200000000000000000000000000000000000000000000000000000000000001bc0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002868747470733a2f2f7064672e6e7963332e6469676974616c6f6365616e7370616365732e636f6d2f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _logic (address): 0x6F7ff432B377dbBC16b99Ecf82390D5DC4b840B7
Arg [1] : _data (bytes): 0xc1cfda2100000000000000000000000000000000000000000000000000000000000002b200000000000000000000000000000000000000000000000000000000000001bc0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002868747470733a2f2f7064672e6e7963332e6469676974616c6f6365616e7370616365732e636f6d2f000000000000000000000000000000000000000000000000

-----Encoded View---------------
10 Constructor Arguments found :
Arg [0] : 0000000000000000000000006f7ff432b377dbbc16b99ecf82390d5dc4b840b7
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000c4
Arg [3] : c1cfda2100000000000000000000000000000000000000000000000000000000
Arg [4] : 000002b200000000000000000000000000000000000000000000000000000000
Arg [5] : 000001bc00000000000000000000000000000000000000000000000000000000
Arg [6] : 0000006000000000000000000000000000000000000000000000000000000000
Arg [7] : 0000002868747470733a2f2f7064672e6e7963332e6469676974616c6f636561
Arg [8] : 6e7370616365732e636f6d2f0000000000000000000000000000000000000000
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

14124:901:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7730:11;:9;:11::i;:::-;14124:901;;7499:11;:9;:11::i;14740:115::-;;;;;;;;;;-1:-1:-1;14740:115:0;;;;;:::i;:::-;;:::i;14863:159::-;;;;;;;;;;-1:-1:-1;14863:159:0;;;;;:::i;:::-;;:::i;14521:100::-;;;;;;;;;;;;;:::i;:::-;;;1830:42:1;1818:55;;;1800:74;;1788:2;1773:18;14521:100:0;;;;;;;14425:88;;;;;;;;;;;;;:::i;14633:99::-;;;;;;;;;;-1:-1:-1;14633:99:0;;;;;:::i;:::-;;:::i;7136:113::-;7213:28;7223:17;:15;:17::i;:::-;7213:9;:28::i;:::-;7136:113::o;14740:115::-;14229:11;:9;:11::i;:::-;14215:25;;:10;:25;;;14207:58;;;;;;;2087:2:1;14207:58:0;;;2069:21:1;2126:2;2106:18;;;2099:30;2165:22;2145:18;;;2138:50;2205:18;;14207:58:0;;;;;;;;;14817:30:::1;14828:18;14817:10;:30::i;:::-;14740:115:::0;:::o;14863:159::-;14229:11;:9;:11::i;:::-;14215:25;;:10;:25;;;14207:58;;;;;;;2087:2:1;14207:58:0;;;2069:21:1;2126:2;2106:18;;;2099:30;2165:22;2145:18;;;2138:50;2205:18;;14207:58:0;1885:344:1;14207:58:0;14965:49:::1;14983:17;15002:4;15008:5;14965:17;:49::i;:::-;14863:159:::0;;:::o;14521:100::-;14569:7;14596:17;:15;:17::i;:::-;14589:24;;14521:100;:::o;14425:88::-;14467:7;14494:11;:9;:11::i;14633:99::-;14229:11;:9;:11::i;:::-;14215:25;;:10;:25;;;14207:58;;;;;;;2087:2:1;14207:58:0;;;2069:21:1;2126:2;2106:18;;;2099:30;2165:22;2145:18;;;2138:50;2205:18;;14207:58:0;1885:344:1;14207:58:0;14702:22:::1;14715:8;14702:12;:22::i;2653:200::-:0;2736:12;2768:77;2789:6;2797:4;2768:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;2761:84;2653:200;-1:-1:-1;;;2653:200:0:o;720:151::-;849:4;720:151::o;2140:326::-;2435:19;;;:23;;;2140:326::o;13975:142::-;14042:12;14074:35;:33;:35::i;5726:918::-;6069:14;6066:1;6063;6050:34;6287:1;6284;6268:14;6265:1;6249:14;6242:5;6229:60;6366:16;6363:1;6360;6345:38;6406:6;6475:68;;;;6594:16;6591:1;6584:27;6475:68;6511:16;6508:1;6501:27;6399:227;;;5726:918;:::o;12217:124::-;12261:7;11941:66;12288:39;:45;;;;12217:124;-1:-1:-1;12217:124:0:o;9655:155::-;9722:37;9741:17;9722:18;:37::i;:::-;9775:27;;;;;;;;;;;9655:155;:::o;9951:304::-;10094:29;10105:17;10094:10;:29::i;:::-;10152:1;10138:4;:11;:15;:28;;;;10157:9;10138:28;10134:114;;;10183:53;10212:17;10231:4;10183:28;:53::i;:::-;;9951:304;;;:::o;12750:138::-;12815:35;12828:11;:9;:11::i;:::-;12815:35;;;2418:42:1;2487:15;;;2469:34;;2539:15;;;2534:2;2519:18;;2512:43;2381:18;12815:35:0;;;;;;;12861:19;12871:8;12861:9;:19::i;3047:332::-;3192:12;3218;3232:23;3259:6;:19;;3279:4;3259:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3217:67;;;;3302:69;3329:6;3337:7;3346:10;3358:12;3302:26;:69::i;:::-;3295:76;3047:332;-1:-1:-1;;;;;;3047:332:0:o;9042:142::-;9095:7;8761:66;9122:48;720:151;9280:262;2435:19;;;;9354:95;;;;;;;3315:2:1;9354:95:0;;;3297:21:1;3354:2;3334:18;;;3327:30;3393:34;3373:18;;;3366:62;3464:15;3444:18;;;3437:43;3497:19;;9354:95:0;3113:409:1;9354:95:0;9517:17;8761:66;9460:48;:74;;;;;;;;;;;;;;;-1:-1:-1;9280:262:0:o;12428:204::-;12492:22;;;12484:73;;;;;;;3729:2:1;12484:73:0;;;3711:21:1;3768:2;3748:18;;;3741:30;3807:34;3787:18;;;3780:62;3878:8;3858:18;;;3851:36;3904:19;;12484:73:0;3527:402:1;12484:73:0;12616:8;11941:66;12568:39;720:151;3675:644;3860:12;3889:7;3885:427;;;3917:10;:17;3938:1;3917:22;3913:290;;2435:19;;;;4127:60;;;;;;;4136:2:1;4127:60:0;;;4118:21:1;4175:2;4155:18;;;4148:30;4214:31;4194:18;;;4187:59;4263:18;;4127:60:0;3934:353:1;4127:60:0;-1:-1:-1;4224:10:0;4217:17;;3885:427;4267:33;4275:10;4287:12;4267:7;:33::i;:::-;3675:644;;;;;;:::o;4327:552::-;4488:17;;:21;4484:388;;4720:10;4714:17;4777:15;4764:10;4760:2;4756:19;4749:44;4484:388;4847:12;4840:20;;;;;;;;;;;:::i;14:196:1:-;82:20;;142:42;131:54;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:186::-;274:6;327:2;315:9;306:7;302:23;298:32;295:52;;;343:1;340;333:12;295:52;366:29;385:9;366:29;:::i;406:184::-;458:77;455:1;448:88;555:4;552:1;545:15;579:4;576:1;569:15;595:1054;672:6;680;733:2;721:9;712:7;708:23;704:32;701:52;;;749:1;746;739:12;701:52;772:29;791:9;772:29;:::i;:::-;762:39;;852:2;841:9;837:18;824:32;875:18;916:2;908:6;905:14;902:34;;;932:1;929;922:12;902:34;970:6;959:9;955:22;945:32;;1015:7;1008:4;1004:2;1000:13;996:27;986:55;;1037:1;1034;1027:12;986:55;1073:2;1060:16;1095:2;1091;1088:10;1085:36;;;1101:18;;:::i;:::-;1235:2;1229:9;1297:4;1289:13;;1140:66;1285:22;;;1309:2;1281:31;1277:40;1265:53;;;1333:18;;;1353:22;;;1330:46;1327:72;;;1379:18;;:::i;:::-;1419:10;1415:2;1408:22;1454:2;1446:6;1439:18;1494:7;1489:2;1484;1480;1476:11;1472:20;1469:33;1466:53;;;1515:1;1512;1505:12;1466:53;1571:2;1566;1562;1558:11;1553:2;1545:6;1541:15;1528:46;1616:1;1611:2;1606;1598:6;1594:15;1590:24;1583:35;1637:6;1627:16;;;;;;;595:1054;;;;;:::o;2566:250::-;2651:1;2661:113;2675:6;2672:1;2669:13;2661:113;;;2751:11;;;2745:18;2732:11;;;2725:39;2697:2;2690:10;2661:113;;;-1:-1:-1;;2808:1:1;2790:16;;2783:27;2566:250::o;2821:287::-;2950:3;2988:6;2982:13;3004:66;3063:6;3058:3;3051:4;3043:6;3039:17;3004:66;:::i;:::-;3086:16;;;;;2821:287;-1:-1:-1;;2821:287:1:o;4292:455::-;4441:2;4430:9;4423:21;4404:4;4473:6;4467:13;4516:6;4511:2;4500:9;4496:18;4489:34;4532:79;4604:6;4599:2;4588:9;4584:18;4579:2;4571:6;4567:15;4532:79;:::i;:::-;4663:2;4651:15;4668:66;4647:88;4632:104;;;;4738:2;4628:113;;4292:455;-1:-1:-1;;4292:455:1:o

Swarm Source

ipfs://78886c8f953032180f6cdc0bfe105d06810ba7fdc322b876ab39cef0f33c7630
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.