Skip to content

0.9.0

Pre-release
Pre-release

Choose a tag to compare

@ch1bo ch1bo released this 02 Mar 11:37
· 6693 commits to master since this release
0.9.0
0fab58f

🐲 We renamed the repository from hydra-poc to hydra!

This release features a hydra-node with fully specified behavior of on-chain hydra-plutus scripts and off-chain head-logic, decreased costs for opening/closing a Head and scalable contestation deadline semantics.


⚠️ Delete your persistence directory!

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.


Changes to hydra-node

  • BREAKING Changes in the persistence format #725, #745.

  • BREAKING Changes to the API:

    • Removed TxSeen and TxExpired server outputs. Use the TxValid and TxInvalid responses instead.
    • All participants now see TxValid for all valid transactions (it replaces TxSeen).
    • Renamed ReadyToCommit -> HeadIsInitializing
    • Added a headId to most server outputs. #678
    • Added a timestamp and a monotonic sequence number. #618
  • BREAKING Addressed short-comings in hydra-plutus scripts #452 and improved their performance / reduced cost #652, #701, #709. Roughly the cost of transactions according to our benchmarks changed:

    • Init increased by 10%.
    • Commit reduced by 50%.
    • Collect reduced by 30%.
    • Close reduced by 0.2-0.3₳
    • Contest reduced by 0.1-0.2₳.
    • Abort reduced by 0.1-0.3₳.
    • Fanout reduced by 0.2-0.3₳.
  • BREAKING Change the way contestation period and deadline are handled:

    • There is a new hydra-node flag --contestation-period expressed in seconds to control the close tx validity bounds as well as determine the contestation deadline. For example, with --contestation-period 60s, the node will close the head 60s after submitting the close transaction and other parties will have another 60s to contest. This means the deadline may be up 2 * --contestation-period after a close transaction. #615 and ADR21
    • If hydra-node receives a init transaction with not matching --contestation-period then this tx is ignored which implies that all parties need to agree on the same value for contestation period.
    • Removed contestationPeriod from the Init API request payload.
    • The deadline get's pushed by --contestation-period on each contest transaction. #716
  • Change the way the internal wallet initializes its state. #621

    • The internal wallet does now always query ledger state and parameters at the tip. This should fix the AcquireFailure issues.
  • Added NoFuelUTXOFound error next to the already existing NotEnoughFuel. Previously the node would fail with NotEnoughFuel when utxo was not found. Now NotEnoughFuel is used when there is not enough fuel and NoFuelUTXOFound when utxo was not to be found.

  • Added support have hydra-node to start following the chain from genesis by setting --start-chain-from 0.

  • Added script sizes to hydra-node --script-info and published transaction cost benchmarks.

  • Changes to the logs:

    • HeadLogic Outcome is now being logged on every protocol step transition.
    • Added intermediate LastSeenSnapshot and extended RequestedSnapshot seen snapshot states.
    • Changed wallet-related logs of BeginInitialize, EndInitialize and added SkipUpdate.

Changes to hydra-cardano-api

  • BREAKING Remove Hydra.Cardano.Api.SlotNo module.
  • BREAKING Replace fromConsensusPointHF with fromConsensusPointInMode and toConsensusPointHF with toConsensusPointInMode.
  • Re-export new AcquiringFailure type from cardano-api.
  • Add fromPlutusCurrencySymbol conversion function.
  • Introduce new Hydra.Cardano.Api.Pretty module and move functions renderTx, renderTxWithUTxO and renderTxs from hydra-node package to this new module.

Other changes

  • hydra-cluster executable can be used to provide a local cardano "network" with --devnet argument

  • Switched to using nix flakes and CHaP

    • Makes configuration of binary-caches easier to discover (you get asked about adding them).
    • Will make bumping dependencies (e.g. cardano-node) easier.
    • Build commands for binaries and docker images change, see updated Contribution Guidelines

Full Changelog: 0.8.1...0.9.0

Contributors of this release: @v0d1ch @pgrange @ffakenz @perturbing @andreabedini @abailly-iohk @ch1bo

New Contributors:


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: 74b587d08d12aa679bdfeb3eaa57d698e426045dd529d4130d7d8ca0c18d54b0 checked & published in #43
  • preprod: 6fd13073c47411af7f3adf31f46e61f570872a832822fdc5da5b214766651bfd checked & published in #44