WIP injecting opaque certs in blocks
Home /
Input Output /
ouroboros-consensus
Jun 08, 10-11 AM (0)
Jun 08, 11-12 PM (0)
Jun 08, 12-1 PM (4)
Jun 08, 1-2 PM (2)
Jun 08, 2-3 PM (0)
Jun 08, 3-4 PM (1)
Jun 08, 4-5 PM (0)
Jun 08, 5-6 PM (1)
Jun 08, 6-7 PM (0)
Jun 08, 7-8 PM (0)
Jun 08, 8-9 PM (0)
Jun 08, 9-10 PM (0)
Jun 08, 10-11 PM (0)
Jun 08, 11-12 AM (0)
Jun 09, 12-1 AM (0)
Jun 09, 1-2 AM (0)
Jun 09, 2-3 AM (0)
Jun 09, 3-4 AM (0)
Jun 09, 4-5 AM (26)
Jun 09, 5-6 AM (0)
Jun 09, 6-7 AM (1)
Jun 09, 7-8 AM (0)
Jun 09, 8-9 AM (0)
Jun 09, 9-10 AM (4)
Jun 09, 10-11 AM (8)
Jun 09, 11-12 PM (5)
Jun 09, 12-1 PM (0)
Jun 09, 1-2 PM (71)
Jun 09, 2-3 PM (0)
Jun 09, 3-4 PM (1)
Jun 09, 4-5 PM (0)
Jun 09, 5-6 PM (1)
Jun 09, 6-7 PM (0)
Jun 09, 7-8 PM (0)
Jun 09, 8-9 PM (0)
Jun 09, 9-10 PM (0)
Jun 09, 10-11 PM (0)
Jun 09, 11-12 AM (0)
Jun 10, 12-1 AM (0)
Jun 10, 1-2 AM (0)
Jun 10, 2-3 AM (0)
Jun 10, 3-4 AM (0)
Jun 10, 4-5 AM (0)
Jun 10, 5-6 AM (0)
Jun 10, 6-7 AM (3)
Jun 10, 7-8 AM (11)
Jun 10, 8-9 AM (3)
Jun 10, 9-10 AM (5)
Jun 10, 10-11 AM (4)
Jun 10, 11-12 PM (45)
Jun 10, 12-1 PM (21)
Jun 10, 1-2 PM (3)
Jun 10, 2-3 PM (2)
Jun 10, 3-4 PM (1)
Jun 10, 4-5 PM (0)
Jun 10, 5-6 PM (0)
Jun 10, 6-7 PM (0)
Jun 10, 7-8 PM (0)
Jun 10, 8-9 PM (0)
Jun 10, 9-10 PM (0)
Jun 10, 10-11 PM (0)
Jun 10, 11-12 AM (0)
Jun 11, 12-1 AM (0)
Jun 11, 1-2 AM (0)
Jun 11, 2-3 AM (0)
Jun 11, 3-4 AM (0)
Jun 11, 4-5 AM (6)
Jun 11, 5-6 AM (1)
Jun 11, 6-7 AM (3)
Jun 11, 7-8 AM (1)
Jun 11, 8-9 AM (2)
Jun 11, 9-10 AM (7)
Jun 11, 10-11 AM (35)
Jun 11, 11-12 PM (1)
Jun 11, 12-1 PM (5)
Jun 11, 1-2 PM (1)
Jun 11, 2-3 PM (2)
Jun 11, 3-4 PM (0)
Jun 11, 4-5 PM (0)
Jun 11, 5-6 PM (0)
Jun 11, 6-7 PM (8)
Jun 11, 7-8 PM (1)
Jun 11, 8-9 PM (1)
Jun 11, 9-10 PM (0)
Jun 11, 10-11 PM (0)
Jun 11, 11-12 AM (0)
Jun 12, 12-1 AM (0)
Jun 12, 1-2 AM (0)
Jun 12, 2-3 AM (0)
Jun 12, 3-4 AM (0)
Jun 12, 4-5 AM (0)
Jun 12, 5-6 AM (0)
Jun 12, 6-7 AM (0)
Jun 12, 7-8 AM (1)
Jun 12, 8-9 AM (4)
Jun 12, 9-10 AM (1)
Jun 12, 10-11 AM (0)
Jun 12, 11-12 PM (0)
Jun 12, 12-1 PM (0)
Jun 12, 1-2 PM (0)
Jun 12, 2-3 PM (0)
Jun 12, 3-4 PM (1)
Jun 12, 4-5 PM (0)
Jun 12, 5-6 PM (1)
Jun 12, 6-7 PM (0)
Jun 12, 7-8 PM (0)
Jun 12, 8-9 PM (0)
Jun 12, 9-10 PM (0)
Jun 12, 10-11 PM (0)
Jun 12, 11-12 AM (0)
Jun 13, 12-1 AM (0)
Jun 13, 1-2 AM (0)
Jun 13, 2-3 AM (0)
Jun 13, 3-4 AM (0)
Jun 13, 4-5 AM (0)
Jun 13, 5-6 AM (0)
Jun 13, 6-7 AM (0)
Jun 13, 7-8 AM (0)
Jun 13, 8-9 AM (0)
Jun 13, 9-10 AM (0)
Jun 13, 10-11 AM (0)
Jun 13, 11-12 PM (0)
Jun 13, 12-1 PM (0)
Jun 13, 1-2 PM (0)
Jun 13, 2-3 PM (0)
Jun 13, 3-4 PM (0)
Jun 13, 4-5 PM (0)
Jun 13, 5-6 PM (0)
Jun 13, 6-7 PM (0)
Jun 13, 7-8 PM (0)
Jun 13, 8-9 PM (0)
Jun 13, 9-10 PM (0)
Jun 13, 10-11 PM (0)
Jun 13, 11-12 AM (0)
Jun 14, 12-1 AM (0)
Jun 14, 1-2 AM (0)
Jun 14, 2-3 AM (0)
Jun 14, 3-4 AM (0)
Jun 14, 4-5 AM (0)
Jun 14, 5-6 AM (0)
Jun 14, 6-7 AM (0)
Jun 14, 7-8 AM (0)
Jun 14, 8-9 AM (0)
Jun 14, 9-10 AM (0)
Jun 14, 10-11 AM (0)
Jun 14, 11-12 PM (0)
Jun 14, 12-1 PM (0)
Jun 14, 1-2 PM (0)
Jun 14, 2-3 PM (0)
Jun 14, 3-4 PM (0)
Jun 14, 4-5 PM (0)
Jun 14, 5-6 PM (0)
Jun 14, 6-7 PM (0)
Jun 14, 7-8 PM (0)
Jun 14, 8-9 PM (0)
Jun 14, 9-10 PM (0)
Jun 14, 10-11 PM (0)
Jun 14, 11-12 AM (0)
Jun 15, 12-1 AM (0)
Jun 15, 1-2 AM (0)
Jun 15, 2-3 AM (0)
Jun 15, 3-4 AM (0)
Jun 15, 4-5 AM (0)
Jun 15, 5-6 AM (0)
Jun 15, 6-7 AM (0)
Jun 15, 7-8 AM (0)
Jun 15, 8-9 AM (0)
Jun 15, 9-10 AM (0)
Jun 15, 10-11 AM (0)
305 commits this week
Jun 08, 2026
-
Jun 15, 2026
Leios: share late-join boot wiring between node and threadnet
Extract two helpers in LeiosLateJoinState so the production node boot and the threadnet harness set up late-join the same way and cannot drift. setLateJoinHooks sets the three late-join ChainDbArgs fields (the ignore-set plus the seed and register hooks). forkLateJoinWorkers forks the three background loops (trigger worker, AcquiredEbTxs subscriber, GC pruner) on the node registry after the ChainDB is open. Node.hs runWith now builds the LeiosKernel late-join state and routes through both helpers; it did not wire late-join before. Network.hs replaces its inline ChainDbArgs field-setting and loop forking with the same two calls.
Discard snapshots if at same slot as the immutable db and is EBB (#2070)
This tackles a weird corner case in a test run, checkout the commit before this one and run `ChainDB q-s-m.sequential` with `--quickcheck-replay="(SMGen 15718721082101496336 1793087168948606521,99)"` to observe it. In short, in the tests we don't copy blocks when we snapshot (which we do on production, see TODO(geo2a) in ChainDB.StateMachine). Normally we would be guarded by the fact that the snapshot would have a higher slot than the immutable db tip but when the tip is exactly at an EBB this is not the case and we reach the exception case. With this fix, we instead discard the snapshot in this extremely rare situation. # Description Please include a meaningful description of the PR and link the relevant issues this PR might resolve. Also note that: - New code should be properly tested (even if it does not add new features). - The fix for a regression should include a test that reproduces said regression. # WARNING To update your feature branch if it's stale, please rebase it manually on top of `main`. Don't update your feature branch by merging `main` into it. Your pull request will not pass CI if you do.
Discard snapshots if at same slot as the immutable db and is EBB
This tackles a weird corner case in a test run, checkout the commit before this one and run `ChainDB q-s-m.sequential` with `--quickcheck-replay="(SMGen 15718721082101496336 1793087168948606521,99)"` to observe it. In short, in the tests we don't copy blocks when we snapshot (which we do on production, see TODO(geo2a) in ChainDB.StateMachine). Normally we would be guarded by the fact that the snapshot would have a higher slot than the immutable db tip but when the tip is exactly at an EBB this is not the case and we reach the exception case. With this fix, we instead discard the snapshot in this extremely rare situation.
Update docusaurus (#2069)
With `yarn upgrade --latest`
Weaken the bound on downloaded headers in Genesis test
The bound was too tight and sometimes we could not fulfill the contract that the Dynamo was honest. The cause for re-download is now noted and in case the dynamo is adversarial we allow for some more re-downloads.
Weaken the bound on downloaded headers in Genesis test
The bound was too tight and sometimes we could not fulfill the contract that the Dynamo was honest. The cause for re-download is now noted and in case the dynamo is adversarial we allow for some more re-downloads.
Update docusaurus
Use aggregated certificates in forge loop
We can finally drop the mocked certificates by accessing the aggregated certificates from the LeiosVoteState
Aggregate votes into certs on addVote
Use blockHasLeiosCert to reapply when CertRB
The chain selection semantics should be correct now. For a CertRB we do check the cert and only reapply, while a TxsRB gets fully validated.
Sketch a call site of validateLeiosCertificate
Use LeiosCert from cardano-base and move cert validation call site
Separated cert validation from ResolveLeiosBlock and exploring the proper semantics for block validation. This also implements the certificate verification itself (unit tested).
Drive certification through threadnet test
Leios: Vote signing and committee selection (#2039)
Refs https://github.com/input-output-hk/ouroboros-leios/issues/790. Builds on the initial Leios voting prototype (#1963) by adding committee selection and real signature creation/validation, replacing the placeholder voting from #1963. This is also built on the Leios prototype remake (still in flight as #2041). - **Committee selection (per EB) from the stake distribution.** A `HasLeiosVoting` decides whether (and as which `VoterId`) the local node votes on an EB, derived from the Shelley `PoolDistr`. For now, this only runs in the latest era and uses a basic selection scheme. - **Real BLS signatures.** Switched from placeholder/fake signing to actual BLS signatures, using a more recent `cardano-crypto-class` (now available after the remake #2041) - **Voting key material.** BLS keys are still derived, but from the cold verification key hash (pool id) instead. This allows us to skip the key registration, but is obviously still unsafe. - **Tests.** `LeiosVoteState` unit tests cover the new validation API; ThreadNet expectations remain green. TODO - [x] ThreadNet property tests pass (votes diffuse and are validated) - [x] `LeiosVoteState` unit tests pass - [x] Integrate golden `LeiosVote` test into existing machinery
WIP: Put everything STM-related in a single transaction
Use readPerasPrivateKeyFromEnv and remove redundant constraint
Use readPerasPrivateKeyFromEnv and remove redundant constraint
Introduce voting thread
Add method to get PoolId from environment
Add tracing for voting events