ERC-721
Overview
Max Total Supply
72 icDODO
Holders
63
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
1 icDODOLoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
AdminUpgradeabilityProxy
Compiler Version
v0.7.6+commit.7338295f
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: MIT pragma solidity 0.7.6; import './UpgradeabilityProxy.sol'; /** * @title AdminUpgradeabilityProxy * @dev This contract combines an upgradeability proxy with an authorization * mechanism for administrative tasks. * All external functions in this contract must be guarded by the * `ifAdmin` modifier. See ethereum/solidity#3864 for a Solidity * feature proposal that would enable this to be done automatically. */ contract AdminUpgradeabilityProxy is UpgradeabilityProxy { /** * Contract constructor. * @param _logic address of the initial implementation. * @param _initAdmin Address of the proxy administrator. * @param _data Data to send as msg.data to the implementation to initialize the proxied contract. * It should include the signature and the parameters of the function to be called, as described in * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. * This parameter is optional, if no data is given the initialization call to proxied contract will be skipped. */ constructor(address _logic, address _initAdmin, bytes memory _data) UpgradeabilityProxy(_logic, _data) payable { assert(ADMIN_SLOT == bytes32(uint256(keccak256('eip1967.proxy.admin')) - 1)); _setAdmin(_initAdmin); } /** * @dev Emitted when the administration has been transferred. * @param previousAdmin Address of the previous admin. * @param newAdmin Address of the new admin. */ event AdminChanged(address previousAdmin, address newAdmin); /** * @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 Modifier to check whether the `msg.sender` is the admin. * If it is, it will run the function. Otherwise, it will delegate the call * to the implementation. */ modifier ifAdmin() { if (msg.sender == _admin()) { _; } else { _fallback(); } } /** * @return The address of the proxy admin. */ function admin() external ifAdmin returns (address) { return _admin(); } /** * @return The address of the implementation. */ function implementation() external ifAdmin returns (address) { return _implementation(); } /** * @dev Changes the admin of the proxy. * Only the current admin can call this function. * @param newAdmin Address to transfer proxy administration to. */ function changeAdmin(address newAdmin) external ifAdmin { require(newAdmin != address(0), "Cannot change the admin of a proxy to the zero address"); emit AdminChanged(_admin(), newAdmin); _setAdmin(newAdmin); } /** * @dev Upgrade the backing implementation of the proxy. * Only the admin can call this function. * @param newImplementation Address of the new implementation. */ function upgradeTo(address newImplementation) external ifAdmin { _upgradeTo(newImplementation); } /** * @dev Upgrade the backing implementation of the proxy and call a function * on the new implementation. * This is useful to initialize the proxied contract. * @param newImplementation Address of the new implementation. * @param data Data to send as msg.data in the low level call. * It should include the signature and the parameters of the function to be called, as described in * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. */ function upgradeToAndCall(address newImplementation, bytes calldata data) payable external ifAdmin { _upgradeTo(newImplementation); (bool success,) = newImplementation.delegatecall(data); require(success); } /** * @return adm The admin slot. */ function _admin() internal view returns (address adm) { bytes32 slot = ADMIN_SLOT; assembly { adm := sload(slot) } } /** * @dev Sets the address of the proxy admin. * @param newAdmin Address of the new proxy admin. */ function _setAdmin(address newAdmin) internal { bytes32 slot = ADMIN_SLOT; assembly { sstore(slot, newAdmin) } } /** * @dev Only fall back when the sender is not the admin. */ function _willFallback() internal override virtual { require(msg.sender != _admin(), "Cannot call fallback function from the proxy admin"); super._willFallback(); } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.2 <0.8.0; /** * @dev Collection of functions related to the address type */ 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 * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @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) { require(isContract(target), "Address: delegate call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { if (success) { return returndata; } else { // 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 // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.0; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with GSN meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.0; import "./Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } }
// SPDX-License-Identifier: MIT pragma solidity 0.7.6; /** * @title Proxy * @dev Implements delegation of calls to other contracts, with proper * forwarding of return values and bubbling of failures. * It defines a fallback function that delegates all calls to the address * returned by the abstract _implementation() internal function. */ abstract contract Proxy { /** * @dev Fallback function. * Implemented entirely in `_fallback`. */ fallback () payable external { _fallback(); } /** * @dev Receive function. * Implemented entirely in `_fallback`. */ receive () payable external { _fallback(); } /** * @return The Address of the implementation. */ function _implementation() internal virtual view returns (address); /** * @dev Delegates execution to an implementation contract. * This is a low level function that doesn't return to its internal call site. * It will return to the external caller whatever the implementation returns. * @param implementation Address to delegate. */ function _delegate(address implementation) internal { 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 Function that is run as the first thing in the fallback function. * Can be redefined in derived contracts to add functionality. * Redefinitions must call super._willFallback(). */ function _willFallback() internal virtual { } /** * @dev fallback implementation. * Extracted to enable manual triggering. */ function _fallback() internal { _willFallback(); _delegate(_implementation()); } }
// SPDX-License-Identifier: MIT pragma solidity 0.7.6; import "./Ownable.sol"; import "./AdminUpgradeabilityProxy.sol"; /** * @title ProxyAdmin * @dev This contract is the admin of a proxy, and is in charge * of upgrading it as well as transferring it to another admin. */ contract ProxyAdmin is Ownable { /** * @dev Returns the current implementation of a proxy. * This is needed because only the proxy admin can query it. * @return The address of the current implementation of the proxy. */ function getProxyImplementation(AdminUpgradeabilityProxy proxy) public view returns (address) { // We need to manually run the static call since the getter cannot be flagged as view // bytes4(keccak256("implementation()")) == 0x5c60da1b (bool success, bytes memory returndata) = address(proxy).staticcall( hex"5c60da1b" ); require(success); return abi.decode(returndata, (address)); } /** * @dev Returns the admin of a proxy. Only the admin can query it. * @return The address of the current admin of the proxy. */ function getProxyAdmin(AdminUpgradeabilityProxy proxy) public view returns (address) { // We need to manually run the static call since the getter cannot be flagged as view // bytes4(keccak256("admin()")) == 0xf851a440 (bool success, bytes memory returndata) = address(proxy).staticcall( hex"f851a440" ); require(success); return abi.decode(returndata, (address)); } /** * @dev Changes the admin of a proxy. * @param proxy Proxy to change admin. * @param newAdmin Address to transfer proxy administration to. */ function changeProxyAdmin(AdminUpgradeabilityProxy proxy, address newAdmin) public onlyOwner { proxy.changeAdmin(newAdmin); } /** * @dev Upgrades a proxy to the newest implementation of a contract. * @param proxy Proxy to be upgraded. * @param implementation the address of the Implementation. */ function upgrade(AdminUpgradeabilityProxy proxy, address implementation) public onlyOwner { proxy.upgradeTo(implementation); } /** * @dev Upgrades a proxy to the newest implementation of a contract and forwards a function call to it. * This is useful to initialize the proxied contract. * @param proxy Proxy to be upgraded. * @param implementation Address of the Implementation. * @param data Data to send as msg.data in the low level call. * It should include the signature and the parameters of the function to be called, as described in * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. */ function upgradeAndCall( AdminUpgradeabilityProxy proxy, address implementation, bytes memory data ) public payable onlyOwner { proxy.upgradeToAndCall{value: msg.value}(implementation, data); } }
// SPDX-License-Identifier: MIT pragma solidity 0.7.6; import "./Proxy.sol"; import "./Address.sol"; /** * @title UpgradeabilityProxy * @dev This contract implements a proxy that allows to change the * implementation address to which it will delegate. * Such a change is called an implementation upgrade. */ contract UpgradeabilityProxy is Proxy { /** * @dev Contract constructor. * @param _logic Address of the initial implementation. * @param _data Data to send as msg.data to the implementation to initialize the proxied contract. * It should include the signature and the parameters of the function to be called, as described in * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. * This parameter is optional, if no data is given the initialization call to proxied contract will be skipped. */ constructor(address _logic, bytes memory _data) payable { assert( IMPLEMENTATION_SLOT == bytes32(uint256(keccak256("eip1967.proxy.implementation")) - 1) ); _setImplementation(_logic); if (_data.length > 0) { (bool success, ) = _logic.delegatecall(_data); require(success); } } /** * @dev Emitted when the implementation is upgraded. * @param implementation Address of the new implementation. */ event Upgraded(address indexed implementation); /** * @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 Returns the current implementation. * @return impl Address of the current implementation */ function _implementation() internal view override returns (address impl) { bytes32 slot = IMPLEMENTATION_SLOT; assembly { impl := sload(slot) } } /** * @dev Upgrades the proxy to a new implementation. * @param newImplementation Address of the new implementation. */ function _upgradeTo(address newImplementation) internal { _setImplementation(newImplementation); emit Upgraded(newImplementation); } /** * @dev Sets the implementation address of the proxy. * @param newImplementation Address of the new implementation. */ function _setImplementation(address newImplementation) internal { require( Address.isContract(newImplementation), "Cannot set a proxy implementation to a non-contract address" ); bytes32 slot = IMPLEMENTATION_SLOT; assembly { sstore(slot, newImplementation) } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"_initAdmin","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","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":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"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"}]
Contract Creation Code
60806040526040516108c83803806108c88339818101604052606081101561002657600080fd5b8151602083015160408085018051915193959294830192918464010000000082111561005157600080fd5b90830190602082018581111561006657600080fd5b825164010000000081118282018810171561008057600080fd5b82525081516020918201929091019080838360005b838110156100ad578181015183820152602001610095565b50505050905090810190601f1680156100da5780820380516001836020036101000a031916815260200191505b50604052508491508290506100ee826101bf565b8051156101a6576000826001600160a01b0316826040518082805190602001908083835b602083106101315780518252601f199092019160209182019101610112565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610191576040519150601f19603f3d011682016040523d82523d6000602084013e610196565b606091505b50509050806101a457600080fd5b505b506101ae9050565b6101b782610231565b50505061025b565b6101d28161025560201b6103b21760201c565b61020d5760405162461bcd60e51b815260040180806020018281038252603b81526020018061088d603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b3b151590565b6106238061026a6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100985780635c60da1b146101165780638f28397014610147578063f851a4401461017a5761005d565b3661005d5761005b61018f565b005b61005b61018f565b34801561007157600080fd5b5061005b6004803603602081101561008857600080fd5b50356001600160a01b03166101a9565b61005b600480360360408110156100ae57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156100d857600080fd5b8201836020820111156100ea57600080fd5b803590602001918460018302840111600160201b8311171561010b57600080fd5b5090925090506101e3565b34801561012257600080fd5b5061012b610290565b604080516001600160a01b039092168252519081900360200190f35b34801561015357600080fd5b5061005b6004803603602081101561016a57600080fd5b50356001600160a01b03166102cd565b34801561018657600080fd5b5061012b610387565b6101976103b8565b6101a76101a2610418565b61042b565b565b6101b161044f565b6001600160a01b0316336001600160a01b031614156101d8576101d381610462565b6101e0565b6101e061018f565b50565b6101eb61044f565b6001600160a01b0316336001600160a01b031614156102835761020d83610462565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d806000811461026a576040519150601f19603f3d011682016040523d82523d6000602084013e61026f565b606091505b505090508061027d57600080fd5b5061028b565b61028b61018f565b505050565b600061029a61044f565b6001600160a01b0316336001600160a01b031614156102c2576102bb610418565b90506102ca565b6102ca61018f565b90565b6102d561044f565b6001600160a01b0316336001600160a01b031614156101d8576001600160a01b0381166103335760405162461bcd60e51b815260040180806020018281038252603681526020018061053d6036913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61035c61044f565b604080516001600160a01b03928316815291841660208301528051918290030190a16101d3816104a2565b600061039161044f565b6001600160a01b0316336001600160a01b031614156102c2576102bb61044f565b3b151590565b6103c061044f565b6001600160a01b0316336001600160a01b031614156104105760405162461bcd60e51b815260040180806020018281038252603281526020018061050b6032913960400191505060405180910390fd5b6101a76101a7565b6000805160206105938339815191525490565b3660008037600080366000845af43d6000803e80801561044a573d6000f35b3d6000fd5b6000805160206105738339815191525490565b61046b816104b4565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60008051602061057383398151915255565b6104bd816103b2565b6104f85760405162461bcd60e51b815260040180806020018281038252603b8152602001806105b3603b913960400191505060405180910390fd5b6000805160206105938339815191525556fe43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f787920746f20746865207a65726f2061646472657373b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc43616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a264697066735822122046d2e76e4f2da32f9295a400f439f9ec11acaee0cbc86f5feac4d8a16ca55dd364736f6c6343000706003343616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373000000000000000000000000734dfc6f8b54894d522c8e62eebecc1aacf3dd2e000000000000000000000000039bb4b13f252597a69fa2e6ad19034e3ccbbf1c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001e4d26c93e70000000000000000000000007922dba230fded829c913e07588326e6f7ce7f1a0000000000000000000000004a6c7ba0cda9bdc51bd088be20664926225beebf00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000001b444f444f20496e766573746d656e74204365727469666963617465000000000000000000000000000000000000000000000000000000000000000000000000066963444f444f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002068747470733a2f2f6170692e736f6c762e66696e616e63652f6963444f444f2f000000000000000000000000000000000000000000000000000000000000002e68747470733a2f2f6170692e736f6c762e66696e616e63652f6963444f444f2f6d6574612f636f6e74726163742f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100985780635c60da1b146101165780638f28397014610147578063f851a4401461017a5761005d565b3661005d5761005b61018f565b005b61005b61018f565b34801561007157600080fd5b5061005b6004803603602081101561008857600080fd5b50356001600160a01b03166101a9565b61005b600480360360408110156100ae57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156100d857600080fd5b8201836020820111156100ea57600080fd5b803590602001918460018302840111600160201b8311171561010b57600080fd5b5090925090506101e3565b34801561012257600080fd5b5061012b610290565b604080516001600160a01b039092168252519081900360200190f35b34801561015357600080fd5b5061005b6004803603602081101561016a57600080fd5b50356001600160a01b03166102cd565b34801561018657600080fd5b5061012b610387565b6101976103b8565b6101a76101a2610418565b61042b565b565b6101b161044f565b6001600160a01b0316336001600160a01b031614156101d8576101d381610462565b6101e0565b6101e061018f565b50565b6101eb61044f565b6001600160a01b0316336001600160a01b031614156102835761020d83610462565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d806000811461026a576040519150601f19603f3d011682016040523d82523d6000602084013e61026f565b606091505b505090508061027d57600080fd5b5061028b565b61028b61018f565b505050565b600061029a61044f565b6001600160a01b0316336001600160a01b031614156102c2576102bb610418565b90506102ca565b6102ca61018f565b90565b6102d561044f565b6001600160a01b0316336001600160a01b031614156101d8576001600160a01b0381166103335760405162461bcd60e51b815260040180806020018281038252603681526020018061053d6036913960400191505060405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61035c61044f565b604080516001600160a01b03928316815291841660208301528051918290030190a16101d3816104a2565b600061039161044f565b6001600160a01b0316336001600160a01b031614156102c2576102bb61044f565b3b151590565b6103c061044f565b6001600160a01b0316336001600160a01b031614156104105760405162461bcd60e51b815260040180806020018281038252603281526020018061050b6032913960400191505060405180910390fd5b6101a76101a7565b6000805160206105938339815191525490565b3660008037600080366000845af43d6000803e80801561044a573d6000f35b3d6000fd5b6000805160206105738339815191525490565b61046b816104b4565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60008051602061057383398151915255565b6104bd816103b2565b6104f85760405162461bcd60e51b815260040180806020018281038252603b8152602001806105b3603b913960400191505060405180910390fd5b6000805160206105938339815191525556fe43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e43616e6e6f74206368616e6765207468652061646d696e206f6620612070726f787920746f20746865207a65726f2061646472657373b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc43616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a264697066735822122046d2e76e4f2da32f9295a400f439f9ec11acaee0cbc86f5feac4d8a16ca55dd364736f6c63430007060033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000734dfc6f8b54894d522c8e62eebecc1aacf3dd2e000000000000000000000000039bb4b13f252597a69fa2e6ad19034e3ccbbf1c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001e4d26c93e70000000000000000000000007922dba230fded829c913e07588326e6f7ce7f1a0000000000000000000000004a6c7ba0cda9bdc51bd088be20664926225beebf00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000001b444f444f20496e766573746d656e74204365727469666963617465000000000000000000000000000000000000000000000000000000000000000000000000066963444f444f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002068747470733a2f2f6170692e736f6c762e66696e616e63652f6963444f444f2f000000000000000000000000000000000000000000000000000000000000002e68747470733a2f2f6170692e736f6c762e66696e616e63652f6963444f444f2f6d6574612f636f6e74726163742f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _logic (address): 0x734Dfc6f8b54894D522c8e62EEbEcc1AaCf3dd2E
Arg [1] : _initAdmin (address): 0x039Bb4b13F252597a69fA2e6ad19034E3CCbbF1C
Arg [2] : _data (bytes): 0xd26c93e70000000000000000000000007922dba230fded829c913e07588326e6f7ce7f1a0000000000000000000000004a6c7ba0cda9bdc51bd088be20664926225beebf00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000001b444f444f20496e766573746d656e74204365727469666963617465000000000000000000000000000000000000000000000000000000000000000000000000066963444f444f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002068747470733a2f2f6170692e736f6c762e66696e616e63652f6963444f444f2f000000000000000000000000000000000000000000000000000000000000002e68747470733a2f2f6170692e736f6c762e66696e616e63652f6963444f444f2f6d6574612f636f6e74726163742f000000000000000000000000000000000000
-----Encoded View---------------
20 Constructor Arguments found :
Arg [0] : 000000000000000000000000734dfc6f8b54894d522c8e62eebecc1aacf3dd2e
Arg [1] : 000000000000000000000000039bb4b13f252597a69fa2e6ad19034e3ccbbf1c
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [3] : 00000000000000000000000000000000000000000000000000000000000001e4
Arg [4] : d26c93e70000000000000000000000007922dba230fded829c913e07588326e6
Arg [5] : f7ce7f1a0000000000000000000000004a6c7ba0cda9bdc51bd088be20664926
Arg [6] : 225beebf00000000000000000000000000000000000000000000000000000000
Arg [7] : 000000c000000000000000000000000000000000000000000000000000000000
Arg [8] : 0000010000000000000000000000000000000000000000000000000000000000
Arg [9] : 0000014000000000000000000000000000000000000000000000000000000000
Arg [10] : 0000018000000000000000000000000000000000000000000000000000000000
Arg [11] : 0000001b444f444f20496e766573746d656e7420436572746966696361746500
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [13] : 000000066963444f444f00000000000000000000000000000000000000000000
Arg [14] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [15] : 0000002068747470733a2f2f6170692e736f6c762e66696e616e63652f696344
Arg [16] : 4f444f2f00000000000000000000000000000000000000000000000000000000
Arg [17] : 0000002e68747470733a2f2f6170692e736f6c762e66696e616e63652f696344
Arg [18] : 4f444f2f6d6574612f636f6e74726163742f0000000000000000000000000000
Arg [19] : 0000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
453:4104:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;630:11:4;:9;:11::i;:::-;453:4104:1;;494:11:4;:9;:11::i;3031:103:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3031:103:1;-1:-1:-1;;;;;3031:103:1;;:::i;3651:221::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3651:221:1;;;;;;;;;;;;;;;-1:-1:-1;;;3651:221:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3651:221:1;;;;;;;;;;-1:-1:-1;3651:221:1;;-1:-1:-1;3651:221:1;-1:-1:-1;3651:221:1;:::i;2351:96::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;2351:96:1;;;;;;;;;;;;;;2623:224;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2623:224:1;-1:-1:-1;;;;;2623:224:1;;:::i;2209:78::-;;;;;;;;;;;;;:::i;2157:90:4:-;2193:15;:13;:15::i;:::-;2214:28;2224:17;:15;:17::i;:::-;2214:9;:28::i;:::-;2157:90::o;3031:103:1:-;2086:8;:6;:8::i;:::-;-1:-1:-1;;;;;2072:22:1;:10;-1:-1:-1;;;;;2072:22:1;;2068:76;;;3100:29:::1;3111:17;3100:10;:29::i;:::-;2068:76:::0;;;2126:11;:9;:11::i;:::-;3031:103;:::o;3651:221::-;2086:8;:6;:8::i;:::-;-1:-1:-1;;;;;2072:22:1;:10;-1:-1:-1;;;;;2072:22:1;;2068:76;;;3756:29:::1;3767:17;3756:10;:29::i;:::-;3792:12;3809:17;-1:-1:-1::0;;;;;3809:30:1::1;3840:4;;3809:36;;;;;;;;;;::::0;;::::1;::::0;-1:-1:-1;3809:36:1::1;::::0;-1:-1:-1;3809:36:1;;-1:-1:-1;;3809:36:1;;::::1;::::0;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3791:54;;;3859:7;3851:16;;;::::0;::::1;;2104:1;2068:76:::0;;;2126:11;:9;:11::i;:::-;3651:221;;;:::o;2351:96::-;2403:7;2086:8;:6;:8::i;:::-;-1:-1:-1;;;;;2072:22:1;:10;-1:-1:-1;;;;;2072:22:1;;2068:76;;;2425:17:::1;:15;:17::i;:::-;2418:24;;2068:76:::0;;;2126:11;:9;:11::i;:::-;2351:96;:::o;2623:224::-;2086:8;:6;:8::i;:::-;-1:-1:-1;;;;;2072:22:1;:10;-1:-1:-1;;;;;2072:22:1;;2068:76;;;-1:-1:-1;;;;;2693:22:1;::::1;2685:89;;;;-1:-1:-1::0;;;2685:89:1::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2785:32;2798:8;:6;:8::i;:::-;2785:32;::::0;;-1:-1:-1;;;;;2785:32:1;;::::1;::::0;;;;::::1;;::::0;::::1;::::0;;;;;;;;;::::1;2823:19;2833:8;2823:9;:19::i;2209:78::-:0;2252:7;2086:8;:6;:8::i;:::-;-1:-1:-1;;;;;2072:22:1;:10;-1:-1:-1;;;;;2072:22:1;;2068:76;;;2274:8:::1;:6;:8::i;726:413:0:-:0;1086:20;1124:8;;;726:413::o;4381:174:1:-;4460:8;:6;:8::i;:::-;-1:-1:-1;;;;;4446:22:1;:10;-1:-1:-1;;;;;4446:22:1;;;4438:85;;;;-1:-1:-1;;;4438:85:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4529:21;:19;:21::i;1936:185:6:-;-1:-1:-1;;;;;;;;;;;2094:11:6;;2072:43::o;1063:743:4:-;1365:14;1362:1;1359;1346:34;1561:1;1558;1542:14;1539:1;1523:14;1516:5;1503:60;1625:16;1622:1;1619;1604:38;1657:6;1712:38;;;;1777:16;1774:1;1767:27;1712:38;1731:16;1728:1;1721:27;3921:136:1;-1:-1:-1;;;;;;;;;;;4036:11:1;;4021:32::o;2266:152:6:-;2332:37;2351:17;2332:18;:37::i;:::-;2384:27;;-1:-1:-1;;;;;2384:27:6;;;;;;;;2266:152;:::o;4173:133:1:-;-1:-1:-1;;;;;;;;;;;4274:22:1;4266:36::o;2565:343:6:-;2660:37;2679:17;2660:18;:37::i;:::-;2639:143;;;;-1:-1:-1;;;2639:143:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2861:31:6;2847:55::o
Swarm Source
ipfs://46d2e76e4f2da32f9295a400f439f9ec11acaee0cbc86f5feac4d8a16ca55dd3
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.