-
Notifications
You must be signed in to change notification settings - Fork 87
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Log and send client output when some keys don't match #529
Comments
InitObservation
when some keys don't match and have higher-level logic log & ignore instead https://github.com/input-output-hk/hydra-poc/blob hydra-poc/hydra-node/src/Hydra/Chain/Direct/Tx.hs Line 559 in c7c28d6 guard $ sort expectedNames == sort actualNames
By applying this change, now the misconfigured party can not init a head with others but observes others' initializations. A better design would be to keep others' observations but don not be able to join and open a head if any party is misconfigured. Possibly we display an error in this situations, like: Initialization Discarded/Ignored |
This and propTransactionIsNotObserved have always been a crutch because it would check that a transaction DOES validate, but IS NOT observed. It was introduced to motivate the filtering of initTx observations which we now want to actually remove (#529)
This and propTransactionIsNotObserved have always been a crutch because it would check that a transaction DOES validate, but IS NOT observed. It was introduced to motivate the filtering of initTx observations which we now want to actually remove (#529)
This and propTransactionIsNotObserved have always been a crutch because it would check that a transaction DOES validate, but IS NOT observed. It was introduced to motivate the filtering of initTx observations which we now want to actually remove (#529)
Started investigating the second point of the blocking part again
Although hoped initially ADR18 (now basically superseeded) did not do the trick as the problem is really the fact that the So recently we set out to try to make |
This issue is not only about stateless observation of the chain but also about improving feedback to the users and troubleshooting capabilities of the hydra-node and clients. Errors or notifications in general do not need to go through the |
Why
It's very hard to diagnose when a Head initialization was not picked up by one of the hydra-nodes. More specifically, the hydra client does not report anything at all and the hydra-node logs are also not very conclusive. For example, when some keys are not configured correctly there is not even an
OnInitTx
observation in the logs, just some blocks received.What
Even when we have not configured our keys correctly, we want to have a log entry about a Head initialization, maybe even an API output. However, we do not want to have the hydra-node "adopt" this Head initialization, as it will not be fine anyways (because we are missing knowledge of hydra and/or cardano keys of the other parties).
Instead of discarding(was not informing enough, so we changed the definition of what we want to do here)InitObservation
when some keys don't match, we want to "discover" all Heads where we are part of. That makes it easier to see a Head has been initialized and if there is a misconfiguration, we can notice by checking Hydra vkeys and the misconfigured party not seeing a head open.How
BLOCKED: This is actually not possible as we don't have any knowledge of cardano keys in the HeadLogic + the chain layer needs to take a decision about a state transition as well (into the L1 onchain state) ADR18 could be a solution to this as we will not be needing to store anything in the chain layer and we could yield the observation of an init transaction into the HeadLogic.
To be able to inform a client about an
IgnoredHeadInit
we would need to be notified about such a transaction in the head logic! That means, that the chain layer need not filter valid, but unrelated init transactions, but yield aInitObservation
always when it is a valid init transaction. No matter whether we are part of this head or not!guard
on who is part of a head inHydra.Chain.Direct.Tx
.OnInitTx
events inHeadLogic
depending on configured Hydra/Cardano keys.ServerOutput
for when the filtering deemed to haveIgnoredHeadInit
.TBD
ChainState
limits ourselves in observing init transactions as-is.The text was updated successfully, but these errors were encountered: