Skip to main content

Ledger Team Update

· 3 min read
Alexey Kuleshevich

High level summary

Last few weeks were spent mostly on implementing various fixes, writing tests and improving capabilities of our testing frameworks. Important bug fixes are:

  • Retention of Anchor for proposal procedures in the ledger state in order for users to be able to query the node for those anchors
  • JSON serialization of rational numbers in protocol parameters and governance procedures are encoded without loss of precision

Feature wise, we've added a new protocol parameter that controls the contribution of reference scripts sizes in the transaction fee calculation formula.

Major achievement that is worth announcing is a Haskell package named cuddle that we developed over the last few months. Soon we will be transitioning to specifying CDDL in Haskell for all eras using that package. It will be used to compile the CDDL specification that developers in the community rely on so much. There are enormous benefits in using this tool, when compared to writing CDDL specification manually. Namely it allows us to reduce duplication and reuse common and unchanged specification from previous eras. It also improves safety and correctness of our specification and decoders, because it ensures that the specification is well typed and it uses QuickCheck to generate random data for validating that our decoders are implemented according to the spec.

Low level summary

Conway

  • pull-4031 - Further proposals improvements. Take 2
  • pull-3996 - Index aware PlutusPurpose
  • pull-3983 - Include reference scripts size in min fee calculation
  • pull-4040 - Redeemers serialization fixes
  • pull-4033 - Make Conway-specific queries only available in Conway
  • pull-4028 - Embed ProposalProcedure in GovActionState
  • pull-4056 - Reduce duplication in Conway UTXOW rule
  • pull-4055 - Update MinFeeRefScriptCoinsPerByte.
  • pull-4053 - Rename committeeQuorum to committeeThreshold
  • pull-4058 - Fix ToJSON instance of BoundedRatio to avoid precision loss
  • pull-4070 - Rename AsIndex to AsIx
  • pull-4065 - Remove ConwayPool rule definition

Improvements

  • pull-4037 - Add capability to hash Plutus scripts directly
  • pull-4030 - Report Plutus ScriptHash upon execution failure

Testing

  • pull-3895 - Constrained v2
  • pull-3981 - Test proposals rewrite
  • pull-4051 - Full support of random and quickcheck-transformers in impTest
  • pull-4050 - Fixed the "All Tx are valid on traces of length 150" intermittent bug
  • pull-4049 - Support for Plutus scripts in ImpTest
  • pull-4075 - Discontinue the mingw target in the nix build
  • pull-4072 - Fix ouroborus-consensus serialization roundtrip test
  • pull-4080 - Test that a resigned CC cannot be reelected without removal
  • pull-4083 - Fix flakyness at the cost of turning test on during development
  • pull-4084 - Fix intermittent test failures in leader-proportion test

Specification

  • pull-4015 - Shelley ledger spec: amend erratum on nonce stabilization window
  • pull-4064 - Fix wrong prose for new epoch environment
  • pull-4081 - Fix MIR rule using wrong values for treasury and reserves

Releasing