Process a transaction resulting in snapshot x+1 requested, but one party (eve) does not share their AckSn with the rest. e.g. due to a technical fault or adversarial behavior
Honest party alice closes the head with snapshot x
See contestation by eve with snapshot x+1
Honest party alice tries to fanout
Actual behavior
The hydra-node of the honest party cannot fanout.
Expected behavior
The honest party can do a fanout even though they did not see snapshot x+1 confirmed.
Hypothesis
The hydra-node uses the latest confirmedSnapshot to create the fanoutTx. However, it may very well be the case that the seenSnapshot is more recent than the confirmedSnapshot.
I think the hydra-node should check both, confirmedSnapshot and seenSnapshot whether we have the suitable pre-image of finally closed snapshot number (x+1 above) and use the right one to create and post the fanoutTx.
In case we don't have the right snapshot available in the HeadState, a corresponding error should be shown to the users that explains why we cannot fanout (missing the closed snapshot).
Context & versions
Observed with
0.17.0
Steps to reproduce
alice
andeve
x
x+1
requested, but one party (eve
) does not share theirAckSn
with the rest. e.g. due to a technical fault or adversarial behavioralice
closes the head with snapshotx
eve
with snapshotx+1
alice
tries to fanoutActual behavior
The
hydra-node
of the honest party cannot fanout.Expected behavior
The honest party can do a fanout even though they did not see snapshot
x+1
confirmed.Hypothesis
The
hydra-node
uses the latestconfirmedSnapshot
to create thefanoutTx
. However, it may very well be the case that theseenSnapshot
is more recent than theconfirmedSnapshot
.I think the
hydra-node
should check both,confirmedSnapshot
andseenSnapshot
whether we have the suitable pre-image of finally closed snapshot number (x+1
above) and use the right one to create and post thefanoutTx
.In case we don't have the right snapshot available in the
HeadState
, a corresponding error should be shown to the users that explains why we cannot fanout (missing the closed snapshot).