编译器
0.8.10+commit.fc410830
文件 1 的 2:IOwnership.sol
pragma solidity 0.8.10;
interface IOwnership {
function owner() external view returns (address);
function futureOwner() external view returns (address);
function commitTransferOwnership(address newOwner) external;
function acceptTransferOwnership() external;
}
文件 2 的 2:Ownership.sol
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);
constructor() {
_owner = msg.sender;
emit AcceptNewOwnership(msg.sender);
}
function owner() external view override returns (address) {
return _owner;
}
function futureOwner() external view override returns (address) {
return _futureOwner;
}
modifier onlyOwner() {
require(_owner == msg.sender, "Caller is not allowed to operate");
_;
}
modifier onlyFutureOwner() {
require(_futureOwner == msg.sender, "Caller is not allowed to operate");
_;
}
function commitTransferOwnership(address newOwner)
external
override
onlyOwner
{
_futureOwner = newOwner;
emit CommitNewOwnership(newOwner);
}
function acceptTransferOwnership() external override onlyFutureOwner {
_owner = msg.sender;
_futureOwner = address(0);
emit AcceptNewOwnership(msg.sender);
}
}
{
"compilationTarget": {
"contracts/Ownership.sol": "Ownership"
},
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs",
"useLiteralContent": true
},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": []
}
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"}],"name":"AcceptNewOwnership","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"futureOwner","type":"address"}],"name":"CommitNewOwnership","type":"event"},{"inputs":[],"name":"acceptTransferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"commitTransferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"futureOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]