Overview
TokenID
881
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
CyberFriendsProxy
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-04-28 */ // 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 CyberFriendsProxy 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
- No Contract Security Audit Submitted- Submit Audit Here
[{"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"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040516200114838038062001148833981016040819052620000349162000484565b81816200006360017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd620005b2565b600080516020620011018339815191521462000083576200008362000607565b6200009182826000620000a7565b506200009f905033620000e4565b505062000633565b620000b2836200013f565b600082511180620000c05750805b15620000df57620000dd83836200018160201b620003511760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6200010f620001b0565b604080516001600160a01b03928316815291841660208301520160405180910390a16200013c81620001e9565b50565b6200014a816200029e565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060620001a98383604051806060016040528060278152602001620011216027913962000341565b9392505050565b6000620001da600080516020620010e183398151915260001b620003c060201b6200037d1760201c565b546001600160a01b0316919050565b6001600160a01b038116620002545760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200027d600080516020620010e183398151915260001b620003c060201b6200037d1760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b620002b481620003c360201b620003801760201c565b620003185760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016200024b565b806200027d6000805160206200110183398151915260001b620003c060201b6200037d1760201c565b6060600080856001600160a01b0316856040516200036091906200055f565b600060405180830381855af49150503d80600081146200039d576040519150601f19603f3d011682016040523d82523d6000602084013e620003a2565b606091505b509092509050620003b686838387620003d2565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620004435782516200043b576001600160a01b0385163b6200043b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016200024b565b50816200044f565b6200044f838362000457565b949350505050565b815115620004685781518083602001fd5b8060405162461bcd60e51b81526004016200024b91906200057d565b600080604083850312156200049857600080fd5b82516001600160a01b0381168114620004b057600080fd5b60208401519092506001600160401b0380821115620004ce57600080fd5b818501915085601f830112620004e357600080fd5b815181811115620004f857620004f86200061d565b604051601f8201601f19908116603f011681019083821181831017156200052357620005236200061d565b816040528281528860208487010111156200053d57600080fd5b62000550836020830160208801620005d8565b80955050505050509250929050565b6000825162000573818460208701620005d8565b9190910192915050565b60208152600082518060208401526200059e816040850160208701620005d8565b601f01601f19169190910160400192915050565b600082821015620005d357634e487b7160e01b600052601160045260246000fd5b500390565b60005b83811015620005f5578181015183820152602001620005db565b83811115620000dd5750506000910152565b634e487b7160e01b600052600160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b610a9e80620006436000396000f3fe60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100b55780636e9960c3146100f35780638f283970146101085761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b610128565b005b61006b610128565b34801561008157600080fd5b5061006b61009036600461087e565b61013a565b3480156100a157600080fd5b5061006b6100b0366004610899565b6101e7565b3480156100c157600080fd5b506100ca610293565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100ff57600080fd5b506100ca6102a2565b34801561011457600080fd5b5061006b61012336600461087e565b6102ac565b61013861013361039c565b6103a6565b565b6101426103cf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4f6e6c792041646d696e2046756e6374696f6e2100000000000000000000000060448201526064015b60405180910390fd5b6101e48161040f565b50565b6101ef6103cf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610283576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4f6e6c792041646d696e2046756e6374696f6e2100000000000000000000000060448201526064016101d2565b61028f8282600061045c565b5050565b600061029d61039c565b905090565b600061029d6103cf565b6102b46103cf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610348576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4f6e6c792041646d696e2046756e6374696f6e2100000000000000000000000060448201526064016101d2565b6101e481610487565b60606103768383604051806060016040528060278152602001610a42602791396104e8565b9392505050565b90565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b600061029d61056d565b3660008037600080366000845af43d6000803e8080156103c5573d6000f35b3d6000fd5b505050565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b5473ffffffffffffffffffffffffffffffffffffffff16919050565b61041881610595565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6104658361040f565b6000825111806104725750805b156103ca576104818383610351565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104b06103cf565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301520160405180910390a16101e4816106a2565b60606000808573ffffffffffffffffffffffffffffffffffffffff16856040516105129190610979565b600060405180830381855af49150503d806000811461054d576040519150601f19603f3d011682016040523d82523d6000602084013e610552565b606091505b50915091506105638683838761076c565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6103f3565b73ffffffffffffffffffffffffffffffffffffffff81163b610639576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016101d2565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b73ffffffffffffffffffffffffffffffffffffffff8116610745576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016101d2565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610361065c565b606083156107ff5782516107f85773ffffffffffffffffffffffffffffffffffffffff85163b6107f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101d2565b5081610809565b6108098383610811565b949350505050565b8151156108215781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101d29190610995565b803573ffffffffffffffffffffffffffffffffffffffff8116811461087957600080fd5b919050565b60006020828403121561089057600080fd5b61037682610855565b600080604083850312156108ac57600080fd5b6108b583610855565b9150602083013567ffffffffffffffff808211156108d257600080fd5b818501915085601f8301126108e657600080fd5b8135818111156108f8576108f8610a12565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561093e5761093e610a12565b8160405282815288602084870101111561095757600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000825161098b8184602087016109e6565b9190910192915050565b60208152600082518060208401526109b48160408501602087016109e6565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60005b83811015610a015781810151838201526020016109e9565b838111156104815750506000910152565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b664ddc9cd88d06890a6b0dbde64761054ab933a8b4b1d1761e0a5797d4fe21264736f6c63430008070033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000003543f2e066584d1aeef57b86eb59c0b8547f14d000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de800000000000000000000000041945f2fa779e88830c3c9300ed73c80a100b7d800000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100b55780636e9960c3146100f35780638f283970146101085761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b610128565b005b61006b610128565b34801561008157600080fd5b5061006b61009036600461087e565b61013a565b3480156100a157600080fd5b5061006b6100b0366004610899565b6101e7565b3480156100c157600080fd5b506100ca610293565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100ff57600080fd5b506100ca6102a2565b34801561011457600080fd5b5061006b61012336600461087e565b6102ac565b61013861013361039c565b6103a6565b565b6101426103cf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4f6e6c792041646d696e2046756e6374696f6e2100000000000000000000000060448201526064015b60405180910390fd5b6101e48161040f565b50565b6101ef6103cf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610283576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4f6e6c792041646d696e2046756e6374696f6e2100000000000000000000000060448201526064016101d2565b61028f8282600061045c565b5050565b600061029d61039c565b905090565b600061029d6103cf565b6102b46103cf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610348576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4f6e6c792041646d696e2046756e6374696f6e2100000000000000000000000060448201526064016101d2565b6101e481610487565b60606103768383604051806060016040528060278152602001610a42602791396104e8565b9392505050565b90565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b600061029d61056d565b3660008037600080366000845af43d6000803e8080156103c5573d6000f35b3d6000fd5b505050565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b5473ffffffffffffffffffffffffffffffffffffffff16919050565b61041881610595565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6104658361040f565b6000825111806104725750805b156103ca576104818383610351565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104b06103cf565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301520160405180910390a16101e4816106a2565b60606000808573ffffffffffffffffffffffffffffffffffffffff16856040516105129190610979565b600060405180830381855af49150503d806000811461054d576040519150601f19603f3d011682016040523d82523d6000602084013e610552565b606091505b50915091506105638683838761076c565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6103f3565b73ffffffffffffffffffffffffffffffffffffffff81163b610639576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016101d2565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b73ffffffffffffffffffffffffffffffffffffffff8116610745576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016101d2565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610361065c565b606083156107ff5782516107f85773ffffffffffffffffffffffffffffffffffffffff85163b6107f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101d2565b5081610809565b6108098383610811565b949350505050565b8151156108215781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101d29190610995565b803573ffffffffffffffffffffffffffffffffffffffff8116811461087957600080fd5b919050565b60006020828403121561089057600080fd5b61037682610855565b600080604083850312156108ac57600080fd5b6108b583610855565b9150602083013567ffffffffffffffff808211156108d257600080fd5b818501915085601f8301126108e657600080fd5b8135818111156108f8576108f8610a12565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561093e5761093e610a12565b8160405282815288602084870101111561095757600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000825161098b8184602087016109e6565b9190910192915050565b60208152600082518060208401526109b48160408501602087016109e6565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60005b83811015610a015781810151838201526020016109e9565b838111156104815750506000910152565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b664ddc9cd88d06890a6b0dbde64761054ab933a8b4b1d1761e0a5797d4fe21264736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000003543f2e066584d1aeef57b86eb59c0b8547f14d000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de800000000000000000000000041945f2fa779e88830c3c9300ed73c80a100b7d800000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _logic (address): 0x3543F2e066584d1aEEF57b86eB59c0B8547f14d0
Arg [1] : _data (bytes): 0xc4d66de800000000000000000000000041945f2fa779e88830c3c9300ed73c80a100b7d8
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000003543f2e066584d1aeef57b86eb59c0b8547f14d0
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000024
Arg [3] : c4d66de800000000000000000000000041945f2fa779e88830c3c9300ed73c80
Arg [4] : a100b7d800000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
14124:902:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7730:11;:9;:11::i;:::-;14124:902;;7499:11;:9;:11::i;14741:115::-;;;;;;;;;;-1:-1:-1;14741:115:0;;;;;:::i;:::-;;:::i;14864:159::-;;;;;;;;;;-1:-1:-1;14864:159:0;;;;;:::i;:::-;;:::i;14522:100::-;;;;;;;;;;;;;:::i;:::-;;;1920:42:1;1908:55;;;1890:74;;1878:2;1863:18;14522:100:0;;;;;;;14426:88;;;;;;;;;;;;;:::i;14634:99::-;;;;;;;;;;-1:-1:-1;14634:99:0;;;;;:::i;:::-;;:::i;7136:113::-;7213:28;7223:17;:15;:17::i;:::-;7213:9;:28::i;:::-;7136:113::o;14741:115::-;14230:11;:9;:11::i;:::-;14216:25;;:10;:25;;;14208:58;;;;;;;3363:2:1;14208:58:0;;;3345:21:1;3402:2;3382:18;;;3375:30;3441:22;3421:18;;;3414:50;3481:18;;14208:58:0;;;;;;;;;14818:30:::1;14829:18;14818:10;:30::i;:::-;14741:115:::0;:::o;14864:159::-;14230:11;:9;:11::i;:::-;14216:25;;:10;:25;;;14208:58;;;;;;;3363:2:1;14208:58:0;;;3345:21:1;3402:2;3382:18;;;3375:30;3441:22;3421:18;;;3414:50;3481:18;;14208:58:0;3161:344:1;14208:58:0;14966:49:::1;14984:17;15003:4;15009:5;14966:17;:49::i;:::-;14864:159:::0;;:::o;14522:100::-;14570:7;14597:17;:15;:17::i;:::-;14590:24;;14522:100;:::o;14426:88::-;14468:7;14495:11;:9;:11::i;14634:99::-;14230:11;:9;:11::i;:::-;14216:25;;:10;:25;;;14208:58;;;;;;;3363:2:1;14208:58:0;;;3345:21:1;3402:2;3382:18;;;3375:30;3441:22;3421:18;;;3414:50;3481:18;;14208:58:0;3161:344:1;14208:58:0;14703:22:::1;14716:8;14703: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;;;2159:42:1;2228:15;;;2210:34;;2280:15;;;2275:2;2260:18;;2253:43;2122: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;;;;;;;3712:2:1;9354:95:0;;;3694:21:1;3751:2;3731:18;;;3724:30;3790:34;3770:18;;;3763:62;3861:15;3841:18;;;3834:43;3894:19;;9354:95:0;3510: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;;;;;;;2956:2:1;12484:73:0;;;2938:21:1;2995:2;2975:18;;;2968:30;3034:34;3014:18;;;3007:62;3105:8;3085:18;;;3078:36;3131:19;;12484:73:0;2754:402:1;12484:73:0;12616:8;11941:66;12568:39;720:151;3675:644;3860:12;3889:7;3885:427;;;3917:17;;3913:290;;2435:19;;;;4127:60;;;;;;;4126:2:1;4127:60:0;;;4108:21:1;4165:2;4145:18;;;4138:30;4204:31;4184:18;;;4177:59;4253:18;;4127:60:0;3924: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:1054::-;483:6;491;544:2;532:9;523:7;519:23;515:32;512:52;;;560:1;557;550:12;512:52;583:29;602:9;583:29;:::i;:::-;573:39;;663:2;652:9;648:18;635:32;686:18;727:2;719:6;716:14;713:34;;;743:1;740;733:12;713:34;781:6;770:9;766:22;756:32;;826:7;819:4;815:2;811:13;807:27;797:55;;848:1;845;838:12;797:55;884:2;871:16;906:2;902;899:10;896:36;;;912:18;;:::i;:::-;1046:2;1040:9;1108:4;1100:13;;951:66;1096:22;;;1120:2;1092:31;1088:40;1076:53;;;1144:18;;;1164:22;;;1141:46;1138:72;;;1190:18;;:::i;:::-;1230:10;1226:2;1219:22;1265:2;1257:6;1250:18;1305:7;1300:2;1295;1291;1287:11;1283:20;1280:33;1277:53;;;1326:1;1323;1316:12;1277:53;1382:2;1377;1373;1369:11;1364:2;1356:6;1352:15;1339:46;1427:1;1422:2;1417;1409:6;1405:15;1401:24;1394:35;1448:6;1438:16;;;;;;;406:1054;;;;;:::o;1465:274::-;1594:3;1632:6;1626:13;1648:53;1694:6;1689:3;1682:4;1674:6;1670:17;1648:53;:::i;:::-;1717:16;;;;;1465:274;-1:-1:-1;;1465:274:1:o;2307:442::-;2456:2;2445:9;2438:21;2419:4;2488:6;2482:13;2531:6;2526:2;2515:9;2511:18;2504:34;2547:66;2606:6;2601:2;2590:9;2586:18;2581:2;2573:6;2569:15;2547:66;:::i;:::-;2665:2;2653:15;2670:66;2649:88;2634:104;;;;2740:2;2630:113;;2307:442;-1:-1:-1;;2307:442:1:o;4282:258::-;4354:1;4364:113;4378:6;4375:1;4372:13;4364:113;;;4454:11;;;4448:18;4435:11;;;4428:39;4400:2;4393:10;4364:113;;;4495:6;4492:1;4489:13;4486:48;;;-1:-1:-1;;4530:1:1;4512:16;;4505:27;4282:258::o;4545:184::-;4597:77;4594:1;4587:88;4694:4;4691:1;4684:15;4718:4;4715:1;4708:15
Swarm Source
ipfs://b664ddc9cd88d06890a6b0dbde64761054ab933a8b4b1d1761e0a5797d4fe212
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.