Skip to main content

71 posts tagged with "ledger"

View All Tags

· 3 min read
Alexey Kuleshevich

High level summary

This period we have finally finished significant refactoring on how we represent reward account state in the Ledger codebase, which not only allowed us to completely get rid of pointers in Conway era, but also drastically reduced complexity of accounts functionality and improved Ledger performance. More importantly this refactoring made accounts more extensible and will in future facilitate new features like: changes needed for Leios, full Chimeric Ledger through promotion of reward accounts to proper accounts, as well as ability to store multi-assets in the Treasury and submitting TreasuryWithdrawals governance actions that withdraw other assets except ADA.

Furthe more, we progressed with some features for the next intra-era hard fork as well as for the next Dijkstra era. We've implemented a long asked feature to report the pre-image of the script integrity hash upon validation failures, which will improve user experience and is planned to become available upon the next intra-era hardfork. With respect to Dijkstra implementation we've added new protocol parameters for values that ended up being hard coded in the Conway era. We also started on CDDL specification for the next era.

Besides that we had some progress on improving our test suite, took care of some technical debt and reduced complexity of certain aspects of Ledger implementation.

Low level summary

Features

  • PR-5156 - Rename EraSegWits to EraBlockBody and TxSeq to BlockBody
  • PR-5128 - Stop using UMap in favor of Accounts type family
  • PR-5179 - Add mkBasicBlockBody{Shelley,Alonzo} and txSeqBlockBody{Shelley,Alonzo}L
  • PR-5164 - Added DijkstraPParams
  • PR-5182 - Remove tx wrappers
  • PR-5163 - Change the type of dRepDeposits to CompactForm Coin
  • PR-5178 - Dijkstra: Prevent empty MultiAsset
  • PR-5172 - Replace PPViewHashesDontMatch with ScriptIntegrityHashMismatch starting from PV 11
  • PR-5192 - CDDL for Dijkstra

Testing

  • PR-5173 - Add a nix sha256 for the constrained-generators srp
  • PR-5059 - Translate some tests from BabbageFeatures to Imp test
  • PR-5180 - Fix for CERTS constraint generators
  • PR-5188 - SRP for constrained generators via nix inputs
  • PR-5189 - Update and fix formal-ledger-specifications
  • PR-5193 - Translate tests from BabbageFeatures to Imp test (part 2)

Infrastructure and releasing

  • PR-5185 - Update data-files in Dijkstra cabal file to fix tests failing in hydra

· One min read
Alexey Kuleshevich

High level summary

This period we continued with tackling tech debt, implementing improvements that are necessary for the next Dijkstra era and we prepared the Dijkstra era for proper integration into all other components. Besides this we made various improvements to the constrained-generation library and prepared it for an initial release.

Low level summary

Features

  • PR-5136 - Dijkstra for consensus
  • PR-5145 - Fix MultiAsset CDDL spec in Mary and Alonzo
  • PR-5140 - Refactor max refscript size check
  • PR-5097 - Change Tx to an associated data type
  • PR-5165 - Improve PParamsUpdate application in Conway
  • PR-5031 - Change the type of psDeposits to CompactForm Coin

Testing

  • PR-5139 - constrained-generators: Clean up the API
  • PR-5144 - Remove *Field data types from Generic tests
  • PR-5162 - Update formal-ledger-specifications
  • PR-5155 - constrained-generators: Improve haddocks

Infrastructure and releasing

  • PR-5152 - Replaced the broken link nix
  • PR-5171 - Migrate constrained-generators to its own repo

· One min read
Alexey Kuleshevich

High level summary

This is a slow season when people usually take vacation, for this reason there is not that much to report. We have defined PlutusV4 for Dijkstra, which for now only acts as a placeholder and is semantically equivalent to PlutusV3. Besides that we've done some code cleanup and a serialization bug fix for pre-Conway eras.

Low level summary

Features

  • PR-5098 - Hardfork triggers
  • PR-5135 - Fix AlonzoPlutusPurpose CBOR instances
  • PR-5111 - Add PlutusV4 definition

Testing

  • PR-5044 - Add documentation Manual.md and DesignPrinciples.md
  • PR-5134 - constrained-generators: Get rid of a bunch of uses of dom_
  • PR-5120 - Removed TxField
  • PR-4888 - Added a test

Infrastructure and releasing

  • PR-5133 - Bump urllib3 from 2.3.0 to 2.5.0 in /doc

· 3 min read
Alexey Kuleshevich

High level summary

Unfortunately, due to the ZuriHac conference, we ended up skipping the Ledger update for the last period, therefore this update contains our accomplishments over the period of four weeks.

Extensive investigation into current CDDL specification and efforts of improving our testing tools lead to discovery and fixes of numerous bugs in CDDL specification dating back all the way to the Byron era. We have also improved readability of Ledger CDDL specification through enhancements to our CDDL generation tool. We have further tackled a whole bunch of tech debt and introduced performance improvements. Thanks to dropping support for ghc-8.10 we were able to add some safety improvements as well, that utilize features of the newer compiler.

Besides improvements to the existing code we have started preparation for an upcoming intra-era hard fork, which is planned to happen some time later this year and the new Dijkstra era that will happen no earlier than next year. We have fixed one more bug in preparation for the intra-era hardfork and started preliminary work for Nested Transactions.

Low level summary

Features

  • PR-4996 - CDDL improvements
  • PR-5073 - CDDL fixes
  • PR-5056 - Reinstate Annotator instances to main libs
  • PR-5079 - Fix RequiresNetworkMagic encoding
  • PR-5038 - Remove MemoBytes from ShelleyTx
  • PR-5085 - Also make Conway's pool metadata_hash be just bytes
  • PR-5090 - Renamed AlonzoTx fields
  • PR-5086 - Protocol version upper bound correction
  • PR-5080 - Remove MissingRequiredSigners
  • PR-5089 - Move era definitions to core:internal
  • PR-5030 - Added Dijkstra era
  • PR-5100 - Untaint era definitions, while preserving the safety warning.
  • PR-5109 - Add PParamUpdate minPoolCost to Shelley/Allegra/Mary CDDL
  • PR-5106 - Introduce KeyValuePairs for easier ToJSON deriving
  • PR-5104 - Dijkstra Era Transition functionality
  • PR-5099 - Fix COMPLETE pragmas for TxCert and NativeScript
  • PR-5116 - Simplify ToJSON instance for TransitionConfig
  • PR-5091 - Move unelected CC votes check to GOV
  • PR-5127 - Pure version of plutusDebug
  • PR-5122 - Memoize block body hash computation
  • PR-5125 - Faster upgradeTxOut for alonzo, babbage and conway

Testing

  • PR-4966 - Remove Pretty from cardano-ledger-test
  • PR-5061 - constrained-generators: Simplify HasSpec instance for Bool and move more things to NumSpec
  • PR-5083 - Remove old version of constrained generators
  • PR-5082 - Add doctests to CI
  • PR-5078 - Fix typos, formatting, and broken references in the shelley-ma formal spec PDF
  • PR-5102 - Add an imp test for checking deposit collection and refunds
  • PR-5118 - Fix stake comparison test
  • PR-5088 - Move upgrade functions for tx, body, auxData and wits to testlib
  • PR-5117 - constrained-generators: Separate generation and internal testing out of common modules

Infrastructure and releasing

  • PR-5074 - Bump .git-blame-ignore-revs
  • PR-5081 - Add script for setting up direnv
  • PR-5092 - Fix hackage nix in flake
  • PR-5110 - Upgrade deprecated Sphinx config option in doc/
  • PR-5107 - doctest in nix develop
  • PR-5112 - Remove ghcid related files
  • PR-5114 - cabal.project: Update index-states and drop un-needed SRPs
  • PR-5113 - Bump requests from 2.32.3 to 2.32.4 in /doc

· 2 min read
Alexey Kuleshevich

High level summary

Last period we were finally able to drop support for older GHC versions. We also made some cleanup that was necessary as preparation work for further refactoring that is underway, which is necessary for both Leios and Nested Transactions. Refactoring definitions of protocol parameters is quite an accomplishment, since it drastically reduces complexity and eliminates unnecessary duplication for all eras. This refactoring not only reduced amount of code around protocol parameters for previous eras, but will also drastically simplify the process of adding new protocol parameters in the future eras.

Low level summary

Features

  • PR-5028 - Deprecate balance in favor of a better named sumUTxO
  • PR-5034 - Rename ppLens and ppuLens to make them more specific
  • PR-5027 - Refactor PParams CBOR, JSON and Plutus Data serialization for reuse across eras and serializers
  • PR-5007 - Remove ConwayNewEpochPredFailure
  • PR-5011 - Ensure BabbageNonDisjointRefInputs is only checked for PlutusV3 scripts
  • PR-5057 - Change Byron EBB stakeholderid to zero-or-more
  • PR-5066 - Fix occurrence of items in maps in byron.cddl
  • PR-5053 - Fix COMPLETE pragma for NativeScript ShelleyEra

Testing

  • PR-5016 - Bump formal-ledger-specifications
  • PR-5012 - constrained-generators: Split abstract syntax out of Base.hs
  • PR-5037 - Some hacking on improving error messages for lists
  • PR-5049 - Golden tests for PParamsUpdate JSON serialization

Infrastructure and releasing

  • PR-5029 - Remove GHC 8.10 from nix-flake and GHA
  • PR-5040 - Update to fourmolu-0.17.0.0
  • PR-5041 - Update ghc versions
  • PR-5039 - Bump base
  • PR-5051 - Update the haskellNix flake input
  • PR-5055 - Update the iohkNix flake input
  • PR-5060 - Move the shellcheck CI into the main workflow file