High level summary
Currently there are a few important high level tasks that Ledger team is focused on:
Continue working on defining Ledger validation rules for CIP-118 - Nested Transactions:
One of the major milestones in the last month was actually getting the CIP merged, which means we were able to solidify the design as well as identify a few new and very important use cases that Nested Transactions will bring to the table.
On the implementation side we've had some very nice progress with full definition of binary format and Haskell representation of a Dijkstra era transaction and its sub-transactions. We've also defined the full Ledger rules structure for Nested Transaction, albeit mostly with placeholder logic for now. Implementation for the logic in those rules is one of the main focus points for the upcoming weeks.
Started working on the first phase of CIP-159 - Account Address Enhancement
This is a very much anticipated CIP, because it will finally allow micropayments in ADA, once released with the Dijkstra era. We have so far defined one of the new fields in the transaction and performed some of the necessary code changes in preparation for this work.
Improvements on how CDDL specification is defined and how conformance testing against it is performed.
We had incredible progress on improving how CDDL is defined. We've performed major refactoring of
cuddle, which is the tool that we use for defining CDDL specification. We have designed a very nice interface for writing those definitions that drastically reduces duplication from era to era, thus improving safety of new definitions. Removal of a few bugs in the CDDL specification was a good testament to this effort. Moreover, we added the ability to supply custom value generators, which will allow us to test aspects of CDDL specification that were previously impossible to test due to the limited nature of CDDL expressiveness.Furthermore, we just released a new tool
antigen, which we are in process of integrating intocuddle, which once complete will let us write negative property tests for Ledger decoders. It might not sound like much, but it will in fact protect us from a whole class of deserialization bugs, such as one that happened on mainnet two months ago.
Besides those major points above, since the last update, Ledger team:
- has gotten CIP-0167 - Remove isValid from transactions accepted and fully implemented in Ledger.
- addressed quite a bit of technical dept and added further improvements to the Ledger testing framework.
Low level summary
Features
- PR-5458 - Added Dijkstra
UTXOrule and collateralPtrcheck - PR-5439 - Add Peras certificate to the block body
- PR-5456 - CDDL with typeclasses: conway
- PR-5467 - Add optional previous epoch Nonce to BHeaderView
- PR-5471 - CDDL with typeclasses: Dijkstra
- PR-5478 - CDDL: Switch to using HuddleSpec everywhere
- PR-5475 - Change all List to NonEmpty in predicate failures
- PR-5476 - Add Peras Certificate validation
- PR-5472 - Update to cuddle 1.1
- PR-5484 - Fix MultiAsset cddl definition in dijkstra
- PR-5483 - CDDL: Add HuddleRule1 typeclass for set functions
- PR-5480 - Skip
isValidflag in transaction (de)/serialization - PR-5479 - Change all error Sets to NonEmptySets in predicate failures
- PR-5490 - Dijkstra subtx produced and consumed
- PR-5464 - Switch
minFeeAtoCoinPerByteand renameminFeeparameters - PR-5461 - Swap Mempool/Ledger predicate failures in Dijkstra
- PR-5485 - CDDL typeclasses with implicit naming
- PR-5496 - Rename policy_hash to guardrails_script_hash
- PR-5491 - Nested transactions rules
- PR-5493 - Change all error Maps to NonEmptyMaps in predicate failures
- PR-5507 - Rename atadPlutus and atadrPlutus
- PR-5499 - Switch PoolMetadata.pmHash to ByteArray
- PR-5518 - CDDL: Remove header_body discrepancy
- PR-5517 - MemoBytes avoid space leaks
- PR-5506 - Prevent sub-tx-ids to be spent in the same tx.
- PR-5519 - Change Version from Word64 to Word32.
- PR-5523 - Add more constraints on
ApplyTxError - PR-5524 - Add direct-deposits field to transaction body
- PR-5522 - Implement events and failures in rules running nested transactions
- PR-5526 - SUBPOOL rule implementation
- PR-5512 - Move DelegateeNotRegisteredDELEG from DELEGS to DELEG in Shelley
Testing
- PR-5459 - Add reverse delegations assertion
- PR-5468 -
Arbitraryinstance forDijkstraBlockBody - PR-5424 - Add CBOR golden tests
- PR-5404 - Implement block-submitting Imp functions
- PR-5392 - Translate all tests from
AlonzoBBODYto Imp test - PR-5466 - Add Imp tests to cover more cases of active/inactive committee
- PR-5473 - Update formal-ledger-specification and enable tests
- PR-5521 - Add Imp test to check that SPO votes are validated against tx witnesses
