You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
**Motivation:**
Currently, `disableRoot` is called by the `owner` of the
`OperatorTableCalculator`. We want to update such that it can be called
by the `pauser`. This is to enable cleaner operations.
**Modifications:**
- Add `Pausable` to `operatorTableCalculator`
- Guard `disableGlobalTableRoot` with `onlyPauser`
- Guard `updateGlobalTableRoot` and `updateOperatorTable` with
`whenNotPaused(index)`
**Result:**
Cleaner disable mechanics.
Copy file name to clipboardExpand all lines: docs/multichain/destination/OperatorTableUpdater.md
+6-4Lines changed: 6 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -69,6 +69,7 @@ Confirms a new global table root by verifying a BN254 certificate signed by the
69
69
* Emits a `NewGlobalTableRoot` event
70
70
71
71
*Requirements*:
72
+
* The contract MUST NOT be paused for global root updates
72
73
* The `referenceTimestamp` MUST NOT be in the future
73
74
* The `referenceTimestamp` MUST be greater than `_latestReferenceTimestamp`
74
75
* The certificate's `messageHash` MUST match the expected EIP-712 hash
@@ -110,6 +111,7 @@ Updates an operator table by verifying its inclusion in a confirmed global table
110
111
* Calls `ecdsaCertificateVerifier.updateOperatorTable` with the decoded operator info
111
112
112
113
*Requirements*:
114
+
* The contract MUST NOT be paused for operator table updates
113
115
* The `globalTableRoot` MUST be valid (not disabled)
114
116
* The `referenceTimestamp` MUST be greater than the latest timestamp for the operator set
115
117
* The merkle proof MUST verify the operator table's inclusion in the global root
@@ -174,21 +176,21 @@ Sets the stake proportion threshold required for confirming global table roots.
174
176
/**
175
177
* @notice Disables a global table root
176
178
* @param globalTableRoot the global table root to disable
177
-
* @dev Only callable by the owner of the contract
179
+
* @dev Only callable by the pauser
178
180
*/
179
181
function disableRoot(
180
182
bytes32 globalTableRoot
181
183
) external;
182
184
```
183
185
184
-
Disables a global table root, preventing further operator table updates against it. This function also prevents the `CertificateVerifier` from verifying certificates. The function is intended to prevent a malicious or invalid root from being used by downstream consumers.
186
+
Disables a global table root, preventing further operator table updates against it. This function also prevents the `CertificateVerifier` from verifying certificates. The function is intended to prevent a malicious or invalid root from being used by downstream consumers. Once a root is disabled, it cannot be re-enabled.
185
187
186
188
*Effects*:
187
189
* Sets `_isRootValid[globalTableRoot]` to `false`
188
190
* Emits a `GlobalRootDisabled` event
189
191
190
192
*Requirements*:
191
-
* Caller MUST be the `owner`
193
+
* Caller MUST be the `pauser`
192
194
* The `globalTableRoot` MUST exist and be currently valid
193
195
194
196
### `updateGenerator`
@@ -217,4 +219,4 @@ Updates the operator table for the `generator` itself. This operatorSet is a ["s
217
219
218
220
*Requirements*:
219
221
* Caller MUST be the `owner`
220
-
* Meet all requirements in [`bn254CertificateVerifier.updateOperatorTable`](../destination/CertificateVerifier.md#updateoperatortable-1)
222
+
* Meet all requirements in [`bn254CertificateVerifier.updateOperatorTable`](../destination/CertificateVerifier.md#updateoperatortable-1)
0 commit comments