Tags: cardano-scaling/hydra
Tags
[1.0.0] - 2025-10-08 - Accept additional field `amount` when depositing to specify the amount of Lovelace that should be depositted to a Head returning any leftover to the user. [#2180](#2180) - Add `--blockfrost-query-timeout` and `--blockfrost-retry-timeout` to configure Blockfrost API timeouts. See the [corresponding issue](#2058) and [PR](#2267) for more details. - Fix bug where TUI would have out-of-date head status information after restarting on a rotated node (due to event rotation). - Hydra API server responds with the correct `Content-Type` header `application-json`. - Add `Environment` to `Greetings` message, enabling clients to access runtime settings. - Bugfix for incorrect logic around fanning out with decommit/commit in progress - Hydra node now rejects requests for incremental commits if provided UTxO is below the limit. - Add API endpoint `POST /transaction` to submit transaction to the head. - Improve HTTP API status codes for side-effecting endpoints to reflect operation outcome: - `POST /snapshot`: 200 on successful side-load, 400 on validation failure, 202 on timeout - `POST /decommit`: 200 on finalize, 400 on invalid/failed, 202 on timeout - `DELETE /commits/:txid`: 200 on recovered, 400 on failed, 202 on timeout - See [Issue #1911](#1911) and [PR #2124](#2124). - Tested with `cardano-node 10.4.1` and `cardano-cli 10.8.0.0`. - **BREAKING** Rename `--script-info` option to `--hydra-script-catalogue` in the `hydra-node` CLI. - Label threads, queues and vars. - **BREAKING** Enable handling client recover in all head states. - See [Issue #1812](#1812) and [PR #2217](#2217). > This enables clients (e.g. the TUI) to fully recover after event-log rotation. - The Checkpoint event, and consequently the EventLogRotated server output, now carry the full NodeState instead of just the HeadState. - Optimistic approach to statefile corruption by just ignoring invalid JSON lines [#2253](#2253) - Select next deposit for ReqSn using FIFO, based on deposit created. - See [#2263](#2263)
[0.22.4] - 2025-08-05 - Fix API not correctly handling event log rotation. This was evident in not being able to use `/commit` although the head is initializing or outdated information in the `Greetings` message. - Ignore snapshot signatures of already confirmed snapshots. This was previously resulting in the node waiting for the accompanying snapshot request and occurred when running heads with mirror nodes. - Fix an internal persistent queue blocking after restart when it reached capacity. - Timeout and retry broadcast of network messages after 3 seconds in case the `etcd` grpc server is not responsive. This should avoid build-up on the outbound persistent queue. - Handle failing lease keep alive in network component and avoid bursts in heartbeating. - Fix for blocking bug when broadcasting messages via etcd. See: #2167. This is not a full fix but is enough to resolve the problem until we can identify the central cause of the issue. - Fix rotation log id consistency after restart by changing the rotation check to trigger only when the number of persisted `StateChanged` events exceeds the configured `--persistence-rotate-after` threshold. * This also prevents immediate rotation on startup when the threshold is set to 1. * `Checkpoint` event ids now match the suffix of their preceding rotated log file and the last `StateChanged` event id within it, preserving sequential order and making it easier to identify which rotated log file was used to compute it.
[0.22.3] - 2025-07-21 * Change behavior of `Hydra.Network.Etcd` to fallback to earliest possible revision if `last-known-revision` is missing or too old. This can happen if a node is down for a long time and the `etcd` cluster compacted the last known revision in the meantime [#2136](#2136). - Don't keep around invalid transactions as they could lead to stuck Head.
[0.22.0] - 2025.06.17 - Tested with `cardano-node 10.1.2` and `cardano-cli 10.1.1.0`. - Fix tutorial usage of `cardano-cli` and include download of `etcd`. - Remove runtime dependency to `etcd` by embedding and shipping it with `hydra-node`. - New option `--use-system-etcd` to prefer the system etcd instead of the embedded one. - Add file-based event log rotation support via optional `--persistence-rotate-after` command line option. - **BREAKING** Update scripts to plutus 1.45.0.0. - Hydra will now store etcd cluster information on the filesystem in directories content-addressed by the cluster configuration. - **BREAKING** Fixed observation of deposit transactions: - Correctly ignore deposits with deadlines in the past or too soon in the future. - Replaced `--deposit-deadline` with `--deposit-period`. - To make sure a deposit is picked up ensure that `--deposit-period` is longer than `--contestation-period`. - Change persisted events of `hydra-node`. - Change to the `ReqSn` message in the Hydra network protocol - Added `DepositExpired` for when a deposit was deemed expired. - Enable blockfrost integration for hydra-node. - Fix head status in post abort greetings output. - Add `UDP` and `S3` examples for `EventSource` and `EventSink` implementations to `hydra-node:examples`. - Switch `hydra-chain-observer` to use `HeadObservation` when reporting observations to `hydra-explorer`. - Most observation types got changed quite a lot to match the previously used `OnChainTx`. - This introduces `ToJSON` and `FromJSON` instances on all observation types. - `CollectComObservation` and `ContestObservation` are made compatible with their `OnChainTx` counterparts. - Enhanced the error message for `etcd` cluster ID mismatches by including detailed information about the expected peers versus peers loaded from the `hydra-node` arguments. - Add API query (GET /head) to fetch the latest head state by a node and help introspecting the whole internal state. - Provide `--network` option to hydra-node in order to use pre-published hydra scripts.
[0.21.0] - 2025-04-28 - **BREAKING** Switch to using `etcd` internally to establish a reliable L2 network - New run-time dependency onto `etcd` binary - The peer network options to `hydra-node` (`--peer`) need to match across the Hydra network. - `--host` and `--port` have been removed and we now have `--listen` and `--advertise`. - `--listen` can be the same as the old `--host/--port` combined, but you may require `--advertise` to set your _public_ IP address and port combination, if you cannot bind to that on the local machine. - Adds `NetworkConnected` and `NetworkDisconnected` outputs which are most indicative of whether the L2 network is up or not. - Change `PeerConnected` and `PeerDisconnected` to indicate connectivity to `--peer` items and not the remote `node-id`. - Change `PeerHandshakeFailure` to a network-level `NetworkVersionMismatch` - Log outputs related to the network components changed significantly. - Persisted state (write ahead logs) of the network components changed significantly. The `<persistence-dir>/etcd` directory must not be lost or manual action to recover the L2 network (etcd cluster) with counter-parties needs to be taken. - To configure the `etcd` instance used internally, you may use `ETCD_` environment variables. For example, to switch auto-compaction to periodic retention of 7 days: ``` ETCD_AUTO_COMPACTION_MODE=periodic ETCD_AUTO_COMPACTION_RETENTION=168h ``` - **BREAKING** Enable multi-party, networked "offline" heads by providing an `--offline-head-seed` option to `hydra-node`. - Drop `hydra-node offline` as a sub-command. Use `--offline-head-seed` and `--initial-utxo` options to switch to offline mode. - **BREAKING** API changes - API Server does **NOT** serve the event history by default any more. Clients need to add a query parameter `?history=yes` in order to obtain the history. - Remove `GetUTxO` client input and corresponding `GetUTxOResponse`. There is already a way to query the `UTxO` in the Head with `GET /snapshot/utxo` query. - Renamed 'CommitFinalized' field 'theDeposit' to 'depositTxId'. - We now store the `time` in `StateEvent` which is a breaking change to our persistence loading - Query parameter `?address=..` does **NOT** filter `TxValid` and `TxInvalid` server outputs anymore. - Removed the `transaction` from `TxValid` server outputs. Use `SnapshotConfirmed` to determine what transactions got confirmed intead! - Fix a bug in increment observation where wrong deposited UTxO was picked up. - Fix a bug where incremental commits / decommits were not correctly observed after restart of `hydra-node`. This was due to incorrect handling of internal chain state [#1894](#1894) - Fix a bug where decoding `Party` information from chain would crash the node or chain observer. - A problematic transaction will now be ignored and not deemed a valid head protocol transaction. - An example was if the datum would contain CBOR instead of just hex encoded bytes. - Fix a bug on HeadFannedOut as it should always display the observed fanned-out UTxO instead of local confirmed snapshot. - API Additions - Add query (GET /snapshot/last-seen) to fetch the latest seen snapshot by a node and help identify non-cooperating peers. - Add command (POST /snapshot) to adopt the given snapshot as the latest confirmed. * add new `SideLoadSnapshot` client input. * add new `LocalStateCleared` state changed event. * add new `SnapshotSideLoaded` server output. * add new `SideLoadSnapshotFailed` logic error. - Changed default contestation period to 600 seconds and deposit deadline to 3600 seconds. - Add support for "withdraw zero trick" transactions: - Any transaction with a `Rewarding` redeemer for a `Withdrawal` of `0 lovelace`, will be validated as if there would be a corresponding stake `RewardAccount` already registered. - No need to register the script's stake address before. - Remove checks that rely on hydra-node's local state and trust on-chain data when we observe decrement/recover transactions. - Publish scripts using blockfrost via new `hydra-node publish-scripts --blockfrost` option. - New metric for counting the number of active peers: `hydra_head_peers_connected` - Record used and free memory when running `bench-e2e` benchmark. - Submit observations to a `hydra-explorer` via optional `--explorer` option. - Add a list of [clients](https://hydra.family/head-protocol/unstable/docs/clients) to the docs - Stream historical data from disk in the hydra-node API server.
PreviousNext