Ledger Team Update
High level summary
-
CIP-118 - Nested Transactions:
Over the past two weeks the Ledger team has continued to push the Dijkstra era forward on multiple fronts. The CDDL specification of
blockwas updated to match CIP-0176 - Non-segregated Block Body Serialization, a dedicatedblock_bodywas added and anEncCBORGroupinstance forDijkstraBlockBodywas added to unblock downstream integration in Consensus. Serialization forDijkstraTxwas fixed up as well. We also followed up on the Plutus context performance work introduced in the previous update by integratingStAnnTx(the state annotated transaction representation that memoizes the Plutus parts of validation) into theLEDGER,UTXOW,UTXOandMEMPOOLrules across every era. With this integration the performance benefits of the earlier memoization work are now realized end to end. Further work in this area will let us rip the benefits of this optimization upon block construction as well, not just during initial validation. On top of that, several guards were added to the Plutus V1-V3 context translation so that any of the new Dijkstra features that those older language versions cannot represent (subtransactions, direct deposits, balance intervals, etc.) cause translation to fail explicitly rather than silently producing a wrong context. We also did preparation work for running conformance tests in Dijkstra and started reorganizing the test hierarchy around a new class-basedImpSpecapproach that enforces a common set of tests across all eras. -
LedgerHD
The streaming infrastructure for injecting large amounts of data from genesis files, which was started in the previous cycle, has been completed. It now covers stake pools and the remaining state needed for the testing and benchmarking work that targets reading data in constant memory from disk and paves the way for further direct injection into on-disk ledger state.
-
CIP-165 - Canonical Ledger State:
The expansion of the Canonical Ledger State continued with two more namespaces being added under the new namespace-based query interface,
entities/dreps/v0andentities/stake_pools/vrf_key_hashes/v0. -
Maintenance
We've expanded examples and added golden tests for all of the migrated queries from Consensus to Ledger done last cycle. Furthermore we did the same for transaction examples. All of this effort not only will let us remove golden tests unrelated to the Consensus component from the
ouroboros-consensusrepository, but also improve their quality.In addition to features we published the changelog for the recent
cardano-node-11.0release, madeZeroTreasuryWithdrawalsa permanent governance check for every era starting with Conway, instead of not having it in the bootstrap phase. We switchedChainDataandAttributesto useByteArrayinstead ofByteStringto avoid pinned-memory fragmentation. A fewNoThunksinstances were tightened up where consensus needs them for storing on disk and relaxed where the values are already forced to normal form. Finally, we fixed acuddlefailure on PlutusConstrdata and a bug in its definition in the CDDL spec discovered by our new generator-based tooling.
Low level summary
Features
- PR-5787 - Remove redundant import
- PR-5785 - Relax header protocol version for testnets
- PR-5786 - Changelog for
cardano-node-11.0 - PR-5733 - Dijkstra era CDDL for
block, addblock_body - PR-5789 - Integrate
StAnnTxin rules across all eras - PR-5777 - Full support of data injection from genesis files using streaming
- PR-5793 - Change
DijkstraTxdecoder to support variable length encoding - PR-5669 - Fail PlutusV1-V3 translation for non-empty
subTransactionsTxBody - PR-5797 - Make
ZeroTreasuryWithdrawalsa permanent check in gov state transation rule - PR-5700 - Add
entities/dreps/v0namespace - PR-5808 - Relax
NoThunksinstance forBlockTransitionError - PR-5781 - Fail Plutus
V1-V3translation with guards - PR-5813 - Implement
EncCBORGroupinstance forDijkstraBlockBody - PR-5812 - Switch
ChainDataandAttributesto useByteArray - PR-5811 - Fix
TranslateErainstance forDijkstraEraCertState - PR-5743 - Add
entities/stake_pools/vrf_key_hashes/v0namespace - PR-5823 - Add
NoThunksinstances forChainTransitionErrorandChainPredicateFailure - PR-5816 - Import
Rulesasqualified - PR-5799 - Add example transaction golden test for each era
Testing
- PR-5778 - Add golden tests for
queryConstitution - PR-5761 - Expand upon transaction examples by adding missing fields.
- PR-5794 - Add golden tests for the rest of the query result types
- PR-5801 - Fix failing cuddle test for Plutus data Constr.
- PR-5775 - Preparation for conformance testing in Dijkstra
- PR-5803 - Start to re-organize test hierarchy: ImpSpec
- PR-5826 - Fix trace construction in
TestChain
Infrastructure and releasing
- PR-5790 - Bump slackapi/slack-github-action from 3.0.2 to 3.0.3 in the actions group
- PR-5796 - Disable doctest to unblock
master - PR-5806 - Bump
cuddleto 1.7.0.0 - PR-5817 - Bump urllib3 from 2.6.3 to 2.7.0 in /doc
- PR-5822 - Remove weird hyperlinked space between badges
- PR-5758 - Refactor testing in GitHub CI
