Skip to main content

67 posts tagged with "ledger"

View All Tags

· One min read
Alexey Kuleshevich

High level summary

As part of the tech dept reduction efforts we have restructured how stake is being computed, thus also removing Ptr from stake distribution computation for Conway. Various minor serialization fixes and failure reporting improvements.

We also added missing tests for block serialization roundtripping and CDDL conformance, which led to us removing a bug in Babbage CDDL specification.

Low level summary

Features

  • pull-4911 - Make invalidKey report the type that it is decoding
  • pull-4913 - Fix various issues with Ptr decoding
  • pull-4906 - InstantStake
  • pull-4916 - Use MemoBytes to represent memoized types
  • pull-4918 - Add unRedeemersL and unTxDatsL lenses

Testing

  • pull-4910 - Add instruction for conformance testing against local build
  • pull-4919 - Implement the "Validating scripts everywhere" Alonzo UTxOW test
  • pull-4869 - Add missing cbor round trip tests
  • pull-4922 - Remove old tests already implemented in Alonzo.Imp.UtxowSpec.Valid

Infrastructure and releasing

  • pull-4912 - Use the nix flake to provide formal-ledger-specifications SRP
  • pull-4920 - Update sphinx dependencies to address dependabot security warning

· 2 min read
Alexey Kuleshevich

High level summary

As part of tackling tech dept we have worked on improving the entrypoint interface that consensus uses to interact with ledger. Besides that we worked on restructuring some parts of the ledger state representation to make a more type safe distinction for changes introduced in Conway era. We have also implemented an alternative way of deserializing types that live on chain, which once intergrated into downstream components will allow us to have faster and more accurate decoders.

Low level summary

Features

  • pull-4907 - Remove no longer needed workarounds
  • pull-4890 - Invert mempool
  • pull-4861 - Convert CertState to a type family
  • pull-4846 - Non-Annotator DecCBOR instances
  • pull-4903 - Switch to using TxCert type family
  • pull-4889 - Change ApplyBlock interface
  • pull-4905 - Move EraGov interface into cardano-ledger-core
  • pull-4895 - Add ToCBOR/FromCBOR instances for Genesis config types

Testing

  • pull-4865 - Enable Imp conformance for GOV
  • pull-4887 - Add Imp fixup for collateral return txout
  • pull-4897 - Rename ImpTest helpers
  • pull-4908 - Add type parameter to KeySpace and GenEnv

Infrastructure and releasing

· One min read
Alexey Kuleshevich

High level summary

There were a few important performance improvements that had to do with:

  • Avoiding redundant computation when constructing context for plutus scripts
  • Reduction of memory overhead of some of the governance features
  • Removal of a space leak that retained transactions in memory for longer than it was necessary

Other than improving performance we also focused on improving ledger interface and code organization, as well as some minor improvements to the test suite.

Low level summary

Features

Testing

  • pull-4862 - Bumped the spec to include fixes to SecurityGroup parameters
  • pull-4877 - Add genIssuerKeys that can be used in consensus
  • pull-4878 - Upgrade cborg dependency
  • pull-4879 - Improve mkAddr and mkCred interface

Infrastructure and releasing

· One min read
Alexey Kuleshevich

High level summary

Some minor improvements to the implementation and the test suite. Nothing really interesting to report this time around.

Low level summary

Features

  • pull-4841 - Drop dependency on cardano-prelude
  • pull-4844 - Remove era type parameter from MemoBytes
  • pull-4837 - Added NonZero
  • pull-4857 - Made predicate failure and environment fields lazy

Testing

  • pull-4827 - Add method genSizedList to class Foldy
  • pull-4839 - Bumped spec
  • pull-4853 - Update comments about enabling conformance imp tests
  • pull-4829 - Enable imp-conformance for ENACT
  • pull-4838 - Change the structure of the GenT monad, to better track explanations.
  • pull-4830 - Add randomised certs for imp-tests

Infrastructure and releasing

  • pull-4845 - Pin Cabal version in Haddocks to GitHub Pages workflow
  • pull-4843 - Reorder the list of directories in RELEASING.md
  • pull-4859 - Switch from cryptonite library to crypton
  • pull-4858 - Changelog for cardano-node-10.2

· 5 min read
Alexey Kuleshevich

High level summary

Due to the holiday season this time around the Ledger report will be from a period of 6 weeks instead of the usual 2 weeks. That being said, this is also the time when everyone goes on vacation. Therefore the report is larger than usual, but not as big as if two periods of reporting were skipped at a usual time.

Most of the effort was spent on polishing up some of the Conway features before the upcoming Plomin hard fork that is scheduled to happen some time in January, as well as continued testing of the Conway features in order to improve our confidence in the upcoming hard fork. Because of this effort we nailed a couple of serious bugs, fixes for which are included in the latest release, which is why an upgrade for all SPOs to the newest version of cardano-node-10.1.4 is highly advisable.

Another big allocation of effort was towards tackling some of the technical debt accrued over the years.

The most significant change by far in this report is the removal of crypto parameterization from every era definition in Ledger. This change was not only a huge simplification for the Ledger codebase, but it will be just as big of a simplification for all of the downstream users of Ledger. Most importantly, this change will finally allow us to switch to the newer version of the GHC compiler, because it addresses the performance regression that the newer compiler version was susceptible to.

One more major accomplishment that we can share is a drastic change to how serialization of UTxO happens in the ledger state. This change is planned to solve a long standing problem with blocks being missed due to the garbage collector kicking in at the time when the ledger snapshot was being created. Moreover this change will have a significant positive impact on UTxOHD performance when it will finally be released.

Another big milestone, with respect to tackling technical debt is a release of our cryptographic library, which was undergoing some major changes throughout the last couple of years. It was finally released and integrated into Ledger with all of the other downstream components set to follow.

We can also finally conclude our work on defining CDDL specification in Haskell as is it is now completely generated from a Haskell definition for all of the eras. Thanks to this effort we not only have a better confidence in the accuracy of our CDDL specification, due to extra type checking and testing we now get thanks to Haskell, but it also reduces duplication and complexity that usedq to stem from manual serialization specification definition for every Ledger era.

Low level summary

Features

  • pull-4778 - Huddle for Alonzo
  • pull-4790 - Add functions to convert hashes to and from VRFVerKeyHash
  • pull-4785 - CDDL:babbage: Switch to using Huddle/Cuddle
  • pull-4792 - Refactor Conway CDDL to reuse Babbage CDDL
  • pull-4776 - Create CLI for plutus-debug
  • pull-4788 - Get rid of crypto parametrization
  • pull-4800 - Move Crypto class to cardano-protocol-tpraos
  • pull-4810 - Deprecate AuxiliaryDataHash
  • pull-4813 - Add a check to MEMPOOL rule that prevents unelected CC from voting
  • pull-4828 - Fix cddl for update_committee cold credential
  • pull-4831 - Cleanup pointer serialization
  • pull-4811 - Integration of MemPack

Testing

  • pull-4783 - Fixed the certStateSpec
  • pull-4780 - Fix issues that prevent basic sumbitTx from passing conformance
  • pull-4766 - Use non-zero costmodels in Imp tests
  • pull-4791 - Move the list of predicate failures inside OpaqueErrorString
  • pull-4796 - Made it possible to use Imp logging in the conformance hook
  • pull-4740 - Constrained generators for EPOCH rule
  • pull-4732 - Tools for constrained generation of types that need witnessing
  • pull-4812 - Enumerate individual conway tests in conformance Imp
  • pull-4801 - Updated SpecTranslate instance of AlonzoScript, debug info improvements
  • pull-4817 - Included the hash in plutus script translation
  • pull-4821 - Enable Imp conformance for DELEG
  • pull-4822 - Improve error handling in constrained genFromSpec
  • pull-4819 - Removed hash size proofs

Infrastructure and releasing

  • pull-4787 - Use cabal-gild to format cabal files
  • pull-4793 - Fix bounds on quichckeck-instances and cardano-crypto-class
  • pull-4795 - Update haskellNix and CHaP and upgrade ghc-9.8.2 to 9.8.4
  • pull-4699 - Upgrade cardano-base dependency
  • pull-4803 - Add missing version bump in cardano-ledger-shelley-ma-test
  • pull-4805 - Add missing version bump in cardano-ledger-alonzo-test
  • pull-4809 - Fix formal-ledger-specifications SRP check in ci
  • pull-4816 - Backport release cardano-ledger-conway-1.18.1.0
  • pull-4815 - Backport release cardano-ledger-conway-1.17.4.0
  • pull-4824 - Pin ghc version in gen-hie CI job
  • pull-4825 - Bump jinja2 from 3.1.4 to 3.1.5 in /doc
  • pull-4833 - cabal.project: Update index-states