Skip to content

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

Open
ch1bo wants to merge 1 commit into
koslambrou/prepare-11.2from
ch1bo/pool-reg-bls-key
Open

ch1bo wants to merge 1 commit into
koslambrou/prepare-11.2from
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

Depends on IntersectMBO/cardano-api#1307

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/

@koslambrou
koslambrou force-pushed the ch1bo/pool-reg-bls-key branch 2 times, most recently from 48c84f4 to 02a537e Compare September 14, 2026 22:02
@ch1bo
ch1bo marked this pull request as ready for review September 19, 2026 06:14
Copilot AI lite review requested due to automatic review settings September 19, 2026 06:14

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot review overview

🟡 Changes recommended

Unresolved critical implementation and command-routing issues remain, along with required help-golden and type corrections.

Get a fresh assessment by requesting another Copilot review.

Review effort: Lite
Findings: 3 High severity · 2 Low severity

Open (5)
What changed in this PR

Adds era-gated BLS voting-key registration for Dijkstra stake-pool certificates.

Changes:

  • Adds BLS key parsing, verification-key registration, and proof of possession.
  • Updates Dijkstra routing and genesis/compatibility BLS fields.
  • Refreshes dependencies, fixtures, configuration, and changelog entries.
File Summary / review notes
flake.nix Reformats QEMU command selection.
flake.lock Updates dependency revisions.
cardano-cli/​test/​cardano-cli-golden/​Test/​Golden/​Dijkstra/​Transaction/​Assemble.hs Uses a prebuilt Dijkstra transaction body.
cardano-cli/​test/​cardano-cli-golden/​files/​input/​dijkstra/​transaction/​tx_body Adds the Dijkstra transaction fixture.
cardano-cli/​src/​Cardano/​CLI/​EraIndependent/​Node/​Option.hs Exports the BLS signing-key parser.
cardano-cli/​src/​Cardano/​CLI/​EraIndependent/​Key/​Run.hs Qualifies fixed-size decoding.
cardano-cli/​src/​Cardano/​CLI/​EraBased/​StakePool/​Run.hs Reads BLS keys and adds them to registration parameters. Critical (3 votes): the Dijkstra path still calls unsupported obtainCommonConstraints. Nit (2 votes): no Dijkstra registration test covers key decoding and certificate serialization.
cardano-cli/​src/​Cardano/​CLI/​EraBased/​StakePool/​Option.hs Adds era-gated BLS option parsing. Moderate (1 vote): Dijkstra help goldens lack the new option.
cardano-cli/​src/​Cardano/​CLI/​EraBased/​StakePool/​Command.hs Adds the BLS argument to the command.
cardano-cli/​src/​Cardano/​CLI/​EraBased/​Run.hs Adjusts era dispatch.
cardano-cli/​src/​Cardano/​CLI/​EraBased/​Query/​Run.hs Updates serialized pool-state typing.
cardano-cli/​src/​Cardano/​CLI/​EraBased/​Option.hs Adds restricted Dijkstra command routing. Critical (1 vote): omits transaction parsers. Moderate (1 vote): also removes existing address, key, genesis, governance, query, stake-address, text-view, and transaction entries.
cardano-cli/​src/​Cardano/​CLI/​EraBased/​Genesis/​Run.hs Updates Shelley stake-pool parameter construction with BLS fields.
cardano-cli/​src/​Cardano/​CLI/​EraBased/​Genesis/​CreateTestnetData/​Run.hs Adds default BLS fields to generated pools. Critical (1 vote): an arbitrary era signature conflicts with the Shelley-specific constructed result.
cardano-cli/​src/​Cardano/​CLI/​Compatible/​StakePool/​Run.hs Sets legacy-era BLS fields to Nothing.
cardano-cli/​CHANGELOG.md Normalizes whitespace.
cardano-cli/​cardano-cli.cabal Updates crypto dependency bounds.
cabal.project Updates indexes, constraints, and source dependencies.
.gitignore Ignores direnv files.
.changes/​20260904_fix_dijkstra_era_commands.yml Documents Dijkstra command fixes.
.changes/​20260813_120000_cardano-cli_sebastian.nagel_pool_reg_bls_key.yml Documents BLS registration. Nit (2 votes): retains the template PR identifier 0.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread cardano-cli/src/Cardano/CLI/EraBased/Option.hs Outdated
Comment thread cardano-cli/src/Cardano/CLI/EraBased/StakePool/Run.hs
Comment thread .changes/20260813_120000_cardano-cli_sebastian.nagel_pool_reg_bls_key.yml Outdated
Comment thread cardano-cli/src/Cardano/CLI/EraBased/StakePool/Run.hs
- bugfix

description: |
Fix Dijkstra era commands (BLS key generation/hashing, proof of possession, transaction

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

line wraps need to go

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.

Not part of this PR anymore, but still unresolved. CC @koslambrou

@ch1bo
ch1bo force-pushed the ch1bo/pool-reg-bls-key branch from b8fc31b to 1b5668f Compare September 24, 2026 18:25
@ch1bo
ch1bo changed the base branch from master to koslambrou/prepare-11.2 September 24, 2026 18:25
@ch1bo
ch1bo requested a review from newhoggy as a code owner September 24, 2026 18:25
@ch1bo ch1bo self-assigned this Sep 24, 2026
@ch1bo
ch1bo force-pushed the ch1bo/pool-reg-bls-key branch 4 times, most recently from 3acf41f to 57eab97 Compare September 25, 2026 08:43
@ch1bo
ch1bo added this pull request to stack #1450 September 25, 2026 08:44
@ch1bo
ch1bo force-pushed the ch1bo/pool-reg-bls-key branch from 57eab97 to 98955b4 Compare September 25, 2026 09:55
Stake pools can now register a BLS voting key via a new
'--bls-signing-key-file' option on 'stake-pool
registration-certificate'. The option is era-gated: mandatory from
Dijkstra onwards and absent in Conway and earlier, so existing
invocations are unaffected. The signing key is read as a text envelope
and converted to a registered verification key plus proof of possession
via 'toLedgerBlsKey'. The compatible pre-Dijkstra path sets
'stakePoolBlsKey = Nothing'.

Co-Authored-By: kolam <kolam@posteo.me>
@ch1bo
ch1bo force-pushed the ch1bo/pool-reg-bls-key branch from 98955b4 to 4e843ec Compare September 25, 2026 10:02

This branch has not been deployed

No deployments
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.

4 participants