Haskell packages
The Hydra project consists of several Haskell packages, each serving distinct parts of the protocol. While some packages are internal and tailored specifically to Hydra, others offer more generic functionalities that could benefit other projects tackling similar challenges. Haddock documentation is provided for most packages.
Public packages
| Package | Description |
|---|---|
| hydra-prelude | Custom Hydra prelude used across other Hydra packages |
| hydra-cardano-api | A wrapper around the cardano-api, with era-specialized types and extra utilities (haddocks unavailable: GHC 9.6.7 haddock panics on the re-exported Cardano.Api types) |
Generic packages
Standalone libraries under libs/, not specific to Hydra:
| Package | Description |
|---|---|
| cborg-generic-tagged | Constructor-name-tagged generic CBOR encoding |
| contra-tracer-json | Structured JSON logging over contra-tracer |
| event-sourcing | Conduit-based event sourcing with a SQLite backend and log rotation |
| io-classes-labelled | Label-attaching wrappers over io-classes STM and async primitives |
| persistent-queue | A crash-safe, file-backed, bounded FIFO queue |
| secret | A type-level barrier for values that must never be shown or serialised |
| test-network-ports | Collision-free localhost TCP port allocation for test suites |
Internal packages
| Package | Description |
|---|---|
| hydra-node | The Hydra node |
| hydra-node tests | The Hydra node test code |
| hydra-tx | Hydra transaction library |
| hydra-tui | Terminal User Interface (TUI) for managing a Hydra node |
| hydra-plutus | Hydra Plutus contracts |
| hydra-cluster | Integration test suite using a local cluster of Cardano and Hydra nodes |

