Address Contract Verified
Address
0x5571E37EC0a44019350880944E3619934A8fDbB9
Balance
0 ETH
Nonce
1
Code Size
1573 bytes
Creator
0x624E0Bd3...9cD5 at tx 0x1f2b75ec...cc7cbc
Indexed Transactions
0
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