Skip to content

Register a stake pool's BLS voting key - #1423

Draft
ch1bo wants to merge 2 commits into
masterfrom
ch1bo/pool-reg-bls-key
Draft

Register a stake pool's BLS voting key#1423
ch1bo wants to merge 2 commits into
masterfrom
ch1bo/pool-reg-bls-key

Conversation

@ch1bo

@ch1bo ch1bo commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

Adds --bls-signing-key-file to stake-pool registration-certificate.
The option is era-gated: mandatory from Dijkstra onwards and not offered
at all in Conway or earlier, so existing invocations are unaffected. The
signing key is read as a text envelope and turned into the registered
verification key plus proof of possession via createBlsKeyRegistration.

Genesis pool parameters get sppBlsKey = SNothing, which
cardano-ledger-core 1.22 requires at every StakePoolParams construction
site, and the compatible pre-Dijkstra path sets stakePoolBlsKey = Nothing.

Context

Additional context for the PR goes here. If the PR fixes a particular issue please provide a link to the issue.

How to trust this PR

Highlight important bits of the PR that will make the review faster. If there are commands the reviewer can run to observe the new behavior, describe them.

Checklist

  • Commit sequence broadly makes sense and commits have useful messages
  • New tests are added if needed and existing tests are updated. See Running tests for more details
  • Self-reviewed the diff
  • Changelog fragment added in .changes/

ch1bo and others added 2 commits August 21, 2026 12:11
Adds --bls-signing-key-file to 'stake-pool registration-certificate'.
The option is era-gated: mandatory from Dijkstra onwards and not offered
at all in Conway or earlier, so existing invocations are unaffected. The
signing key is read as a text envelope and turned into the registered
verification key plus proof of possession via 'createBlsKeyRegistration'.

Genesis pool parameters get 'sppBlsKey = SNothing', which
cardano-ledger-core 1.22 requires at every StakePoolParams construction
site, and the compatible pre-Dijkstra path sets 'stakePoolBlsKey = Nothing'.

Note the option is not yet reachable: master only exposes 'node' under
the 'dijkstra' subcommand, so 'pStakePoolCmds' is instantiated at
ConwayEra only and the Dijkstra branch of the parser is dormant. It
activates as soon as the era-based stake-pool commands are wired up for
Dijkstra. Golden help output is therefore unchanged.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Until now the `dijkstra` subcommand only offered `node`, so
`stake-pool registration-certificate` was unreachable there and the
era-gated `--bls-signing-key-file` could never fire. A pool's BLS voting
key is only registrable from Dijkstra onwards, so the command has to be
reachable for the key to be registrable at all.

`runCmds` is already era-polymorphic and `runAnyEraCommand` already wraps
it in `obtainCommonConstraints`, so no run-side change is needed --
this is purely parser wiring.

Introduces `pDijkstraCmds` as the explicit list of command groups vetted
for the new era, rather than switching Dijkstra over to the full `pCmds`.
The remaining groups (query, transaction, genesis, governance, ...) can be
added as each is checked over.

New golden help files are required and must be generated with
CREATE_GOLDEN_FILES=1.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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.

2 participants