Skip to content

Commit

Permalink
Merge pull request #1181 from input-output-hk/prepare-release-0.14.0
Browse files Browse the repository at this point in the history
Release script changes & changelog 0.14.0
  • Loading branch information
ch1bo authored Dec 4, 2023
2 parents ec342cc + 22e91bc commit b0908c6
Show file tree
Hide file tree
Showing 5 changed files with 142 additions and 71 deletions.
73 changes: 39 additions & 34 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,52 +10,57 @@ changes.

## [0.14.0] - UNRELEASED

- Remove hard-coded deposit of 2₳ from internal wallet. Now the wallet does only
use as much deposit for script outputs as minimally needed and reduces the Ada
locked throughout a head life-cycle.
- **BREAKING** Multiple changes to the Hydra Head protocol on-chain:

- Increase maximum number of parties to 5
- Sign the head identifier as part of snapshot signature and verify it
on-chain. This fully addresses security advisory
[CVE-2023-42806](https://github.com/input-output-hk/hydra/security/advisories/GHSA-gr36-mc6v-72qq).

- **BREAKING** Sign the head identifier as part of snapshot signature
and verify it on-chain
- Switched to using inline datums instead of (optionally) published datums in
transactions. [#1162](https://github.com/input-output-hk/hydra/pull/1162)

- Removed false positive `PostTxOnChainFailed` error from API outputs when the
collect transaction of another `hydra-node` was "faster" than ours.
- Upgraded toolchain to GHC 9.6 and a newer `plutus-tx` compiler.

- Add a `hydra-chain-observer` executable to subscribe to a chain and just
observe Hydra Head transactions (with minimal information right now).
- **BREAKING** Internal persisted chain state serialization changed when
switching to inline datums. Make sure to close heads before and wipe the
`--persistence-dir` before using this `hydra-node` version.

- Improved `gen-hydra-keys` command to not overwrite keys if they are present
already.
- **BREAKING** Introduced messages resending logic in the `Network` layer to
improve reliability in the face of connection issues.
[#188](https://github.com/input-output-hk/hydra/issues/188) This persists
network messages on disk in order to gracefully handle crashes and detects
inconsistencies between persisted state and configuration.

- Increased maximum number of parties to 5. This is possible to small
optimizations on the Head protocol transactions.

- Removed hard-coded deposit of 2₳ from internal wallet. Now the wallet does
only use as much deposit for script outputs as minimally needed and reduces
the Ada locked throughout a head life-cycle.
[#1176](https://github.com/input-output-hk/hydra/pull/1176)

- Clients are notified when head initialization is ignored via a new
`IgnoredHeadInitializing` API server output. This helps detecting
misconfigurations of credentials and head parameters (which need to match).
[#529](https://github.com/input-output-hk/hydra/issues/529)

- Hydra node API `submit-transaction` endpoint now accepts three types of
encoding: Base16 encoded CBOR string, TextEnvelope type and JSON.

- **BREAKING** Introduce messages resending logic in the `Network`
layer to improve reliability in the face of transient connection
issues.

- Persist network messages on disk in order to gracefully handle crashes
- Removed false positive `PostTxOnChainFailed` error from API outputs when the
collect transaction of another `hydra-node` was "faster" than ours.
[#839](https://github.com/input-output-hk/hydra/issues/839)

- **BREAKING** Changes to Hydra scripts:
- Switch to using inline datums instead of (optionally) published datums in
transactions.
- Upgrading our toolchain to GHC 9.6
- Hydra node API `submit-transaction` endpoint now accepts three types of
encoding: Base16 encoded CBOR string, a TextEnvelope with CBOR and full JSON.
[#1111](https://github.com/input-output-hk/hydra/issues/1111)

- **BREAKING** Changes to persisted state:
- The internal chain state serialization changed when switching to inline datums.
- Improved `gen-hydra-keys` command to not overwrite keys if they are present
already. [#1136](https://github.com/input-output-hk/hydra/issues/1136)

- Fixed TUI key bindings for exiting in dialogs.
- Add a `hydra-chain-observer` executable to subscribe to a chain and just
observe Hydra Head transactions (with minimal information right now).
[#1158](https://github.com/input-output-hk/hydra/pull/1158)

- Prevent users from resuming a Hydra node after changing its configurations.
Ensure that the node terminates when attempting to start a Hydra node with a
number of configured peers that doesn't match the persisted state (i.e., the
number of parties in the /acks vector).
- Fixed `hydra-tui` key bindings for exiting in dialogs.
[#1159](https://github.com/input-output-hk/hydra/issues/1159)

## [0.13.0] - 2023-10-03

Expand All @@ -72,9 +77,9 @@ number of parties in the /acks vector).
- Remove hydra-tools package. Move functionality to generate hydra keys to the
hydra-node executable.

Changes to `hydra-node` state persistency:
Remove the recursive definition of the chain state.
This makes the event store more lightweight and easier to read and work with.
- Changes to `hydra-node` state persistency:
- Remove the recursive definition of the chain state.
- This makes the event store more lightweight and easier to read and work with.

## [0.12.0] - 2023-08-18

Expand Down
3 changes: 2 additions & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,8 @@ During development
To perform a release of next `<version>`:

1. Publish hydra scripts onto `preview`, `preprod`, and `mainnet` using the
[smoke test][smoke-test] and take note of the transaction ids.
[smoke test][smoke-test] and put the transaction ids as new `<version>`
entries into [networks.json](./networks.json).
2. Update CHANGELOG.md by replacing `UNRELEASED` with a date in
[ISO8601](https://en.wikipedia.org/wiki/ISO_8601) and prepare contents.
3. Run `./release.sh <version>`
Expand Down
30 changes: 17 additions & 13 deletions docs/docs/tutorial/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,11 +41,12 @@ components of the Cardano ecosystem, putting them in a `bin/` directory:

```shell
mkdir -p bin
curl -L -O https://github.com/input-output-hk/hydra/releases/download/0.14.0/hydra-x86_64-linux-0.14.0.zip
unzip -d bin hydra-x86_64-linux-0.14.0.zip
version=0.13.0
curl -L -O https://github.com/input-output-hk/hydra/releases/download/${version}/hydra-x86_64-linux-${version}.zip
unzip -d bin hydra-x86_64-linux-${version}.zip
curl -L -o - https://github.com/input-output-hk/cardano-node/releases/download/8.1.2/cardano-node-8.1.2-linux.tar.gz \
| tar xz -C bin ./cardano-node ./cardano-cli
curl -L -o - https://github.com/input-output-hk/mithril/releases/download/2331.1/mithril-2331.1-linux-x64.tar.gz \
curl -L -o - https://github.com/input-output-hk/mithril/releases/download/2347.0/mithril-2347.0-linux-x64.tar.gz \
| tar xz -C bin mithril-client
chmod +x bin/*
```
Expand All @@ -55,8 +56,9 @@ chmod +x bin/*

```shell
mkdir -p bin
curl -L -O https://github.com/input-output-hk/hydra/releases/download/0.14.0/hydra-aarch64-darwin-0.14.0.zip
unzip -d bin hydra-aarch64-darwin-0.14.0.zip
version=0.13.0
curl -L -O https://github.com/input-output-hk/hydra/releases/download/${version}/hydra-aarch64-darwin-${version}.zip
unzip -d bin hydra-aarch64-darwin-${HYDRA_VERSION}.zip
curl -L -o - https://github.com/input-output-hk/mithril/releases/download/2347.0/mithril-2347.0-macos-x64.tar.gz \
| tar xz -C bin
curl -L -o - https://github.com/input-output-hk/cardano-node/releases/download/8.1.2/cardano-node-8.1.2-macos.tar.gz \
Expand Down Expand Up @@ -327,14 +329,14 @@ will be used on the layer two by the `hydra-node`. For this, we will use the
<TabItem value="alice" label="Alice">

```shell
hydra-tools gen-hydra-key --output-file credentials/alice-hydra
hydra-node gen-hydra-key --output-file credentials/alice-hydra
```

</TabItem>
<TabItem value="bob" label="Bob">

```shell
hydra-tools gen-hydra-key --output-file credentials/bob-hydra
hydra-node gen-hydra-key --output-file credentials/bob-hydra
```

</TabItem>
Expand Down Expand Up @@ -379,11 +381,11 @@ In summary, the Hydra head participants exchanged and agreed on:

## Step 3: Start the Hydra node

With all these parameters defined, we now pick a version of the Head protocol we
want to use. This is defined by the `hydra-node --version` itself and the
With all these parameters defined, we now pick a HYDRA_VERSION of the Head protocol we
want to use. This is defined by the `hydra-node --HYDRA_VERSION` itself and the
`--hydra-scripts-tx-id` which point to scripts published on-chain.

For all [released](https://github.com/input-output-hk/hydra/releases) versions
For all [released](https://github.com/input-output-hk/hydra/releases) HYDRA_VERSIONs
of the `hydra-node` and common Cardano networks, the scripts do get
pre-published and we can just use them. See the [user
manual](../getting-started/quickstart#reference-scripts) for more information
Expand All @@ -395,12 +397,13 @@ Let's start the `hydra-node` with all these parameters now:
<TabItem value="alice" label="Alice">

```shell
version=0.13.0
hydra-node \
--node-id "alice-node" \
--persistence-dir persistence-alice \
--cardano-signing-key credentials/alice-node.sk \
--hydra-signing-key credentials/alice-hydra.sk \
--hydra-scripts-tx-id e5eb53b913e274e4003692d7302f22355af43f839f7aa73cb5eb53510f564496 \
--hydra-scripts-tx-id $(curl https://raw.githubusercontent.com/input-output-hk/hydra/master/networks.json | jq -r ".preprod.\"${version}\"") \
--ledger-protocol-parameters protocol-parameters.json \
--testnet-magic 1 \
--node-socket node.socket \
Expand All @@ -417,12 +420,13 @@ hydra-node \
<TabItem value="bob" label="Bob">

```shell
version=0.13.0
hydra-node \
--node-id "bob-node" \
--persistence-dir persistence-bob \
--cardano-signing-key credentials/bob-node.sk \
--hydra-signing-key credentials/bob-hydra.sk \
--hydra-scripts-tx-id e5eb53b913e274e4003692d7302f22355af43f839f7aa73cb5eb53510f564496 \
--hydra-scripts-tx-id $(curl https://raw.githubusercontent.com/input-output-hk/hydra/master/networks.json | jq -r ".preprod.\"${version}\"") \
--ledger-protocol-parameters protocol-parameters.json \
--testnet-magic 1 \
--node-socket node.socket \
Expand Down Expand Up @@ -697,7 +701,7 @@ You can do this through the websocket API one last time:
{ "tag": "Fanout" }
```

This will again submit a transactin to the layer one and once successful is
This will again submit a transaction to the layer one and once successful is
indicated by a `HeadIsFinalized` message which includes the distributed `utxo`.

To confirm, you can query the funds of both, `alice` and `bob`, on the layer
Expand Down
12 changes: 12 additions & 0 deletions networks.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"mainnet": {
"0.13.0": "989e3ab136a2cdd3132a99975e76e02f62bcb03ba64ddbb5d2dfddffca8d390d"
},
"preprod": {
"0.13.0": "f917dcd1fa2653e33d6d0ca5a067468595b546120c3085fab60848c34f92c265",
"0.14.0": "d8ba8c488f52228b200df48fe28305bc311d0507da2c2420b10835bf00d21948"
},
"preview": {
"0.13.0": "1e00c627ec4b2ad0b4aa68068d3818ca0e41338c87e5504cda118c4050a98763"
}
}
Loading

0 comments on commit b0908c6

Please sign in to comment.