Skip to main content

Hydra Team Update

· 3 min read
Noon van der Silk
Software Engineering Lead

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 / FinalPartialFanoutTx transactions #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 from Open and Closed/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 hspec to tasty #2620
  • Validated headId in 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-accumulator to fix musl build 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

What's next?

  • Get a new release out!
  • Add a test that probes how large a UTxO set we can actually (partially) fan out #2616
  • Continue the still-open node-observing-unrelated-Heads deposit issue #2606
  • Land the user-friendly hydra-node configuration file #2581
  • Accept PaymentExtendedKey (HD wallet keys) #2583