From d4f242b68069765117e7c615101df17708de40a2 Mon Sep 17 00:00:00 2001 From: Sebastian Nagel Date: Thu, 27 Oct 2022 11:18:27 +0200 Subject: [PATCH] Release version 0.8.0 --- CHANGELOG.md | 68 ++++++++++--------- README.md | 2 +- demo/docker-compose.yaml | 12 ++-- docs/docs/getting-started/installation.md | 2 +- .../current/getting-started/installation.md | 2 +- hydra-cardano-api/hydra-cardano-api.cabal | 2 +- hydra-node/json-schemas/api.yaml | 2 +- hydra-plutus/hydra-plutus.cabal | 2 +- hydra-prelude/hydra-prelude.cabal | 2 +- hydra-test-utils/hydra-test-utils.cabal | 2 +- .../aws/scripts/configure-testnet.sh | 2 +- .../gcp/scripts/configure-testnet.sh | 2 +- sample-node-config/nixos/README.md | 2 +- sample-node-config/nixos/hydraw.nix | 2 +- 14 files changed, 55 insertions(+), 49 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f70e521f10..3995e913a16 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,57 +8,63 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 As a minor extension, we also keep a semantic version for the `UNRELEASED` changes. -## [0.8.0] - UNRELEASED +## [0.8.0] - 2022-10-27 -- **BREAKING** Keep track of `contestationDeadline` instead of `remainingContestationPeriod` and fix `ReadyToFanout`. +- **BREAKING** Hydra keys now use the text envelope format. + + `hydra-tools` executable now produces keys in the same format as cardano keys so this should make key handling simpler. + + Take a look at the [example](https://github.com/input-output-hk/hydra-poc/blob/master/docs/docs/getting-started/quickstart.md#hydra-keys) on how to use `hydra-tools` to generate necessary hydra keys. + +- **BREAKING** hydra-node command line flag `--node-id` is now mandatory. + + Instead of `Host` we are using the `node-id` in the server messages like + `PeerConnected/Disconnected` which are also used in + + the TUI to distinguish between different connected peers. + + This also changes the way how `NodeId`s are represented on the API. + +- **BREAKING** Keep track of `contestationDeadline` instead of `remainingContestationPeriod` and fix `ReadyToFanout`. [#483](https://github.com/input-output-hk/hydra-poc/pull/483) + Clients can now rely on `ReadyToFanout`, such that sending a `Fanout` input after seeing this output will never be "too early". + The `HeadIsClosed` server output now contains the deadline instead of the remaining time. + See `hydra-tui` for an example how to use the `contestationDeadline` and `ReadyToFanout`. + See [ADR20](./docs/adr/2022-08-02_020-handling-time.md) for details and the rationale. -- **BREAKING** Changed logs to improve legibility and trace on-chain posting errors. +- **BREAKING** Several changes to the API: + + The `InitialSnapshot` only contains the `initialUTxO` as the rest of the information was useless. [#533](https://github.com/input-output-hk/hydra-poc/pull/533) + + Renamed `CannotSpendInput -> InternalWalletError` and `CannotCoverFees -> NotEnoughFuel`. [#582](https://github.com/input-output-hk/hydra-poc/pull/582) + +- **BREAKING** Changed logs to improve legibility and trace on-chain posting errors. [#472](https://github.com/input-output-hk/hydra-poc/pull/472) + Strip chain layer logs to only contain `TxId` instead of full transactions in the nominal cases. + Renamed log entry prefixes `Processing -> Begin` and `Processed -> End`. + Added `PostingFailed` log entry. - **BREAKING** The `hydra-cluster` executable (our smoke test) does require `--publish-scripts` or `--hydra-scripts-tx-id` now as it may be provided with pre-published hydra scripts. - -- **BREAKING** The `InitialSnapshot` only contains the `initialUTxO` as the rest of the information was useless. - -- **BREAKING** Hydra keys now use the text envelope format. - + `hydra-tools` executable now produces keys in the same format as cardano keys so this should make key handling simpler. - + Take a look at the [example] (https://github.com/input-output-hk/hydra-poc/blob/master/docs/docs/getting-started/quickstart.md#hydra-keys) - + on how to use `hydra-tools` to generate necessary hydra keys. - -- **BREAKING** hydra-node command line flag `--node-id` is now mandatory. - + Instead of `Host` we are using the `node-id` in the server messages like + `PeerConnected/Disconnected` which are also used in - + the TUI to distinguish between different connected peers. - -- The `hydra-node` does persist L1 and L2 states on disk now: + +- The `hydra-node` does persist L1 and L2 states on disk now: [#187](https://github.com/input-output-hk/hydra-poc/issues/187) + New `--persistence-dir` command line argument to configure location. + Writes two JSON files `headstate` and `chainstate` to the persistence directory. + While introspectable, modification of these files is not recommended. -- Added a `hydra-tools` executable, which provides basic commands to help working with Hydra Heads: - + Generate a pair of Hydra keys - + Output the marker datum hash +- *Fixed bugs* in `hydra-node`: + + Crash after `3k` blocks because of a failed time conversion. [#523](https://github.com/input-output-hk/hydra-poc/pull/523) + + Internal wallet was losing memory of spent fuel UTxOs in presence of transaction failures. [#525](https://github.com/input-output-hk/hydra-poc/pull/525) + + Node does not see some UTxOs sent to the internal wallet on startup. [#526](https://github.com/input-output-hk/hydra-poc/pull/526) + + Prevent transactions from being resubmitted for application over and over. [#485](https://github.com/input-output-hk/hydra-poc/pull/485) -- Added some sample Terraform-based configuration files to spin up GCP and AWS Hydra node -- Log hydra-node command line arguments on start for easier debugging -- Changed the following data constructor names: - - *CannotSpendInput* to *InternalWalletError* - - *CannotCoverFees* to *NotEnoughFuel* - - *ErrNoPaymentUTxOFound* to *ErrNoFuelUTxOFound* -- Removed *ErrNoAvailableUTxO* data constructor +- Prevent misconfiguration of `hydra-node` by logging the command line options used and error out when: + + provided number of Hydra parties exceeds a known working maximum (currently 4) + + number of provided Cardano and Hydra keys is not the same -#### Fixed +- Added a `hydra-tools` executable, to help with generating Hydra keys and get hold of the marker datum hash. [#474](https://github.com/input-output-hk/hydra-poc/pull/474) -- Prevent transactions from being resubmitted for application over and over [#485](https://github.com/input-output-hk/hydra-poc/issues/485) +- Compute transaction costs as a "min fee" and report it in the [tx-cost benchmark](https://hydra.family/head-protocol/benchmarks/transaction-cost/). - Update [hydra-node-options](https://hydra.family/head-protocol/docs/getting-started/quickstart/#hydra-node-options) section in docs. -- Verify cmd line options for hydra node and error out if: - - loaded number of peers is exceeded (currently 4) - - number of loaded cardano and hydra keys is not the same + +- Publish test results on [website](https://hydra.family/head-protocol/benchmarks/tests/hydra-node/hspec-results). [#547](https://github.com/input-output-hk/hydra-poc/pull/547) + +- Improved `hydra-tui` user experience: + + Fixed too fast clearing of errors and other feedback [#506](https://github.com/input-output-hk/hydra-poc/pull/506) + + Introduced a pending state to avoid resubmission of transactions [#526](https://github.com/input-output-hk/hydra-poc/pull/526) + + Can show full history (scrollable) [#577](https://github.com/input-output-hk/hydra-poc/pull/577) + +- Build & publish static Linux x86_64 executables on each [release](https://github.com/input-output-hk/hydra-poc/releases/tag/0.8.0) :point_down: [#546](https://github.com/input-output-hk/hydra-poc/pull/546) ## [0.7.0] - 2022-08-23 diff --git a/README.md b/README.md index e903645532a..30c8da62a9c 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ The quickest way to get a `hydra-node` running is to use our [docker images](https://github.com/orgs/input-output-hk/packages?repo_name=hydra-poc). ```sh -docker pull ghcr.io/input-output-hk/hydra-node:0.7.0 +docker pull ghcr.io/input-output-hk/hydra-node:0.8.0 docker run --rm ghcr.io/input-output-hk/hydra-node --help ``` diff --git a/demo/docker-compose.yaml b/demo/docker-compose.yaml index 31b05ae15c8..8916b0614e5 100644 --- a/demo/docker-compose.yaml +++ b/demo/docker-compose.yaml @@ -22,7 +22,7 @@ services: ] hydra-node-1: - image: ghcr.io/input-output-hk/hydra-node:0.7.0 + image: ghcr.io/input-output-hk/hydra-node:0.8.0 build: context: ../ target: hydra-node @@ -58,7 +58,7 @@ services: restart: always hydra-node-2: - image: ghcr.io/input-output-hk/hydra-node:0.7.0 + image: ghcr.io/input-output-hk/hydra-node:0.8.0 build: context: ../ target: hydra-node @@ -94,7 +94,7 @@ services: restart: always hydra-node-3: - image: ghcr.io/input-output-hk/hydra-node:0.7.0 + image: ghcr.io/input-output-hk/hydra-node:0.8.0 build: context: ../ target: hydra-node @@ -130,7 +130,7 @@ services: restart: always hydra-tui-1: - image: ghcr.io/input-output-hk/hydra-tui:0.7.0 + image: ghcr.io/input-output-hk/hydra-tui:0.8.0 build: context: ../ target: hydra-tui @@ -149,7 +149,7 @@ services: ipv4_address: 172.16.238.11 hydra-tui-2: - image: ghcr.io/input-output-hk/hydra-tui:0.7.0 + image: ghcr.io/input-output-hk/hydra-tui:0.8.0 build: context: ../ target: hydra-tui @@ -168,7 +168,7 @@ services: ipv4_address: 172.16.238.21 hydra-tui-3: - image: ghcr.io/input-output-hk/hydra-tui:0.7.0 + image: ghcr.io/input-output-hk/hydra-tui:0.8.0 build: context: ../ target: hydra-tui diff --git a/docs/docs/getting-started/installation.md b/docs/docs/getting-started/installation.md index 6135b0821d3..e8d1bb522d4 100644 --- a/docs/docs/getting-started/installation.md +++ b/docs/docs/getting-started/installation.md @@ -18,7 +18,7 @@ The quickest way to get a hydra-node running is to use our Docker images: ``` -docker pull ghcr.io/input-output-hk/hydra-node:0.7.0 +docker pull ghcr.io/input-output-hk/hydra-node:0.8.0 docker run --rm ghcr.io/input-output-hk/hydra-node --help ``` diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/getting-started/installation.md b/docs/i18n/ja/docusaurus-plugin-content-docs/current/getting-started/installation.md index 492f2d78f37..45039d367df 100644 --- a/docs/i18n/ja/docusaurus-plugin-content-docs/current/getting-started/installation.md +++ b/docs/i18n/ja/docusaurus-plugin-content-docs/current/getting-started/installation.md @@ -17,7 +17,7 @@ hydra-nodeを動かす一番迅速な方法は、専用のDockerイメージを ``` -docker pull ghcr.io/input-output-hk/hydra-node:0.7.0 +docker pull ghcr.io/input-output-hk/hydra-node:0.8.0 docker run --rm ghcr.io/input-output-hk/hydra-node --help ``` diff --git a/hydra-cardano-api/hydra-cardano-api.cabal b/hydra-cardano-api/hydra-cardano-api.cabal index 79003d0fd21..2a6fe84531a 100644 --- a/hydra-cardano-api/hydra-cardano-api.cabal +++ b/hydra-cardano-api/hydra-cardano-api.cabal @@ -1,6 +1,6 @@ cabal-version: 3.0 name: hydra-cardano-api -version: 0.7.0 +version: 0.8.0 synopsis: A Haskell API for Cardano, tailored to the Hydra project. author: IOG copyright: 2022 IOG diff --git a/hydra-node/json-schemas/api.yaml b/hydra-node/json-schemas/api.yaml index f7b6204dcc7..eef140805d6 100644 --- a/hydra-node/json-schemas/api.yaml +++ b/hydra-node/json-schemas/api.yaml @@ -1,7 +1,7 @@ asyncapi: '2.3.0' info: title: Hydra Node API - version: '0.7.0' + version: '0.8.0' description: | WebSocket API for administrating Hydra heads: multi-party isomorphic state-channels for Cardano. diff --git a/hydra-plutus/hydra-plutus.cabal b/hydra-plutus/hydra-plutus.cabal index dd9fb7b42ca..2d8222424a5 100644 --- a/hydra-plutus/hydra-plutus.cabal +++ b/hydra-plutus/hydra-plutus.cabal @@ -1,6 +1,6 @@ cabal-version: 2.2 name: hydra-plutus -version: 0.7.0 +version: 0.8.0 synopsis: Hydra Plutus Contracts author: IOG copyright: 2022 IOG diff --git a/hydra-prelude/hydra-prelude.cabal b/hydra-prelude/hydra-prelude.cabal index cf42c86a8d2..995be07efec 100644 --- a/hydra-prelude/hydra-prelude.cabal +++ b/hydra-prelude/hydra-prelude.cabal @@ -1,6 +1,6 @@ cabal-version: 2.2 name: hydra-prelude -version: 0.7.0 +version: 0.8.0 synopsis: Custom Hydra Prelude used across other Hydra packages. author: IOG copyright: 2022 IOG diff --git a/hydra-test-utils/hydra-test-utils.cabal b/hydra-test-utils/hydra-test-utils.cabal index 2ccf4077ab0..8e4f8eab2e1 100644 --- a/hydra-test-utils/hydra-test-utils.cabal +++ b/hydra-test-utils/hydra-test-utils.cabal @@ -1,6 +1,6 @@ cabal-version: 2.2 name: hydra-test-utils -version: 0.7.0 +version: 0.8.0 synopsis: Hydra utilities for testing, aka. "Test Prelude" author: IOG copyright: 2022 IOG diff --git a/sample-node-config/aws/scripts/configure-testnet.sh b/sample-node-config/aws/scripts/configure-testnet.sh index 7f4337389c8..18303d4bdb5 100755 --- a/sample-node-config/aws/scripts/configure-testnet.sh +++ b/sample-node-config/aws/scripts/configure-testnet.sh @@ -12,7 +12,7 @@ echo "Including hydra env variables" NETWORK_MAGIC=$(jq .networkMagic cardano-configurations/network/preview/genesis/shelley.json) echo "export NETWORK_MAGIC=$NETWORK_MAGIC" >> /home/ubuntu/.bashrc -# this is manually hardcoded from https://github.com/input-output-hk/hydra-poc/releases/tag/0.7.0 +# this is manually hardcoded from https://github.com/input-output-hk/hydra-poc/releases/tag/0.8.0 # perhaps there would be a way to look those up in the Chain? HYDRA_SCRIPTS_TX_ID=bde2ca1f404200e78202ec37979174df9941e96fd35c05b3680d79465853a246 echo "export HYDRA_SCRIPTS_TX_ID=$HYDRA_SCRIPTS_TX_ID" >> /home/ubuntu/.bashrc diff --git a/sample-node-config/gcp/scripts/configure-testnet.sh b/sample-node-config/gcp/scripts/configure-testnet.sh index 85f6009099b..a3d30bd135e 100644 --- a/sample-node-config/gcp/scripts/configure-testnet.sh +++ b/sample-node-config/gcp/scripts/configure-testnet.sh @@ -15,7 +15,7 @@ git clone https://github.com/input-output-hk/cardano-configurations export NETWORK_MAGIC=$(jq .networkMagic cardano-configurations/network/preview/genesis/shelley.json) -# this is manually hardcoded from https://github.com/input-output-hk/hydra-poc/releases/tag/0.7.0 +# this is manually hardcoded from https://github.com/input-output-hk/hydra-poc/releases/tag/0.8.0 # perhaps there would be a way to look those up in the Chain? export HYDRA_SCRIPTS_TX_ID=bde2ca1f404200e78202ec37979174df9941e96fd35c05b3680d79465853a246 diff --git a/sample-node-config/nixos/README.md b/sample-node-config/nixos/README.md index d61a1098c22..7ead1d16fd3 100644 --- a/sample-node-config/nixos/README.md +++ b/sample-node-config/nixos/README.md @@ -59,7 +59,7 @@ For this, we do not need a service definition, but can simply use `docker` via S ssh -t example docker run --rm -it \ -v /data:/data \ --network host \ - ghcr.io/input-output-hk/hydra-tui:0.7.0 \ + ghcr.io/input-output-hk/hydra-tui:0.8.0 \ --connect 0.0.0.0:4001 \ --node-socket /data/cardano-node/node.socket \ --network-id 2 \ diff --git a/sample-node-config/nixos/hydraw.nix b/sample-node-config/nixos/hydraw.nix index 67d27d5e478..6f054e51015 100644 --- a/sample-node-config/nixos/hydraw.nix +++ b/sample-node-config/nixos/hydraw.nix @@ -47,7 +47,7 @@ in networkMagic = "2"; in { - image = "ghcr.io/input-output-hk/hydra-node:0.7.0"; + image = "ghcr.io/input-output-hk/hydra-node:0.8.0"; volumes = [ "/data/cardano-node:/cardano-node:ro" "/data/hydra-node:/data:ro"