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
7.WIP TODO: Wait for the coordinator to announce that the DKG process is completed and the created key server object ID. Update `key-server-config.yaml` containing `MY_ADDRESS` and `KEY_SERVER_OBJ_ID` and start the server with `MASTER_SHARE`.
114
+
7. Wait for the coordinator to announce that the DKG process is completed and share the created key server object ID`KEY_SERVER_OBJ_ID`. Update `key-server-config.yaml` containing `MY_ADDRESS` and `KEY_SERVER_OBJ_ID` and start the server with `MASTER_SHARE_V0` (version 0 for fresh DKG).
115
115
116
-
Example config file:
116
+
Example config file:
117
117
```yaml
118
118
server_mode: !Committee
119
119
member_address: '<MY_ADDRESS>'
120
120
key_server_obj_id: '<KEY_SERVER_OBJ_ID>'
121
-
key_server_version: 0
121
+
target_key_server_version: 0
122
122
```
123
123
124
-
Example command to start server:
124
+
Example command to start server:
125
125
```bash
126
-
CONFIG_PATH=crates/key-server/key-server-config.yaml MASTER_SHARE=0x208cd48a92430eb9f90482291e5552e07aebc335d84b7b6371a58ebedd6ed036 cargo run --bin key-server
126
+
CONFIG_PATH=crates/key-server/key-server-config.yaml MASTER_SHARE_V0=0x208cd48a92430eb9f90482291e5552e07aebc335d84b7b6371a58ebedd6ed036 cargo run --bin key-server
127
127
```
128
128
129
129
### Key Rotation Process
130
130
131
131
A key rotation process is needed when a committee wants to rotate a portion of its members. The continuing members (in both current and next committee) must meet the threshold of the current committee.
132
132
133
+
Assuming the key server committee mode version onchain is currently X and it is being rotated to X+1.
134
+
133
135
#### Coordinator Runbook
134
136
135
-
All steps are the same as the runbook for fresh DKG but step 2. Instead of calling `init_committee`, call `init_rotation`, where `CURRENT_COMMITTEE_ID` is the object ID of the current committee (e.g., `CURRENT_COMMITTEE_ID=0xaf2962d702d718f7b968eddc262da28418a33c296786cd356a43728a858faf80`).
137
+
All steps are the same as the runbook for fresh DKG. Except:
138
+
- Modified step 2: Instead of calling `init_committee`, call `init_rotation`, where `CURRENT_COMMITTEE_ID` is the object ID of the current committee (e.g., `CURRENT_COMMITTEE_ID=0xaf2962d702d718f7b968eddc262da28418a33c296786cd356a43728a858faf80`).
136
139
137
140
```bash
138
141
# Example new members for rotation, along with ADDRESS_1, ADDRESS_0. Replace with your own.
a. For continuing members, run the CLI below to initialize the local state and create your message file. Must provide `--old-share` arg. Share the output file with the coordinator.
188
+
a. For continuing members, run the CLI below to initialize the local state and create your message file. Must provide `--old-share` arg with your current version `X` master share. Share the output file with the coordinator.
7.WIP TODO: Update `key-server-config.yaml`to increment `KEY_SERVER_VERSION`. Start the server with existing `MASTER_SHARE` and `NEXT_MASTER_SHARE` (new share from the locally finalized DKG).
227
+
7.Increment the version in `key-server-config.yaml`by 1, from `X` to `X+1`.
223
228
224
-
Example config file:
229
+
Example config file:
225
230
```yaml
226
231
server_mode: !Committee
227
232
member_address: '<MY_ADDRESS>'
228
233
key_server_obj_id: '<KEY_SERVER_OBJ_ID>'
229
-
key_server_version: <KEY_SERVER_VERSION>
234
+
target_key_server_version: <X+1>
235
+
```
236
+
237
+
a. For continuing members:
238
+
239
+
i. Restart server with both versioned keys (the current version onchain is still `X`, target is `X+1`). During this transition, the server watches for the current version onchain: If it is still `X`, serve request with `MASTER_SHARE_VX`. If onchain transitions to `X+1`, serve request with `MASTER_SHARE_VX+1`.
ii. Wait for coordinator to announce the DKG rotation is completed. Since now onchain version is indeed `X+1`, restart with only the version `X+1` key is sufficient:
0 commit comments