Skip to content

0.10.0

Pre-release
Pre-release
Compare
Choose a tag to compare
@ch1bo ch1bo released this 11 May 11:10
· 4249 commits to master since this release
0.10.0
8a8157d

First release of hydra-node and hydra-plutus scripts which can be used on mainnet. Includes the technical changes required and must-have issues we want to see fixed before using a Hydra Head with real ADA, as well as documentation how to run hydra on mainnet.

⚠️ IMPORTANT: There are several known issues, which are explained in the documentation.


Built artifacts

  • 📦 Static x86_64-linux binaries: here (also attached)
  • 🐳 Docker image: here

Hydra Scripts

Transaction IDs to be used as --hydra-scripts-tx-id when running hydra-node on the following networks:

  • preview: d237926e174a2ca386174a5810d30f0ca6db352219dd7eacdc7d5969ae75d58f checked in smoke test #111
  • preprod: 31b833c943fc267ee532c772be032183d5842b69492afaf5daa360171168c238 checked in smoke test #112
  • mainnet: af1a00e23a9b5c3a811d5c265dd25edfc81fd43f0fbf94229c4c0a5ab18aa5de checked in smoke test #113 🎉

This release contains several breaking changes and you'll need to apply the following procedure to upgrade all the nodes running a head:

  1. Close the head
  2. Stop hydra-node
  3. Remove persistent files stored in --persistence-dir, in particular
    server-output and state
  4. Upgrade hydra-node version
  5. Start new hydra-node version

Only when this procedure has been applied to all Hydra nodes can you open a new head again.


  • Make hydra-node compatible to mainnet #713

    • BREAKING Change to command line options: Replaced --network-id with --mainnet or --testnet-magic.

    • Hard-coded temporary limit of 100 ADA for commits to a head on mainnet. This will be incraeased or be made configurable in future versions.

  • BREAKING Change in internal handling of rollbacks. Now, the hydra-node does only rollback it's low level state and not report when a rollback happened, under the optimistic assumption that the Hydra protocol transactions are still applicable and the Head is unaffected by the rollback. This was needed to avoid #784 and will be further improved in #185. This removes RolledBack server output from the API and also changes the log format of the internal Rollback event.

  • Reject commits of UTxO containing ReferenceScript to avoid a head not being finalizable by the hydra-node. The layer 1 scripts still accept these outputs, but we would not be able to automatically finalize a head which was opened from commits with reference scripts. Reference scripts on the layer 2 ledger (e.g. included in transactions via NewTx) are non-problematic. #766

  • All participants try to collect once seeing the last commitTx. #786 This may lead to misleading errors on the logs about not being able to post collect transactions (see also #839).

  • The hydra-node detects misconfiguration and mismatch of command line options with persisted state. #764

  • Fixed a bug where the hydra-node would crash sometimes when the cardano-node switches onto a fork, which is a common event on mainnet. [#560][560]

  • BREAKING Hydra scripts changed, need to use new --hydra-scripts-tx-id

    • Check contract continuity of state machine, i.e. that the output with the state datum and ST is actually owned by vHead. #777

    • Collect the right value in collect transactions (had been dropped for cost reasons, but found a constant cost way to do it).

    • The right headId is enforced in commit transactions.

    • Updated plutus-tx tool-chain. This also resulted in changed return type of validatorScript functions of script modules to SerialisedScript. #826

    • Use of a custom script context for vInitial and vCommit validators to reduce cost of transactions again. #825

    • The hydra scripts are persisted in hydra-plutus/scripts and golden tests ensure they are not changed accidentally. #772

  • BREAKING Changes to hydra-node API

    • Configurable API using query parameters. #380 Clients can decide to:

      • Skip observing history of events before they connected
      • View the transactions in the server output encoded as CBOR
      • Prevent utxo display in SnapshotConfirmed server outputs #808
    • Greetings message is now only sent last (after replaying history) on connection and added additional information #813:

      • headStatus - representing current hydra head status
      • snapshotUtxo - containing UTxOs and updating on each SnapshotConfirmed message
    • Updated hydra-tui to handle Greetings message accordingly. Make sure to use the same version.

    • Reference scripts in the hydra-node API (e.g. on NewTx) are not decodable when using SimpleScriptV2 envelope anymore (just use SimpleScript).

  • Versioned the documentation website, now the last released, stable is the default available at https://hydra.family/head-protocol, while the bleeding-edge from master branch is available at https://hydra.family/head-protocol/unstable. #803 #805 #783

  • Add the specification to the repository and website. #693

  • Disabled aarch64-darwin support, until a cardano-node for this platform is also available.

  • Use the server-provided timestamp of messages in the hydra-tui. #837

  • BREAKING Changes to hydra-cardano-api #826:

    • Removed HasPlutusScriptVersion and plutusScriptVersion with upstream version from cardano-api.
    • Renamed getScriptData to txOutScriptData to not conflict with the new function in cardano-api.
    • Changed toScriptData, toLedgerData, fromLedgerData, txOutScriptData and lookupScriptData to return or require a HashableScriptData instead.
    • Added fromScriptData generic conversion function.
    • Changed signature of totalExecutionCost to be more clearly Babbage era specific.
    • Changed fromPlutusScript to take new SerialisedScript type (it's just an alias now).
    • Added genTxIn and arbitrary instance for TxIn.
    • Added getChainPoint.

Full Changelog: 0.9.0...0.10.0

New Contributors:

Contributors to this release: @ch1bo @pgrange @v0d1ch @ffakenz @matiwinnetou @abailly-iohk