Skip to content

Latest commit

 

History

History
80 lines (61 loc) · 3.09 KB

rfc-7-dkg-voting-update-specification.adoc

File metadata and controls

80 lines (61 loc) · 3.09 KB

RFC 7: DKG voting update specification

1. Proposal

The document specifies an update to the voting procedure of the Keep Distributed Key Generation protocol.

1.1. Goal

The goal of this proposal is to specify the first version of the DKG result publication mechanism implementation based on result hash signatures.

2. Specification

2.1. DKG Phase 13

Off-chain

Once the result has been determined, all participants evaluate the hash of their preferred result, sign the hash and broadcast the hash and a signature over it in the group broadcast channel. Each participant collects the signatures matching their preferred result, stores them along with the signers' member indices.

If the signature of hash broadcasted off-chain is invalid, it should be rejected and not published to the chain in the next phase.

If multiple signatures from the same member on the same result are found, they should all be filtered-out so that none of them is published to the chain in the next phase.

If multiple signatures from the same member on different results are found, they should all be filtered-out so that none of them is published to the chain in the next phase.

2.2. DKG Phase 14

Off-chain

When a participant becomes eligible to submit the result (with supporting signatures) on-chain they submit if they have at least the honest majority (marked as H - constant for the given group size) of signatures for that result (including their own).

First player is always eligible to submit the result. Second player becomes eligible after initial timeout (time necessary to perform DKG protocol plus step time T_dkg + T_step) and remains eligible until the result is accepted by the chain. In other words, Nth player becomes eligible to submit the result after T_dkg + (N-1) * T_step and remains eligible until the result is accepted by the chain. If first player is late and second player tries to submit, whichever gets mined first wins and subsequent submissions are disregarded immediately to avoid burdening the loser with excess gas fees.

On-chain

When the result is submitted on-chain along with the signatures, the contract checks that there are at least H signatures or more, and that each signature is valid for the submitted result and the corresponding member ID. Submissions containing multiple signatures on the same result from the same member are rejected.

If the above checks pass, the result is considered canonical for the group. All other group members should abort publishing their results and no new result submissions will be accepted by the chain.

If the above checks do not pass, the result is rejected.

Off-chain

If the result has been rejected and second player became eligible, second player can submit its result. Same checks are applied as for first player.

If no canonical result has been published until T_dkg + N * T_step, where N is the group size, DKG operation is marked as failed.