Skip to main content

58 posts tagged with "ledger"

View All Tags

· 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

· One min read
Alexey Kuleshevich

High level summary

This period we have discovered and fixed a bug in ledger that was also backported in a patch release of cardano-node-10.1.3. The bug manifests itself in the protocol version 10 and affects DRep delegations. It does not affect mainnet in a meaningful way, because DReps cannot yet vote on any proposal that affects the ledger state or the chain. However, in order to have the correct behavior in the protocol version 10 we do need to use this patched version.

Besides this bugfix we continued working on testing and taking care of some tech dept. We also added a new ledger state query that allows asking the node for current DRep voting stake distribution.

Low level summary

  • pull-4764 - Add registered DRep stake distribution query
  • pull-4748 - Add Conformance.Imp: imptests with conformance
  • pull-4767 - Simplify working with current epoch number
  • pull-4773 - DRep undelegation fix
  • pull-4774 - Backport release: cardano-ledger-conway-1.17.3.0
  • pull-4777 - Upgrade to plutus-ledger-api 1.37.0.0
  • pull-4779 - Change type of nOpt pparam to Word16

· 2 min read
Alexey Kuleshevich

High level summary

The most notable change this period is extraction of a testing framework ImpSpec that we developed for testing Ledger implementation. This meant extracting reusable functionality, packaging into a seperate library and releasing it to Hackage.

Most of the efforts are still dedicated to improving our tests and working on conformance testing.

Low level summary

Features

  • pull-4765 - Pass epochNo from BBODY instead of re-computing it in downstream rules

Testing

  • pull-4743 - Fix looping issue in constrained-generators
  • pull-4741 - Various executable spec improvements
  • pull-4746 - Added LEDGERS conformance
  • pull-4747 - Fixed translation of StakeReference
  • pull-4700 - Test SPO vote counting
  • pull-4744 - Guardrail in Imp genesis
  • pull-4745 - Extract ImpSpec into its own package
  • pull-4739 - Improve the propagation of explanations when a Spec fails.
  • pull-4755 - constrained-generators: Fix test failure related to narrowing of fold specs
  • pull-4708 - Continue implementing the tests in Alonzo.Imp.UtxowSpec.Valid
  • pull-4756 - Updated spec to fix a conformance failure

Infrastructure and releasing

  • pull-4750 - Update CHaP and Hackage
  • pull-4763 - Move ImpSpec into its own repo
  • pull-4758 - Add a hidden skiplist file for git fsck and a note about using it
  • pull-4759 - Documented RatifyState

· 2 min read
Alexey Kuleshevich

High level summary

Features that were implemented this period are mostly internal improvements to the quality of code. The only feature that stands out from this is the addition of a new query that allows users to learn the default vote for a particular Stake Pool Operator. Much improvement has also happened on the conformance testing side, as well as to the rest of the test suite.

Low level summary

Features

  • pull-4666 - Mismatch for Conway predicate failures
  • pull-4711 - Use Mismatch for Shelley, Mary, Allegra, Alonzo, Babbage
  • pull-4722 - Create specialized newtype VRFVerKeyHash
  • pull-4557 - Define CDDL via Huddle in shelley-ma
  • pull-4733 - Alternative approach to Annotator
  • pull-4735 - Add queryStakePoolDefaultVote state query
  • pull-4737 - Remove deprecated and unused definitions

Testing

  • pull-4718 - Avoid intermittent test failures in constrained-generators
  • pull-4712 - (NonEmpty x) in MemberSpec
  • pull-4713 - Better bootstrap-aware Imp tests
  • pull-4730 - constrained-generators: fix flaky test
  • pull-4729 - Added RewardUpdate spec translation
  • pull-4720 - Add CC removal imptest with UpdateCommittee
  • pull-4728 - Add a balanced TxBody specification
  • pull-4736 - Pass the signature checking function to Agda
  • pull-4719 - constrained-generators: Better shrinking for SuspendedSpec

Infrastructure and releasing

  • pull-4717 - Speedup CI by disabling unnecessary steps
  • pull-4714 - Add changelog entry for cardano-node-10.1
  • pull-4734 - Update index state

· 2 min read
Alexey Kuleshevich

High level summary

Final changes for the next Hard Fork to protocol version 10.0:

  • Ensure that it is still possible to unregister the reward account and withdraw the funds in the same transaction
  • Fix a bug in recently introduced feature, which ensures DRep existence for all stake credential delegations.

More Conway testing and continued progress on conformance tests.

Low level summary

Features

  • pull-4684 - Revert Mismatch-related changes of ShelleyPoolPredFailure serialization
  • pull-4661 - Add GovRemovedVotes event
  • pull-4697 - Minor fixups from internal audit
  • pull-4709 - Fix drep delegation invariant preservation
  • pull-4715 - Adjust semantics of ConwayWdrlNotDelegatedToDRep

Testing

  • pull-4683 - constrained-generators: Improve some error messages
  • pull-4689 - Set maxTxSize relative to generated tx in Utxo conformance tests
  • pull-4680 - constrained-generators: More tests for append and singleton
  • pull-4665 - Remove the proposals workaround from UTXO conformance, add LEDGER conformance
  • pull-4705 - Implement some of the tests in Alonzo.Imp.UtxowSpec.Valid
  • pull-4707 - Add imp tests for drep delegation
  • pull-4677 - Added example Tx specification

Infrastructure and releasing

  • pull-4681 - Update CHANGELOG files following release for 10.0
  • pull-4686 - Bump up version in cardano-ledger-shelley changelog
  • pull-4688 - Add nix develop to main README.md
  • pull-4701 - Ensure repo is buildable on Windows
  • pull-4656 - Align with Governance audit
  • pull-4706 - Add changelog section for cardano-node-10.0 and 9.2.1
  • pull-4710 - Cardano ledger conway 1.17.1.0
  • pull-4716 - Release/cardano ledger conway 1.17.2.0