The following document describes the byte-level structure of messages sent in FROST [1]. Each message consists of a header of fixed size followed by the actual payload of the message.
All messages have the following header:
Bytes | Field name | Data type |
---|---|---|
1 | Message type | u8 |
1 | Version | u8 |
2 | Sender ID | u16 |
2 | Receiver ID | u16 |
The Message type
and Version
fields specify the payload that follows after the header. The sender is uniquely identified by the Sender ID 1 field and the receiver is uniquely identified by the Receiver ID 1 field.
Messages in FROST are split into three general domains. The following sections describe each domain and its messages.
These messages are sent during the Distributed Key Generation (DKG).
Broadcast the public commitment vector and the proof of knowledge .
Header:
Message type | Version |
---|---|
1 | 1 |
Payload:
Bytes | Description | Data type |
---|---|---|
2 | Length t of the commitment vector | u16 |
512 . t | Individual commitments | [AffinePoint; t] |
256 | The value R | Scalar |
256 | The value u | Scalar |
Broadcast the secret shares f (l).
Header:
Message type | Version |
---|---|
2 | 1 |
Payload:
Bytes | Description | Data type |
---|---|---|
256 | Secret share f (l) | Scalar |
Header:
Message type | Version |
---|---|
3 | 1 |
Payload:
Bytes | Description | Data type |
---|---|---|
Scalar |