Add validator storage key DKG bootstrap - #2433
Conversation
Bind public DKG setup to the trusted genesis validator set and generate per-validator DKG identities.\n\nReview context: this is a hard cutoff; no backwards compatibility path is required.
Bind each DKG identity to the trusted genesis commitment with the validator signer. Keep temporary ceremony outputs guarded until publication succeeds.
Use the same ECDSA verification call style as the existing validator code.
Add deal, finalize, and validate stages using the Secp/Secq proof backend. Persist only local private shares, reject mixed transcripts, and publish validated startup bundles. This is a hard cutoff with no compatibility path.
Bind the manifest and both dealing sets into one canonical transcript. Require every genesis validator to sign it before finalization, and retain the accepted transcript with each bundle.
Derive the EHTDH1 public key set from accepted Feldman commitments and include its canonical digest in the unanimous transcript.
This is a hard cutoff; no backward compatibility path is included.
This is a hard cutoff; no backward compatibility path is included.
e3f60fd to
4579d2a
Compare
There was a problem hiding this comment.
Is it not feasible to run the actual DKG ceremony?
There was a problem hiding this comment.
Compose runs the real two-of-three ceremony by default. The insecure fixture remains available through MIDEN_VALIDATOR_USE_STORAGE_KEY_FIXTURE=true. Performance is currently underwhelming for known, fixable reasons (not fixed due to lack of time).
| where | ||
| B: EvrfProofBackend<StorageGroup>, | ||
| B::Proof: WireMessage, |
There was a problem hiding this comment.
What's the generic for? Do we have more than a single concrete type? (applies across the file).
There was a problem hiding this comment.
Normal tests use ShareOpeningBackend for speed. Production and nightly use SecpSecqBackend.
There was a problem hiding this comment.
I did not review the impls - I do not feel qualified.
This file is also massive; breaking it up might make it more comprehensible.
There was a problem hiding this comment.
The tests now live in dkg/tests.rs, though there's more refinement to bring.
|
How important is having |
There was a problem hiding this comment.
In this setup the "coordinator" is trusted to be honest, right?
Closes #2426.
This adds storage key DKG commands for network bootstrap. Each operator creates a signed registration from the shared genesis file. A coordinator gathers all registrations and prepares the ceremony. Operators exchange public dealings, sign one transcript, and complete both rounds locally. Each validator gets the same public setup and its own secret share.
Compose runs the same two-of-three ceremony before starting validators. Set
MIDEN_VALIDATOR_USE_STORAGE_KEY_FIXTURE=trueto use the fast, insecure fixture instead. Nightly CI also runs the full production ceremony. A stacked follow-up automates the public file exchange.Changelog