21. Bounded transaction validity on Hydra protocol transactions
Status
Accepted
Context
-
The HydraHeadV1 formal specification contains a bounded confirmation window:
// Deadline
T_max <= T_min + L // Bounded confirmation window
DL’ = T_max + L // The latest possible deadline is 2*Lwith
T_minandT_maxbeing the tx validity bounds andLbeing the contestation period.- This is to avoid attacks with specified upper validity bound being too far in the future and denial of service the head with this (e.g. 10 years).
Current state of things:
-
The contestation period and upper tx validity is used for computing the contestation deadline.
-
There is a
closeGraceTimecurrently hard-coded (to100slots) to set some upper bound on thecloseTx. This was also required so far to compute the contestation deadline. -
Different networks (chains) have different slot lengths, e.g. the preview network has a slot every
1s, while our local devnets use0.1s. This means hardcoded values likecloseGraceTimeneed to be in sync with the underlying network. -
The
contestationPeriodcan be configured by users via theInitclient input. For example, the hydra-cluster test suite uses a hardcodedcperiodon the client side. -
Default value for
T_Minis negative infinity. -
Lower tx validity being in the future does not pose a problem since other participant is able to close a head.
What we want to achieve:
-
We want to enforce topmost formula in this file in our code on-chain.
-
Introduce
maxGraceTimeexpressed in seconds in place ofcloseGraceTimeand adjust to appropriate value. -
The contestation period is to be used to create bounded close transaction (together with
maxGraceTime). Before it was only used for computing the contestation deadline. -
If contestation period is higher than
maxGraceTimewe will pick the latter. We still needmaxGraceTimesince ifcontestationPeriodis low for the current network our txs reach the upper bound fast and become invalid. That is why we set the upper tx bound to be minimum betweencontestationPeriodandmaxGraceTimeso that txs have high enough upper bound. -
Make sure all head participants use the same value for
contestationPeriod. -
Attack vector has a corresponding mutation test.
Decision
-
Use the specification formula on-chain.
-
Configure the contestation period (number of seconds) on the
hydra-node, e.g. via a--contestation-periodcommand line option. -
Lower tx bound should be the last known slot as reported by the
cardano-node. -
Upper tx bound is the current time + minimum between
contestationPeriodandmaxGraceTime. -
When submitting the
InitTxmake sure to use--contestation-periodvalue from our node's flag. -
If other nodes observe
OnInitTxand thecontestationPeriodvalue does not match with their--contestation-periodsetting - ignoreInitTx. -
Rename
closeGraceTimetomaxGraceTimesince we are using it also for upper bound of a contest tx.
Consequences
-
Not any positive number of seconds is a valid contestation period any more!
-
Upper tx validity of close transaction is the minimum between
maxGraceTimeandcontestationPeriodand this needs to be good enough value with respect to running network. This is a consequence required by the ledger when constructing transactions since we cannot convert arbitrary point in times to slots. -
All parties need to agree on contestation period before trying to run a Head protocol otherwise InitTx will be ignored.









