Skip to content

Add validator storage key DKG bootstrap - #2433

Open
huitseeker wants to merge 14 commits into
nextfrom
issue-2426-golden-storage-key-bootstrap
Open

Add validator storage key DKG bootstrap#2433
huitseeker wants to merge 14 commits into
nextfrom
issue-2426-golden-storage-key-bootstrap

Conversation

@huitseeker

@huitseeker huitseeker commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

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=true to use the fast, insecure fixture instead. Nightly CI also runs the full production ceremony. A stacked follow-up automates the public file exchange.

Changelog

[[entry]]
scope       = "validator"
impact      = "added"
description = "Adds a genesis-bound DKG ceremony for validator storage keys."

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.
@huitseeker
huitseeker force-pushed the issue-2426-golden-storage-key-bootstrap branch from e3f60fd to 4579d2a Compare August 4, 2026 17:46
@huitseeker
huitseeker marked this pull request as ready for review August 4, 2026 18:07
Comment thread docs/external/src/local-network-development.md Outdated
Comment thread docs/external/src/network-operator/validator.md Outdated
Comment thread docs/external/src/network-operator/bootstrap-and-genesis.md Outdated
Comment thread compose/bootstrap.yml

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it not feasible to run the actual DKG ceremony?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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).

Comment thread .github/workflows/nightly.yml Outdated
Comment thread bin/validator/src/commands/golden_dkg.rs Outdated
Comment on lines +1116 to +1118
where
B: EvrfProofBackend<StorageGroup>,
B::Proof: WireMessage,

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's the generic for? Do we have more than a single concrete type? (applies across the file).

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Normal tests use ShareOpeningBackend for speed. Production and nightly use SecpSecqBackend.

Comment thread bin/validator/src/commands/golden_dkg.rs Outdated

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I did not review the impls - I do not feel qualified.

This file is also massive; breaking it up might make it more comprehensible.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The tests now live in dkg/tests.rs, though there's more refinement to bring.

@Mirko-von-Leipzig

Copy link
Copy Markdown
Collaborator

How important is having Golden included everywhere? Could we not just call it a DKG?

@huitseeker huitseeker changed the title Add Golden storage key bootstrap Add validator storage key DKG bootstrap Aug 5, 2026
Comment thread docs/external/src/network-operator/validator.md Outdated

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In this setup the "coordinator" is trusted to be honest, right?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add a CLI tool to generate Golden validator storage-key sets during network bootstrap

3 participants