Jul 16, 8-9 PM (8)
Jul 16, 9-10 PM (8)
Jul 16, 10-11 PM (9)
Jul 16, 11-12 AM (11)
Jul 17, 12-1 AM (3)
Jul 17, 1-2 AM (3)
Jul 17, 2-3 AM (4)
Jul 17, 3-4 AM (5)
Jul 17, 4-5 AM (3)
Jul 17, 5-6 AM (4)
Jul 17, 6-7 AM (1)
Jul 17, 7-8 AM (4)
Jul 17, 8-9 AM (1)
Jul 17, 9-10 AM (6)
Jul 17, 10-11 AM (1)
Jul 17, 11-12 PM (3)
Jul 17, 12-1 PM (5)
Jul 17, 1-2 PM (3)
Jul 17, 2-3 PM (1)
Jul 17, 3-4 PM (4)
Jul 17, 4-5 PM (3)
Jul 17, 5-6 PM (1)
Jul 17, 6-7 PM (5)
Jul 17, 7-8 PM (2)
Jul 17, 8-9 PM (4)
Jul 17, 9-10 PM (6)
Jul 17, 10-11 PM (2)
Jul 17, 11-12 AM (3)
Jul 18, 12-1 AM (3)
Jul 18, 1-2 AM (2)
Jul 18, 2-3 AM (1)
Jul 18, 3-4 AM (5)
Jul 18, 4-5 AM (1)
Jul 18, 5-6 AM (2)
Jul 18, 6-7 AM (2)
Jul 18, 7-8 AM (4)
Jul 18, 8-9 AM (4)
Jul 18, 9-10 AM (2)
Jul 18, 10-11 AM (1)
Jul 18, 11-12 PM (1)
Jul 18, 12-1 PM (2)
Jul 18, 1-2 PM (4)
Jul 18, 2-3 PM (2)
Jul 18, 3-4 PM (1)
Jul 18, 4-5 PM (2)
Jul 18, 5-6 PM (3)
Jul 18, 6-7 PM (5)
Jul 18, 7-8 PM (2)
Jul 18, 8-9 PM (2)
Jul 18, 9-10 PM (7)
Jul 18, 10-11 PM (6)
Jul 18, 11-12 AM (2)
Jul 19, 12-1 AM (2)
Jul 19, 1-2 AM (16)
Jul 19, 2-3 AM (9)
Jul 19, 3-4 AM (19)
Jul 19, 4-5 AM (6)
Jul 19, 5-6 AM (12)
Jul 19, 6-7 AM (28)
Jul 19, 7-8 AM (33)
Jul 19, 8-9 AM (32)
Jul 19, 9-10 AM (22)
Jul 19, 10-11 AM (196)
Jul 19, 11-12 PM (22)
Jul 19, 12-1 PM (65)
Jul 19, 1-2 PM (32)
Jul 19, 2-3 PM (32)
Jul 19, 3-4 PM (16)
Jul 19, 4-5 PM (13)
Jul 19, 5-6 PM (17)
Jul 19, 6-7 PM (27)
Jul 19, 7-8 PM (9)
Jul 19, 8-9 PM (12)
Jul 19, 9-10 PM (5)
Jul 19, 10-11 PM (26)
Jul 19, 11-12 AM (8)
Jul 20, 12-1 AM (5)
Jul 20, 1-2 AM (6)
Jul 20, 2-3 AM (7)
Jul 20, 3-4 AM (7)
Jul 20, 4-5 AM (23)
Jul 20, 5-6 AM (15)
Jul 20, 6-7 AM (26)
Jul 20, 7-8 AM (48)
Jul 20, 8-9 AM (33)
Jul 20, 9-10 AM (29)
Jul 20, 10-11 AM (20)
Jul 20, 11-12 PM (15)
Jul 20, 12-1 PM (45)
Jul 20, 1-2 PM (30)
Jul 20, 2-3 PM (40)
Jul 20, 3-4 PM (28)
Jul 20, 4-5 PM (8)
Jul 20, 5-6 PM (8)
Jul 20, 6-7 PM (4)
Jul 20, 7-8 PM (5)
Jul 20, 8-9 PM (19)
Jul 20, 9-10 PM (12)
Jul 20, 10-11 PM (18)
Jul 20, 11-12 AM (8)
Jul 21, 12-1 AM (20)
Jul 21, 1-2 AM (6)
Jul 21, 2-3 AM (14)
Jul 21, 3-4 AM (15)
Jul 21, 4-5 AM (18)
Jul 21, 5-6 AM (26)
Jul 21, 6-7 AM (15)
Jul 21, 7-8 AM (49)
Jul 21, 8-9 AM (45)
Jul 21, 9-10 AM (20)
Jul 21, 10-11 AM (40)
Jul 21, 11-12 PM (20)
Jul 21, 12-1 PM (42)
Jul 21, 1-2 PM (26)
Jul 21, 2-3 PM (15)
Jul 21, 3-4 PM (20)
Jul 21, 4-5 PM (6)
Jul 21, 5-6 PM (13)
Jul 21, 6-7 PM (9)
Jul 21, 7-8 PM (5)
Jul 21, 8-9 PM (6)
Jul 21, 9-10 PM (13)
Jul 21, 10-11 PM (14)
Jul 21, 11-12 AM (9)
Jul 22, 12-1 AM (13)
Jul 22, 1-2 AM (11)
Jul 22, 2-3 AM (3)
Jul 22, 3-4 AM (5)
Jul 22, 4-5 AM (7)
Jul 22, 5-6 AM (12)
Jul 22, 6-7 AM (10)
Jul 22, 7-8 AM (18)
Jul 22, 8-9 AM (18)
Jul 22, 9-10 AM (40)
Jul 22, 10-11 AM (34)
Jul 22, 11-12 PM (33)
Jul 22, 12-1 PM (31)
Jul 22, 1-2 PM (18)
Jul 22, 2-3 PM (39)
Jul 22, 3-4 PM (24)
Jul 22, 4-5 PM (27)
Jul 22, 5-6 PM (21)
Jul 22, 6-7 PM (15)
Jul 22, 7-8 PM (9)
Jul 22, 8-9 PM (10)
Jul 22, 9-10 PM (12)
Jul 22, 10-11 PM (8)
Jul 22, 11-12 AM (8)
Jul 23, 12-1 AM (12)
Jul 23, 1-2 AM (7)
Jul 23, 2-3 AM (10)
Jul 23, 3-4 AM (5)
Jul 23, 4-5 AM (5)
Jul 23, 5-6 AM (13)
Jul 23, 6-7 AM (24)
Jul 23, 7-8 AM (26)
Jul 23, 8-9 AM (22)
Jul 23, 9-10 AM (28)
Jul 23, 10-11 AM (16)
Jul 23, 11-12 PM (19)
Jul 23, 12-1 PM (33)
Jul 23, 1-2 PM (15)
Jul 23, 2-3 PM (14)
Jul 23, 3-4 PM (39)
Jul 23, 4-5 PM (14)
Jul 23, 5-6 PM (7)
Jul 23, 6-7 PM (6)
Jul 23, 7-8 PM (3)
Jul 23, 8-9 PM (3)
2,505 commits this week Jul 16, 2021 - Jul 23, 2021
consensus: implement TxLimits via the cardano-base:measures package
This has a few small benefits

  * define's TxMeasure `leq` via the pointwise minimum

  * removes the redundancy of specifying the `pointwiseMin` method per ledger
    instead of per 'Measure'

  * avoids the need for type applications, which let's us re-use the <=
    operator

and two large benefits

  * creates an opportunity for more use of deriving

  * the top-bounded meet-semilattice foundation means that `noOverrides` can be
    implemented as `top`; we don't need it to be a function from the (dynamic!)
    ledger limits anymore.

We had previously decided on a function because it made it trivial to override
only parts of the ledger-derived capacity. However, we simplified the override
representation (no more `NP`) and a interface that uses the static `top`
instead of the dynamic "current ledger capacity" is more appropriate for a
interface used for static configuration.

In other words, the function space was "too big" for the following reasons.

  * in practice, these values are parsed from a file, and I doubt the Node Team
    wants to parse functions anytime soon

  * we do not anticipate the node operator wanting to vary their override
    depending on the ledger capacity

The 'Measure' class's lattice semantics let us remove the function space
without losing any convenience.

Co-authored-by: Pawel Szulc <[email protected]>