Hydra Team Update
· 4 min read
High-level Summary
We've published the 2.2.0 release! It bundles up the partial fanout work and the
hydra-tui revamp from the last couple of updates, together with a much richer
benchmark suite (real-world TPS metrics, a Mixed UTxO generator, and a new
matrix sub-command that sweeps cluster sizes and UTxO shapes, published to a
scenario benchmarks
page). On top of that we unified the on-chain membership checks around the BLS
accumulator, which shrinks the snapshot-signing tuple and removes a pile of now
redundant hashing, and started optimising snapshot processing so script-heavy
heads don't pay to re-evaluate Plutus they've already validated.
What did the team achieve?
- Released 2.2.0, packaging partial fanout, the
hydra-tuirevamp, and the new benchmarking work, with the changelog and network config updated accordingly - Unified the membership checks: the three separate UTxO hash fields
(
utxoHash,alphaUTxOHash,omegaUTxOHash) collapse into a singleaccumulatorHashderived from the BLS accumulator, shrinking the snapshot signing tuple from 7 fields to 4, and full fanout now verifies outputs via a KZG membership proof (the same path as partial fanout) rather than a hash comparison #2619 - Started a snapshot-side throughput optimisation: transactions already
validated on receipt are now re-applied via
reapplyTx, skipping redundant Plutus script evaluation on the hot path, with a fallback to full application when a commit or decommit changes the active UTxO #2717 - Extended PR benchmarking: a "TPS" count (both waiting for
TxValidand firing as fast as possible then counting confirmed-snapshot txns) #2635, and a benchmark comparison comment showing the PR-vs-masterdifference #2721 - Added a head-state visualisation tool for inspecting single states and diagnosing multi-party scenarios #2719
- Added a
mustNotMintOrBurnguard to theIncrementandDecrementvalidator transitions, consistent with all the other head transitions #2718, #2697 - Further validator fixes:
CloseInitialnow constrains the accumulator commitment, and theHeadStatusschema and Haskell types agree onFinal#2712 - Removed leftover
CollectCom/Aborthandling missed in the original "directly open head" work #2709 - Switched to
makeIsDataIndexedinstead ofunstableMakeIsDatafor stable on-chain constructor indices #2724, #2713 - TUI fixes: the increment dialog no longer re-queries L1 UTxO state every time (it reuses the cached value and lets you refresh if you want) #2726, plus more small fixes #2710 and a fix for flakey TUI tests #2708
- Merged a handful of simple fixes across smaller issues #2715
- Added deposit and recover transition tests and tidied up some others #2711
- CI and tooling: more nix caching by building derivations with
-Werrorto matchnix flake check#2720, addedetcdto the exes shell so smoke tests can run a systemetcd#2722, and skipped the preprod-with-mithril path while it's offline #2723
