Hydra Team Update
· 3 min read
High-level Summary
Big news is that we have merged the partial fanout work!. After many
months of design and review, heads with large UTxO sets can now be fanned out
in multiple steps, each verified on-chain via a BLS accumulator membership
proof, with the chunk size determined dynamically by a binary search so each
step packs in as many outputs as will fit. This removes the long-standing
limit on UTxOs per head. Alongside that, the hydra-tui got a significant
refactor, the test suite moved to tasty, and a handful of correctness fixes
landed around cross-head event contamination and recovered deposits leaking
back into L2.
What did the team achieve?
- Merged partial fanout, including the on-chain validators, BLS accumulator
membership proofs, and the
PartialFanoutTx/FinalPartialFanoutTxtransactions #2324 - Made the fanout chunk size fully dynamic via binary search over fitting tx size, replacing the hardcoded threshold #2617
- Significantly revised
hydra-tui: pending-deposit recovery fromOpenandClosed/Final, dark/light theme toggle persisted to disk, event-history filter, tab navigation, and a per-tab rendering refactor #2590 - Switched the test suite from
hspectotasty#2620 - Validated
headIdin the aggregate function to prevent replayed events from a previous head corrupting the state of a newly opened one #2618 - Fixed a bug where a recovered incremental-commit deposit could reappear in the L2 UTxO after sideloading a snapshot, making the same UTxO spendable on both L1 and L2 #2630, #2629
- Made etcd writes more resilient to resolve a
pumba-style network-partition test failure #2627 - Bumped
rust-accumulatorto fixmuslbuild issues #2622 - Disabled nix store optimisation on CI to work around a macOS dyld issue #2626
- Sped up repeated linting and normal building, and added a small
CLAUDE.md#2625 - Updated docs and changelog to reflect the partial fanout implementation, and documented the remaining large-UTxO limitation #2631
