More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 234,694 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Unstake | 15763972 | 21 mins ago | IN | 0 CRO | 0.7214715 | ||||
Stake | 15763962 | 21 mins ago | IN | 0 CRO | 0.49952075 | ||||
Release | 15763956 | 22 mins ago | IN | 0 CRO | 0.4824549 | ||||
Release | 15763425 | 1 hr ago | IN | 0 CRO | 0.47313689 | ||||
Unstake | 15763140 | 1 hr ago | IN | 0 CRO | 1.01 | ||||
Stake | 15762938 | 1 hr ago | IN | 0 CRO | 0.49939955 | ||||
Stake | 15762763 | 2 hrs ago | IN | 0 CRO | 0.41316575 | ||||
Unstake | 15762568 | 2 hrs ago | IN | 0 CRO | 0.71439825 | ||||
Stake | 15762359 | 2 hrs ago | IN | 0 CRO | 0.49946015 | ||||
Stake | 15762328 | 2 hrs ago | IN | 0 CRO | 0.49946015 | ||||
Stake | 15762255 | 3 hrs ago | IN | 0 CRO | 0.49946015 | ||||
Stake | 15761576 | 4 hrs ago | IN | 0 CRO | 0.49946015 | ||||
Stake | 15761373 | 4 hrs ago | IN | 0 CRO | 0.49952075 | ||||
Stake | 15761347 | 4 hrs ago | IN | 0 CRO | 0.41310515 | ||||
Stake | 15761223 | 4 hrs ago | IN | 0 CRO | 0.41286128 | ||||
Stake | 15760674 | 5 hrs ago | IN | 0 CRO | 0.49946015 | ||||
Stake | 15760603 | 5 hrs ago | IN | 0 CRO | 0.49946015 | ||||
Stake | 15759780 | 6 hrs ago | IN | 0 CRO | 0.49946015 | ||||
Unstake | 15759723 | 7 hrs ago | IN | 0 CRO | 0.71418605 | ||||
Stake | 15759595 | 7 hrs ago | IN | 0 CRO | 0.49946015 | ||||
Release | 15759204 | 7 hrs ago | IN | 0 CRO | 0.56407995 | ||||
Stake | 15758695 | 8 hrs ago | IN | 0 CRO | 0.49952075 | ||||
Stake | 15758072 | 9 hrs ago | IN | 0 CRO | 0.49952075 | ||||
Unstake | 15757960 | 9 hrs ago | IN | 0 CRO | 0.71439825 | ||||
Unstake | 15757894 | 9 hrs ago | IN | 0 CRO | 0.71439825 |
Latest 25 internal transactions (View All)
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
15764094 | 9 mins ago | 1.30666925 CRO | ||||
15764094 | 9 mins ago | 1.30666925 CRO | ||||
15763547 | 1 hr ago | 8.37155989 CRO | ||||
15763547 | 1 hr ago | 8.37155989 CRO | ||||
15762758 | 2 hrs ago | 4.36650267 CRO | ||||
15762758 | 2 hrs ago | 4.36650267 CRO | ||||
15762748 | 2 hrs ago | 4.36650267 CRO | ||||
15762748 | 2 hrs ago | 4.36650267 CRO | ||||
15762743 | 2 hrs ago | 4.36650267 CRO | ||||
15762372 | 2 hrs ago | 6.50755632 CRO | ||||
15762372 | 2 hrs ago | 6.50755632 CRO | ||||
15761617 | 4 hrs ago | 5.40098578 CRO | ||||
15761617 | 4 hrs ago | 5.40098578 CRO | ||||
15761144 | 4 hrs ago | 2.9319274 CRO | ||||
15761144 | 4 hrs ago | 2.9319274 CRO | ||||
15760772 | 5 hrs ago | 6.76569543 CRO | ||||
15760772 | 5 hrs ago | 6.76569543 CRO | ||||
15759790 | 6 hrs ago | 9.33681025 CRO | ||||
15759790 | 6 hrs ago | 9.33681025 CRO | ||||
15758884 | 8 hrs ago | 3.83186192 CRO | ||||
15758884 | 8 hrs ago | 3.83186192 CRO | ||||
15758260 | 9 hrs ago | 13.0607655 CRO | ||||
15758260 | 9 hrs ago | 13.0607655 CRO | ||||
15757111 | 11 hrs ago | 7.32109787 CRO | ||||
15757111 | 11 hrs ago | 7.32109787 CRO |
Loading...
Loading
Contract Name:
ERC1967ProxyWithAdminControl
Compiler Version
v0.8.3+commit.8d00100c
Contract Source Code (Solidity)
/** *Submitted for verification at cronoscan.com on 2022-03-22 */ // Sources flattened with hardhat v2.6.4 https://hardhat.org // File openzeppelin-solidity/contracts/utils/[email protected] // SPDX-License-Identifier: MIT pragma solidity ^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 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) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File openzeppelin-solidity/contracts/access/[email protected] pragma solidity ^0.8.0; /** * @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() { _setOwner(_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 { _setOwner(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"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File openzeppelin-solidity/contracts/proxy/[email protected] pragma solidity ^0.8.0; /** * @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 internall 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 overriden 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 internall 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 overriden should call `super._beforeFallback()`. */ function _beforeFallback() internal virtual {} } // File openzeppelin-solidity/contracts/proxy/beacon/[email protected] pragma solidity ^0.8.0; /** * @dev This is the interface that {BeaconProxy} expects of its beacon. */ interface IBeacon { /** * @dev Must return an address that can be used as a delegate call target. * * {BeaconProxy} will check that this address is a contract. */ function implementation() external view returns (address); } // File openzeppelin-solidity/contracts/utils/[email protected] pragma solidity ^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; 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"); (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"); (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"); (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"); (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 assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File openzeppelin-solidity/contracts/utils/[email protected] pragma solidity ^0.8.0; /** * @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. * * Example usage to set ERC1967 implementation slot: * ``` * contract ERC1967 { * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; * * function _getImplementation() internal view returns (address) { * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; * } * * function _setImplementation(address newImplementation) internal { * require(Address.isContract(newImplementation), "ERC1967: new implementation is not a contract"); * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; * } * } * ``` * * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._ */ library StorageSlot { struct AddressSlot { address value; } struct BooleanSlot { bool value; } struct Bytes32Slot { bytes32 value; } struct Uint256Slot { uint256 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 } } /** * @dev Returns an `Bytes32Slot` with member `value` located at `slot`. */ function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) { assembly { r.slot := slot } } /** * @dev Returns an `Uint256Slot` with member `value` located at `slot`. */ function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) { assembly { r.slot := slot } } } // File openzeppelin-solidity/contracts/proxy/ERC1967/[email protected] pragma solidity ^0.8.2; /** * @dev This abstract contract provides getters and event emitting update functions for * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots. * * _Available since v4.1._ * * @custom:oz-upgrades-unsafe-allow delegatecall */ 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 The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy. * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor. */ bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50; /** * @dev Emitted when the beacon is upgraded. */ event BeaconUpgraded(address indexed beacon); /** * @dev Returns the current beacon. */ function _getBeacon() internal view returns (address) { return StorageSlot.getAddressSlot(_BEACON_SLOT).value; } /** * @dev Stores a new beacon in the EIP1967 beacon slot. */ function _setBeacon(address newBeacon) private { require(Address.isContract(newBeacon), "ERC1967: new beacon is not a contract"); require( Address.isContract(IBeacon(newBeacon).implementation()), "ERC1967: beacon implementation is not a contract" ); StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon; } /** * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that). * * Emits a {BeaconUpgraded} event. */ function _upgradeBeaconToAndCall( address newBeacon, bytes memory data, bool forceCall ) internal { _setBeacon(newBeacon); emit BeaconUpgraded(newBeacon); if (data.length > 0 || forceCall) { Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data); } } } // File openzeppelin-solidity/contracts/proxy/ERC1967/[email protected] pragma solidity ^0.8.0; /** * @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 initializating 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(); } } // File contracts/ERC1967ProxyWithAdminControl.sol pragma solidity ^0.8.0; contract ERC1967ProxyWithAdminControl is ERC1967Proxy { event ImplementationChanged( uint256 indexed timestamp, address newImplementationAddress ); modifier onlyAdmin() { require(msg.sender == _getAdmin(), "ERC1967ProxyWithAdminControl: caller is not the admin"); _; } function upgradeTo(address _newImplementation) external onlyAdmin { _upgradeTo(_newImplementation); emit ImplementationChanged(block.timestamp, _newImplementation); } function changeProxyAdmin(address _newAdmin) external onlyAdmin { require(_newAdmin != address(0), "New admin cannot be the zero address"); _changeAdmin(_newAdmin); } function implementation() external view returns (address) { return _implementation(); } function getProxyAdmin() external view returns (address) { return _getAdmin(); } constructor(address _logic, bytes memory _data) ERC1967Proxy(_logic, _data) { _changeAdmin(msg.sender); } }
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":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":false,"internalType":"address","name":"newImplementationAddress","type":"address"}],"name":"ImplementationChanged","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":"changeProxyAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getProxyAdmin","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"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040516200183838038062001838833981810160405281019062000037919062000645565b818160017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd60001c6200006b9190620008fe565b60001b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b14620000c7577f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b620000db82826000620000f660201b60201c565b5050620000ee336200013960201b60201c565b505062000b59565b62000107836200019760201b60201c565b600082511180620001155750805b156200013457620001328383620001ee60201b620002e61760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6200016a6200022460201b60201c565b826040516200017b929190620007b6565b60405180910390a162000194816200028860201b60201c565b50565b620001a8816200037960201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60606200021c838360405180606001604052806027815260200162001811602791396200044f60201b60201c565b905092915050565b60006200025f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610360001b6200053360201b620003131760201c565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620002fb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002f29062000807565b60405180910390fd5b80620003357fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610360001b6200053360201b620003131760201c565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6200038f816200053d60201b6200031d1760201c565b620003d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003c89062000829565b60405180910390fd5b806200040b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200053360201b620003131760201c565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606062000462846200053d60201b60201c565b620004a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200049b906200084b565b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1685604051620004ce91906200079d565b600060405180830381855af49150503d80600081146200050b576040519150601f19603f3d011682016040523d82523d6000602084013e62000510565b606091505b5091509150620005288282866200055060201b60201c565b925050509392505050565b6000819050919050565b600080823b905060008111915050919050565b606083156200056257829050620005b5565b600083511115620005765782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005ac9190620007e3565b60405180910390fd5b9392505050565b6000620005d3620005cd8462000896565b6200086d565b905082815260208101848484011115620005ec57600080fd5b620005f984828562000977565b509392505050565b600081519050620006128162000b3f565b92915050565b600082601f8301126200062a57600080fd5b81516200063c848260208601620005bc565b91505092915050565b600080604083850312156200065957600080fd5b6000620006698582860162000601565b925050602083015167ffffffffffffffff8111156200068757600080fd5b620006958582860162000618565b9150509250929050565b620006aa8162000939565b82525050565b6000620006bd82620008cc565b620006c98185620008e2565b9350620006db81856020860162000977565b80840191505092915050565b6000620006f482620008d7565b620007008185620008ed565b93506200071281856020860162000977565b6200071d8162000a41565b840191505092915050565b600062000737602683620008ed565b9150620007448262000a52565b604082019050919050565b60006200075e602d83620008ed565b91506200076b8262000aa1565b604082019050919050565b600062000785602683620008ed565b9150620007928262000af0565b604082019050919050565b6000620007ab8284620006b0565b915081905092915050565b6000604082019050620007cd60008301856200069f565b620007dc60208301846200069f565b9392505050565b60006020820190508181036000830152620007ff8184620006e7565b905092915050565b60006020820190508181036000830152620008228162000728565b9050919050565b6000602082019050818103600083015262000844816200074f565b9050919050565b60006020820190508181036000830152620008668162000776565b9050919050565b6000620008796200088c565b9050620008878282620009ad565b919050565b6000604051905090565b600067ffffffffffffffff821115620008b457620008b362000a12565b5b620008bf8262000a41565b9050602081019050919050565b600081519050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b60006200090b826200096d565b915062000918836200096d565b9250828210156200092e576200092d620009e3565b5b828203905092915050565b600062000946826200094d565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015620009975780820151818401526020810190506200097a565b83811115620009a7576000848401525b50505050565b620009b88262000a41565b810181811067ffffffffffffffff82111715620009da57620009d962000a12565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f455243313936373a206e65772061646d696e20697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60008201527f6e74726163740000000000000000000000000000000000000000000000000000602082015250565b62000b4a8162000939565b811462000b5657600080fd5b50565b610ca88062000b696000396000f3fe6080604052600436106100435760003560e01c80633659cfe61461005c5780635c60da1b146100855780638b3240a0146100b05780639f712f2f146100db57610052565b3661005257610050610104565b005b61005a610104565b005b34801561006857600080fd5b50610083600480360381019061007e9190610793565b61011e565b005b34801561009157600080fd5b5061009a6101d7565b6040516100a791906108fb565b60405180910390f35b3480156100bc57600080fd5b506100c56101e6565b6040516100d291906108fb565b60405180910390f35b3480156100e757600080fd5b5061010260048036038101906100fd9190610793565b6101f5565b005b61010c610330565b61011c610117610332565b610341565b565b610126610367565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610193576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161018a90610961565b60405180910390fd5b61019c816103be565b427fd9f266625586f1434161fb2b5873b4869b7595dad10f23e8825da8ea98720202826040516101cc91906108fb565b60405180910390a250565b60006101e1610332565b905090565b60006101f0610367565b905090565b6101fd610367565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461026a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161026190610961565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156102da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d1906109c1565b60405180910390fd5b6102e38161040d565b50565b606061030b8383604051806060016040528060278152602001610c4c60279139610459565b905092915050565b6000819050919050565b600080823b905060008111915050919050565b565b600061033c610526565b905090565b3660008037600080366000845af43d6000803e8060008114610362573d6000f35b3d6000fd5b60006103957fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610360001b610313565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6103c78161057d565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610436610367565b82604051610445929190610916565b60405180910390a161045681610636565b50565b60606104648461031d565b6104a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049a906109e1565b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516104cb91906108e4565b600060405180830381855af49150503d8060008114610506576040519150601f19603f3d011682016040523d82523d6000602084013e61050b565b606091505b509150915061051b828286610717565b925050509392505050565b60006105547f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b610313565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6105868161031d565b6105c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bc906109a1565b60405180910390fd5b806105f27f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b610313565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156106a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069d90610981565b60405180910390fd5b806106d37fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610360001b610313565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6060831561072757829050610777565b60008351111561073a5782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076e919061093f565b60405180910390fd5b9392505050565b60008135905061078d81610c34565b92915050565b6000602082840312156107a557600080fd5b60006107b38482850161077e565b91505092915050565b6107c581610a33565b82525050565b60006107d682610a01565b6107e08185610a17565b93506107f0818560208601610a65565b80840191505092915050565b600061080782610a0c565b6108118185610a22565b9350610821818560208601610a65565b61082a81610a98565b840191505092915050565b6000610842603583610a22565b915061084d82610aa9565b604082019050919050565b6000610865602683610a22565b915061087082610af8565b604082019050919050565b6000610888602d83610a22565b915061089382610b47565b604082019050919050565b60006108ab602483610a22565b91506108b682610b96565b604082019050919050565b60006108ce602683610a22565b91506108d982610be5565b604082019050919050565b60006108f082846107cb565b915081905092915050565b600060208201905061091060008301846107bc565b92915050565b600060408201905061092b60008301856107bc565b61093860208301846107bc565b9392505050565b6000602082019050818103600083015261095981846107fc565b905092915050565b6000602082019050818103600083015261097a81610835565b9050919050565b6000602082019050818103600083015261099a81610858565b9050919050565b600060208201905081810360008301526109ba8161087b565b9050919050565b600060208201905081810360008301526109da8161089e565b9050919050565b600060208201905081810360008301526109fa816108c1565b9050919050565b600081519050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b6000610a3e82610a45565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60005b83811015610a83578082015181840152602081019050610a68565b83811115610a92576000848401525b50505050565b6000601f19601f8301169050919050565b7f4552433139363750726f78795769746841646d696e436f6e74726f6c3a20636160008201527f6c6c6572206973206e6f74207468652061646d696e0000000000000000000000602082015250565b7f455243313936373a206e65772061646d696e20697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4e65772061646d696e2063616e6e6f7420626520746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60008201527f6e74726163740000000000000000000000000000000000000000000000000000602082015250565b610c3d81610a33565b8114610c4857600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122010497848e37ab6922da5dfca0ffe3237279ff4dbab73394b120ec8f275c0977264736f6c63430008030033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564000000000000000000000000b046f8f3156ba71fcef82663cf19d23a57a11e0f000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a46c9ed5bf0000000000000000000000001bc9b7d4be47b76965a3f8e910b9ddd83150840f000000000000000000000000dd73dea10abc2bff99c60882ec5b2b81bb1dc5b2000000000000000000000000000000000000000000000000000000000002328000000000000000000000000067f57d98100fe04b64a5a3928a6e43bd29e651cc00000000000000000000000000000000000000000000000000071afd498d000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106100435760003560e01c80633659cfe61461005c5780635c60da1b146100855780638b3240a0146100b05780639f712f2f146100db57610052565b3661005257610050610104565b005b61005a610104565b005b34801561006857600080fd5b50610083600480360381019061007e9190610793565b61011e565b005b34801561009157600080fd5b5061009a6101d7565b6040516100a791906108fb565b60405180910390f35b3480156100bc57600080fd5b506100c56101e6565b6040516100d291906108fb565b60405180910390f35b3480156100e757600080fd5b5061010260048036038101906100fd9190610793565b6101f5565b005b61010c610330565b61011c610117610332565b610341565b565b610126610367565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610193576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161018a90610961565b60405180910390fd5b61019c816103be565b427fd9f266625586f1434161fb2b5873b4869b7595dad10f23e8825da8ea98720202826040516101cc91906108fb565b60405180910390a250565b60006101e1610332565b905090565b60006101f0610367565b905090565b6101fd610367565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461026a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161026190610961565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156102da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d1906109c1565b60405180910390fd5b6102e38161040d565b50565b606061030b8383604051806060016040528060278152602001610c4c60279139610459565b905092915050565b6000819050919050565b600080823b905060008111915050919050565b565b600061033c610526565b905090565b3660008037600080366000845af43d6000803e8060008114610362573d6000f35b3d6000fd5b60006103957fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610360001b610313565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6103c78161057d565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610436610367565b82604051610445929190610916565b60405180910390a161045681610636565b50565b60606104648461031d565b6104a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049a906109e1565b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516104cb91906108e4565b600060405180830381855af49150503d8060008114610506576040519150601f19603f3d011682016040523d82523d6000602084013e61050b565b606091505b509150915061051b828286610717565b925050509392505050565b60006105547f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b610313565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6105868161031d565b6105c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bc906109a1565b60405180910390fd5b806105f27f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b610313565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156106a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069d90610981565b60405180910390fd5b806106d37fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610360001b610313565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6060831561072757829050610777565b60008351111561073a5782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076e919061093f565b60405180910390fd5b9392505050565b60008135905061078d81610c34565b92915050565b6000602082840312156107a557600080fd5b60006107b38482850161077e565b91505092915050565b6107c581610a33565b82525050565b60006107d682610a01565b6107e08185610a17565b93506107f0818560208601610a65565b80840191505092915050565b600061080782610a0c565b6108118185610a22565b9350610821818560208601610a65565b61082a81610a98565b840191505092915050565b6000610842603583610a22565b915061084d82610aa9565b604082019050919050565b6000610865602683610a22565b915061087082610af8565b604082019050919050565b6000610888602d83610a22565b915061089382610b47565b604082019050919050565b60006108ab602483610a22565b91506108b682610b96565b604082019050919050565b60006108ce602683610a22565b91506108d982610be5565b604082019050919050565b60006108f082846107cb565b915081905092915050565b600060208201905061091060008301846107bc565b92915050565b600060408201905061092b60008301856107bc565b61093860208301846107bc565b9392505050565b6000602082019050818103600083015261095981846107fc565b905092915050565b6000602082019050818103600083015261097a81610835565b9050919050565b6000602082019050818103600083015261099a81610858565b9050919050565b600060208201905081810360008301526109ba8161087b565b9050919050565b600060208201905081810360008301526109da8161089e565b9050919050565b600060208201905081810360008301526109fa816108c1565b9050919050565b600081519050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b6000610a3e82610a45565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60005b83811015610a83578082015181840152602081019050610a68565b83811115610a92576000848401525b50505050565b6000601f19601f8301169050919050565b7f4552433139363750726f78795769746841646d696e436f6e74726f6c3a20636160008201527f6c6c6572206973206e6f74207468652061646d696e0000000000000000000000602082015250565b7f455243313936373a206e65772061646d696e20697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f4e65772061646d696e2063616e6e6f7420626520746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60008201527f6e74726163740000000000000000000000000000000000000000000000000000602082015250565b610c3d81610a33565b8114610c4857600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122010497848e37ab6922da5dfca0ffe3237279ff4dbab73394b120ec8f275c0977264736f6c63430008030033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000b046f8f3156ba71fcef82663cf19d23a57a11e0f000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a46c9ed5bf0000000000000000000000001bc9b7d4be47b76965a3f8e910b9ddd83150840f000000000000000000000000dd73dea10abc2bff99c60882ec5b2b81bb1dc5b2000000000000000000000000000000000000000000000000000000000002328000000000000000000000000067f57d98100fe04b64a5a3928a6e43bd29e651cc00000000000000000000000000000000000000000000000000071afd498d000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _logic (address): 0xb046f8f3156ba71FceF82663cF19D23a57a11e0F
Arg [1] : _data (bytes): 0x6c9ed5bf0000000000000000000000001bc9b7d4be47b76965a3f8e910b9ddd83150840f000000000000000000000000dd73dea10abc2bff99c60882ec5b2b81bb1dc5b2000000000000000000000000000000000000000000000000000000000002328000000000000000000000000067f57d98100fe04b64a5a3928a6e43bd29e651cc00000000000000000000000000000000000000000000000000071afd498d0000
-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 000000000000000000000000b046f8f3156ba71fcef82663cf19d23a57a11e0f
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000a4
Arg [3] : 6c9ed5bf0000000000000000000000001bc9b7d4be47b76965a3f8e910b9ddd8
Arg [4] : 3150840f000000000000000000000000dd73dea10abc2bff99c60882ec5b2b81
Arg [5] : bb1dc5b200000000000000000000000000000000000000000000000000000000
Arg [6] : 0002328000000000000000000000000067f57d98100fe04b64a5a3928a6e43bd
Arg [7] : 29e651cc00000000000000000000000000000000000000000000000000071afd
Arg [8] : 498d000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
25689:1010:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6183:11;:9;:11::i;:::-;25689:1010;;5952:11;:9;:11::i;:::-;25689:1010;26004:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26374:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26475:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26189:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5589:113;5638:17;:15;:17::i;:::-;5666:28;5676:17;:15;:17::i;:::-;5666:9;:28::i;:::-;5589:113::o;26004:179::-;25913:11;:9;:11::i;:::-;25899:25;;:10;:25;;;25891:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;26077:30:::1;26088:18;26077:10;:30::i;:::-;26141:15;26119:58;26158:18;26119:58;;;;;;:::i;:::-;;;;;;;;26004:179:::0;:::o;26374:95::-;26423:7;26446:17;:15;:17::i;:::-;26439:24;;26374:95;:::o;26475:88::-;26523:7;26546:11;:9;:11::i;:::-;26539:18;;26475:88;:::o;26189:179::-;25913:11;:9;:11::i;:::-;25899:25;;:10;:25;;;25891:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;26289:1:::1;26268:23;;:9;:23;;;;26260:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;26339:23;26352:9;26339:12;:23::i;:::-;26189:179:::0;:::o;13375:200::-;13458:12;13490:77;13511:6;13519:4;13490:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;13483:84;;13375:200;;;;:::o;16528:151::-;16589:21;16657:4;16647:14;;16632:40;;;:::o;7779:387::-;7839:4;8047:12;8114:7;8102:20;8094:28;;8157:1;8150:4;:8;8143:15;;;7779:387;;;:::o;6491:46::-;:::o;25455:142::-;25522:12;25554:35;:33;:35::i;:::-;25547:42;;25455:142;:::o;4179:918::-;4522:14;4519:1;4516;4503:34;4740:1;4737;4721:14;4718:1;4702:14;4695:5;4682:60;4819:16;4816:1;4813;4798:38;4859:6;4933:1;4928:68;;;;5047:16;5044:1;5037:27;4928:68;4964:16;4961:1;4954:27;21779:124;21823:7;21850:39;21503:66;21877:11;;21850:26;:39::i;:::-;:45;;;;;;;;;;;;21843:52;;21779:124;:::o;19217:155::-;19284:37;19303:17;19284:18;:37::i;:::-;19346:17;19337:27;;;;;;;;;;;;19217:155;:::o;22312:138::-;22377:35;22390:11;:9;:11::i;:::-;22403:8;22377:35;;;;;;;:::i;:::-;;;;;;;;22423:19;22433:8;22423:9;:19::i;:::-;22312:138;:::o;13769:397::-;13914:12;13947:18;13958:6;13947:10;:18::i;:::-;13939:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;14022:12;14036:23;14063:6;:19;;14083:4;14063:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14021:67;;;;14106:52;14124:7;14133:10;14145:12;14106:17;:52::i;:::-;14099:59;;;;13769:397;;;;;:::o;18604:142::-;18657:7;18684:48;18323:66;18711:20;;18684:26;:48::i;:::-;:54;;;;;;;;;;;;18677:61;;18604:142;:::o;18842:262::-;18924:37;18943:17;18924:18;:37::i;:::-;18916:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;19079:17;19022:48;18323:66;19049:20;;19022:26;:48::i;:::-;:54;;;:74;;;;;;;;;;;;;;;;;;18842:262;:::o;21990:204::-;22074:1;22054:22;;:8;:22;;;;22046:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;22178:8;22130:39;21503:66;22157:11;;22130:26;:39::i;:::-;:45;;;:56;;;;;;;;;;;;;;;;;;21990:204;:::o;14174:712::-;14324:12;14353:7;14349:530;;;14384:10;14377:17;;;;14349:530;14518:1;14498:10;:17;:21;14494:374;;;14696:10;14690:17;14757:15;14744:10;14740:2;14736:19;14729:44;14644:148;14839:12;14832:20;;;;;;;;;;;:::i;:::-;;;;;;;;14174:712;;;;;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:262::-;;260:2;248:9;239:7;235:23;231:32;228:2;;;276:1;273;266:12;228:2;319:1;344:53;389:7;380:6;369:9;365:22;344:53;:::i;:::-;334:63;;290:117;218:196;;;;:::o;420:118::-;507:24;525:5;507:24;:::i;:::-;502:3;495:37;485:53;;:::o;544:373::-;;676:38;708:5;676:38;:::i;:::-;730:88;811:6;806:3;730:88;:::i;:::-;723:95;;827:52;872:6;867:3;860:4;853:5;849:16;827:52;:::i;:::-;904:6;899:3;895:16;888:23;;652:265;;;;;:::o;923:364::-;;1039:39;1072:5;1039:39;:::i;:::-;1094:71;1158:6;1153:3;1094:71;:::i;:::-;1087:78;;1174:52;1219:6;1214:3;1207:4;1200:5;1196:16;1174:52;:::i;:::-;1251:29;1273:6;1251:29;:::i;:::-;1246:3;1242:39;1235:46;;1015:272;;;;;:::o;1293:366::-;;1456:67;1520:2;1515:3;1456:67;:::i;:::-;1449:74;;1532:93;1621:3;1532:93;:::i;:::-;1650:2;1645:3;1641:12;1634:19;;1439:220;;;:::o;1665:366::-;;1828:67;1892:2;1887:3;1828:67;:::i;:::-;1821:74;;1904:93;1993:3;1904:93;:::i;:::-;2022:2;2017:3;2013:12;2006:19;;1811:220;;;:::o;2037:366::-;;2200:67;2264:2;2259:3;2200:67;:::i;:::-;2193:74;;2276:93;2365:3;2276:93;:::i;:::-;2394:2;2389:3;2385:12;2378:19;;2183:220;;;:::o;2409:366::-;;2572:67;2636:2;2631:3;2572:67;:::i;:::-;2565:74;;2648:93;2737:3;2648:93;:::i;:::-;2766:2;2761:3;2757:12;2750:19;;2555:220;;;:::o;2781:366::-;;2944:67;3008:2;3003:3;2944:67;:::i;:::-;2937:74;;3020:93;3109:3;3020:93;:::i;:::-;3138:2;3133:3;3129:12;3122:19;;2927:220;;;:::o;3153:271::-;;3305:93;3394:3;3385:6;3305:93;:::i;:::-;3298:100;;3415:3;3408:10;;3287:137;;;;:::o;3430:222::-;;3561:2;3550:9;3546:18;3538:26;;3574:71;3642:1;3631:9;3627:17;3618:6;3574:71;:::i;:::-;3528:124;;;;:::o;3658:332::-;;3817:2;3806:9;3802:18;3794:26;;3830:71;3898:1;3887:9;3883:17;3874:6;3830:71;:::i;:::-;3911:72;3979:2;3968:9;3964:18;3955:6;3911:72;:::i;:::-;3784:206;;;;;:::o;3996:313::-;;4147:2;4136:9;4132:18;4124:26;;4196:9;4190:4;4186:20;4182:1;4171:9;4167:17;4160:47;4224:78;4297:4;4288:6;4224:78;:::i;:::-;4216:86;;4114:195;;;;:::o;4315:419::-;;4519:2;4508:9;4504:18;4496:26;;4568:9;4562:4;4558:20;4554:1;4543:9;4539:17;4532:47;4596:131;4722:4;4596:131;:::i;:::-;4588:139;;4486:248;;;:::o;4740:419::-;;4944:2;4933:9;4929:18;4921:26;;4993:9;4987:4;4983:20;4979:1;4968:9;4964:17;4957:47;5021:131;5147:4;5021:131;:::i;:::-;5013:139;;4911:248;;;:::o;5165:419::-;;5369:2;5358:9;5354:18;5346:26;;5418:9;5412:4;5408:20;5404:1;5393:9;5389:17;5382:47;5446:131;5572:4;5446:131;:::i;:::-;5438:139;;5336:248;;;:::o;5590:419::-;;5794:2;5783:9;5779:18;5771:26;;5843:9;5837:4;5833:20;5829:1;5818:9;5814:17;5807:47;5871:131;5997:4;5871:131;:::i;:::-;5863:139;;5761:248;;;:::o;6015:419::-;;6219:2;6208:9;6204:18;6196:26;;6268:9;6262:4;6258:20;6254:1;6243:9;6239:17;6232:47;6296:131;6422:4;6296:131;:::i;:::-;6288:139;;6186:248;;;:::o;6440:98::-;;6525:5;6519:12;6509:22;;6498:40;;;:::o;6544:99::-;;6630:5;6624:12;6614:22;;6603:40;;;:::o;6649:147::-;;6787:3;6772:18;;6762:34;;;;:::o;6802:169::-;;6920:6;6915:3;6908:19;6960:4;6955:3;6951:14;6936:29;;6898:73;;;;:::o;6977:96::-;;7043:24;7061:5;7043:24;:::i;:::-;7032:35;;7022:51;;;:::o;7079:126::-;;7156:42;7149:5;7145:54;7134:65;;7124:81;;;:::o;7211:307::-;7279:1;7289:113;7303:6;7300:1;7297:13;7289:113;;;7388:1;7383:3;7379:11;7373:18;7369:1;7364:3;7360:11;7353:39;7325:2;7322:1;7318:10;7313:15;;7289:113;;;7420:6;7417:1;7414:13;7411:2;;;7500:1;7491:6;7486:3;7482:16;7475:27;7411:2;7260:258;;;;:::o;7524:102::-;;7616:2;7612:7;7607:2;7600:5;7596:14;7592:28;7582:38;;7572:54;;;:::o;7632:240::-;7772:34;7768:1;7760:6;7756:14;7749:58;7841:23;7836:2;7828:6;7824:15;7817:48;7738:134;:::o;7878:225::-;8018:34;8014:1;8006:6;8002:14;7995:58;8087:8;8082:2;8074:6;8070:15;8063:33;7984:119;:::o;8109:232::-;8249:34;8245:1;8237:6;8233:14;8226:58;8318:15;8313:2;8305:6;8301:15;8294:40;8215:126;:::o;8347:223::-;8487:34;8483:1;8475:6;8471:14;8464:58;8556:6;8551:2;8543:6;8539:15;8532:31;8453:117;:::o;8576:225::-;8716:34;8712:1;8704:6;8700:14;8693:58;8785:8;8780:2;8772:6;8768:15;8761:33;8682:119;:::o;8807:122::-;8880:24;8898:5;8880:24;:::i;:::-;8873:5;8870:35;8860:2;;8919:1;8916;8909:12;8860:2;8850:79;:::o
Swarm Source
ipfs://10497848e37ab6922da5dfca0ffe3237279ff4dbab73394b120ec8f275c09772
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.