Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer Ownersh... | 13676738 | 1150 days ago | IN | 0 ETH | 0.0027171 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
EVMScriptExecutor
Compiler Version
v0.8.6+commit.11564f7e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-11-24 */ // SPDX-License-Identifier: MIT AND GPL-3.0 // File: OpenZeppelin/[email protected]/contracts/utils/StorageSlot.sol 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/[email protected]/contracts/utils/Address.sol 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); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal 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/[email protected]/contracts/utils/Context.sol 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/[email protected]/contracts/access/Ownable.sol 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: contracts/EVMScriptExecutor.sol // SPDX-FileCopyrightText: 2021 Lido <[email protected]> pragma solidity ^0.8.4; interface ICallsScript { function execScript( bytes memory _script, bytes memory, address[] memory _blacklist ) external returns (bytes memory); } /// @author psirex /// @notice Contains method to execute EVMScripts /// @dev EVMScripts use format of Aragon's https://github.com/aragon/aragonOS/blob/v4.0.0/contracts/evmscript/executors/CallsScript.sol executor contract EVMScriptExecutor is Ownable { // ------------- // EVENTS // ------------- event ScriptExecuted(address indexed _caller, bytes _evmScript); event EasyTrackChanged(address indexed _previousEasyTrack, address indexed _newEasyTrack); // ------------- // ERRORS // ------------- string private constant ERROR_CALLER_IS_FORBIDDEN = "CALLER_IS_FORBIDDEN"; string private constant ERROR_EASY_TRACK_IS_NOT_CONTRACT = "EASY_TRACK_IS_NOT_CONTRACT"; string private constant ERROR_CALLS_SCRIPT_IS_NOT_CONTRACT = "CALLS_SCRIPT_IS_NOT_CONTRACT"; // ------------ // CONSTANTS // ------------ // This variable required to use deployed CallsScript.sol contract because // CalssScript.sol makes check that caller contract is not petrified (https://hack.aragon.org/docs/common_Petrifiable) // Contains value: keccak256("aragonOS.initializable.initializationBlock") bytes32 internal constant INITIALIZATION_BLOCK_POSITION = 0xebb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e; // ------------ // VARIABLES // ------------ /// @notice Address of deployed CallsScript.sol contract address public immutable callsScript; /// @notice Address of depoyed easyTrack.sol contract address public easyTrack; // ------------- // CONSTRUCTOR // ------------- constructor(address _callsScript, address _easyTrack) { require(Address.isContract(_callsScript), ERROR_CALLS_SCRIPT_IS_NOT_CONTRACT); callsScript = _callsScript; _setEasyTrack(_easyTrack); StorageSlot.getUint256Slot(INITIALIZATION_BLOCK_POSITION).value = block.number; } // ------------- // EXTERNAL METHODS // ------------- /// @notice Executes EVMScript /// @dev Uses deployed Aragon's CallsScript.sol contract to execute EVMScript. /// @return Empty bytes function executeEVMScript(bytes memory _evmScript) external returns (bytes memory) { require(msg.sender == easyTrack, ERROR_CALLER_IS_FORBIDDEN); bytes memory execScriptCallData = abi.encodeWithSelector( ICallsScript.execScript.selector, _evmScript, new bytes(0), new address[](0) ); (bool success, bytes memory output) = callsScript.delegatecall(execScriptCallData); if (!success) { assembly { let ptr := mload(0x40) let size := returndatasize() returndatacopy(ptr, 0, size) revert(ptr, size) } } emit ScriptExecuted(msg.sender, _evmScript); return abi.decode(output, (bytes)); } function setEasyTrack(address _easyTrack) external onlyOwner { _setEasyTrack(_easyTrack); } function _setEasyTrack(address _easyTrack) internal { require(Address.isContract(_easyTrack), ERROR_EASY_TRACK_IS_NOT_CONTRACT); address oldEasyTrack = easyTrack; easyTrack = _easyTrack; emit EasyTrackChanged(oldEasyTrack, _easyTrack); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_callsScript","type":"address"},{"internalType":"address","name":"_easyTrack","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_previousEasyTrack","type":"address"},{"indexed":true,"internalType":"address","name":"_newEasyTrack","type":"address"}],"name":"EasyTrackChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_caller","type":"address"},{"indexed":false,"internalType":"bytes","name":"_evmScript","type":"bytes"}],"name":"ScriptExecuted","type":"event"},{"inputs":[],"name":"callsScript","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"easyTrack","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_evmScript","type":"bytes"}],"name":"executeEVMScript","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_easyTrack","type":"address"}],"name":"setEasyTrack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60a060405234801561001057600080fd5b5060405162000acb38038062000acb83398101604081905261003191610235565b61003a33610106565b61004d8261015660201b6103f51760201c565b6040518060400160405280601c81526020017f43414c4c535f5343524950545f49535f4e4f545f434f4e545241435400000000815250906100aa5760405162461bcd60e51b81526004016100a19190610268565b60405180910390fd5b506001600160601b0319606083901b166080526100c68161015c565b436100fd7febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e60001b61021660201b6103fb1760201c565b55506102bd9050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b3b151590565b61016f8161015660201b6103f51760201c565b6040518060400160405280601a81526020017f454153595f545241434b5f49535f4e4f545f434f4e5452414354000000000000815250906101c35760405162461bcd60e51b81526004016100a19190610268565b50600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907faca5390e502ceca9af8fdca7e094a4fe70188a8fcca7c18cd1ff501024f34cc390600090a35050565b90565b80516001600160a01b038116811461023057600080fd5b919050565b6000806040838503121561024857600080fd5b61025183610219565b915061025f60208401610219565b90509250929050565b600060208083528351808285015260005b8181101561029557858101830151858201604001528201610279565b818111156102a7576000604083870101525b50601f01601f1916929092016040019392505050565b60805160601c6107e9620002e26000396000818160f2015261020601526107e96000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063b4fde62b1161005b578063b4fde62b146100da578063b79340ba146100ed578063c368df7e14610114578063f2fde38b1461012757600080fd5b80634a27111d14610082578063715018a6146100ab5780638da5cb5b146100b5575b600080fd5b610095610090366004610524565b61013a565b6040516100a2919061065a565b60405180910390f35b6100b36102f1565b005b6000546001600160a01b03165b6040516001600160a01b0390911681526020016100a2565b6100b36100e83660046104f4565b610327565b6100c27f000000000000000000000000000000000000000000000000000000000000000081565b6001546100c2906001600160a01b031681565b6100b36101353660046104f4565b61035d565b60015460408051808201909152601381527221a0a62622a92fa4a9afa327a92124a22222a760691b60208201526060916001600160a01b0316331461019b5760405162461bcd60e51b8152600401610192919061065a565b60405180910390fd5b50604080516000808252602082018181528284019093529163279cea3560e01b916101cc918691906064820161066d565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168360405161023c919061063e565b600060405180830381855af49150503d8060008114610277576040519150601f19603f3d011682016040523d82523d6000602084013e61027c565b606091505b509150915081610293576040513d806000833e8082fd5b336001600160a01b03167f089abea492b59933f25cebc96e2bfb473412c71e086c46c12f25dae9c3c7eb84866040516102cc919061065a565b60405180910390a2808060200190518101906102e891906105a4565b95945050505050565b6000546001600160a01b0316331461031b5760405162461bcd60e51b8152600401610192906106df565b61032560006103fe565b565b6000546001600160a01b031633146103515760405162461bcd60e51b8152600401610192906106df565b61035a8161044e565b50565b6000546001600160a01b031633146103875760405162461bcd60e51b8152600401610192906106df565b6001600160a01b0381166103ec5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610192565b61035a816103fe565b3b151590565b90565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60408051808201909152601a81527f454153595f545241434b5f49535f4e4f545f434f4e54524143540000000000006020820152813b6104a15760405162461bcd60e51b8152600401610192919061065a565b50600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907faca5390e502ceca9af8fdca7e094a4fe70188a8fcca7c18cd1ff501024f34cc390600090a35050565b60006020828403121561050657600080fd5b81356001600160a01b038116811461051d57600080fd5b9392505050565b60006020828403121561053657600080fd5b813567ffffffffffffffff81111561054d57600080fd5b8201601f8101841361055e57600080fd5b803561057161056c82610745565b610714565b81815285602083850101111561058657600080fd5b81602084016020830137600091810160200191909152949350505050565b6000602082840312156105b657600080fd5b815167ffffffffffffffff8111156105cd57600080fd5b8201601f810184136105de57600080fd5b80516105ec61056c82610745565b81815285602083850101111561060157600080fd5b6102e882602083016020860161076d565b6000815180845261062a81602086016020860161076d565b601f01601f19169290920160200192915050565b6000825161065081846020870161076d565b9190910192915050565b60208152600061051d6020830184610612565b6060815260006106806060830186610612565b6020838203818501526106938287610612565b8481036040860152855180825282870193509082019060005b818110156106d15784516001600160a01b0316835293830193918301916001016106ac565b509098975050505050505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b604051601f8201601f1916810167ffffffffffffffff8111828210171561073d5761073d61079d565b604052919050565b600067ffffffffffffffff82111561075f5761075f61079d565b50601f01601f191660200190565b60005b83811015610788578181015183820152602001610770565b83811115610797576000848401525b50505050565b634e487b7160e01b600052604160045260246000fdfea2646970667358221220c83106fe0415891bf9baa56347f210fc0ee2e739c6cbbeb9e14d57949aea394764736f6c634300080600330000000000000000000000005ceb19e1890f677c3676d5ecdf7c501eba01a054000000000000000000000000f0211b7660680b49de1a7e9f25c65660f0a13fea
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061007d5760003560e01c8063b4fde62b1161005b578063b4fde62b146100da578063b79340ba146100ed578063c368df7e14610114578063f2fde38b1461012757600080fd5b80634a27111d14610082578063715018a6146100ab5780638da5cb5b146100b5575b600080fd5b610095610090366004610524565b61013a565b6040516100a2919061065a565b60405180910390f35b6100b36102f1565b005b6000546001600160a01b03165b6040516001600160a01b0390911681526020016100a2565b6100b36100e83660046104f4565b610327565b6100c27f0000000000000000000000005ceb19e1890f677c3676d5ecdf7c501eba01a05481565b6001546100c2906001600160a01b031681565b6100b36101353660046104f4565b61035d565b60015460408051808201909152601381527221a0a62622a92fa4a9afa327a92124a22222a760691b60208201526060916001600160a01b0316331461019b5760405162461bcd60e51b8152600401610192919061065a565b60405180910390fd5b50604080516000808252602082018181528284019093529163279cea3560e01b916101cc918691906064820161066d565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090506000807f0000000000000000000000005ceb19e1890f677c3676d5ecdf7c501eba01a0546001600160a01b03168360405161023c919061063e565b600060405180830381855af49150503d8060008114610277576040519150601f19603f3d011682016040523d82523d6000602084013e61027c565b606091505b509150915081610293576040513d806000833e8082fd5b336001600160a01b03167f089abea492b59933f25cebc96e2bfb473412c71e086c46c12f25dae9c3c7eb84866040516102cc919061065a565b60405180910390a2808060200190518101906102e891906105a4565b95945050505050565b6000546001600160a01b0316331461031b5760405162461bcd60e51b8152600401610192906106df565b61032560006103fe565b565b6000546001600160a01b031633146103515760405162461bcd60e51b8152600401610192906106df565b61035a8161044e565b50565b6000546001600160a01b031633146103875760405162461bcd60e51b8152600401610192906106df565b6001600160a01b0381166103ec5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610192565b61035a816103fe565b3b151590565b90565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60408051808201909152601a81527f454153595f545241434b5f49535f4e4f545f434f4e54524143540000000000006020820152813b6104a15760405162461bcd60e51b8152600401610192919061065a565b50600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907faca5390e502ceca9af8fdca7e094a4fe70188a8fcca7c18cd1ff501024f34cc390600090a35050565b60006020828403121561050657600080fd5b81356001600160a01b038116811461051d57600080fd5b9392505050565b60006020828403121561053657600080fd5b813567ffffffffffffffff81111561054d57600080fd5b8201601f8101841361055e57600080fd5b803561057161056c82610745565b610714565b81815285602083850101111561058657600080fd5b81602084016020830137600091810160200191909152949350505050565b6000602082840312156105b657600080fd5b815167ffffffffffffffff8111156105cd57600080fd5b8201601f810184136105de57600080fd5b80516105ec61056c82610745565b81815285602083850101111561060157600080fd5b6102e882602083016020860161076d565b6000815180845261062a81602086016020860161076d565b601f01601f19169290920160200192915050565b6000825161065081846020870161076d565b9190910192915050565b60208152600061051d6020830184610612565b6060815260006106806060830186610612565b6020838203818501526106938287610612565b8481036040860152855180825282870193509082019060005b818110156106d15784516001600160a01b0316835293830193918301916001016106ac565b509098975050505050505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b604051601f8201601f1916810167ffffffffffffffff8111828210171561073d5761073d61079d565b604052919050565b600067ffffffffffffffff82111561075f5761075f61079d565b50601f01601f191660200190565b60005b83811015610788578181015183820152602001610770565b83811115610797576000848401525b50505050565b634e487b7160e01b600052604160045260246000fdfea2646970667358221220c83106fe0415891bf9baa56347f210fc0ee2e739c6cbbeb9e14d57949aea394764736f6c63430008060033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000005ceb19e1890f677c3676d5ecdf7c501eba01a054000000000000000000000000f0211b7660680b49de1a7e9f25c65660f0a13fea
-----Decoded View---------------
Arg [0] : _callsScript (address): 0x5cEb19e1890f677c3676d5ecDF7c501eBA01A054
Arg [1] : _easyTrack (address): 0xF0211b7660680B49De1A7E9f25C65660F0a13Fea
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000005ceb19e1890f677c3676d5ecdf7c501eba01a054
Arg [1] : 000000000000000000000000f0211b7660680b49de1a7e9f25c65660f0a13fea
Deployed Bytecode Sourcemap
14439:3198:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16397:838;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13273:94;;;:::i;:::-;;12622:87;12668:7;12695:6;-1:-1:-1;;;;;12695:6:0;12622:87;;;-1:-1:-1;;;;;2325:32:1;;;2307:51;;2295:2;2280:18;12622:87:0;2262:102:1;17243:105:0;;;;;;:::i;:::-;;:::i;15656:36::-;;;;;15760:24;;;;;-1:-1:-1;;;;;15760:24:0;;;13522:192;;;;;;:::i;:::-;;:::i;16397:838::-;16513:9;;16524:25;;;;;;;;;;;;-1:-1:-1;;;16524:25:0;;;;16466:12;;-1:-1:-1;;;;;16513:9:0;16499:10;:23;16491:59;;;;-1:-1:-1;;;16491:59:0;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;16731:12:0;;;16563:31;16731:12;;;;;;16762:16;;;;;;;;;16563:31;-1:-1:-1;;;16651:32:0;16610:183;;16702:10;;16731:12;16610:183;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;16610:183:0;;;;;;;-1:-1:-1;;;;;16610:183:0;;;;;;;;;;;16563:230;;16805:12;16819:19;16842:11;-1:-1:-1;;;;;16842:24:0;16867:18;16842:44;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16804:82;;;;16902:7;16897:232;;16971:4;16965:11;17006:16;17063:4;17060:1;17055:3;17040:28;17098:4;17093:3;17086:17;16897:232;17159:10;-1:-1:-1;;;;;17144:38:0;;17171:10;17144:38;;;;;;:::i;:::-;;;;;;;;17211:6;17200:27;;;;;;;;;;;;:::i;:::-;17193:34;16397:838;-1:-1:-1;;;;;16397:838:0:o;13273:94::-;12668:7;12695:6;-1:-1:-1;;;;;12695:6:0;11464:10;12842:23;12834:68;;;;-1:-1:-1;;;12834:68:0;;;;;;;:::i;:::-;13338:21:::1;13356:1;13338:9;:21::i;:::-;13273:94::o:0;17243:105::-;12668:7;12695:6;-1:-1:-1;;;;;12695:6:0;11464:10;12842:23;12834:68;;;;-1:-1:-1;;;12834:68:0;;;;;;;:::i;:::-;17315:25:::1;17329:10;17315:13;:25::i;:::-;17243:105:::0;:::o;13522:192::-;12668:7;12695:6;-1:-1:-1;;;;;12695:6:0;11464:10;12842:23;12834:68;;;;-1:-1:-1;;;12834:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13611:22:0;::::1;13603:73;;;::::0;-1:-1:-1;;;13603:73:0;;3968:2:1;13603:73:0::1;::::0;::::1;3950:21:1::0;4007:2;3987:18;;;3980:30;4046:34;4026:18;;;4019:62;-1:-1:-1;;;4097:18:1;;;4090:36;4143:19;;13603:73:0::1;3940:228:1::0;13603:73:0::1;13687:19;13697:8;13687:9;:19::i;3402:387::-:0;3725:20;3773:8;;;3402:387::o;2452:151::-;2581:4;2452:151::o;13722:173::-;13778:16;13797:6;;-1:-1:-1;;;;;13814:17:0;;;-1:-1:-1;;;;;;13814:17:0;;;;;;13847:40;;13797:6;;;;;;;13847:40;;13778:16;13847:40;13767:128;13722:173;:::o;17356:278::-;17459:32;;;;;;;;;;;;;;;;;3725:20;;17419:73;;;;-1:-1:-1;;;17419:73:0;;;;;;;;:::i;:::-;-1:-1:-1;17526:9:0;;;-1:-1:-1;;;;;17546:22:0;;;-1:-1:-1;;;;;;17546:22:0;;;;;;;17584:42;;17526:9;;;17546:22;17526:9;;17584:42;;17503:20;;17584:42;17408:226;17356:278;:::o;14:286:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:2;;;142:1;139;132:12;94:2;168:23;;-1:-1:-1;;;;;220:31:1;;210:42;;200:2;;266:1;263;256:12;200:2;289:5;84:216;-1:-1:-1;;;84:216:1:o;305:671::-;373:6;426:2;414:9;405:7;401:23;397:32;394:2;;;442:1;439;432:12;394:2;482:9;469:23;515:18;507:6;504:30;501:2;;;547:1;544;537:12;501:2;570:22;;623:4;615:13;;611:27;-1:-1:-1;601:2:1;;652:1;649;642:12;601:2;688;675:16;713:48;729:31;757:2;729:31;:::i;:::-;713:48;:::i;:::-;784:2;777:5;770:17;824:7;819:2;814;810;806:11;802:20;799:33;796:2;;;845:1;842;835:12;796:2;900;895;891;887:11;882:2;875:5;871:14;858:45;944:1;923:14;;;939:2;919:23;912:34;;;;927:5;384:592;-1:-1:-1;;;;384:592:1:o;981:634::-;1060:6;1113:2;1101:9;1092:7;1088:23;1084:32;1081:2;;;1129:1;1126;1119:12;1081:2;1162:9;1156:16;1195:18;1187:6;1184:30;1181:2;;;1227:1;1224;1217:12;1181:2;1250:22;;1303:4;1295:13;;1291:27;-1:-1:-1;1281:2:1;;1332:1;1329;1322:12;1281:2;1361;1355:9;1386:48;1402:31;1430:2;1402:31;:::i;1386:48::-;1457:2;1450:5;1443:17;1497:7;1492:2;1487;1483;1479:11;1475:20;1472:33;1469:2;;;1518:1;1515;1508:12;1469:2;1531:54;1582:2;1577;1570:5;1566:14;1561:2;1557;1553:11;1531:54;:::i;1620:257::-;1661:3;1699:5;1693:12;1726:6;1721:3;1714:19;1742:63;1798:6;1791:4;1786:3;1782:14;1775:4;1768:5;1764:16;1742:63;:::i;:::-;1859:2;1838:15;-1:-1:-1;;1834:29:1;1825:39;;;;1866:4;1821:50;;1669:208;-1:-1:-1;;1669:208:1:o;1882:274::-;2011:3;2049:6;2043:13;2065:53;2111:6;2106:3;2099:4;2091:6;2087:17;2065:53;:::i;:::-;2134:16;;;;;2019:137;-1:-1:-1;;2019:137:1:o;2369:217::-;2516:2;2505:9;2498:21;2479:4;2536:44;2576:2;2565:9;2561:18;2553:6;2536:44;:::i;2591:946::-;2862:2;2851:9;2844:21;2825:4;2888:44;2928:2;2917:9;2913:18;2905:6;2888:44;:::i;:::-;2951:2;3001:9;2993:6;2989:22;2984:2;2973:9;2969:18;2962:50;3035:32;3060:6;3052;3035:32;:::i;:::-;3103:22;;;3098:2;3083:18;;3076:50;3175:13;;3197:22;;;3273:15;;;;-1:-1:-1;3235:15:1;;;;3306:1;3316:195;3330:6;3327:1;3324:13;3316:195;;;3395:13;;-1:-1:-1;;;;;3391:39:1;3379:52;;3486:15;;;;3451:12;;;;3427:1;3345:9;3316:195;;;-1:-1:-1;3528:3:1;;2834:703;-1:-1:-1;;;;;;;;2834:703:1:o;4173:356::-;4375:2;4357:21;;;4394:18;;;4387:30;4453:34;4448:2;4433:18;;4426:62;4520:2;4505:18;;4347:182::o;4534:275::-;4605:2;4599:9;4670:2;4651:13;;-1:-1:-1;;4647:27:1;4635:40;;4705:18;4690:34;;4726:22;;;4687:62;4684:2;;;4752:18;;:::i;:::-;4788:2;4781:22;4579:230;;-1:-1:-1;4579:230:1:o;4814:186::-;4862:4;4895:18;4887:6;4884:30;4881:2;;;4917:18;;:::i;:::-;-1:-1:-1;4983:2:1;4962:15;-1:-1:-1;;4958:29:1;4989:4;4954:40;;4871:129::o;5005:258::-;5077:1;5087:113;5101:6;5098:1;5095:13;5087:113;;;5177:11;;;5171:18;5158:11;;;5151:39;5123:2;5116:10;5087:113;;;5218:6;5215:1;5212:13;5209:2;;;5253:1;5244:6;5239:3;5235:16;5228:27;5209:2;;5058:205;;;:::o;5268:127::-;5329:10;5324:3;5320:20;5317:1;5310:31;5360:4;5357:1;5350:15;5384:4;5381:1;5374:15
Swarm Source
ipfs://c83106fe0415891bf9baa56347f210fc0ee2e739c6cbbeb9e14d57949aea3947
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ 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.