Contract 0x2667c7e8731d7314E7c492700Ad440f7C3724184

Contract Overview

Balance:
0 Ether
Txn Hash
Method
Block
From
To
Value
0x6410d2d333199b61b076ee65b0c1301ffc63faf20500fb85e3b63719e3443d3aTransfer Ownersh...96703092021-11-19 16:01:51315 days 6 hrs ago0x2a61d3ba5030ef471c74f612962c7367eca3a62d IN  0x2667c7e8731d7314e7c492700ad440f7c37241840 Ether0.000028571.00000001
0xa3fe871459bf6184d7a0dbaa3fad8463b693eede1f3fb765e9c1f5ba7085a61f0x60a0604096703082021-11-19 16:01:36315 days 6 hrs ago0x2a61d3ba5030ef471c74f612962c7367eca3a62d IN  Create: EVMScriptExecutor0 Ether0.000576851.00000001
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xbcdbecac621de49b0e32cd67211cc076c7c0fc4dbf2bb2ff5f8a5ff4fa003618113314722022-09-06 5:57:1924 days 16 hrs ago 0x2667c7e8731d7314e7c492700ad440f7c3724184 0x72cd2b30020fb28de0dfa64d930a183eb732cf460 Ether
0xbcdbecac621de49b0e32cd67211cc076c7c0fc4dbf2bb2ff5f8a5ff4fa003618113314722022-09-06 5:57:1924 days 16 hrs ago 0x2667c7e8731d7314e7c492700ad440f7c3724184 0x4522db9a6f804cb837e5fc9f547d320da3edd49a0 Ether
0xbcdbecac621de49b0e32cd67211cc076c7c0fc4dbf2bb2ff5f8a5ff4fa003618113314722022-09-06 5:57:1924 days 16 hrs ago 0x661090cb830757b2d0cd53c49bf0d17a28992e5d 0x2667c7e8731d7314e7c492700ad440f7c37241840 Ether
0xf15bbb92cc08b18d213ab9797f4f4c0c132b4980b93d4a428fe3349e62051995101339242022-02-08 14:41:32234 days 7 hrs ago 0x2667c7e8731d7314e7c492700ad440f7c3724184 0x72cd2b30020fb28de0dfa64d930a183eb732cf460 Ether
0xf15bbb92cc08b18d213ab9797f4f4c0c132b4980b93d4a428fe3349e62051995101339242022-02-08 14:41:32234 days 7 hrs ago 0x2667c7e8731d7314e7c492700ad440f7c3724184 0x4522db9a6f804cb837e5fc9f547d320da3edd49a0 Ether
0xf15bbb92cc08b18d213ab9797f4f4c0c132b4980b93d4a428fe3349e62051995101339242022-02-08 14:41:32234 days 7 hrs ago 0x661090cb830757b2d0cd53c49bf0d17a28992e5d 0x2667c7e8731d7314e7c492700ad440f7c37241840 Ether
0x8e97697e8ac0344a49ca567c4f1668811d69a5c14f04b6232368adc307b69adc101339132022-02-08 14:38:47234 days 7 hrs ago 0x2667c7e8731d7314e7c492700ad440f7c3724184 0x72cd2b30020fb28de0dfa64d930a183eb732cf460 Ether
0x8e97697e8ac0344a49ca567c4f1668811d69a5c14f04b6232368adc307b69adc101339132022-02-08 14:38:47234 days 7 hrs ago 0x2667c7e8731d7314e7c492700ad440f7c3724184 0x4522db9a6f804cb837e5fc9f547d320da3edd49a0 Ether
0x8e97697e8ac0344a49ca567c4f1668811d69a5c14f04b6232368adc307b69adc101339132022-02-08 14:38:47234 days 7 hrs ago 0x661090cb830757b2d0cd53c49bf0d17a28992e5d 0x2667c7e8731d7314e7c492700ad440f7c37241840 Ether
0xcea7535511e24cba1bc5bb8f834e42c79bf799eabcdfb36e286d990b01bb98dc101281082022-02-07 14:26:42235 days 8 hrs ago 0x2667c7e8731d7314e7c492700ad440f7c3724184 0x72cd2b30020fb28de0dfa64d930a183eb732cf460 Ether
0xcea7535511e24cba1bc5bb8f834e42c79bf799eabcdfb36e286d990b01bb98dc101281082022-02-07 14:26:42235 days 8 hrs ago 0x2667c7e8731d7314e7c492700ad440f7c3724184 0x4522db9a6f804cb837e5fc9f547d320da3edd49a0 Ether
0xcea7535511e24cba1bc5bb8f834e42c79bf799eabcdfb36e286d990b01bb98dc101281082022-02-07 14:26:42235 days 8 hrs ago 0x661090cb830757b2d0cd53c49bf0d17a28992e5d 0x2667c7e8731d7314e7c492700ad440f7c37241840 Ether
0xd91917c81a0de7718e7456145df76992221619b5c20c143d279fa01dc49c9e06100925882022-02-01 10:22:09241 days 12 hrs ago 0x2667c7e8731d7314e7c492700ad440f7c3724184 0x72cd2b30020fb28de0dfa64d930a183eb732cf460 Ether
0xd91917c81a0de7718e7456145df76992221619b5c20c143d279fa01dc49c9e06100925882022-02-01 10:22:09241 days 12 hrs ago 0x2667c7e8731d7314e7c492700ad440f7c3724184 0x4522db9a6f804cb837e5fc9f547d320da3edd49a0 Ether
0xd91917c81a0de7718e7456145df76992221619b5c20c143d279fa01dc49c9e06100925882022-02-01 10:22:09241 days 12 hrs ago 0x661090cb830757b2d0cd53c49bf0d17a28992e5d 0x2667c7e8731d7314e7c492700ad440f7c37241840 Ether
0x75c287dcd49f930294809434bedd6ecafe6640cbfe47462541c478e181f1ce5e100925842022-02-01 10:21:09241 days 12 hrs ago 0x2667c7e8731d7314e7c492700ad440f7c3724184 0x72cd2b30020fb28de0dfa64d930a183eb732cf460 Ether
0x75c287dcd49f930294809434bedd6ecafe6640cbfe47462541c478e181f1ce5e100925842022-02-01 10:21:09241 days 12 hrs ago 0x2667c7e8731d7314e7c492700ad440f7c3724184 0x4522db9a6f804cb837e5fc9f547d320da3edd49a0 Ether
0x75c287dcd49f930294809434bedd6ecafe6640cbfe47462541c478e181f1ce5e100925842022-02-01 10:21:09241 days 12 hrs ago 0x661090cb830757b2d0cd53c49bf0d17a28992e5d 0x2667c7e8731d7314e7c492700ad440f7c37241840 Ether
0xb6c75e45f8442b8964f851500c4602eafa89176e75bf5497d009c6ffdaf1dd7d100703152022-01-28 13:30:51245 days 9 hrs ago 0x2667c7e8731d7314e7c492700ad440f7c3724184 0x72cd2b30020fb28de0dfa64d930a183eb732cf460 Ether
0xb6c75e45f8442b8964f851500c4602eafa89176e75bf5497d009c6ffdaf1dd7d100703152022-01-28 13:30:51245 days 9 hrs ago 0x2667c7e8731d7314e7c492700ad440f7c3724184 0x4522db9a6f804cb837e5fc9f547d320da3edd49a0 Ether
0xb6c75e45f8442b8964f851500c4602eafa89176e75bf5497d009c6ffdaf1dd7d100703152022-01-28 13:30:51245 days 9 hrs ago 0x661090cb830757b2d0cd53c49bf0d17a28992e5d 0x2667c7e8731d7314e7c492700ad440f7c37241840 Ether
0xbf78838e08c442905748687f2b2977ae2298d78d1ede42775f1666469c591222100059922022-01-17 9:19:13256 days 13 hrs ago 0x2667c7e8731d7314e7c492700ad440f7c3724184 0x648c8be548f43eca4e482c0801ebccccfb9449310 Ether
0xbf78838e08c442905748687f2b2977ae2298d78d1ede42775f1666469c591222100059922022-01-17 9:19:13256 days 13 hrs ago 0x2667c7e8731d7314e7c492700ad440f7c3724184 0x4522db9a6f804cb837e5fc9f547d320da3edd49a0 Ether
0xbf78838e08c442905748687f2b2977ae2298d78d1ede42775f1666469c591222100059922022-01-17 9:19:13256 days 13 hrs ago 0x661090cb830757b2d0cd53c49bf0d17a28992e5d 0x2667c7e8731d7314e7c492700ad440f7c37241840 Ether
0x2901573e7174288921feea750fbb557b58df770a463e6d192b75d4cf5ee0f66199780612022-01-12 10:36:12261 days 11 hrs ago 0x2667c7e8731d7314e7c492700ad440f7c3724184 0x72cd2b30020fb28de0dfa64d930a183eb732cf460 Ether
[ Download CSV Export 
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 Source Code Verified (Exact Match)

Contract Name:
EVMScriptExecutor

Compiler Version
v0.8.6+commit.11564f7e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU GPLv3 license
/**
 *Submitted for verification at Etherscan.io on 2021-11-19
*/

// 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 ABI

[{"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"}]

60a060405234801561001057600080fd5b5060405162000acb38038062000acb83398101604081905261003191610235565b61003a33610106565b61004d8261015660201b6103f51760201c565b6040518060400160405280601c81526020017f43414c4c535f5343524950545f49535f4e4f545f434f4e545241435400000000815250906100aa5760405162461bcd60e51b81526004016100a19190610268565b60405180910390fd5b506001600160601b0319606083901b166080526100c68161015c565b436100fd7febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e60001b61021660201b6103fb1760201c565b55506102bd9050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b3b151590565b61016f8161015660201b6103f51760201c565b6040518060400160405280601a81526020017f454153595f545241434b5f49535f4e4f545f434f4e5452414354000000000000815250906101c35760405162461bcd60e51b81526004016100a19190610268565b50600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907faca5390e502ceca9af8fdca7e094a4fe70188a8fcca7c18cd1ff501024f34cc390600090a35050565b90565b80516001600160a01b038116811461023057600080fd5b919050565b6000806040838503121561024857600080fd5b61025183610219565b915061025f60208401610219565b90509250929050565b600060208083528351808285015260005b8181101561029557858101830151858201604001528201610279565b818111156102a7576000604083870101525b50601f01601f1916929092016040019392505050565b60805160601c6107e9620002e26000396000818160f2015261020601526107e96000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063b4fde62b1161005b578063b4fde62b146100da578063b79340ba146100ed578063c368df7e14610114578063f2fde38b1461012757600080fd5b80634a27111d14610082578063715018a6146100ab5780638da5cb5b146100b5575b600080fd5b610095610090366004610524565b61013a565b6040516100a2919061065a565b60405180910390f35b6100b36102f1565b005b6000546001600160a01b03165b6040516001600160a01b0390911681526020016100a2565b6100b36100e83660046104f4565b610327565b6100c27f000000000000000000000000000000000000000000000000000000000000000081565b6001546100c2906001600160a01b031681565b6100b36101353660046104f4565b61035d565b60015460408051808201909152601381527221a0a62622a92fa4a9afa327a92124a22222a760691b60208201526060916001600160a01b0316331461019b5760405162461bcd60e51b8152600401610192919061065a565b60405180910390fd5b50604080516000808252602082018181528284019093529163279cea3560e01b916101cc918691906064820161066d565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168360405161023c919061063e565b600060405180830381855af49150503d8060008114610277576040519150601f19603f3d011682016040523d82523d6000602084013e61027c565b606091505b509150915081610293576040513d806000833e8082fd5b336001600160a01b03167f089abea492b59933f25cebc96e2bfb473412c71e086c46c12f25dae9c3c7eb84866040516102cc919061065a565b60405180910390a2808060200190518101906102e891906105a4565b95945050505050565b6000546001600160a01b0316331461031b5760405162461bcd60e51b8152600401610192906106df565b61032560006103fe565b565b6000546001600160a01b031633146103515760405162461bcd60e51b8152600401610192906106df565b61035a8161044e565b50565b6000546001600160a01b031633146103875760405162461bcd60e51b8152600401610192906106df565b6001600160a01b0381166103ec5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610192565b61035a816103fe565b3b151590565b90565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60408051808201909152601a81527f454153595f545241434b5f49535f4e4f545f434f4e54524143540000000000006020820152813b6104a15760405162461bcd60e51b8152600401610192919061065a565b50600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907faca5390e502ceca9af8fdca7e094a4fe70188a8fcca7c18cd1ff501024f34cc390600090a35050565b60006020828403121561050657600080fd5b81356001600160a01b038116811461051d57600080fd5b9392505050565b60006020828403121561053657600080fd5b813567ffffffffffffffff81111561054d57600080fd5b8201601f8101841361055e57600080fd5b803561057161056c82610745565b610714565b81815285602083850101111561058657600080fd5b81602084016020830137600091810160200191909152949350505050565b6000602082840312156105b657600080fd5b815167ffffffffffffffff8111156105cd57600080fd5b8201601f810184136105de57600080fd5b80516105ec61056c82610745565b81815285602083850101111561060157600080fd5b6102e882602083016020860161076d565b6000815180845261062a81602086016020860161076d565b601f01601f19169290920160200192915050565b6000825161065081846020870161076d565b9190910192915050565b60208152600061051d6020830184610612565b6060815260006106806060830186610612565b6020838203818501526106938287610612565b8481036040860152855180825282870193509082019060005b818110156106d15784516001600160a01b0316835293830193918301916001016106ac565b509098975050505050505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b604051601f8201601f1916810167ffffffffffffffff8111828210171561073d5761073d61079d565b604052919050565b600067ffffffffffffffff82111561075f5761075f61079d565b50601f01601f191660200190565b60005b83811015610788578181015183820152602001610770565b83811115610797576000848401525b50505050565b634e487b7160e01b600052604160045260246000fdfea2646970667358221220c83106fe0415891bf9baa56347f210fc0ee2e739c6cbbeb9e14d57949aea394764736f6c634300080600330000000000000000000000004522db9a6f804cb837e5fc9f547d320da3edd49a000000000000000000000000661090cb830757b2d0cd53c49bf0d17a28992e5d

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000004522db9a6f804cb837e5fc9f547d320da3edd49a000000000000000000000000661090cb830757b2d0cd53c49bf0d17a28992e5d

-----Decoded View---------------
Arg [0] : _callsScript (address): 0x4522dB9A6f804cb837E5fC9F547D320Da3edD49a
Arg [1] : _easyTrack (address): 0x661090cB830757B2D0Cd53C49Bf0d17a28992e5d

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000004522db9a6f804cb837e5fc9f547d320da3edd49a
Arg [1] : 000000000000000000000000661090cb830757b2d0cd53c49bf0d17a28992e5d


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
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
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.