Update comments in budgeting benchmarks
Dec 09, 11-12 PM (55)
Dec 09, 12-1 PM (64)
Dec 09, 1-2 PM (60)
Dec 09, 2-3 PM (68)
Dec 09, 3-4 PM (53)
Dec 09, 4-5 PM (43)
Dec 09, 5-6 PM (20)
Dec 09, 6-7 PM (14)
Dec 09, 7-8 PM (4)
Dec 09, 8-9 PM (14)
Dec 09, 9-10 PM (17)
Dec 09, 10-11 PM (54)
Dec 09, 11-12 AM (49)
Dec 10, 12-1 AM (10)
Dec 10, 1-2 AM (9)
Dec 10, 2-3 AM (19)
Dec 10, 3-4 AM (9)
Dec 10, 4-5 AM (9)
Dec 10, 5-6 AM (8)
Dec 10, 6-7 AM (5)
Dec 10, 7-8 AM (17)
Dec 10, 8-9 AM (43)
Dec 10, 9-10 AM (48)
Dec 10, 10-11 AM (47)
Dec 10, 11-12 PM (36)
Dec 10, 12-1 PM (48)
Dec 10, 1-2 PM (38)
Dec 10, 2-3 PM (40)
Dec 10, 3-4 PM (44)
Dec 10, 4-5 PM (34)
Dec 10, 5-6 PM (24)
Dec 10, 6-7 PM (19)
Dec 10, 7-8 PM (18)
Dec 10, 8-9 PM (24)
Dec 10, 9-10 PM (25)
Dec 10, 10-11 PM (49)
Dec 10, 11-12 AM (18)
Dec 11, 12-1 AM (5)
Dec 11, 1-2 AM (9)
Dec 11, 2-3 AM (12)
Dec 11, 3-4 AM (11)
Dec 11, 4-5 AM (10)
Dec 11, 5-6 AM (4)
Dec 11, 6-7 AM (30)
Dec 11, 7-8 AM (54)
Dec 11, 8-9 AM (40)
Dec 11, 9-10 AM (28)
Dec 11, 10-11 AM (41)
Dec 11, 11-12 PM (36)
Dec 11, 12-1 PM (49)
Dec 11, 1-2 PM (79)
Dec 11, 2-3 PM (56)
Dec 11, 3-4 PM (37)
Dec 11, 4-5 PM (34)
Dec 11, 5-6 PM (7)
Dec 11, 6-7 PM (13)
Dec 11, 7-8 PM (34)
Dec 11, 8-9 PM (19)
Dec 11, 9-10 PM (25)
Dec 11, 10-11 PM (32)
Dec 11, 11-12 AM (27)
Dec 12, 12-1 AM (3)
Dec 12, 1-2 AM (10)
Dec 12, 2-3 AM (11)
Dec 12, 3-4 AM (2)
Dec 12, 4-5 AM (11)
Dec 12, 5-6 AM (7)
Dec 12, 6-7 AM (7)
Dec 12, 7-8 AM (32)
Dec 12, 8-9 AM (86)
Dec 12, 9-10 AM (36)
Dec 12, 10-11 AM (70)
Dec 12, 11-12 PM (48)
Dec 12, 12-1 PM (73)
Dec 12, 1-2 PM (59)
Dec 12, 2-3 PM (41)
Dec 12, 3-4 PM (26)
Dec 12, 4-5 PM (32)
Dec 12, 5-6 PM (19)
Dec 12, 6-7 PM (11)
Dec 12, 7-8 PM (13)
Dec 12, 8-9 PM (7)
Dec 12, 9-10 PM (16)
Dec 12, 10-11 PM (26)
Dec 12, 11-12 AM (14)
Dec 13, 12-1 AM (0)
Dec 13, 1-2 AM (1)
Dec 13, 2-3 AM (0)
Dec 13, 3-4 AM (13)
Dec 13, 4-5 AM (0)
Dec 13, 5-6 AM (1)
Dec 13, 6-7 AM (1)
Dec 13, 7-8 AM (9)
Dec 13, 8-9 AM (1)
Dec 13, 9-10 AM (7)
Dec 13, 10-11 AM (4)
Dec 13, 11-12 PM (5)
Dec 13, 12-1 PM (8)
Dec 13, 1-2 PM (0)
Dec 13, 2-3 PM (4)
Dec 13, 3-4 PM (3)
Dec 13, 4-5 PM (1)
Dec 13, 5-6 PM (6)
Dec 13, 6-7 PM (11)
Dec 13, 7-8 PM (4)
Dec 13, 8-9 PM (8)
Dec 13, 9-10 PM (14)
Dec 13, 10-11 PM (39)
Dec 13, 11-12 AM (34)
Dec 14, 12-1 AM (2)
Dec 14, 1-2 AM (1)
Dec 14, 2-3 AM (0)
Dec 14, 3-4 AM (1)
Dec 14, 4-5 AM (4)
Dec 14, 5-6 AM (0)
Dec 14, 6-7 AM (0)
Dec 14, 7-8 AM (0)
Dec 14, 8-9 AM (8)
Dec 14, 9-10 AM (5)
Dec 14, 10-11 AM (33)
Dec 14, 11-12 PM (5)
Dec 14, 12-1 PM (8)
Dec 14, 1-2 PM (1)
Dec 14, 2-3 PM (3)
Dec 14, 3-4 PM (3)
Dec 14, 4-5 PM (2)
Dec 14, 5-6 PM (10)
Dec 14, 6-7 PM (13)
Dec 14, 7-8 PM (23)
Dec 14, 8-9 PM (11)
Dec 14, 9-10 PM (30)
Dec 14, 10-11 PM (32)
Dec 14, 11-12 AM (26)
Dec 15, 12-1 AM (5)
Dec 15, 1-2 AM (2)
Dec 15, 2-3 AM (8)
Dec 15, 3-4 AM (7)
Dec 15, 4-5 AM (3)
Dec 15, 5-6 AM (3)
Dec 15, 6-7 AM (2)
Dec 15, 7-8 AM (75)
Dec 15, 8-9 AM (36)
Dec 15, 9-10 AM (43)
Dec 15, 10-11 AM (29)
Dec 15, 11-12 PM (42)
Dec 15, 12-1 PM (47)
Dec 15, 1-2 PM (54)
Dec 15, 2-3 PM (27)
Dec 15, 3-4 PM (34)
Dec 15, 4-5 PM (30)
Dec 15, 5-6 PM (21)
Dec 15, 6-7 PM (55)
Dec 15, 7-8 PM (11)
Dec 15, 8-9 PM (27)
Dec 15, 9-10 PM (14)
Dec 15, 10-11 PM (26)
Dec 15, 11-12 AM (36)
Dec 16, 12-1 AM (17)
Dec 16, 1-2 AM (2)
Dec 16, 2-3 AM (5)
Dec 16, 3-4 AM (3)
Dec 16, 4-5 AM (2)
Dec 16, 5-6 AM (7)
Dec 16, 6-7 AM (10)
Dec 16, 7-8 AM (25)
Dec 16, 8-9 AM (35)
Dec 16, 9-10 AM (44)
Dec 16, 10-11 AM (52)
Dec 16, 11-12 PM (17)
3,725 commits this week
Dec 09, 2025
-
Dec 16, 2025
move changes to correct file, to avoid duplicating information
Bump cardano-addresses to version 4.0.0
remove mac junk files
draft alternative node implementations and midnight into like to see criteria
Add pure Peras Voting rules
With the currently selected generation sizes, we hit the different
voting rules in a somewhat decent proportion, even against randomly
generated functions as part of the PerasVotingView interface.
ouroboros-consensus
Peras
Peras voting rules
isPerasVotingAllowed: OK (1.55s)
+++ OK, passed 10000 tests.
Actual result (10000 in total):
60.29% NoVoteReason(VR-1A or VR-2A)
20.90% NoVoteReason(VR-1A or VR-2B)
9.60% VoteReason(VR-2A and VR-2B)
4.93% VoteReason(VR-1A and VR-1B)
2.67% NoVoteReason(VR-1B or VR-2A)
1.61% NoVoteReason(VR-1B or VR-2B)
Should vote according to model (10000 in total):
85.47% False
14.53% True
VR-(1A|1B|2A|2B) (10000 in total):
21.30% (False,True,False,False)
21.24% (False,False,False,False)
10.63% (False,False,True,False)
10.27% (False,True,True,False)
8.99% (False,False,False,True)
8.76% (False,True,False,True)
4.67% (False,True,True,True)
4.26% (False,False,True,True)
1.93% (True,False,False,False)
1.77% (True,True,False,False)
1.71% (True,True,True,False)
1.61% (True,False,True,False)
0.75% (True,True,True,True)
0.74% (True,False,False,True)
0.70% (True,True,False,True)
0.67% (True,False,True,True)
VR-1A (10000 in total):
90.12% False
9.88% True
VR-1B (10000 in total):
50.07% False
49.93% True
VR-2A (10000 in total):
65.43% False
34.57% True
VR-2B (10000 in total):
70.46% False
29.54% True
Fake block injector - first buildable version
Add explainable boolean predicate evaluator
Move geometric into Test.Util.QuickCheck
Add changelog entry
Co-authored-by: Agustin Mista <[email protected]> Co-authored-by: Alexander Esgen <[email protected]> Co-authored-by: Georgy Lukyanov <[email protected]> Co-authored-by: Thomas BAGREL <[email protected]> Co-authored-by: Nicolas BACQUEY <[email protected]>
Introduce Peras votes and certificate forging API
This commit introduces a couple of new types to represent Peras votes and their corresponding certificate forging API. Notably, this requires an initial representation of notions like vote targets, vote stakes and stake distributions over multiple stake pools. Co-authored-by: Agustin Mista <[email protected]> Co-authored-by: Alexander Esgen <[email protected]> Co-authored-by: Georgy Lukyanov <[email protected]> Co-authored-by: Thomas BAGREL <[email protected]> Co-authored-by: Nicolas BACQUEY <[email protected]>
chore: cleanup
test(cat-voices): fixed numbering
Tweak HasPerasCertX typeclasses
This commit simplifies the interface of the HasPerasCertX typeclasses, removing the StandardHash superclass constraint, and splitting them into several smaller typeclasses. Co-authored-by: Agustin Mista <[email protected]> Co-authored-by: Alexander Esgen <[email protected]> Co-authored-by: Georgy Lukyanov <[email protected]> Co-authored-by: Thomas BAGREL <[email protected]> Co-authored-by: Nicolas BACQUEY <[email protected]>
Introduce O.C.Peras.Params
This commits introduces the module: Ouroboros.Consensus.Peras.Params To consolidate all the protocol parameters related to Peras in one place. Until we defined concrete BlockSupportsPeras for the different block types + HFC, all blocks satisfy: type PerasCfg blk = PerasParams Co-authored-by: Agustin Mista <[email protected]> Co-authored-by: Alexander Esgen <[email protected]> Co-authored-by: Georgy Lukyanov <[email protected]> Co-authored-by: Thomas BAGREL <[email protected]> Co-authored-by: Nicolas BACQUEY <[email protected]>
Store most recent cert in the PerasCertDB
This commit adds a method to the PerasCertDB API to retrieve the latest certificate seen. This is certificate needed to implement the Peras voting and must be kept around even after garbage collection. Because of this, we extend the internal state of the PerasCertDB to store this special certificate on the side, and (potentially) update it after new certificates are added to the database. Co-authored-by: Agustin Mista <[email protected]> Co-authored-by: Alexander Esgen <[email protected]> Co-authored-by: Georgy Lukyanov <[email protected]> Co-authored-by: Thomas BAGREL <[email protected]> Co-authored-by: Nicolas BACQUEY <[email protected]>
Define WithArrivalTime combinator
This commit defines a generic WithArrivalTime combinator to wrap a value with its arrival time (as a Relative time). This is needed by Peras in several places, e.g., to evaluate the voting rules. Notably, we store a raw Relative time instead of a (arguably more apt) SlotNo or PerasRoundNo to defer as much as possible having to deal with the case where making this translation (timestamp -> slot/round) is not possible due to the HFC time translation horizon. Instead, the client will need to perform this translation in a context where such a failure cannot occur or can be more easily dealt with. Co-authored-by: Agustin Mista <[email protected]> Co-authored-by: Alexander Esgen <[email protected]> Co-authored-by: Georgy Lukyanov <[email protected]> Co-authored-by: Thomas BAGREL <[email protected]> Co-authored-by: Nicolas BACQUEY <[email protected]>
Wrap validated Peras certificates with arrival time
This commit wraps the existing ValidatedPerasCerts stored in the PerasCertDB with their corresponding arrival time. In addition, it adapts tests to use either a randomly generated arrival time, or (when appropriate) one generated by a monotonically increasing SystemTime. Co-authored-by: Agustin Mista <[email protected]> Co-authored-by: Alexander Esgen <[email protected]> Co-authored-by: Georgy Lukyanov <[email protected]> Co-authored-by: Thomas BAGREL <[email protected]> Co-authored-by: Nicolas BACQUEY <[email protected]>
Add onPerasRoundNo helper and Num instance
This commit adds a small helper to compute over Peras round numbers. Will be needed later on to implement the Peras voting rules. Co-authored-by: Agustin Mista <[email protected]> Co-authored-by: Alexander Esgen <[email protected]> Co-authored-by: Georgy Lukyanov <[email protected]> Co-authored-by: Thomas BAGREL <[email protected]> Co-authored-by: Nicolas BACQUEY <[email protected]>
Add changelog entries
Co-authored-by: Agustin Mista <[email protected]> Co-authored-by: Alexander Esgen <[email protected]> Co-authored-by: Georgy Lukyanov <[email protected]> Co-authored-by: Thomas BAGREL <[email protected]> Co-authored-by: Nicolas BACQUEY <[email protected]>