Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
This contract has been verified via Sourcify.
View contract in Sourcify repository
- Contract name:
- Ownership
- Optimization enabled
- true
- Compiler version
- v0.8.10+commit.fc410830
- Optimization runs
- 200
- EVM Version
- london
- Verified at
- 2026-04-20T04:00:50.828681Z
contracts/Ownership.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.10;
import "./interfaces/pool/IOwnership.sol";
contract Ownership is IOwnership {
address private _owner;
address private _futureOwner;
event CommitNewOwnership(address indexed futureOwner);
event AcceptNewOwnership(address indexed owner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor() {
_owner = msg.sender;
emit AcceptNewOwnership(msg.sender);
}
/**
* @dev Returns the address of the current owner.
*/
function owner() external view override returns (address) {
return _owner;
}
function futureOwner() external view override returns (address) {
return _futureOwner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(
_owner == msg.sender,
"Caller is not allowed to operate"
);
_;
}
modifier onlyFutureOwner() {
require(
_futureOwner == msg.sender,
"Caller is not allowed to operate"
);
_;
}
/***
*@notice Transfer ownership of GaugeController to `newOwner`
*@param newOwner Address to have ownership transferred to
*/
function commitTransferOwnership(address newOwner)
external
override
onlyOwner
{
_futureOwner = newOwner;
emit CommitNewOwnership(newOwner);
}
/***
*@notice Accept a transfer of ownership
*/
function acceptTransferOwnership() external override onlyFutureOwner {
_owner = msg.sender;
_futureOwner = address(0);
emit AcceptNewOwnership(msg.sender);
}
}
/
pragma solidity 0.8.10;
//SPDX-License-Identifier: MIT
interface IOwnership {
function owner() external view returns (address);
function futureOwner() external view returns (address);
function commitTransferOwnership(address newOwner) external;
function acceptTransferOwnership() external;
}
Compiler Settings
{"remappings":[],"optimizer":{"runs":200,"enabled":true},"metadata":{"bytecodeHash":"ipfs"},"libraries":{},"evmVersion":"london","compilationTarget":{"contracts/Ownership.sol":"Ownership"}}
Contract ABI
[{"type":"constructor","stateMutability":"nonpayable","inputs":[]},{"type":"event","name":"AcceptNewOwnership","inputs":[{"type":"address","name":"owner","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"CommitNewOwnership","inputs":[{"type":"address","name":"futureOwner","internalType":"address","indexed":true}],"anonymous":false},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"acceptTransferOwnership","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"commitTransferOwnership","inputs":[{"type":"address","name":"newOwner","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"futureOwner","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"owner","inputs":[]}]
Contract Creation Code
0x608060405234801561001057600080fd5b50600080546001600160a01b03191633908117825560405190917f405c0e6e5e78abd3919565924321c67e70f1b0f989c4ac8cd327269a73c42d6e91a261025a8061005c6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80637b371107146100515780638da5cb5b1461005b578063b9e9d1aa14610084578063e1cebf0b14610095575b600080fd5b6100596100a8565b005b6000546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b6001546001600160a01b0316610068565b6100596100a33660046101f4565b610150565b6001546001600160a01b031633146101075760405162461bcd60e51b815260206004820181905260248201527f43616c6c6572206973206e6f7420616c6c6f77656420746f206f70657261746560448201526064015b60405180910390fd5b60008054336001600160a01b0319918216811783556001805490921690915560405190917f405c0e6e5e78abd3919565924321c67e70f1b0f989c4ac8cd327269a73c42d6e91a2565b6000546001600160a01b031633146101aa5760405162461bcd60e51b815260206004820181905260248201527f43616c6c6572206973206e6f7420616c6c6f77656420746f206f70657261746560448201526064016100fe565b600180546001600160a01b0319166001600160a01b0383169081179091556040517f3abe9db6779f8a27a45cfa602f3f6da1b676d51b7b9b9f8e88da494f78dfda5d90600090a250565b60006020828403121561020657600080fd5b81356001600160a01b038116811461021d57600080fd5b939250505056fea2646970667358221220aa4e21eef368adaa5dc485ca3f4821184b88daff9ae275f3a03a79b29334826d64736f6c634300080a0033
Deployed ByteCode
0x608060405234801561001057600080fd5b506004361061004c5760003560e01c80637b371107146100515780638da5cb5b1461005b578063b9e9d1aa14610084578063e1cebf0b14610095575b600080fd5b6100596100a8565b005b6000546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b6001546001600160a01b0316610068565b6100596100a33660046101f4565b610150565b6001546001600160a01b031633146101075760405162461bcd60e51b815260206004820181905260248201527f43616c6c6572206973206e6f7420616c6c6f77656420746f206f70657261746560448201526064015b60405180910390fd5b60008054336001600160a01b0319918216811783556001805490921690915560405190917f405c0e6e5e78abd3919565924321c67e70f1b0f989c4ac8cd327269a73c42d6e91a2565b6000546001600160a01b031633146101aa5760405162461bcd60e51b815260206004820181905260248201527f43616c6c6572206973206e6f7420616c6c6f77656420746f206f70657261746560448201526064016100fe565b600180546001600160a01b0319166001600160a01b0383169081179091556040517f3abe9db6779f8a27a45cfa602f3f6da1b676d51b7b9b9f8e88da494f78dfda5d90600090a250565b60006020828403121561020657600080fd5b81356001600160a01b038116811461021d57600080fd5b939250505056fea2646970667358221220aa4e21eef368adaa5dc485ca3f4821184b88daff9ae275f3a03a79b29334826d64736f6c634300080a0033