Add validator storage key DKG bootstrap - #2433
Conversation
e3f60fd to
4579d2a
Compare
| 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 |
6ddd990 to
e0aff4d
Compare
There was a problem hiding this comment.
I think an overview of the dkg process in simple terms would be helpful - at the moment I can't really tell if its doing the right thing or not.
I would also love to break this up into submodules; but perhaps its best to do that after the dkg code has settled + the iroh PR is in.
Mirko-von-Leipzig
left a comment
There was a problem hiding this comment.
Approved under the assumption that the dkg code itself is sound.
adr1anh
left a comment
There was a problem hiding this comment.
Mainly looked at dkg.rs, which looks good to me.
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.
e0aff4d to
2876a19
Compare
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