Home / Input Output / ouroboros-consensus
Apr 24, 8-9 AM (1)
Apr 24, 9-10 AM (1)
Apr 24, 10-11 AM (18)
Apr 24, 11-12 PM (1)
Apr 24, 12-1 PM (0)
Apr 24, 1-2 PM (0)
Apr 24, 2-3 PM (1)
Apr 24, 3-4 PM (0)
Apr 24, 4-5 PM (0)
Apr 24, 5-6 PM (1)
Apr 24, 6-7 PM (0)
Apr 24, 7-8 PM (1)
Apr 24, 8-9 PM (0)
Apr 24, 9-10 PM (0)
Apr 24, 10-11 PM (0)
Apr 24, 11-12 AM (0)
Apr 25, 12-1 AM (0)
Apr 25, 1-2 AM (0)
Apr 25, 2-3 AM (0)
Apr 25, 3-4 AM (0)
Apr 25, 4-5 AM (0)
Apr 25, 5-6 AM (0)
Apr 25, 6-7 AM (0)
Apr 25, 7-8 AM (0)
Apr 25, 8-9 AM (0)
Apr 25, 9-10 AM (0)
Apr 25, 10-11 AM (0)
Apr 25, 11-12 PM (0)
Apr 25, 12-1 PM (0)
Apr 25, 1-2 PM (0)
Apr 25, 2-3 PM (0)
Apr 25, 3-4 PM (0)
Apr 25, 4-5 PM (0)
Apr 25, 5-6 PM (0)
Apr 25, 6-7 PM (0)
Apr 25, 7-8 PM (0)
Apr 25, 8-9 PM (0)
Apr 25, 9-10 PM (0)
Apr 25, 10-11 PM (0)
Apr 25, 11-12 AM (0)
Apr 26, 12-1 AM (0)
Apr 26, 1-2 AM (0)
Apr 26, 2-3 AM (0)
Apr 26, 3-4 AM (0)
Apr 26, 4-5 AM (0)
Apr 26, 5-6 AM (0)
Apr 26, 6-7 AM (0)
Apr 26, 7-8 AM (0)
Apr 26, 8-9 AM (0)
Apr 26, 9-10 AM (0)
Apr 26, 10-11 AM (0)
Apr 26, 11-12 PM (0)
Apr 26, 12-1 PM (0)
Apr 26, 1-2 PM (0)
Apr 26, 2-3 PM (0)
Apr 26, 3-4 PM (0)
Apr 26, 4-5 PM (0)
Apr 26, 5-6 PM (0)
Apr 26, 6-7 PM (0)
Apr 26, 7-8 PM (0)
Apr 26, 8-9 PM (0)
Apr 26, 9-10 PM (0)
Apr 26, 10-11 PM (0)
Apr 26, 11-12 AM (0)
Apr 27, 12-1 AM (0)
Apr 27, 1-2 AM (0)
Apr 27, 2-3 AM (0)
Apr 27, 3-4 AM (0)
Apr 27, 4-5 AM (0)
Apr 27, 5-6 AM (1)
Apr 27, 6-7 AM (0)
Apr 27, 7-8 AM (2)
Apr 27, 8-9 AM (2)
Apr 27, 9-10 AM (7)
Apr 27, 10-11 AM (27)
Apr 27, 11-12 PM (17)
Apr 27, 12-1 PM (8)
Apr 27, 1-2 PM (5)
Apr 27, 2-3 PM (0)
Apr 27, 3-4 PM (3)
Apr 27, 4-5 PM (0)
Apr 27, 5-6 PM (0)
Apr 27, 6-7 PM (0)
Apr 27, 7-8 PM (0)
Apr 27, 8-9 PM (0)
Apr 27, 9-10 PM (0)
Apr 27, 10-11 PM (0)
Apr 27, 11-12 AM (0)
Apr 28, 12-1 AM (0)
Apr 28, 1-2 AM (0)
Apr 28, 2-3 AM (0)
Apr 28, 3-4 AM (0)
Apr 28, 4-5 AM (0)
Apr 28, 5-6 AM (0)
Apr 28, 6-7 AM (0)
Apr 28, 7-8 AM (5)
Apr 28, 8-9 AM (2)
Apr 28, 9-10 AM (24)
Apr 28, 10-11 AM (1)
Apr 28, 11-12 PM (24)
Apr 28, 12-1 PM (0)
Apr 28, 1-2 PM (12)
Apr 28, 2-3 PM (13)
Apr 28, 3-4 PM (2)
Apr 28, 4-5 PM (0)
Apr 28, 5-6 PM (0)
Apr 28, 6-7 PM (0)
Apr 28, 7-8 PM (0)
Apr 28, 8-9 PM (0)
Apr 28, 9-10 PM (0)
Apr 28, 10-11 PM (0)
Apr 28, 11-12 AM (0)
Apr 29, 12-1 AM (0)
Apr 29, 1-2 AM (0)
Apr 29, 2-3 AM (0)
Apr 29, 3-4 AM (0)
Apr 29, 4-5 AM (1)
Apr 29, 5-6 AM (0)
Apr 29, 6-7 AM (1)
Apr 29, 7-8 AM (5)
Apr 29, 8-9 AM (23)
Apr 29, 9-10 AM (27)
Apr 29, 10-11 AM (2)
Apr 29, 11-12 PM (21)
Apr 29, 12-1 PM (1)
Apr 29, 1-2 PM (0)
Apr 29, 2-3 PM (1)
Apr 29, 3-4 PM (0)
Apr 29, 4-5 PM (26)
Apr 29, 5-6 PM (0)
Apr 29, 6-7 PM (0)
Apr 29, 7-8 PM (0)
Apr 29, 8-9 PM (0)
Apr 29, 9-10 PM (0)
Apr 29, 10-11 PM (0)
Apr 29, 11-12 AM (0)
Apr 30, 12-1 AM (0)
Apr 30, 1-2 AM (0)
Apr 30, 2-3 AM (0)
Apr 30, 3-4 AM (0)
Apr 30, 4-5 AM (0)
Apr 30, 5-6 AM (0)
Apr 30, 6-7 AM (0)
Apr 30, 7-8 AM (0)
Apr 30, 8-9 AM (25)
Apr 30, 9-10 AM (0)
Apr 30, 10-11 AM (2)
Apr 30, 11-12 PM (0)
Apr 30, 12-1 PM (1)
Apr 30, 1-2 PM (2)
Apr 30, 2-3 PM (2)
Apr 30, 3-4 PM (3)
Apr 30, 4-5 PM (0)
Apr 30, 5-6 PM (0)
Apr 30, 6-7 PM (0)
Apr 30, 7-8 PM (0)
Apr 30, 8-9 PM (0)
Apr 30, 9-10 PM (0)
Apr 30, 10-11 PM (0)
Apr 30, 11-12 AM (0)
May 01, 12-1 AM (0)
May 01, 1-2 AM (0)
May 01, 2-3 AM (0)
May 01, 3-4 AM (0)
May 01, 4-5 AM (0)
May 01, 5-6 AM (0)
May 01, 6-7 AM (0)
May 01, 7-8 AM (1)
May 01, 8-9 AM (0)
322 commits this week Apr 24, 2026 - May 01, 2026
Allow LSQ clients to connect during initial LedgerDB replay (EarlyN2C)
Allow the local node-to-client socket to bind within seconds of node
startup rather than after the multi-hour LedgerDB replay completes. n2c
ChainSync clients (cardano-db-sync, ogmios, wallet) can begin streaming
blocks during replay; LSQ / TxSubmit / TxMonitor handlers naturally block
on the LedgerDB until ready, relying on the property that NtC has no
client-side timeouts.

Phase 1 (ChainDB):
- New 'LedgerDBStatus' type + 'awaitLedgerDB' STM helper
- 'openDBInternal' returns once Immutable+Volatile are open; LedgerDB
  replay and initial chain selection run on a registry-linked background
  thread (new 'runInitLedgerDB')
- LedgerDB-touching queries wrapped in 'awaitLedgerDB'
- New 'OpenedDBImmutableReady' trace event; existing 'OpenedDB' preserved
- 'closeDB' cancels the background initialiser and only closes the
  LedgerDB if 'cdbLedgerDBStatus' has reached 'LdbReady'

Phase 2 (NodeKernel + runWith):
- 'mkPendingMempool', 'mkPendingBlockchainTime', 'mkPendingDurationUntilTooOld'
  forwarding wrappers that block on a TMVar until populated
- 'initInternalState' split into 'initInternalStateEarly' +
  'completeInternalState'
- 'initNodeKernel' split into 'initNodeKernelEarly' returning
  '(NodeKernel, m ())'; the deferred action opens the real mempool,
  computes the real GsmState, and spawns the four ledger-touching
  background threads (GSM, GDD watcher, blockForging, blockFetchLogic,
  decisionLogicThreads)
- 'runWith' allocates the BlockchainTime / WrapDurationUntilTooOld TMVars,
  builds the kernel synchronously with pending wrappers, calls
  'llrnRunDataDiffusion' immediately, and forks a 'Node.lateInit' thread
  that runs 'hardForkBlockchainTime' and 'realDurationUntilTooOld' once
  the LedgerDB is ready, populates the TMVars, and runs the completer

Verified: 'cabal build all' clean and 'cabal test storage-test' passes
69/69 on the 3.0.1.0 release tag.
drop support for x86_64-darwin (#2022)
# Description

- Nixpkgs expects to drop support for intel macs in 26.11 as per Nixpkgs
25.11 [release
notes](https://nixos.org/manual/nixpkgs/stable/release-notes#sec-nixpkgs-release-25.11-highlights).
- It was
[decided](https://input-output-rnd.slack.com/archives/CG1FBSDMM/p1776704401411139?thread_ts=1776677872.325309&cid=CG1FBSDMM)
to no longer build x86_64-darwin on [ci.iog.io](https://ci.iog.io) to
reduce strain on the struggling mac builders.
Implement BLS-based crypto helpers to instantiate voting committes
This commit implements BLS-based crypto helpers to simplify the
implementation of crypto schemes used for voting committees. It includes
both single and aggregate signature and VRF signing and verification, as
well as swap-attack-resistant aggregate VRF verification via
linearization.

Co-authored-by: Nicolas BACQUEY <[email protected]>
Co-authored-by: Thomas BAGREL <[email protected]>
Co-authored-by: Agustin Mista <[email protected]>
Implement wFA^LS voting committee instance
This commit defined the weighted Fait-Accompli with local soritition
voting scheme (WFALS) using the separate WFA and LS components. This
includes the definition of both persistent and non-pesistent abstract
votes and abstract certificates.

NOTE: it is the job of the low-level vote and certificate implementation
to provide the plumbing needed to convert between abstract and concrete
values, possibly allowing the same concrete definitions to work with
multiple voting commitee implementations.

Co-authored-by: Nicolas BACQUEY <[email protected]>
Co-authored-by: Thomas BAGREL <[email protected]>
Co-authored-by: Agustin Mista <[email protected]>
Define PerasCrypto and wire up voting committee instance using BLS
This commit defines a concrete PerasCrypto scheme using BLS signatures
to instantiate all the voting committee superclasses needed by the WFALS
and EveryoneVotes voting committee implementations.

Note that these instances are heavily inspired by the ones defined for
TestCrypto in the generic voting committee test-suite, albeit with
slightly different types and more documentation.

Co-authored-by: Agustin Mista <[email protected]>
Co-authored-by: Thomas BAGREL <[email protected]>
Co-authored-by: Nicolas BACQUEY <[email protected]>
Add property tests for EveryoneVotes implementation
This commit implements property tests for the EveryoneVotes
implementation asserting that:

* votes cast by eligible voters are successfully verifiable under the
  same voting committee,
* fake (illegal) votes are successfully rejected, and
* certificates forged by multiple votes can be verifiable under the same
  voting committe

Co-authored-by: Nicolas BACQUEY <[email protected]>
Co-authored-by: Thomas BAGREL <[email protected]>
Co-authored-by: Agustin Mista <[email protected]>
Implement local sortition for non-persistent seats
This commit implements the local sortition fallback scheme needed by
wFA^LS to allocate non-persistent voters. Each non-persistent voter
provides a VRF output that gets normalized and compared against the
output of a numerically-stable stake-weighted Poisson distribution.

Co-authored-by: Nicolas BACQUEY <[email protected]>
Co-authored-by: Thomas BAGREL <[email protected]>
Co-authored-by: Agustin Mista <[email protected]>
Introduce O.C.Util.Bitmap
This commit implements a compact bitmaps via ByteStrings, adapted from
the Leios voting committee demo package (leios-wfa-ls-demo):

https://github.com/cardano-scaling/leios-wfa-ls-demo/blob/main/leios-wfa-ls-demo/lib/Cardano/Leios/BitMapPV.hs

Co-authored-by: Agustin Mista <[email protected]>
Co-authored-by: Thomas BAGREL <[email protected]>
Co-authored-by: Nicolas BACQUEY <[email protected]>
Implement pure weighted Fait-Accompli logic
This commit implements the deterministic core of the weighted
Fait-Accompli algorithm using a precomputed extended stake distribution,
shareable across multiple voting committees running on the same epoch.

The implementation includes a tiebreaker mechanism to allow altering the
order of pools with the same stake when the threshold index between
persistent and non-persistent voters would land between them. This can
later be instantiated to allow for a fair split across epochs.

Co-authored-by: Nicolas BACQUEY <[email protected]>
Co-authored-by: Thomas BAGREL <[email protected]>
Co-authored-by: Agustin Mista <[email protected]>
Add conformance tests for WFALS implementation
This commit adds conformance tests for the real WFALS implementation. In
particular, we chech that the real implementation matches both the
precomputed output of the rust prototype as well as the WFALS model
against random stake distributions and target committee sizes.

Co-authored-by: Nicolas BACQUEY <[email protected]>
Co-authored-by: Thomas BAGREL <[email protected]>
Co-authored-by: Agustin Mista <[email protected]>
Add conversion roundtrip tests between Peras votes/certs and voting committee types
This commit adds conversion rountrip tests between concrete Peras votes
and certificates and their corresponding (abstract) counterparts in the
WFALS and EveryoneVotes voting committee implementations.

Notably, the roundtrip properties allow testing both total (WFALS) and partial
(EveryoneVotes) conversions, generating both good and bad cases and
contrasting them against their expected rountrip outcome.

Co-authored-by: Agustin Mista <[email protected]>
Co-authored-by: Thomas BAGREL <[email protected]>
Co-authored-by: Nicolas BACQUEY <[email protected]>