0.21.0
Pre-releaseThis 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
- 📦 Binaries for Linux x86_64 and MacOS ARM64
- 🐋 Docker image
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.4cardano-cli:10.1.1.0mithril:2450.0
Changelog
-
BREAKING Switch to using
etcdinternally to establish a reliable L2 network- New run-time dependency onto
etcdbinary - The peer network options to
hydra-node(--peer) need to match across the Hydra network. --hostand--porthave been removed and we now have--listenand--advertise.--listencan be the same as the old--host/--portcombined, but you may require--advertiseto set your public IP address and port combination, if you cannot bind to that on the local machine.- Adds
NetworkConnectedandNetworkDisconnectedoutputs which are most indicative of whether the L2 network is up or not. - Change
PeerConnectedandPeerDisconnectedto indicate connectivity to--peeritems and not the remotenode-id. - Change
PeerHandshakeFailureto a network-levelNetworkVersionMismatch - Log outputs related to the network components changed significantly.
- Persisted state (write ahead logs) of the network components changed significantly. The
<persistence-dir>/etcddirectory must not be lost or manual action to recover the L2 network (etcd cluster) with counter-parties needs to be taken. - To configure the
etcdinstance used internally, you may useETCD_environment variables. For example, to switch auto-compaction to periodic retention of 7 days:ETCD_AUTO_COMPACTION_MODE=periodic ETCD_AUTO_COMPACTION_RETENTION=168h
- New run-time dependency onto
-
BREAKING Enable multi-party, networked "offline" heads by providing an
--offline-head-seedoption tohydra-node.- Drop
hydra-node offlineas a sub-command. Use--offline-head-seedand--initial-utxooptions to switch to offline mode.
- Drop
-
BREAKING API changes
- API Server does NOT serve the event history by default any more. Clients need to add a query parameter
?history=yesin order to obtain the history. - Remove
GetUTxOclient input and correspondingGetUTxOResponse. There is already a way to query theUTxOin the Head withGET /snapshot/utxoquery. - Renamed 'CommitFinalized' field 'theDeposit' to 'depositTxId'.
- We now store the
timeinStateEventwhich is a breaking change to our persistence loading - Query parameter
?address=..does NOT filterTxValidandTxInvalidserver outputs anymore. - Removed the
transactionfromTxValidserver outputs. UseSnapshotConfirmedto determine what transactions got confirmed intead!
- API Server does NOT serve the event history by default any more. Clients need to add a query parameter
-
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
Partyinformation 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
SideLoadSnapshotclient input. - add new
LocalStateClearedstate changed event. - add new
SnapshotSideLoadedserver output. - add new
SideLoadSnapshotFailedlogic error.
- add new
-
Changed default contestation period to 600 seconds and deposit deadline to 3600 seconds.
-
Add support for "withdraw zero trick" transactions:
- Any transaction with a
Rewardingredeemer for aWithdrawalof0 lovelace, will be validated as if there would be a corresponding stakeRewardAccountalready registered. - No need to register the script's stake address before.
- Any transaction with a
-
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 --blockfrostoption. -
New metric for counting the number of active peers:
hydra_head_peers_connected -
Record used and free memory when running
bench-e2ebenchmark. -
Submit observations to a
hydra-explorervia optional--exploreroption. -
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