Skip to main content

SRE Team Update

· 4 min read
John Lotoski
Service Reliability Engineer

High level summary

The SRE team continues work on Cardano environment improvements and general maintenance.

Some notable recent changes, updates or improvements include:

  • Cardano-node 11.0.1 was released which supports the PV11 hard fork!

  • Preview network was upgraded to node 11.0.1 in preparation for the PV11 van Rossem hard fork.

  • A van Rossem PV11 cost model governance vote was cast on preprod.

  • A Leios testnet was stood up in cardano-playground with block producers, relays, dbsync, faucet, and custom alloy-based monitoring.

  • Cardano-parts and cardano-playground were updated with cardano-node 10.7.1, cardano-db-sync 13.7.0.4, mithril 2617.0, Linux kernel 6.18 with ZFS 2.4 for LSM compatibility, and EC2 metadata hardened to require IMDSv2.

  • x86_64-darwin support was dropped from a number of repos ahead of the planned nixpkgs deprecation.

Repository Work -- Merged

Cardano-haskell-packages

cardano-haskell-packages PR#1363:

  • Adds cardano-node-11.0.1 to CHaP

Cardano-monitoring

cardano-monitoring PR#7:

  • Adds a sandbox monitoring server with explicit OAuth allow list
  • Bumps org tags on resources
  • Sets http_tokens to required on EC2 resources for IMDSv2 enforcement

Cardano-node

cardano-node PR#6541:

  • Prepares cardano-node for PV11 as the default protocol version and the experimental hard fork gated to PV12; SRE contributed CI and iohkNix updates

cardano-node PR#6555:

  • Bumps iohkNix for the blst flake input narHash and lastModified update
  • Sets cardano-node cabal version to 11.0.1

Cardano-mainnet

cardano-mainnet PR#44:

  • Resizes most root EBS volumes from 300 GB to 600 GB across all boot, bscale, iog, and iogp machine groups to accommodate chain growth
  • Hardens EC2 metadata to require IMDSv2
  • Updates kernel to 6.18 with ZFS 2.4 overlay for LSM compatibility
  • See the PR description for additional details

Cardano-parts

cardano-parts PR#82:

  • Bumps cardano-node to 10.7.1, cardano-cli to 10.16.0.0, cardano-db-sync to 13.7.0.4, and mithril to 2617.0
  • Sets the default Linux kernel to 6.18 for cardano-node >= 10.7.0 LSM compatibility and updates ZFS to 2.4
  • Fixes the ZFS ARC max null check in the AMI module
  • Hardens EC2 metadata to require IMDSv2 (http_tokens = "required")
  • Adds extraJournalReceivers option to the Grafana Alloy nixosModule for additional Loki journal forwarding targets
  • Adds NODE_CONFIG_SKIP_COPY env var and CARDANO_NODE_SHELL_BIN support to the entrypoint
  • Adds leios environment support to the Justfile with start-node, stop-all, query-tip recipes
  • Adds nix-copy-to-machine and nix-store-pin recipes
  • Adds cardano-node binary override support via flakeModules/pkgs.nix
  • Fixes IPv6 AAAA DNS record creation to be conditional on VPC IPv6 availability
  • See the PR description for additional details

Cardano-playground

cardano-playground PR#57:

  • Adds Leios testnet environment with block producers, relays, dbsync, faucet, and custom alloy-based monitoring filtering for Leios-specific trace namespaces
  • Adds nushell scripts for pool delegation management, UTxO defragmentation, and bulk fund transfers
  • Adds low-threshold guardrails plutus script for playground governance testing
  • Converts mainnet1-rel-a-2 from LMDB to LSM storage backend
  • Consolidates dijkstra relay fleet by removing redundant relay nodes
  • Hardens EC2 metadata to require IMDSv2
  • Updates kernel to 6.18 with ZFS 2.4 overlay for LSM compatibility
  • Updates cardano-book for 10.7.1 release and pre-release configurations
  • See the PR description for additional details

Cardano-sandbox

cardano-sandbox:

  • Creates a new environment for testing major stack re-factors, migrations and other complex test difficult or risky to execute on other live environments.

Iohk-nix

iohk-nix PR#612:

  • Updates useLedgerAfterSlot values and peer-snapshot.json files for node 11.0.0

iohk-nix PR#613:

  • Sets ExperimentalHardFork to false for node 11.0.0 on networks not yet forked to PV11, ensuring compatibility with older node versions

iohk-nix PR#614:

  • Fixes blst flake input with correct lastModified and narHash and sets libblst to explicit version 0.3.15
  • Adds GHA validate flake lock CI for push and PR to catch flake input regressions

Repository Work In Progress -- PRs and Branches

Hydra Team Update

· 2 min read
Noon van der Silk
Software Engineering Lead

What did the team achieve?

  • Continued progress on partial fanout, including KZG trusted setup with G1 accumulator commitments #2582, #2324
  • Potential performance improvement: switched from list to Seq for faster benchmark runs at higher tx counts #2597
  • Fixed file-handle explosion ("Too many open files") by closing connections properly #2588
  • Upgraded mithril compatibility and added a fallback so nix develop works on aarch64-darwin #2596, #2598
  • Updated the pumba flake so it builds on modern mac hardware #2602

What's next?

  • Continue work on partial fanout, set up a secure CRS and perform final code-review! #2573
  • Work on reducing disk usage #2601, #2600
  • Support the upcoming Dijkstra Era #2495
  • User-friendly hydra-node configuration via config file #2581
  • Accept PaymentExtendedKey (HD wallet keys) #2583

Mithril Team Update

· 3 min read
Jean-Philippe Raynaud
Mithril Tech Lead

High level overview

This week, the Mithril team completed the data encoding and state transition tests for the recursive SNARK circuit prototype, as well as the detection of SNARK circuit modifications in the STM library. They continued work on implementing a SNARK-friendly protocol message, the trusted setup validation for the SNARK circuit in the STM library, the implementation of Schnorr signatures in the STM library, and the in-circuit verification tests for the recursive SNARK circuit prototype.

The team also continued work on robust support for unknown and in-progress signed entity types, as well as enforcement of the DMQ message ID format. They completed the ledger state snapshot conversion tests in end-to-end tests and added support for stable and unstable versions of the OpenAPI specification.

Finally, they accelerated SNARK circuit tests in CI, upgraded Node.js 20 GitHub Actions, and fixed flaky nightly tests and circuit golden tests.

Low level overview

Features

  • Completed the issue Add data encoding and state transition tests for recursive SNARK circuit prototype #3191
  • Completed the issue Detect SNARK circuit modifications in STM #3216
  • Worked on the issue Implement SNARK-friendly protocol message #3146
  • Worked on the issue Trusted setup validation for SNARK circuit in STM #2944
  • Worked on the issue Implement support for Schnorr signatures in STM #3136
  • Worked on the issue Add in-circuit verification tests for recursive SNARK circuit prototype #3192
  • Worked on the issue Enforcement of DMQ message id format #3251

Protocol maintenance

  • Completed the issue Accelerate SNARK circuit tests in CI #3162
  • Completed the issue Upgrade Node.js 20 GitHub actions #3173
  • Completed the issue Nightly tests are flaky #3210
  • Completed the issue Test the ledger snapshot conversion in the e2e test #3213
  • Completed the issue Circuit golden tests are flaky in STM #3231
  • Completed the issue Client retrieves an artifact which is not of the expected type #3244
  • Completed the issue Support for stable/unstable versions of Open API #3211
  • Worked on the issue Robust support for unknown and in progress signed entity types #3172
  • Worked on the issue Update all GitHub runners to Ubuntu 24.04 #3246

Consensus Team Update

· 2 min read
Damian Nadales
Consensus Team Lead

High level summary

  • Leios prototype development (Treasury Funding Initiative 4: Ouroboros Leios Implementation):
    • Completed the migration of endorser-block announcements and certification flags from the Ledger Block into the Praos Header, aligning the prototype with the original Leios design (#1978, ouroboros-leios#874, cardano-node#6537).
    • Fixed several bugs in the Leios prototype (#2017).
    • Helped the SRE team stand up a Leios testnet that is now running the prototype (ouroboros-leios#879).
    • Working on the voting prototype (#1963).
    • Continuing to investigate and fix in-memory LeiosDb performance issues observed during the March demo (ouroboros-leios#844, cardano-node#6554).
    • Working on applying Certified Endorser Blocks to the Mempool (ouroboros-leios#838).
  • Ledger-HD (Treasury Funding Initiative 11: Ledger-HD):
    • Refactored consensus type variables so that ledger tables, transaction inputs, and transaction outputs are indexed by the block type rather than the ledger-state shape, collapsing duplicate type-class instances and simplifying the codebase ahead of Ledger-HD integration (#2016, #2019).
  • Releases and integration (Treasury Funding Initiative 17: Maintenance and Support):
  • Documentation (Treasury Funding Initiative 17: Maintenance and Support):
    • Added an explanation page covering the Ticking mechanism used by the consensus layer (#2011).

Ledger Team Update

· 4 min read
Alexey Kuleshevich
Ledger Team Software Engineer

High level summary

Ledger team has made significant progress on Ledger rules for Nested Transactions as well as translation of newer features to Plutus context. We've also introduced a major change to how Plutus context is prepared for each transaction entering a mempool, which when fully integrated will result in significant performance improvements. On the efforts of expanding Ledger we have transferred all of the ledger state queries from Consensus component to the Ledger component, as well as introduced an initial stage of streaming injection functionality that we'll be needed for testing and benchmarking, especially for on disk storage where huge amount of data needs to be injected into ledger state without any impact on the operating memory.

Aside from features we have fixed a few more cddl bugs that we discovered with our new AntiGen and cuddle tools. Improved examples for golden tests and golden tests facilities.

Low level summary

Features

  • PR-5692 - Adjust Dijkstra UTXOW rule to subtransactions
  • PR-5684 - Remove unused FromCBOR/ToCBOR instances
  • PR-5572 - Add streaming interface to era transition for initial funds injection
  • PR-5737 - Fix treasury donations handling for SubTransactions
  • PR-5755 - Clean up CddlSpec, fix Datum and AccountBalanceIntervals generators
  • PR-5736 - Fix DecCBOR instances to reject ProtVer values exceeding the era maximum
  • PR-5636 - Memoize Plutus related parts of transaction validation
  • PR-5764 - Bring all remaining queries from consensus over to ledger
  • PR-5767 - [Leios Prototype] Backwards compat fix
  • PR-5757 - Remove allowLeftOver flag from binaryGetDecoder and simplify IP address decoders
  • PR-5754 - Fail PlutusV1-V3 translation for direct deposits and balance intervals
  • PR-5770 - Simplify Dijkstra constraints
  • PR-5751 - UTXO with subtransactions
  • PR-5747 - Add gov/proposals/roots/v0 namespace
  • PR-5742 - Add entities/stake_pools/v0 namespace

Testing

  • PR-5749 - Fix and re-enable BbodysSec
  • PR-5687 - Convert pool related CHAINExamples to ImpTests
  • PR-5732 - Expand transaction content in examples in Test.Cardano.Ledger.[era].Examples
  • PR-5753 - Use hspec-golden for Alonzo golden tests
  • PR-5760 - Golden testing facilities for JSON and CBOR
  • PR-5731 - Add negative tests for Metadatum int decoding range
  • PR-5765 - Add a custom generator to cost_models, create Huddle.Gen module

Infrastructure and releasing

  • PR-5750 - Run tests for ghc 9.6.7 only
  • PR-5756 - Bump actions/upload-pages-artifact from 4 to 5 in the actions group
  • PR-5766 - Drop x86_64-darwin from Hydra builds
  • PR-5768 - Bump slackapi/slack-github-action from 3.0.1 to 3.0.2 in the actions group
  • PR-5594 - Test failure summaries in CI
  • PR-5774 - Handle single failing suite case in CI test failure summaries