Leios: Accept a JSON array of BLS key envelopes in --shelley-bls-key - #6697
Merged
Merged
Conversation
ch1bo
requested review from
dnadales,
johnalotoski and
nfrisby
and removed request for
a team
September 18, 2026 15:38
The SQLite LeiosDB starts a writer worker holding the only write connections plus maintenance threads, and until now nothing ever stopped them. Open it through consensus' openLeiosDBSQLite and run its teardown when the node stops: everything else has wound down by then, so this flushes the pending writes, stops the threads and closes the connections. Depends on the writer-lifecycle work on ouroboros-consensus #2298. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Both partitions resolved against the non-immutable path, so a node configured with MultipleDbPaths put the LeiosDB's immutable partition on the performant volume -- the one that option exists to keep small. The partitions split the same way the node's own do: the volatile one churns and is swept, the immutable one only grows. Resolve each against the matching path. No change under OnePathForAllDbs, where both are the same directory. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
A node could not start on a fresh database directory. The ChainDB refuses a directory that holds files but no marker of its own, and opening the LeiosDB creates its SQLite files in that same directory whenever the node runs on a single database path -- which happens before 'Node.run' gets as far as writing the marker. Run that check here instead, before the LeiosDB is opened. It is the same 'checkDbMarker' the node makes later and it is idempotent: with the marker present it only verifies the network magic. Nothing else changes order, and no lazy construction is needed to get it. Also drops the leiosDbCopyQueueFull counter, whose trace constructor is gone with the copy queue. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Matches the tools: leios.vol.db and leios.imm.db. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The SQLite backend took a path per partition. Now that each partition follows the node's own DatabasePath -- volatile beside volatile/, immutable beside immutable/ -- a second way to name them can only contradict it: an absolute pair could put the growing partition on the performant volume, or put both back inside a directory the ChainDB expects to own. So the backend is all the option carries now, and the paths are derived. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The DB creates its own partition directories now, so the node does not.
All keys reach the Leios voting logic, which votes once per committee seat any of them holds: a rotation pair keeps voting across the epoch boundary, a bundle of pool keys votes for every seat it covers.
ch1bo
force-pushed
the
ch1bo/leios-voting-key-bundle
branch
from
September 20, 2026 21:02
c2f9c81 to
68e8e26
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
All keys reach the Leios voting logic, which votes once per committee
seat any of them holds: a rotation pair keeps voting across the epoch
boundary, a bundle of pool keys votes for every seat it covers.
See this script for how this is can be used: https://github.com/input-output-hk/ouroboros-leios/blob/9e94f9ea73d9f2d0239a0b0942e749d0e73f9765/demo/dozen-devnet/run.sh#L38-L49