Cryo Explorer Ethereum Mainnet

Address Contract Verified

Address 0x5571E37EC0a44019350880944E3619934A8fDbB9
Balance 0 ETH
Nonce 1
Code Size 1573 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

1573 bytes
0x608060405234801561001057600080fd5b50600436106100575760003560e01c8063692a34f41461005c578063715018a6146100945780638da5cb5b1461009e578063b2e1df72146100b9578063f2fde38b146100cc575b600080fd5b61007f61006a36600461032c565b60016020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009c6100df565b005b6000546040516001600160a01b03909116815260200161008b565b61009c6100c73660046103ca565b6100f3565b61009c6100da366004610524565b610204565b6100e7610282565b6100f160006102dc565b565b6100fb610282565b805160005b818110156101ff57600083828151811061011c5761011c610554565b60200260200101516000015180519060200120905083828151811061014357610143610554565b6020026020010151602001516001600083815260200190815260200160002060006101000a81548160ff0219169083151502179055507fbdb843232c6bb3b552562e583ff9dc6563aab189348ec5f43ef065b7393cd5868483815181106101ac576101ac610554565b602002602001015160000151828685815181106101cb576101cb610554565b6020026020010151602001516040516101e69392919061056a565b60405180910390a1506101f8816105c8565b9050610100565b505050565b61020c610282565b6001600160a01b0381166102765760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61027f816102dc565b50565b6000546001600160a01b031633146100f15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161026d565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561033e57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561037e5761037e610345565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156103ad576103ad610345565b604052919050565b803580151581146103c557600080fd5b919050565b600060208083850312156103dd57600080fd5b823567ffffffffffffffff808211156103f557600080fd5b818501915085601f83011261040957600080fd5b81358181111561041b5761041b610345565b8060051b61042a858201610384565b918252838101850191858101908984111561044457600080fd5b86860192505b83831015610517578235858111156104625760008081fd5b86016040601f19828d03810182131561047b5760008081fd5b61048361035b565b8a840135898111156104955760008081fd5b8401603f81018f136104a75760008081fd5b8b8101358a8111156104bb576104bb610345565b6104cb8d85601f84011601610384565b93508084528f858284010111156104e25760008081fd5b808583018e86013760009084018d0152508181526105018484016103b5565b818c01528552505050918601919086019061044a565b9998505050505050505050565b60006020828403121561053657600080fd5b81356001600160a01b038116811461054d57600080fd5b9392505050565b634e487b7160e01b600052603260045260246000fd5b606081526000845180606084015260005b81811015610598576020818801810151608086840101520161057b565b506000608082850101526080601f19601f8301168401019150508360208301528215156040830152949350505050565b6000600182016105e857634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220062f1fa48b9b2c843a15f2f81a16bb2d1fbf7045161cc21b7bdb04629f67ad0064736f6c63430008110033

Verified Source Code Full Match

Compiler: v0.8.17+commit.8df45f5f EVM: london Optimization: Yes (200 runs)
OpsRegistrar.sol 34 lines
// SPDX-License-Identifier: UNLICENSED
// Copyright (c) Eywa.Fi, 2021-2024 - all rights reserved
pragma solidity 0.8.17;

import "@openzeppelin/contracts/access/Ownable2Step.sol";
import "./interfaces/IOpsRegistrar.sol";


/**
 * @title Ops registry.
 *
 * @notice Controlled by operator.
 */
contract OpsRegistrar is IOpsRegistrar, Ownable {

    /// @dev registered operations
    mapping(bytes32 => bool) public ops;

    event ComplexOpSet(string oop, bytes32 hash, bool registered);

    /**
     * @dev Registers set of complex operation.
     *
     * @param complexOps_ array of complex operations and registered flags.
     */
    function registerComplexOp(ComplexOp[] memory complexOps_) external onlyOwner {
        uint256 length = complexOps_.length;
        for (uint256 i; i < length; ++i) {
            bytes32 oop = keccak256(bytes(complexOps_[i].operation));
            ops[oop] = complexOps_[i].registered;
            emit ComplexOpSet(complexOps_[i].operation, oop, complexOps_[i].registered);
        }
    }
}
IOpsRegistrar.sol 17 lines
// SPDX-License-Identifier: UNLICENSED
// Copyright (c) Eywa.Fi, 2021-2023 - all rights reserved
pragma solidity 0.8.17;


interface IOpsRegistrar {
    struct ComplexOp {
        string operation;
        bool registered;
    }

    /// @dev returns is complex op registered
    function ops(bytes32 ops_) external returns (bool);

    /// @dev registers ComplexOp's
    function registerComplexOp(ComplexOp[] memory complexOps_) external;
}
Context.sol 28 lines
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.4) (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;
    }

    function _contextSuffixLength() internal view virtual returns (uint256) {
        return 0;
    }
}
Ownable.sol 83 lines
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)

pragma solidity ^0.8.0;

import "../utils/Context.sol";

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby disabling any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(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");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}
Ownable2Step.sol 57 lines
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable2Step.sol)

pragma solidity ^0.8.0;

import "./Ownable.sol";

/**
 * @dev Contract module which provides 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} and {acceptOwnership}.
 *
 * This module is used through inheritance. It will make available all functions
 * from parent (Ownable).
 */
abstract contract Ownable2Step is Ownable {
    address private _pendingOwner;

    event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Returns the address of the pending owner.
     */
    function pendingOwner() public view virtual returns (address) {
        return _pendingOwner;
    }

    /**
     * @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one.
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual override onlyOwner {
        _pendingOwner = newOwner;
        emit OwnershipTransferStarted(owner(), newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner.
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual override {
        delete _pendingOwner;
        super._transferOwnership(newOwner);
    }

    /**
     * @dev The new owner accepts the ownership transfer.
     */
    function acceptOwnership() public virtual {
        address sender = _msgSender();
        require(pendingOwner() == sender, "Ownable2Step: caller is not the new owner");
        _transferOwnership(sender);
    }
}

Read Contract

ops 0x692a34f4 → bool
owner 0x8da5cb5b → address

Write Contract 3 functions

These functions modify contract state and require a wallet transaction to execute.

registerComplexOp 0x96e92e92
tuple[] complexOps_
renounceOwnership 0x715018a6
No parameters
transferOwnership 0xf2fde38b
address newOwner

Recent Transactions

No transactions found for this address