Releases: cardano-scaling/hydra
0.22.4
A decently-sized path release making several stability improvements:
- Web API updated to work correctly under the presence of event-log rotation #2152
- Improvements to etcd #2148, #2171
- Reduced messages in the presence of mirror nodes #2146
Among other small improvements.
Build artifacts
- 📦 Binaries for Linux x86_64 and MacOS ARM64
- 🐋 Docker image
Hydra Scripts
Same as 0.22.3.
See also networks.json
Compatible / tested with
cardano-node
:10.1.2
cardano-cli
:10.1.1.0
mithril
:2450.0
Changelog
Full Changelog: 0.22.3...0.22.4
Contributors
With thanks to @jmagan, @solidsnakedev, @ch1bo, @ffakenz @v0d1ch and @vrom911 !
0.22.3
Small patch release to fix:
- TxInvalid causing a stuck head #2133
- Implementation of a workaround for etcd compaction causing failure when offline #2136; most useful for nodes you wish to recover with the side-load snapshot feature
Build artifacts
- 📦 Binaries for Linux x86_64 and MacOS ARM64
- 🐋 Docker image
Hydra Scripts
Same as 0.22.2.
See also networks.json
Compatible / tested with
cardano-node
:10.1.2
cardano-cli
:10.1.1.0
mithril
:2450.0
Changelog
Full Changelog: 0.22.2...0.22.3
0.22.2
A very small release to capture the fix for networks.json having the wrong scripts for 0.22.0 and 0.22.1.
Build artifacts
- 📦 Binaries for Linux x86_64 and MacOS ARM64
- 🐋 Docker image
Hydra Scripts
Same as 0.22.1.
See also networks.json
Compatible / tested with
cardano-node
:10.1.2
cardano-cli
:10.1.1.0
mithril
:2450.0
Changelog
- Fix for #2089
Full Changelog: 0.22.1...0.22.2
0.22.1
Deprecated due to minor bug; use 0.22.2.
A hotfix release for #2089.
Build artifacts
- 📦 Binaries for Linux x86_64 and MacOS ARM64
- 🐋 Docker image
Hydra Scripts
Same as 0.22.0
See also networks.json
Compatible / tested with
cardano-node
:10.1.2
cardano-cli
:10.1.1.0
mithril
:2450.0
Changelog
- Fix for #2089
Full Changelog: 0.22.0...0.22.1
Contributors
With big thanks to @jmagan @solidsnakedev @ffakenz @noonio and @ch1bo for helping to debug this issue!
0.22.0
New release of hydra-node!
Notable changes:
- Fix for a potential security issue reported by @colll78; see: Dangerous L1 event finality assumptions & Failed transactions not considered
- Event log rotation
- Other fixes around deposits
- Blockfrost integration
- Embedded etcd option
Build artifacts
- 📦 Binaries for Linux x86_64 and MacOS ARM64
- 🐋 Docker image
Hydra Scripts
-
preview
:f0836329dcc837ebc770de707a7490c90b5185d2f67a25b0ddbf19dc2b3efffb,f27acadbfe368032f812eec031ccf82b5f2cbeabc16846ae21758c518e44241e,39924b477411b6bd33258f63dd705e0712b513a21ea9bc422a23ec0be797ba03
-
preprod
:c9c4d820d5575173cfa81ba2d2d1096fc40f84d16d8c17284da410a4fb5e64eb,ae4443b46f550289337fc5c2c52b24f1288dab36d1a229167a6e04f056a966fe,48bd29e43dd01d12ab464f75fe40eed80e4051c8d3409e1cb20b8c01120b425e
-
mainnet
:0571111c9cdbc4880625fb70c88eb2de1e09752a7b5a984644f7be6a0037051f,e0f89d9d24096de8c654302f00d80895c9e28c16ed40a4b2a086ddbeb915cf11,62f2e60c2d2e31e7dee22eea0f6f55903ff862c5c8b3205f48a498920a03a851
See also networks.json
Compatible / tested with
cardano-node
:10.1.4
cardano-cli
:10.1.1.0
mithril
:2517.1
Changelog
-
Tested with
cardano-node 10.1.4
andcardano-cli 10.1.1.0
. -
Fix tutorial usage of
cardano-cli
and include download ofetcd
. -
Remove runtime dependency to
etcd
by embedding and shipping it withhydra-node
.- New option
--use-system-etcd
to prefer the system etcd instead of the embedded one.
- New option
-
Add file-based event log rotation support via optional
--persistence-rotate-after
command line option. -
BREAKING Update scripts to plutus 1.45.0.0.
-
Hydra will now store etcd cluster information on the filesystem in directories content-addressed
by the cluster configuration. -
BREAKING Fixed observation of deposit transactions:
- Correctly ignore deposits with deadlines in the past or too soon in the future.
- Replaced
--deposit-deadline
with--deposit-period
. - To make sure a deposit is picked up ensure that
--deposit-period
is longer than--contestation-period
. - Change persisted events of
hydra-node
. - Change to the
ReqSn
message in the Hydra network protocol - Added
DepositExpired
for when a deposit was deemed expired.
-
Enable blockfrost integration for hydra-node.
-
Fix head status in post abort greetings output.
-
Add
UDP
andS3
examples forEventSource
andEventSink
implementations tohydra-node:examples
. -
Switch
hydra-chain-observer
to useHeadObservation
when reporting observations tohydra-explorer
.- Most observation types got changed quite a lot to match the previously used
OnChainTx
. - This introduces
ToJSON
andFromJSON
instances on all observation types. CollectComObservation
andContestObservation
are made compatible with theirOnChainTx
counterparts.
- Most observation types got changed quite a lot to match the previously used
-
Enhanced the error message for
etcd
cluster ID mismatches by including detailed information about
the expected peers versus peers loaded from thehydra-node
arguments. -
Add API query (GET /head) to fetch the latest head state by a node and help introspecting the whole internal state.
-
Provide
--network
option to hydra-node in order to use pre-published hydra scripts.
Full Changelog: 0.21.0...0.22.0
With thanks to @v0d1ch @ch1bo @ffakenz @locallycompact @noonio
0.21.0
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
- 📦 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.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
andNetworkDisconnected
outputs which are most indicative of whether the L2 network is up or not. - Change
PeerConnected
andPeerDisconnected
to indicate connectivity to--peer
items and not the remotenode-id
. - Change
PeerHandshakeFailure
to 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>/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 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-seed
option tohydra-node
.- Drop
hydra-node offline
as a sub-command. Use--offline-head-seed
and--initial-utxo
options 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=yes
in order to obtain the history. - Remove
GetUTxO
client input and correspondingGetUTxOResponse
. There is already a way to query theUTxO
in the Head withGET /snapshot/utxo
query. - Renamed 'CommitFinalized' field 'theDeposit' to 'depositTxId'.
- We now store the
time
inStateEvent
which is a breaking change to our persistence loading - Query parameter
?address=..
does NOT filterTxValid
andTxInvalid
server outputs anymore. - Removed the
transaction
fromTxValid
server outputs. UseSnapshotConfirmed
to 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
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.
- 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
Rewarding
redeemer for aWithdrawal
of0 lovelace
, will be validated as if there would be a corresponding stakeRewardAccount
already 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 --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
0.20.1
A small maintenance release off the 0.20
feature set to make Hydra heads of that version visible in http://explorer.hydra.family/
Build artifacts
- 📦 Binaries for Linux x86_64 and MacOS ARM64
- 🐋 Docker image
Hydra Scripts
-
preview
:b7b88533de303beefae2d8bb93fe1a1cd5e4fa3c4439c8198c83addfe79ecbdc,da1cc0eef366031e96323b6620f57bc166cf743c74ce76b6c3a02c8f634a7d20,6665f1dfdf9b9eb72a0dd6bb73e9e15567e188132b011e7cf6914c39907ac484
-
preprod
:5237b67923bf67e6691a09117c45fdc26c27911a8e2469d6a063a78da1c7c60a,5ed4032823e295b542d0cde0c5e531ca17c9834947400c05a50549607dbc3fa5,128af7ef4fd3fa8d1eda5cb1628aa2a1e8846d7685d91e0c6dae50b7d5f263b2
-
mainnet
:4f6db33d2e6940672e4a8061efd4dc999ac3e76c9d203961fabe1e15ed1aaf73,543d03edfbc54208338abc06c6f5b1bbd840b0169dffd010df8f2f54600ba1f9,8d833996cfe92b3bee45eb5fbef4eb7f8ed2e71772c396a3d0db5c21b3429476
See also networks.json
Compatible / tested with
cardano-node
:10.1.2
cardano-cli
:10.1.1.0
mithril
:2450.0
Changelog
-
Submit observations of
hydra-chain-observer
to ahydra-explorer
via optional--explorer
option. -
Stream historical data from disk in the hydra-node API server.
-
Record used and free memory when running
bench-e2e
benchmark.
Full Changelog: 0.20.0...0.20.1
0.19.1
Tip
This is not the newest version, currently the latest release is 0.20.0.
A small maintenance release off the 0.19
feature set to make Hydra heads of that version visible in http://explorer.hydra.family/
Build artifacts
- 📦 Binaries for Linux x86_64 and MacOS ARM64, also attached
- 🐋 Docker image
Hydra Scripts
-
preview
:0fd2468a66a0b1cb944cff9512ecfa25cdd2799cb48b07210c449a5ecace267d
-
preprod
:03f8deb122fbbd98af8eb58ef56feda37728ec957d39586b78198a0cf624412a
-
mainnet
:ab1d9f8cca896bca06b70df74860deecf20774e03d8562aecaed37525f6ebead
See also networks.json
Compatible / tested with
cardano-node
:9.1.1
cardano-cli
:9.2.1.0
mithril
:2430.0
Changelog
- Submit observations of
hydra-chain-observer
to ahydra-explorer
via optional--explorer
option.
Full Changelog: 0.19.0...0.19.1
0.20.0
This release brings the new capability to Hydra node - adding funds while the Head is live - Incremental Commits 🎉
A part from this there are some bug fixes, new API filtering option and initial work to enable BlockFrost integration.
Warning
There are still several known issues, which are explained in the documentation.
Build artifacts
- 📦 Binaries for Linux x86_64 and MacOS ARM64, also attached
- 🐋 Docker image
Hydra Scripts
Transaction IDs to be used as --hydra-scripts-tx-id
when running hydra-node
on common networks are also stored in the repository:
-
preview
:b7b88533de303beefae2d8bb93fe1a1cd5e4fa3c4439c8198c83addfe79ecbdc,da1cc0eef366031e96323b6620f57bc166cf743c74ce76b6c3a02c8f634a7d20,6665f1dfdf9b9eb72a0dd6bb73e9e15567e188132b011e7cf6914c39907ac484
-
preprod
:5237b67923bf67e6691a09117c45fdc26c27911a8e2469d6a063a78da1c7c60a,5ed4032823e295b542d0cde0c5e531ca17c9834947400c05a50549607dbc3fa5,128af7ef4fd3fa8d1eda5cb1628aa2a1e8846d7685d91e0c6dae50b7d5f263b2
-
mainnet
:4f6db33d2e6940672e4a8061efd4dc999ac3e76c9d203961fabe1e15ed1aaf73,543d03edfbc54208338abc06c6f5b1bbd840b0169dffd010df8f2f54600ba1f9,8d833996cfe92b3bee45eb5fbef4eb7f8ed2e71772c396a3d0db5c21b3429476
See also networks.json
Compatible / tested with
cardano-node
:10.1.2
cardano-cli
:10.1.1.0
mithril
:2450.0
Upgrade instructions
This release contains breaking changes of the persisted data and on-chain scripts. This means that you'll need to apply the following procedure to upgrade all the nodes currently running a head:
- Close and fanout the head
- Stop
hydra-node
- Remove persistent files stored in
--persistence-dir
, in particularserver-output
,acks
andstate
- Upgrade
hydra-node
to this version - Upgrade
cardano-node
to compatible version (above) - Start new
hydra-node
version with new--hydra-scripts-tx-id
(above) - Open a new head
Changelog
-
BETA hydra-node now supports incremental commits in beta mode. We would like to test out this feature
with the community members building on Hydra. This feature means you can commit funds to a Head while it is running. -
There is a new
--deposit-deadline
argument to hydra-node that determines the maximum time for the hydra-node to detect a deposit.
After this time has passed users can recover a deposit in case it wasn't observed previously. -
BREAKING hydra-node accepts multiple
hydra-scripts-tx-id
as a comma-seperated list, as the outcome of changes in the Hydra scripts publishing. -
Tested with
cardano-node 10.1.2
andcardano-cli 10.1.1.0
. -
BREAKING Rewrite of the commit script in aiken:
- This makes
abort
andcollectCom
transactions more efficient and results
in a new maximum number of head participants being8
. - Changes script hashes in
hydra-plutus
- This makes
-
BREAKING Rewrite of the initial script in aiken and update to Plutus V3:
- This makes the initial script smaller by 1337 bytes
- Changes script hashes in
hydra-plutus
-
Fix the bug where commit endpoint drops withdraw redeemers #1643
-
BREAKING Change to
SnapshotConfirmed
andTxValid
server outputs, as
well as to persistedStateEvent
format:- Snapshots now contain the full transactions in
confirmed
and field names changed. - Persisted
StateChanged
events containing a snapshot changed consequently
and are not backward compatible. TxValid
only refers to the transaction by id.- Overall this results in transactions still to be submitted once per client,
but requires signifanctly less book-keeping on the client-side.
- Snapshots now contain the full transactions in
-
Auto-debug and provide more information on
PlutusFailure
when validating transactions on L2 ledger. #1789 -
Bump docusaurus version. #1768
-
Add blockfrost support to
hydra-chain-observer
, to follow the chain via Blockfrost API. #1631 -
Fix
bench-e2e single
benchmarks and only use--output-directory
to keep
the whole benchmark state. #1693 -
Add
inlineDatumRaw
to transaction outputs on thehydra-node
API. #1684 -
Use different versions of mithril depending on the network (Sanchonet/Preview: Unstable, Mainnet/Preproduction: 2450.0) #1743
-
New websocket URL parameter
?address=...
to filterSnapshotConfirmed
,TxValid
andTxInvalid
server outputs by address. #1739 -
Updated
hydra-tui
to handleincremental commits
#1747.
New Contributors
- @colll78 made their first contribution in #1671
- @yHSJ made their first contribution in #1723
- @cuiyourong made their first contribution in #1759
- @jpraynaud made their first contribution in #1775
- @f0rm4l1ty made their first contribution in #1782
Full Changelog: 0.19.0...0.20.0
0.19.0
This release switches the ledger to Conway, while maintaining compatibility with Babbage-style transactions.
We also added some new functionality into the hydra-tui, and added some extra information in the Greetings message.
Warning
There are still several known issues, which are explained in the documentation.
Build artifacts
- 📦 Binaries for Linux x86_64 and MacOS ARM64, also attached
- 🐋 Docker image
Hydra Scripts
Transaction IDs to be used as --hydra-scripts-tx-id
when running hydra-node
on common networks are also stored in the repository:
-
preview
:0fd2468a66a0b1cb944cff9512ecfa25cdd2799cb48b07210c449a5ecace267d
-
preprod
:03f8deb122fbbd98af8eb58ef56feda37728ec957d39586b78198a0cf624412a
-
mainnet
:ab1d9f8cca896bca06b70df74860deecf20774e03d8562aecaed37525f6ebead
See also networks.json
Compatible / tested with
cardano-node
:9.1.1
cardano-cli
:9.2.1.0
mithril
:2430.0
Upgrade instructions
No breaking changes or special care needed, just update your hydra-node
.
Changelog
-
Tested with
cardano-node 9.1.1
andcardano-cli 9.2.1.0
-
Switch L2 ledger to use the
Conway
era. #1178- Conway formatted transactions can be submitted to the
hydra-node
, while past eras are still supported (except deprecated features like protocol updates). - This includes support for
PlutusV3
scripts, but most of the governance-related features have no meaning in the Hydra L2.
- Conway formatted transactions can be submitted to the
-
Added head id information into the Greetings message.
-
Adds a manual recipient address entry to
hydra-tui
and fixes event handling. #1607 -
Add a demo mode to hydra-cluster to facilitate network resiliance tests #1552
Contributors
With thanks to @ch1bo @v0d1ch @locallycompact @ffakenz @noonio
Full Changelog: 0.18.1...0.19.0