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:**
For documentation, using `globalRootConfirmerSet` and `generator` is
unclear.
**Modifications:**
Using `generator` everywhere, including code
**Result:**
Clearer code
Copy file name to clipboardExpand all lines: docs/multichain/destination/OperatorTableUpdater.md
+28-23Lines changed: 28 additions & 23 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -14,24 +14,29 @@ Libraries and Mixins:
14
14
15
15
## Overview
16
16
17
-
The `OperatorTableUpdater` is responsible for updating the `GlobalTableRoot` and updating operator tables from merkle proofs against the `GlobalTableRoot`. The contract is deployed on every destination chain. The contract maintains a set of valid global table roots that are confirmed by a designated global root confirmer set, and allows updating individual operator tables by providing merkle proofs against these roots.
17
+
The `OperatorTableUpdater` is responsible for updating the `GlobalTableRoot` and updating operator tables from merkle proofs against the `GlobalTableRoot`. The contract is deployed on every destination chain. The contract maintains a set of valid global table roots that are confirmed by a designated generator, and allows updating individual operator tables by providing merkle proofs against these roots.
18
18
19
19
The contract supports both BN254 and ECDSA operator tables and routes updates to the appropriate certificate verifier based on the curve type.
20
20
21
21
## Parameterization
22
-
Upon initialization, the `globalRootConfirmerSet` (ie. `Generator`) is updated. This operatorSet is a *"shadow-operatorSet"*. It does not exist in the core protocol, does not have stake backing it, and is not transported to other chains via the multichain protocol. It can only be updated upon initialization or by a [privileged role](#updateglobalrootconfirmerset). This entity is the same across all destination chains.
22
+
Upon initialization, the `generator` is updated. The `generator` is represented in storage as an operatorSet. The `generator` should be considered a ghost-operatorSet` since it does not exist in the core protocol, does not have stake backing it, and is not transported to other chains via the multichain protocol. It can only be updated upon initialization or by a [privileged role](#updategenerator). This entity is the same across all destination chains.
23
23
24
-
*`GlobalRootConfirmerSet`, also known as the `Generator`, is an EigenLabs-run entity that signs off on `GlobalTableRoots`. The operatorSet is of size 1.
25
-
*`maxStalenessPeriod`: 0. Set to zero to confirm roots without updating the `globalConfirmerOperatorSet`. See [`CertificateVerifier`](./CertificateVerifier.md#overview) for specifics
26
-
*`globalRootConfirmationThreshold`: 10000. The threshold in basis points required for global root confirmation. Since the operatorSet is of size 1 a single signature is needed
27
-
*`referenceTimestamp`: A past timestamp at which the `globalRootConfirmerSet` is generated. This value is set to the initial `latestReferenceTimestamp` in the `OperatorTableUpdater. It is the same across all destination chains, even for destination chains that are supported after the initial deployment
24
+
The following values are set upon initialization:
25
+
26
+
*`generator` is an EigenLabs-run entity that signs off on `globalTableRoots`. The operatorSet is of size 1.
27
+
*`globalRootConfirmationThreshold`: 10000. The threshold in basis points required for global root confirmation. Since the operatorSet is of size 1 a single signature is needed.
28
+
*`referenceTimestamp`: A past timestamp at which the `generator` is set. We hardcode this value to 1 upon initialization. This value is also the `latestReferenceTimestamp`. Once roots are updated, the `latestReferenceTimestamp` will increase. *Note: the reference timestamp for the `generator`, given by `operatorTableUpdater.getGeneratorReferenceTimestamp` will remain 1 unless [`updateGenerator`](#updategenerator) is called*.
29
+
*`generatorInfo`: The key material needed to verify certificates of the `generator`
30
+
*`operatorSetConfig`: A configuration for the `generator`
31
+
*`maxStalenessPeriod`: 0. Set to zero to confirm `globalTableRoots` without updating the `generator` operatorSet. See [`CertificateVerifier`](./CertificateVerifier.md#overview) for specifics`OperatorTableUpdater`. It is the same across all destination chains, even for destination chains that are supported after the initial deployment.
32
+
*`owner`: Unused parameter for `Generator`
28
33
29
34
30
35
---
31
36
32
37
## Global Root Confirmation
33
38
34
-
Global table roots must be confirmed by the `globalRootConfirmerSet` (ie. `Generator`) before operator tables can be updated against them.
39
+
Global table roots must be confirmed by the `generator` before operator tables can be updated against them.
35
40
36
41
### `confirmGlobalTableRoot`
37
42
@@ -42,7 +47,7 @@ Global table roots must be confirmed by the `globalRootConfirmerSet` (ie. `Gener
42
47
* @param globalTableRoot merkle root of all operatorSet tables
43
48
* @param referenceTimestamp timestamp of the root
44
49
* @param referenceBlockNumber block number of the root
45
-
* @dev Any entity can submit with a valid certificate signed off by the `globalRootConfirmerSet`
50
+
* @dev Any entity can submit with a valid certificate signed off by the `generator`
46
51
* @dev The `msgHash` in the `globalOperatorTableRootCert` is the hash of the `globalOperatorTableRoot`
47
52
*/
48
53
function confirmGlobalTableRoot(
@@ -53,7 +58,7 @@ function confirmGlobalTableRoot(
53
58
) external;
54
59
```
55
60
56
-
Confirms a new global table root by verifying a BN254 certificate signed by the `globalRootConfirmerSet`. See [`BN254CertificateVerifier`](./CertificateVerifier.md#bn254certificateverifier) for certificate verification. Roots are append only and cannot be overridden, only [disabled](#disableroot).
61
+
Confirms a new global table root by verifying a BN254 certificate signed by the `generator`. See [`BN254CertificateVerifier`](./CertificateVerifier.md#bn254certificateverifier) for certificate verification. Roots are append only and cannot be overridden, only [disabled](#disableroot).
57
62
58
63
*Effects*:
59
64
* Updates `_latestReferenceTimestamp` to the new `referenceTimestamp`
@@ -115,9 +120,9 @@ Updates an operator table by verifying its inclusion in a confirmed global table
115
120
116
121
## System Configuration
117
122
118
-
The `owner` can configure the `globalRootConfirmerSet` and confirmation parameters.
123
+
The `owner` can configure the `generator` and confirmation parameters.
119
124
120
-
### `setGlobalRootConfirmerSet`
125
+
### `setGenerator`
121
126
122
127
```solidity
123
128
/**
@@ -126,16 +131,16 @@ The `owner` can configure the `globalRootConfirmerSet` and confirmation paramete
126
131
* @dev The `operatorSet` is used to verify the certificate of the global table root
127
132
* @dev Only callable by the owner of the contract
128
133
*/
129
-
function setGlobalRootConfirmerSet(
134
+
function setGenerator(
130
135
OperatorSet calldata operatorSet
131
136
) external;
132
137
```
133
138
134
139
Updates the operator set responsible for confirming global table roots.
135
140
136
141
*Effects*:
137
-
* Updates `_globalRootConfirmerSet` to the new `operatorSet`
138
-
* Emits a `GlobalRootConfirmerSetUpdated` event
142
+
* Updates `_generator` to the new `operatorSet`
143
+
* Emits a `GeneratorUpdated` event
139
144
140
145
*Requirements*:
141
146
* Caller MUST be the `owner`
@@ -186,29 +191,29 @@ Disables a global table root, preventing further operator table updates against
186
191
* Caller MUST be the `owner`
187
192
* The `globalTableRoot` MUST exist and be currently valid
188
193
189
-
### `updateGlobalRootConfirmerSet`
194
+
### `updateGenerator`
190
195
191
196
```solidity
192
197
/**
193
-
* @notice Updates the operator table for the global root confirmer set
198
+
* @notice Updates the operator table for the generator
194
199
* @param referenceTimestamp The reference timestamp of the operator table update
195
-
* @param globalRootConfirmerSetInfo The operatorSetInfo for the global root confirmer set
196
-
* @param globalRootConfirmerSetConfig The operatorSetConfig for the global root confirmer set
200
+
* @param generatorInfo The operatorSetInfo for the generator
201
+
* @param generatorConfig The operatorSetConfig for the generator
197
202
* @dev We have a separate function for updating this operatorSet since it's not transported and updated
Updates the operator table for the `globalRootConfirmerSet` itself. This operatorSet is a ["shadow-operatorSet"](#parameterization), so it must be updated manually
213
+
Updates the operator table for the `generator` itself. This operatorSet is a ["shadow-operatorSet"](#parameterization), so it must be updated manually
209
214
210
215
*Effects*:
211
-
* Calls `bn254CertificateVerifier.updateOperatorTable` for the `globalRootConfirmerSet`
216
+
* Calls `bn254CertificateVerifier.updateOperatorTable` for the `generator`
0 commit comments