Skip to main content

Ledger Team Update

· 5 min read
Alexey Kuleshevich
Ledger Team Software Engineer

High level summary

Besides some general improvements and necessary reorganization of testing code here is the list of high level initiatives that we've worked on the last period:

  • Preparation of cardano-node releases:

    We've been working hard on making sure upcoming releases are done in a timely manner. We've identified a couple of issues that needed to be resolved before we could declare cardano-node-10.6.2 a successful mainnet ready release and also discovered a few problems that needed to be taken care of in preparation for the upcoming cardano-node-10.7.0 release and the upcoming intra-era hard fork into protocol version 11. All, but one issue has been resolved. Once the last issue is taken care of, Ledger team will unblock the upcoming cardano-node-10.7.0 release.

  • CIP-118 - Nested Transactions:

    We've made progress on declaring some of the Ledger rules for sub-transactions and restructured the way we deal with UTxO update in the Ledger rules to accommodate support of sub-transactions.

  • CIP-159 - Account Address Enhancement - phase 1:

    Required renaming was done in order to reflect promotion of reward accounts to proper accounts. Also a new "balance intervals" field has been added to the transaction body.

  • CIP-165 - Canonical Ledger State:

    Some nice progress can be reported on implementation of Canonical Ledger State with 3 namespaces getting implemented. There are still many more namespaces to go, but this initial work defines the overall structure that will be adopted for the rest of the Ledger State namespaces.

Low level summary

Features

  • Preparation for cardano-node releases:

    • PR-5569 - Fixup ledger for next release
    • PR-5565 - Prevent decoding Version higher than 11
    • PR-5580 - Fix preservation of a DRep delegation bug
    • PR-5555 - Add Generic instances for ApplyTxError type family
    • PR-5516 - Improve snapshot creation performance
    • PR-5576 - Remove assertions and no longer needed StakePoolParams from SnapShot
    • PR-5545 - Fix laziness in map and mapWithKey for VMap
  • CIP-118 - Nested Transactions:

    • PR-5531 - SUBGOVCERT rule impementation
    • PR-5534 - SUBDELEG rule implementation
    • PR-5542 - SUBGOV implementation
    • PR-5557 - Update UTxOState in UTXO rule rather than UTXOS
  • CIP-159 - Account Address Enhancement - phase 1:

    • PR-5528 - Rename RewardAccount to AccountAddress
    • PR-5530 - Add Semigroup/Monoid for Withdrawals/DirectDeposits
    • PR-5546 - Add AccountBalanceIntervals to DijkstraEraTxBody
  • CIP-165 - Canonical Ledger State:

    • PR-5540 - Canonical Ledger State: introduce blocks/v0 namespace
    • PR-5570 - Implement gov/constitution/v0 namespace
    • PR-5548 - Introduce utxo/v0 namespace for canonical ledger state
    • PR-5552 - Introduce CanonicalCoin type
  • General maintenance and improvements

    • PR-5536 - Dijkstra:CDDL: Remove (un)registration certs
    • PR-5543 - Change Predicate failure with UTxO to NonEmptyMap
    • PR-5539 - Improving re exports

Testing

  • PR-5547 - Update state of Conway formal spec in the README
  • PR-5558 - Accomodate for costmlds change to a Map in the Ledger spec
  • PR-5505 - Added custom generator to address, enabled some Huddle tests
  • PR-5553 - Move Arbitrary instances to cardano-base
  • PR-5571 - Add Imp test to check failure of phase-1 when bootstrap addr + scripts

Infrastructure and releasing

  • PR-5550 - Fix sha256 of cardano-cls SRP stanza in cabal file
  • PR-5561 - Fix nix shell