Implementation of the Hydra Head protocol
BREAKING Hydra keys now use the text envelope format.
hydra-tools
executable now produces keys in the same format as cardano keys so this should make key handling simpler.hydra-tools
to generate necessary hydra keys.BREAKING hydra-node command line flag --node-id
is now mandatory.
Host
we are using the node-id
in the server messages like + PeerConnected/Disconnected
which are also used inNodeId
s are represented on the API.BREAKING Keep track of contestationDeadline
instead of remainingContestationPeriod
and fix ReadyToFanout
. #483
ReadyToFanout
, such that sending a Fanout
input after seeing this output will never be "too early".HeadIsClosed
server output now contains the deadline instead of the remaining time.hydra-tui
for an example how to use the contestationDeadline
and ReadyToFanout
.BREAKING Several changes to the API:
BREAKING Changed logs to improve legibility and trace on-chain posting errors. #472
TxId
instead of full transactions in the nominal cases.Processing -> Begin
and Processed -> End
.PostingFailed
log entry.BREAKING The hydra-cluster
executable (our smoke test) does require --publish-scripts
or --hydra-scripts-tx-id
now as it may be provided with pre-published hydra scripts.
The hydra-node
does persist L1 and L2 states on disk now: #187
--persistence-dir
command line argument to configure location.headstate
and chainstate
to the persistence directory.Fixed bugs in hydra-node
:
3k
blocks because of a failed time conversion. #523
Prevent misconfiguration of hydra-node
by logging the command line options used and error out when:
Added a hydra-tools
executable, to help with generating Hydra keys and get hold of the marker datum hash. #474
Compute transaction costs as a "min fee" and report it in the tx-cost benchmark.
Update hydra-node-options section in docs.
Improved hydra-tui
user experience:
Build & publish static Linux x86_64 executables on each release :point_down: #546
Transaction IDs to be used as --hydra-scripts-tx-id
when running hydra-node
on the following networks:
preview
: 4081fab39728fa3c05c0edc4dc7c0e8c45129ca6b2b70bf8600c1203a79d2c6d
published & checked during smoke test run #32 (failing because no PlutusV2
cost model was on the testnet at that time)BREAKING Switch to BabbageEra
and PlutusV2
.
hydra-cardano-api
now uses Era = BabbageEra
and constructs PlutusV2
scripts.hydra-plutus
scripts now use the serialiseData
builtin to CBOR encode data on-chain.hydra-node
now expects BabbageEra
blocks and produces BabbageEra
transactions.hydra-cluster
now spins up a stake pool instead of a BFT node (not possible in Praos
anymore).hydra-plutus
have now different script hashes.BREAKING Use reference inputs and reference scripts in abort
transaction.
--hydra-scripts-tx-id
to the hydra-node
containing the current (--script-info
) Hydra scripts.publish-scripts
sub-command to hydra-node
to publish the current Hydra scripts.Added a hydra-cluster
executable, which runs a single scenario against a known network (smoke test) #430 #423.
Use deadline when posting a fanoutTx
instead of the current slot #441.
The user manual is now also available in Japanese thanks to @btbf! :jp:
Fixed display of remaining contestation period in hydra-tui
#437.
Transaction IDs to be used as --hydra-scripts-tx-id
when running hydra-node
on the following networks:
Implement on-chain contestation logic #192:
Contest
transaction when it observes a Close
or Contest
with an obsolete snapshotTransactions can now be submitted as raw CBOR-serialized object, base16 encoded, using the NewTx
client input. This also supports the text-envelope format from cardano-cli out of the box. See the api Reference.
BREAKING The hydra-node
does not finalize Heads automatically anymore.
ReadyToFanout
server output after the contestation period andFanout
client input command to deliberately finalize a Head when it is closed and the contestation period passed.Remaining contestation period is included in HeadIsClosed
and displayed in hydra-tui
.
IdleState
, which is visible in the log API.hydra-node
tracking the chain starting at a previous point using new --start-chain-from
command line option #300.
hydra-node
with an already inititalized HeadRolledBack
server output, see API reference
hydra-node --version
to show an easier to understand and accurate revision based on git describe
hydra-node --script-info
to check hashes of plutus scripts available in a hydra-node
.
--hydra-signing-key
and consequently --hydra-verification-key
are now longer and not compatible with previous versions!hydra-node
would not detect old Heads on the testnet.UTxO -> GetUTxOResponse
GetUTxO
client input on our API :)plutus
, cardano-ledger
, etc.) to most recent released versions making scripts smaller and Head transactions slighly cheaper already, see benchmarks for current limits.0.0.0.0
and correct paths.--ledger-genesis
and --ledger-protocol-parameters
to configure the ledger that runs inside a head. Options are provided as filepath to JSON files which match formats from cardano-cli
and cardano-node
#180.ano-api](https://github.com/input-output-hk/cardano-node/tree/master/cardano-api#cardano-api) specialized to the latest Cardano's era, and with useful extra utility functions.--network-magic
option for the hydra-node
and hydra-tui
has been changed to --network-id
. Also, the hydra-tui
command-line used to default to mainnet when not provided with any --network-magic
option, it doesn't anymore, --network-id
is mandatory. #180
CollectCom
transition of the on-chain Hydra contract to allow collecting commits from more than 2 parties! #254
demo/
setup.Hydra.Network.Ouroboros
not using hard-coded valency values anymore to allow more than 7 peer connections #203.hydra-tui
to show form focus, indicate invalid fields in dialogs and only allow valid values to be submitted #224.> 2
) requires increase in tx size limit over current mainchain parameters to ~20KB.hydra-node
and hydra-tui
available as packages from GitHub repoinspect-script
to dump contracts for further analysisplutus-cbor
and plutus-merkle-tree
, released & tagged separatelylocal-cluster
is now hydra-cluster
.cardano-api
types and functions to interact with chain.error
in chain interaction component.collectComTx
requires increase in tx size limit over current mainchain parameters to 32KB, which should be alleviated with Plutus optimisations and merging all contracts in one in future releasesfanoutTx
cannot handle more than 100 UTxO with the standard tx size of 16KB (200 with the temporary increase for test purpose).0.2.0
still applyfreeCostModel
.--node-socket
, --network-magic
and
--cardano-{signing,verification}-key
to hydra-node
and hydra-tui
to
configure the Cardano network access.hydra-node
quite significantly to distinguish hydra
credentials from cardano credentials.hydra-node
command line options.hydra-tui
to correctly show current state when re-connecting.hydra-node
requires a
UTXO to be marked as "fuel" to drive the Hydra protocol transactions.