Source Code
Overview
ETH Balance
0 ETH
More Info
ContractCreator
Multichain Info
N/A
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
OpsProxy
Compiler Version
v0.8.14+commit.80d49f37
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.12; import {Proxied} from "../vendor/proxy/EIP173/Proxied.sol"; import {_call} from "../functions/FExec.sol"; import {IOpsProxy} from "../interfaces/IOpsProxy.sol"; contract OpsProxy is Proxied, IOpsProxy { // solhint-disable const-name-snakecase uint256 public constant override version = 1; address public immutable override ops; modifier onlyAuth() { address proxyOwner = owner(); if (msg.sender != proxyOwner) { require(msg.sender == ops, "OpsProxy: Not authorised"); require( _getTaskCreator() == proxyOwner, "OpsProxy: Only tasks created by owner" ); } // else msg.sender == proxyOwner _; } // solhint-disable no-empty-blocks constructor(address _ops) { ops = _ops; } receive() external payable {} ///@inheritdoc IOpsProxy function batchExecuteCall( address[] calldata _targets, bytes[] calldata _datas, uint256[] calldata _values ) external payable override onlyAuth { uint256 length = _targets.length; require( length == _datas.length && length == _values.length, "OpsProxy: Length mismatch" ); for (uint256 i; i < length; i++) _executeCall(_targets[i], _datas[i], _values[i]); } ///@inheritdoc IOpsProxy function executeCall( address _target, bytes calldata _data, uint256 _value ) external payable override onlyAuth { _executeCall(_target, _data, _value); } function owner() public view returns (address) { return _proxyAdmin(); } function _executeCall( address _target, bytes calldata _data, uint256 _value ) private { (, bytes memory returnData) = _call( _target, _data, _value, true, "OpsProxy.executeCall: " ); emit ExecuteCall(_target, _data, _value, returnData); } function _getTaskCreator() private pure returns (address taskCreator) { assembly { taskCreator := shr(96, calldataload(sub(calldatasize(), 20))) } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.12; import {GelatoBytes} from "../vendor/gelato/GelatoBytes.sol"; // solhint-disable private-vars-leading-underscore // solhint-disable func-visibility function _call( address _add, bytes memory _data, uint256 _value, bool _revertOnFailure, string memory _tracingInfo ) returns (bool success, bytes memory returnData) { (success, returnData) = _add.call{value: _value}(_data); if (!success && _revertOnFailure) GelatoBytes.revertWithError(returnData, _tracingInfo); } function _delegateCall( address _add, bytes memory _data, string memory _tracingInfo ) returns (bool success, bytes memory returnData) { (success, returnData) = _add.delegatecall(_data); if (!success) GelatoBytes.revertWithError(returnData, _tracingInfo); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.12; interface IOpsProxy { /** * @notice Emitted when proxy calls a contract successfully in `executeCall` * * @param target Address of contract that is called * @param data Data used in the call. * @param value Native token value used in the call. * @param returnData Data returned by the call. */ event ExecuteCall( address indexed target, bytes data, uint256 value, bytes returnData ); /** * @notice Multicall to different contracts with different datas. * * @param targets Addresses of contracts to be called. * @param datas Datas for each contract call. * @param values Native token value for each contract call. */ function batchExecuteCall( address[] calldata targets, bytes[] calldata datas, uint256[] calldata values ) external payable; /** * @notice Call to a single contract. * * @param target Address of contracts to be called. * @param data Data for contract call. * @param value Native token value for contract call. */ function executeCall( address target, bytes calldata data, uint256 value ) external payable; /** * @return address Ops smart contract address */ function ops() external view returns (address); /** * @return address Owner of the proxy */ function owner() external view returns (address); /** * @return uint256 version of OpsProxy. */ function version() external view returns (uint256); }
// SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.12; library GelatoBytes { function calldataSliceSelector(bytes calldata _bytes) internal pure returns (bytes4 selector) { selector = _bytes[0] | (bytes4(_bytes[1]) >> 8) | (bytes4(_bytes[2]) >> 16) | (bytes4(_bytes[3]) >> 24); } function memorySliceSelector(bytes memory _bytes) internal pure returns (bytes4 selector) { selector = _bytes[0] | (bytes4(_bytes[1]) >> 8) | (bytes4(_bytes[2]) >> 16) | (bytes4(_bytes[3]) >> 24); } function revertWithError(bytes memory _bytes, string memory _tracingInfo) internal pure { // 68: 32-location, 32-length, 4-ErrorSelector, UTF-8 err if (_bytes.length % 32 == 4) { bytes4 selector; assembly { selector := mload(add(0x20, _bytes)) } if (selector == 0x08c379a0) { // Function selector for Error(string) assembly { _bytes := add(_bytes, 68) } revert(string(abi.encodePacked(_tracingInfo, string(_bytes)))); } else { revert( string(abi.encodePacked(_tracingInfo, "NoErrorSelector")) ); } } else { revert( string(abi.encodePacked(_tracingInfo, "UnexpectedReturndata")) ); } } function returnError(bytes memory _bytes, string memory _tracingInfo) internal pure returns (string memory) { // 68: 32-location, 32-length, 4-ErrorSelector, UTF-8 err if (_bytes.length % 32 == 4) { bytes4 selector; assembly { selector := mload(add(0x20, _bytes)) } if (selector == 0x08c379a0) { // Function selector for Error(string) assembly { _bytes := add(_bytes, 68) } return string(abi.encodePacked(_tracingInfo, string(_bytes))); } else { return string(abi.encodePacked(_tracingInfo, "NoErrorSelector")); } } else { return string(abi.encodePacked(_tracingInfo, "UnexpectedReturndata")); } } }
// SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.8.12; abstract contract Proxied { /// @notice to be used by initialisation / postUpgrade function so that only the proxy's admin can execute them /// It also allows these functions to be called inside a contructor /// even if the contract is meant to be used without proxy modifier proxied() { address proxyAdminAddress = _proxyAdmin(); // With hardhat-deploy proxies // the proxyAdminAddress is zero only for the implementation contract // if the implementation contract want to be used as a standalone/immutable contract // it simply has to execute the `proxied` function // This ensure the proxyAdminAddress is never zero post deployment // And allow you to keep the same code for both proxied contract and immutable contract if (proxyAdminAddress == address(0)) { // ensure can not be called twice when used outside of proxy : no admin // solhint-disable-next-line security/no-inline-assembly assembly { sstore( 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103, 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ) } } else { require(msg.sender == proxyAdminAddress); } _; } modifier onlyProxyAdmin() { require(msg.sender == _proxyAdmin(), "NOT_AUTHORIZED"); _; } function _proxyAdmin() internal view returns (address adminAddress) { // solhint-disable-next-line security/no-inline-assembly assembly { adminAddress := sload( 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103 ) } } }
{ "evmVersion": "london", "libraries": {}, "metadata": { "bytecodeHash": "ipfs", "useLiteralContent": true }, "optimizer": { "enabled": false, "runs": 200 }, "remappings": [], "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
[{"inputs":[{"internalType":"address","name":"_ops","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"returnData","type":"bytes"}],"name":"ExecuteCall","type":"event"},{"inputs":[{"internalType":"address[]","name":"_targets","type":"address[]"},{"internalType":"bytes[]","name":"_datas","type":"bytes[]"},{"internalType":"uint256[]","name":"_values","type":"uint256[]"}],"name":"batchExecuteCall","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"executeCall","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"ops","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a06040523480156200001157600080fd5b5060405162001317380380620013178339818101604052810190620000379190620000dc565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050506200010e565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620000a48262000077565b9050919050565b620000b68162000097565b8114620000c257600080fd5b50565b600081519050620000d681620000ab565b92915050565b600060208284031215620000f557620000f462000072565b5b60006200010584828501620000c5565b91505092915050565b6080516111df6200013860003960008181610154015281816102be01526104b501526111df6000f3fe60806040526004361061004e5760003560e01c806354132d781461005a57806354fd4d50146100765780638da5cb5b146100a1578063c0e8c0c2146100cc578063e70abe92146100e857610055565b3661005557005b600080fd5b610074600480360381019061006f91906108fa565b610113565b005b34801561008257600080fd5b5061008b610269565b604051610098919061097d565b60405180910390f35b3480156100ad57600080fd5b506100b661026e565b6040516100c391906109a7565b60405180910390f35b6100e660048036038101906100e19190610ac4565b61027d565b005b3480156100f457600080fd5b506100fd6104b3565b60405161010a91906109a7565b60405180910390f35b600061011d61026e565b90508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610256577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101d790610bd5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166101ff6104d7565b73ffffffffffffffffffffffffffffffffffffffff1614610255576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161024c90610c67565b60405180910390fd5b5b610262858585856104e6565b5050505050565b600181565b60006102786105cd565b905090565b600061028761026e565b90508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103c0577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461034a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161034190610bd5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166103696104d7565b73ffffffffffffffffffffffffffffffffffffffff16146103bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103b690610c67565b60405180910390fd5b5b600087879050905085859050811480156103dc57508383905081145b61041b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161041290610cd3565b60405180910390fd5b60005b818110156104a85761049589898381811061043c5761043b610cf3565b5b90506020020160208101906104519190610d22565b88888481811061046457610463610cf3565b5b90506020028101906104769190610d5e565b88888681811061048957610488610cf3565b5b905060200201356104e6565b80806104a090610df0565b91505061041e565b505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000601436033560601c905090565b600061056f8585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508460016040518060400160405280601681526020017f4f707350726f78792e6578656375746543616c6c3a20000000000000000000008152506105f6565b9150508473ffffffffffffffffffffffffffffffffffffffff167f8f8f4d49bbb03ffac818a5d588ec1786a4d2d17269871cbf5b1745f58b64c15d858585856040516105be9493929190610f0d565b60405180910390a25050505050565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610354905090565b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040516106209190610f90565b60006040518083038185875af1925050503d806000811461065d576040519150601f19603f3d011682016040523d82523d6000602084013e610662565b606091505b508092508193505050811580156106765750835b15610686576106858184610690565b5b9550959350505050565b6004602083516106a09190610fd6565b0361079b576000826020015190506308c379a060e01b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19160361073f5760448301925081836040516020016106f492919061104e565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073691906110ab565b60405180910390fd5b816040516020016107509190611119565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079291906110ab565b60405180910390fd5b806040516020016107ac9190611187565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ee91906110ab565b60405180910390fd5b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061082c82610801565b9050919050565b61083c81610821565b811461084757600080fd5b50565b60008135905061085981610833565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126108845761088361085f565b5b8235905067ffffffffffffffff8111156108a1576108a0610864565b5b6020830191508360018202830111156108bd576108bc610869565b5b9250929050565b6000819050919050565b6108d7816108c4565b81146108e257600080fd5b50565b6000813590506108f4816108ce565b92915050565b60008060008060608587031215610914576109136107f7565b5b60006109228782880161084a565b945050602085013567ffffffffffffffff811115610943576109426107fc565b5b61094f8782880161086e565b93509350506040610962878288016108e5565b91505092959194509250565b610977816108c4565b82525050565b6000602082019050610992600083018461096e565b92915050565b6109a181610821565b82525050565b60006020820190506109bc6000830184610998565b92915050565b60008083601f8401126109d8576109d761085f565b5b8235905067ffffffffffffffff8111156109f5576109f4610864565b5b602083019150836020820283011115610a1157610a10610869565b5b9250929050565b60008083601f840112610a2e57610a2d61085f565b5b8235905067ffffffffffffffff811115610a4b57610a4a610864565b5b602083019150836020820283011115610a6757610a66610869565b5b9250929050565b60008083601f840112610a8457610a8361085f565b5b8235905067ffffffffffffffff811115610aa157610aa0610864565b5b602083019150836020820283011115610abd57610abc610869565b5b9250929050565b60008060008060008060608789031215610ae157610ae06107f7565b5b600087013567ffffffffffffffff811115610aff57610afe6107fc565b5b610b0b89828a016109c2565b9650965050602087013567ffffffffffffffff811115610b2e57610b2d6107fc565b5b610b3a89828a01610a18565b9450945050604087013567ffffffffffffffff811115610b5d57610b5c6107fc565b5b610b6989828a01610a6e565b92509250509295509295509295565b600082825260208201905092915050565b7f4f707350726f78793a204e6f7420617574686f72697365640000000000000000600082015250565b6000610bbf601883610b78565b9150610bca82610b89565b602082019050919050565b60006020820190508181036000830152610bee81610bb2565b9050919050565b7f4f707350726f78793a204f6e6c79207461736b7320637265617465642062792060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000610c51602583610b78565b9150610c5c82610bf5565b604082019050919050565b60006020820190508181036000830152610c8081610c44565b9050919050565b7f4f707350726f78793a204c656e677468206d69736d6174636800000000000000600082015250565b6000610cbd601983610b78565b9150610cc882610c87565b602082019050919050565b60006020820190508181036000830152610cec81610cb0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215610d3857610d376107f7565b5b6000610d468482850161084a565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112610d7b57610d7a610d4f565b5b80840192508235915067ffffffffffffffff821115610d9d57610d9c610d54565b5b602083019250600182023603831315610db957610db8610d59565b5b509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610dfb826108c4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610e2d57610e2c610dc1565b5b600182019050919050565b600082825260208201905092915050565b82818337600083830152505050565b6000601f19601f8301169050919050565b6000610e758385610e38565b9350610e82838584610e49565b610e8b83610e58565b840190509392505050565b600081519050919050565b60005b83811015610ebf578082015181840152602081019050610ea4565b83811115610ece576000848401525b50505050565b6000610edf82610e96565b610ee98185610e38565b9350610ef9818560208601610ea1565b610f0281610e58565b840191505092915050565b60006060820190508181036000830152610f28818688610e69565b9050610f37602083018561096e565b8181036040830152610f498184610ed4565b905095945050505050565b600081905092915050565b6000610f6a82610e96565b610f748185610f54565b9350610f84818560208601610ea1565b80840191505092915050565b6000610f9c8284610f5f565b915081905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610fe1826108c4565b9150610fec836108c4565b925082610ffc57610ffb610fa7565b5b828206905092915050565b600081519050919050565b600081905092915050565b600061102882611007565b6110328185611012565b9350611042818560208601610ea1565b80840191505092915050565b600061105a828561101d565b9150611066828461101d565b91508190509392505050565b600061107d82611007565b6110878185610b78565b9350611097818560208601610ea1565b6110a081610e58565b840191505092915050565b600060208201905081810360008301526110c58184611072565b905092915050565b7f4e6f4572726f7253656c6563746f720000000000000000000000000000000000600082015250565b6000611103600f83611012565b915061110e826110cd565b600f82019050919050565b6000611125828461101d565b9150611130826110f6565b915081905092915050565b7f556e657870656374656452657475726e64617461000000000000000000000000600082015250565b6000611171601483611012565b915061117c8261113b565b601482019050919050565b6000611193828461101d565b915061119e82611164565b91508190509291505056fea2646970667358221220925e8abf4f8b318f74a9a344b29c6785f3cc7ee8f12ec00fec31b621e6bdc76064736f6c634300080e00330000000000000000000000002a6c106ae13b558bb9e2ec64bd2f1f7beff3a5e0
Deployed Bytecode
0x60806040526004361061004e5760003560e01c806354132d781461005a57806354fd4d50146100765780638da5cb5b146100a1578063c0e8c0c2146100cc578063e70abe92146100e857610055565b3661005557005b600080fd5b610074600480360381019061006f91906108fa565b610113565b005b34801561008257600080fd5b5061008b610269565b604051610098919061097d565b60405180910390f35b3480156100ad57600080fd5b506100b661026e565b6040516100c391906109a7565b60405180910390f35b6100e660048036038101906100e19190610ac4565b61027d565b005b3480156100f457600080fd5b506100fd6104b3565b60405161010a91906109a7565b60405180910390f35b600061011d61026e565b90508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610256577f0000000000000000000000002a6c106ae13b558bb9e2ec64bd2f1f7beff3a5e073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101d790610bd5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166101ff6104d7565b73ffffffffffffffffffffffffffffffffffffffff1614610255576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161024c90610c67565b60405180910390fd5b5b610262858585856104e6565b5050505050565b600181565b60006102786105cd565b905090565b600061028761026e565b90508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103c0577f0000000000000000000000002a6c106ae13b558bb9e2ec64bd2f1f7beff3a5e073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461034a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161034190610bd5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166103696104d7565b73ffffffffffffffffffffffffffffffffffffffff16146103bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103b690610c67565b60405180910390fd5b5b600087879050905085859050811480156103dc57508383905081145b61041b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161041290610cd3565b60405180910390fd5b60005b818110156104a85761049589898381811061043c5761043b610cf3565b5b90506020020160208101906104519190610d22565b88888481811061046457610463610cf3565b5b90506020028101906104769190610d5e565b88888681811061048957610488610cf3565b5b905060200201356104e6565b80806104a090610df0565b91505061041e565b505050505050505050565b7f0000000000000000000000002a6c106ae13b558bb9e2ec64bd2f1f7beff3a5e081565b6000601436033560601c905090565b600061056f8585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508460016040518060400160405280601681526020017f4f707350726f78792e6578656375746543616c6c3a20000000000000000000008152506105f6565b9150508473ffffffffffffffffffffffffffffffffffffffff167f8f8f4d49bbb03ffac818a5d588ec1786a4d2d17269871cbf5b1745f58b64c15d858585856040516105be9493929190610f0d565b60405180910390a25050505050565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610354905090565b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040516106209190610f90565b60006040518083038185875af1925050503d806000811461065d576040519150601f19603f3d011682016040523d82523d6000602084013e610662565b606091505b508092508193505050811580156106765750835b15610686576106858184610690565b5b9550959350505050565b6004602083516106a09190610fd6565b0361079b576000826020015190506308c379a060e01b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19160361073f5760448301925081836040516020016106f492919061104e565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073691906110ab565b60405180910390fd5b816040516020016107509190611119565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079291906110ab565b60405180910390fd5b806040516020016107ac9190611187565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ee91906110ab565b60405180910390fd5b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061082c82610801565b9050919050565b61083c81610821565b811461084757600080fd5b50565b60008135905061085981610833565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126108845761088361085f565b5b8235905067ffffffffffffffff8111156108a1576108a0610864565b5b6020830191508360018202830111156108bd576108bc610869565b5b9250929050565b6000819050919050565b6108d7816108c4565b81146108e257600080fd5b50565b6000813590506108f4816108ce565b92915050565b60008060008060608587031215610914576109136107f7565b5b60006109228782880161084a565b945050602085013567ffffffffffffffff811115610943576109426107fc565b5b61094f8782880161086e565b93509350506040610962878288016108e5565b91505092959194509250565b610977816108c4565b82525050565b6000602082019050610992600083018461096e565b92915050565b6109a181610821565b82525050565b60006020820190506109bc6000830184610998565b92915050565b60008083601f8401126109d8576109d761085f565b5b8235905067ffffffffffffffff8111156109f5576109f4610864565b5b602083019150836020820283011115610a1157610a10610869565b5b9250929050565b60008083601f840112610a2e57610a2d61085f565b5b8235905067ffffffffffffffff811115610a4b57610a4a610864565b5b602083019150836020820283011115610a6757610a66610869565b5b9250929050565b60008083601f840112610a8457610a8361085f565b5b8235905067ffffffffffffffff811115610aa157610aa0610864565b5b602083019150836020820283011115610abd57610abc610869565b5b9250929050565b60008060008060008060608789031215610ae157610ae06107f7565b5b600087013567ffffffffffffffff811115610aff57610afe6107fc565b5b610b0b89828a016109c2565b9650965050602087013567ffffffffffffffff811115610b2e57610b2d6107fc565b5b610b3a89828a01610a18565b9450945050604087013567ffffffffffffffff811115610b5d57610b5c6107fc565b5b610b6989828a01610a6e565b92509250509295509295509295565b600082825260208201905092915050565b7f4f707350726f78793a204e6f7420617574686f72697365640000000000000000600082015250565b6000610bbf601883610b78565b9150610bca82610b89565b602082019050919050565b60006020820190508181036000830152610bee81610bb2565b9050919050565b7f4f707350726f78793a204f6e6c79207461736b7320637265617465642062792060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000610c51602583610b78565b9150610c5c82610bf5565b604082019050919050565b60006020820190508181036000830152610c8081610c44565b9050919050565b7f4f707350726f78793a204c656e677468206d69736d6174636800000000000000600082015250565b6000610cbd601983610b78565b9150610cc882610c87565b602082019050919050565b60006020820190508181036000830152610cec81610cb0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215610d3857610d376107f7565b5b6000610d468482850161084a565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112610d7b57610d7a610d4f565b5b80840192508235915067ffffffffffffffff821115610d9d57610d9c610d54565b5b602083019250600182023603831315610db957610db8610d59565b5b509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610dfb826108c4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610e2d57610e2c610dc1565b5b600182019050919050565b600082825260208201905092915050565b82818337600083830152505050565b6000601f19601f8301169050919050565b6000610e758385610e38565b9350610e82838584610e49565b610e8b83610e58565b840190509392505050565b600081519050919050565b60005b83811015610ebf578082015181840152602081019050610ea4565b83811115610ece576000848401525b50505050565b6000610edf82610e96565b610ee98185610e38565b9350610ef9818560208601610ea1565b610f0281610e58565b840191505092915050565b60006060820190508181036000830152610f28818688610e69565b9050610f37602083018561096e565b8181036040830152610f498184610ed4565b905095945050505050565b600081905092915050565b6000610f6a82610e96565b610f748185610f54565b9350610f84818560208601610ea1565b80840191505092915050565b6000610f9c8284610f5f565b915081905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610fe1826108c4565b9150610fec836108c4565b925082610ffc57610ffb610fa7565b5b828206905092915050565b600081519050919050565b600081905092915050565b600061102882611007565b6110328185611012565b9350611042818560208601610ea1565b80840191505092915050565b600061105a828561101d565b9150611066828461101d565b91508190509392505050565b600061107d82611007565b6110878185610b78565b9350611097818560208601610ea1565b6110a081610e58565b840191505092915050565b600060208201905081810360008301526110c58184611072565b905092915050565b7f4e6f4572726f7253656c6563746f720000000000000000000000000000000000600082015250565b6000611103600f83611012565b915061110e826110cd565b600f82019050919050565b6000611125828461101d565b9150611130826110f6565b915081905092915050565b7f556e657870656374656452657475726e64617461000000000000000000000000600082015250565b6000611171601483611012565b915061117c8261113b565b601482019050919050565b6000611193828461101d565b915061119e82611164565b91508190509291505056fea2646970667358221220925e8abf4f8b318f74a9a344b29c6785f3cc7ee8f12ec00fec31b621e6bdc76064736f6c634300080e0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000002a6c106ae13b558bb9e2ec64bd2f1f7beff3a5e0
-----Decoded View---------------
Arg [0] : _ops (address): 0x2A6C106ae13B558BB9E2Ec64Bd2f1f7BEFF3A5E0
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000002a6c106ae13b558bb9e2ec64bd2f1f7beff3a5e0
Loading...
Loading
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.