Skip to main content

Ledger Team Update

· 3 min read
Alexey Kuleshevich

High level summary

Few important Conway related features were completed in this two week period:

  • Constitutional Committee was the last missing Conway related entity that has now been fully implemented.
  • Treasury withdrawals governance actions have been fixed and now behave as expected.
  • Current treasury amount supplied in the transaction is now enforced by the rules.
  • DRep's expiry is prevented by delaying the expiry for all DReps whenever there are no proposals to vote on.
  • Semantics of how CostModels are updated with Protocol Parameters have been changed to allow for individual Plutus language version updates, rather than requiring a complete replacement of all CostModels

Besides the new features there were also important performance and testing improvements:

  • In particular stake distribution computation and native script handling received some optimizations.
  • New testing DSL has been implemented that drastically simplifies writing unit tests for ledger rules.
  • Integration tests and benchmarks are now possible for Conway era because of the overhaul of functionality for initial funds and staking injection whenever node starts up in Conway, while bypassing all previous eras.

Low level summary

Conway era

  • pull-3729 - DRep expiry update after a contiguous set of epochs with no proposals to vote on
  • pull-3739 - Rename some PParams to be consistent with Agda specification
  • pull-3743 - Move DRepDistr from VState to ConwayGovState
  • pull-3746 - Implement tcTranslationContextL for Shelley
  • pull-3737 - Implement EraTransition
  • pull-3749 - Add predicate failure: current treasury value mismatch in LEDGER
  • pull-3748 - Apply enacted treasury withdrawals
  • pull-3745 - Constitutional Committee Ratification
  • pull-3763 - Plutus interface improvements
  • pull-3771 - Changed how costmodel updates are applied
  • pull-3766 - Prevent updating protocol version with PParamUpdate

Performance

  • pull-3765 - Improve native script handling
  • pull-3747 - Use (CompactForm Coin) in IncrementalStake, DRepDistr (and other places) instead of Coin
  • pull-3758 - Cardano-Perf regression: UMap.size regression fix
  • pull-3754 - Use Alonzo-style TxOut encoder when possible

Releasing

  • pull-3742 - Update fourmolu, ghcid and hls. Update haskellNix and iohkNix flakes
  • pull-3744 - Changelog 8.4
  • pull-3752 - Patch release of cardano ledger conway 1.8.1.0
  • pull-3753 - Minor cleanup and changelog entries
  • pull-3760 - Fixup issues for release
  • pull-3764 - Bump plutus deps to 1.13

Testing

  • pull-3734 - Removed Shaped instance for Rep
  • pull-3735 - Simplify the implementations of hasOrd and hasEq
  • pull-3728 - STS tests based on constraints
  • pull-3714 - Implement the remaining upgradable families
  • pull-3733 - Add some unit tests for Conway features
  • pull-3762 - Update CDDL for praos headers.