-
Notifications
You must be signed in to change notification settings - Fork 298
/
idkg.proto
311 lines (260 loc) · 7.97 KB
/
idkg.proto
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
syntax = "proto3";
package types.v1;
import "registry/crypto/v1/crypto.proto";
import "registry/subnet/v1/subnet.proto";
import "state/queues/v1/queues.proto";
import "types/v1/signature.proto";
import "types/v1/types.proto";
message EcdsaPayload {
repeated CompletedSignature signature_agreements = 1;
repeated OngoingSignature ongoing_signatures = 2;
registry.subnet.v1.IDkgTranscriptId next_unused_transcript_id = 5;
repeated registry.subnet.v1.IDkgTranscript idkg_transcripts = 6;
repeated OngoingXnetReshare ongoing_xnet_reshares = 7;
repeated XnetReshareAgreement xnet_reshare_agreements = 8;
uint64 next_unused_quadruple_id = 10;
repeated EcdsaKeyTranscript key_transcripts = 13;
repeated AvailablePreSignature available_pre_signatures = 14;
repeated PreSignatureInProgress pre_signatures_in_creation = 15;
// TODO: retire these fields, once we start using `key_transcripts`.
UnmaskedTranscriptWithAttributes current_key_transcript = 9;
KeyTranscriptCreation next_key_in_creation = 11;
registry.crypto.v1.EcdsaKeyId key_id = 12;
// TODO: retire these fields, once we start using `pre_signatures`.
repeated AvailableQuadruple available_quadruples = 3;
repeated QuadrupleInProgress quadruples_in_creation = 4;
}
message ConsensusResponse {
reserved 1, 2, 4, 7, 8;
uint64 callback = 3;
oneof payload {
bytes data = 5;
state.queues.v1.RejectContext reject = 6;
}
}
message EcdsaKeyTranscript {
registry.crypto.v1.EcdsaKeyId key_id = 1;
UnmaskedTranscriptWithAttributes current = 2;
KeyTranscriptCreation next_in_creation = 3;
registry.crypto.v1.MasterPublicKeyId master_key_id = 4;
}
message OngoingSignature {
RequestId request_id = 1;
ThresholdEcdsaSigInputsRef sig_inputs = 2;
}
message AvailableQuadruple {
reserved 3;
reserved "key_id";
uint64 quadruple_id = 1;
PreSignatureQuadrupleRef quadruple = 2;
}
message QuadrupleInProgress {
reserved 3;
reserved "key_id";
uint64 quadruple_id = 1;
QuadrupleInCreation quadruple = 2;
}
message AvailablePreSignature {
uint64 pre_signature_id = 1;
PreSignatureRef pre_signature = 2;
}
message PreSignatureInProgress {
uint64 pre_signature_id = 1;
PreSignatureInCreation pre_signature = 2;
}
message OngoingXnetReshare {
EcdsaReshareRequest request = 1;
ReshareOfUnmaskedParams transcript = 2;
}
message XnetReshareAgreement {
reserved 2, 3;
reserved "response";
EcdsaReshareRequest request = 1;
ConsensusResponse initial_dealings = 4;
}
message RequestId {
reserved 4;
reserved "key_id";
bytes pseudo_random_id = 1;
uint64 quadruple_id = 2;
uint64 height = 3;
}
message TranscriptRef {
uint64 height = 1;
registry.subnet.v1.IDkgTranscriptId transcript_id = 2;
}
message MaskedTranscript {
TranscriptRef transcript_ref = 1;
}
message UnmaskedTranscript {
TranscriptRef transcript_ref = 1;
}
message UnmaskedTranscriptWithAttributes {
TranscriptRef transcript_ref = 1;
IDkgTranscriptAttributes attributes = 2;
}
message IDkgTranscriptOperationRef {
int32 op_type = 1;
MaskedTranscript masked = 2;
UnmaskedTranscript unmasked = 3;
}
message IDkgTranscriptAttributes {
repeated types.v1.NodeId receivers = 1;
int32 algorithm_id = 2;
uint64 registry_version = 3;
}
message IDkgTranscriptParamsRef {
registry.subnet.v1.IDkgTranscriptId transcript_id = 1;
repeated types.v1.NodeId dealers = 2;
repeated types.v1.NodeId receivers = 3;
uint64 registry_version = 4;
int32 algorithm_id = 5;
IDkgTranscriptOperationRef operation_type_ref = 6;
}
message RandomTranscriptParams {
IDkgTranscriptParamsRef transcript_ref = 1;
}
message RandomUnmaskedTranscriptParams {
IDkgTranscriptParamsRef transcript_ref = 1;
}
message ReshareOfMaskedParams {
IDkgTranscriptParamsRef transcript_ref = 1;
}
message ReshareOfUnmaskedParams {
IDkgTranscriptParamsRef transcript_ref = 1;
}
message UnmaskedTimesMaskedParams {
IDkgTranscriptParamsRef transcript_ref = 1;
}
message PreSignatureInCreation {
oneof msg {
QuadrupleInCreation ecdsa = 1;
TranscriptInCreation schnorr = 2;
}
}
message PreSignatureRef {
oneof msg {
PreSignatureQuadrupleRef ecdsa = 1;
PreSignatureTranscriptRef schnorr = 2;
}
}
message QuadrupleInCreation {
RandomTranscriptParams kappa_masked_config = 1;
MaskedTranscript kappa_masked = 2;
RandomTranscriptParams lambda_config = 3;
MaskedTranscript lambda_masked = 4;
RandomUnmaskedTranscriptParams kappa_unmasked_config = 11;
ReshareOfMaskedParams unmask_kappa_config = 5;
UnmaskedTranscript kappa_unmasked = 6;
UnmaskedTimesMaskedParams key_times_lambda_config = 7;
MaskedTranscript key_times_lambda = 8;
UnmaskedTimesMaskedParams kappa_times_lambda_config = 9;
MaskedTranscript kappa_times_lambda = 10;
registry.crypto.v1.EcdsaKeyId key_id = 12;
}
message PreSignatureQuadrupleRef {
UnmaskedTranscript kappa_unmasked_ref = 1;
MaskedTranscript lambda_masked_ref = 2;
MaskedTranscript kappa_times_lambda_ref = 3;
MaskedTranscript key_times_lambda_ref = 4;
UnmaskedTranscript key_unmasked_ref = 5;
registry.crypto.v1.EcdsaKeyId key_id = 6;
}
message ThresholdEcdsaSigInputsRef {
registry.subnet.v1.ExtendedDerivationPath derivation_path = 1;
bytes hashed_message = 2;
bytes nonce = 3;
PreSignatureQuadrupleRef presig_quadruple_ref = 4;
UnmaskedTranscript key_transcript_ref = 5;
}
message TranscriptInCreation {
registry.crypto.v1.SchnorrKeyId key_id = 1;
RandomUnmaskedTranscriptParams blinder_unmasked_config = 2;
UnmaskedTranscript blinder_unmasked = 3;
}
message PreSignatureTranscriptRef {
registry.crypto.v1.SchnorrKeyId key_id = 1;
UnmaskedTranscript blinder_unmasked_ref = 2;
UnmaskedTranscript key_unmasked_ref = 3;
}
message CompletedSignature {
reserved 1;
reserved 2;
ConsensusResponse unreported = 3;
bytes pseudo_random_id = 4;
}
message EcdsaReshareRequest {
reserved 1;
repeated types.v1.NodeId receiving_node_ids = 2;
uint64 registry_version = 3;
registry.crypto.v1.EcdsaKeyId key_id = 4;
registry.crypto.v1.MasterPublicKeyId master_key_id = 5;
}
enum KeyTranscriptCreationState {
KEY_TRANSCRIPT_CREATION_STATE_BEGIN_UNSPECIFIED = 0;
KEY_TRANSCRIPT_CREATION_STATE_RANDOM_TRANSCRIPT_PARAMS = 1;
KEY_TRANSCRIPT_CREATION_STATE_RESHARE_OF_MASKED_PARAMS = 2;
KEY_TRANSCRIPT_CREATION_STATE_RESHARE_OF_UNMASKED_PARAMS = 3;
KEY_TRANSCRIPT_CREATION_STATE_XNET_RESHARE_OF_UNMASKED_PARAMS = 4;
KEY_TRANSCRIPT_CREATION_STATE_CREATED = 5;
}
message KeyTranscriptCreation {
KeyTranscriptCreationState state = 1;
RandomTranscriptParams random = 2;
ReshareOfMaskedParams reshare_of_masked = 3;
ReshareOfUnmaskedParams reshare_of_unmasked = 4;
ReshareOfUnmaskedParams xnet_reshare_of_unmasked = 5;
registry.subnet.v1.InitialIDkgDealings xnet_reshare_initial_dealings = 6;
UnmaskedTranscript created = 9;
}
message EcdsaMessage {
oneof msg {
registry.subnet.v1.IDkgSignedDealingTuple signed_dealing = 1;
IDkgDealingSupport dealing_support = 2;
EcdsaSigShare sig_share = 3;
EcdsaComplaint complaint = 4;
EcdsaOpening opening = 5;
}
}
message EcdsaSigShare {
NodeId signer_id = 1;
RequestId request_id = 2;
bytes sig_share_raw = 3;
}
message EcdsaComplaint {
EcdsaComplaintContent content = 1;
types.v1.BasicSignature signature = 2;
}
message EcdsaComplaintContent {
registry.subnet.v1.IDkgComplaint idkg_complaint = 1;
}
message EcdsaOpening {
EcdsaOpeningContent content = 1;
types.v1.BasicSignature signature = 2;
}
message EcdsaOpeningContent {
registry.subnet.v1.IDkgOpening idkg_opening = 1;
}
message IDkgDealingSupport {
registry.subnet.v1.IDkgTranscriptId transcript_id = 1;
types.v1.NodeId dealer = 2;
bytes dealing_hash = 3;
types.v1.BasicSignature sig_share = 4;
}
message EcdsaPrefix {
uint64 group_tag = 1;
uint64 meta_hash = 2;
}
message PrefixHashPair {
EcdsaPrefix prefix = 1;
bytes hash = 2;
}
message EcdsaArtifactId {
oneof kind {
PrefixHashPair dealing = 1;
PrefixHashPair dealing_support = 2;
PrefixHashPair sig_share = 3;
PrefixHashPair complaint = 4;
PrefixHashPair opening = 5;
}
}