Skip to content

0.21.0

Pre-release
Pre-release

Choose a tag to compare

@ffakenz ffakenz released this 28 Apr 11:17
· 1320 commits to master since this release
0.21.0
de71074

This release introduces etcd as the new networking layer for Hydra 🎉​
Additionally, it includes various bug fixes, API enhancements, and enables multi-party support in offline-mode.

Build artifacts

Hydra Scripts

  • preview: bdf8a262cd5e7c8f4961aed865c026d5b6314b22a4bc31e981363b5bb50d1da6,0dbb43e152647c729c365aa18fce20133a212c6b43252fa25dbb7c0cf65ae011,54aec058e43e5cfe5161e8f97cc43f4601da180dc8ac13f3f39eb2fa08148a01
  • preprod: 557b6a6eaf6177407757cb82980ebc5b759b150ccfd329e1d8f81bbd16fecb01,98e1a40224c5ed8eaff5fc1f865d89af47ae89fd4adc1c37fc80dfd901b0caf2,8fbdf7de4934ca4d22ed9cfac0f6e2566990751b6f4b944470dafabbd079b965
  • mainnet: b5d5fa4d367005bdd6449dcca049aa61aa8b59a907231b03bb006eda01e8e73a,696ec03023309d8e75f983d4285880dcfcfac58c06808e0191ef075f10034212,48e09f38b208f4f30b1fe29232f450cfea88ffc9393ac34b1069dddce2758e8d

See also networks.json

Compatible / tested with

  • cardano-node: 10.1.4
  • cardano-cli: 10.1.1.0
  • mithril: 2450.0

Changelog

  • 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

  • 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 to the docs

  • Stream historical data from disk in the hydra-node API server.

Full Changelog: 0.20.0...0.21.0