@@ -10,36 +10,37 @@ import {IOwnableTwoSteps} from "./interfaces/IOwnableTwoSteps.sol";
10
10
*/
11
11
abstract contract OwnableTwoSteps is IOwnableTwoSteps {
12
12
// Address of the current owner
13
- address private _owner ;
13
+ address public owner ;
14
14
15
15
// Address of the potential owner
16
- address private _potentialOwner;
16
+ address public potentialOwner;
17
+
18
+ // Delay for the timelock (in seconds)
19
+ uint256 public delay;
17
20
18
21
// Earliest ownership renouncement timestamp
19
- uint256 private _earliestOwnershipRenouncementTime ;
22
+ uint256 public earliestOwnershipRenouncementTime ;
20
23
21
24
// Ownership status
22
25
Status public status;
23
26
24
- // Current delay for the timelock (in seconds)
25
- uint256 public delay;
26
-
27
27
/**
28
28
* @notice Modifier to wrap functions for contracts that inherit this contract
29
29
*/
30
30
modifier onlyOwner () {
31
- if (msg .sender != _owner ) {
31
+ if (msg .sender != owner ) {
32
32
revert NotOwner ();
33
33
}
34
34
_;
35
35
}
36
36
37
37
/**
38
38
* @notice Constructor
39
- * @notice Initial owner is the deployment address while initial delay (for the timelock) must be set by contract that inherit from this.
39
+ * Initial owner is the deployment address.
40
+ * Delay (for the timelock) must be set by the contract that inherits from this.
40
41
*/
41
42
constructor () {
42
- _owner = msg .sender ;
43
+ owner = msg .sender ;
43
44
}
44
45
45
46
/**
@@ -51,9 +52,9 @@ abstract contract OwnableTwoSteps is IOwnableTwoSteps {
51
52
if (status == Status.NoOngoingTransfer) revert NoOngoingTransferInProgress ();
52
53
53
54
if (status == Status.TransferInProgress) {
54
- delete _potentialOwner ;
55
+ delete potentialOwner ;
55
56
} else if (status == Status.RenouncementInProgress) {
56
- delete _earliestOwnershipRenouncementTime ;
57
+ delete earliestOwnershipRenouncementTime ;
57
58
}
58
59
59
60
delete status;
@@ -66,10 +67,10 @@ abstract contract OwnableTwoSteps is IOwnableTwoSteps {
66
67
*/
67
68
function confirmOwnershipRenouncement () external onlyOwner {
68
69
if (status != Status.RenouncementInProgress) revert RenouncementNotInProgress ();
69
- if (block .timestamp < _earliestOwnershipRenouncementTime ) revert RenouncementTooEarly ();
70
+ if (block .timestamp < earliestOwnershipRenouncementTime ) revert RenouncementTooEarly ();
70
71
71
- delete _earliestOwnershipRenouncementTime ;
72
- delete _owner ;
72
+ delete earliestOwnershipRenouncementTime ;
73
+ delete owner ;
73
74
delete status;
74
75
75
76
emit NewOwner (address (0 ));
@@ -81,26 +82,26 @@ abstract contract OwnableTwoSteps is IOwnableTwoSteps {
81
82
*/
82
83
function confirmOwnershipTransfer () external {
83
84
if (status != Status.TransferInProgress) revert TransferNotInProgress ();
84
- if (msg .sender != _potentialOwner ) revert WrongPotentialOwner ();
85
+ if (msg .sender != potentialOwner ) revert WrongPotentialOwner ();
85
86
86
- _owner = msg .sender ;
87
+ owner = msg .sender ;
87
88
delete status;
88
- delete _potentialOwner ;
89
+ delete potentialOwner ;
89
90
90
- emit NewOwner (_owner );
91
+ emit NewOwner (owner );
91
92
}
92
93
93
94
/**
94
95
* @notice Initiate transfer of ownership to a new owner
95
- * @param newPotentialOwner address of the new potential owner
96
+ * @param newPotentialOwner New potential owner address
96
97
*/
97
98
function initiateOwnershipTransfer (address newPotentialOwner ) external onlyOwner {
98
99
if (status != Status.NoOngoingTransfer) revert TransferAlreadyInProgress ();
99
100
100
101
status = Status.TransferInProgress;
101
- _potentialOwner = newPotentialOwner;
102
+ potentialOwner = newPotentialOwner;
102
103
103
- emit InitiateOwnershipTransfer (_owner , newPotentialOwner);
104
+ emit InitiateOwnershipTransfer (owner , newPotentialOwner);
104
105
}
105
106
106
107
/**
@@ -110,40 +111,16 @@ abstract contract OwnableTwoSteps is IOwnableTwoSteps {
110
111
if (status != Status.NoOngoingTransfer) revert TransferAlreadyInProgress ();
111
112
112
113
status = Status.RenouncementInProgress;
113
- _earliestOwnershipRenouncementTime = block .timestamp + delay;
114
-
115
- emit InitiateOwnershipRenouncement (_earliestOwnershipRenouncementTime);
116
- }
117
-
118
- /**
119
- * @notice Returns owner address
120
- * @return owner address
121
- */
122
- function owner () external view returns (address ) {
123
- return _owner;
124
- }
125
-
126
- /**
127
- * @notice Returns potential owner address
128
- * @return potential owner address
129
- */
130
- function potentialOwner () external view returns (address ) {
131
- return _potentialOwner;
132
- }
114
+ earliestOwnershipRenouncementTime = block .timestamp + delay;
133
115
134
- /**
135
- * @notice Returns the earliest timestamp after which the ownership renouncement
136
- * can be confirmed by the current owner.
137
- * @return earliest timestamp for renouncement confirmation
138
- */
139
- function earliestOwnershipRenouncementTime () external view returns (uint256 ) {
140
- return _earliestOwnershipRenouncementTime;
116
+ emit InitiateOwnershipRenouncement (earliestOwnershipRenouncementTime);
141
117
}
142
118
143
119
/**
144
120
* @notice Set up the timelock delay for renouncing ownership
145
- * @param _delay timelock delay for the owner to confirm renouncing the ownership
121
+ * @param _delay Timelock delay for the owner to confirm renouncing the ownership
146
122
* @dev This function is expected to be included in the constructor of the contract that inherits this contract.
123
+ * If it is not set, there is no timelock to renounce the ownership.
147
124
*/
148
125
function _setupDelayForRenouncingOwnership (uint256 _delay ) internal {
149
126
delay = _delay;
0 commit comments