You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
from all the parties, try to fanout the head simultaneously
Actual behavior
The head fanout does success but all but one party will return to the client: PostTxOnChainFailed which makes the user confused about what happened.
#832 contains more details with error logs from one node.
Expected behavior
If the fanout succeed, no party should see no error.
Extra Information
The fanout transaction needs to spend the output of the close transaction (or the last contest). There is only one such output so if we have several parties trying to spend this output in a fanout transaction, of course, only one of these transaction will succeed and the other transactions will fail.
The hydra-node whose transactions fail would receive an error of the form:
Had a look on the user-provided logs in #832 and it seems we get the PostTxOnChainFailed before seeing any OnFanoutTx. This would likely come just after and the hydra-node hence has not enough information to not report the PostTxOnChainFailed right-away, i.e. stateless handling of this is not possible and we would need to "wait for a bit" in case we see an OnFanoutTx observation event "shortly after"?
This applies to any state transitions via chain transactions (Collect, Close, Contest) which consume the same UTxO to advance the head life cycle on-chain.
The chain layer does not "really understand" the state transitions
The head logic does not understand details about transactions (txin already spent)
The ledger errors are very annoying to work with and unpack.
Maybe there is the option to do interconnect the tx submission with the chain sync portions a bit better to "have the observation" before the error. Because the node already saw the transaction (otherwise the inputs would not be already spent), but errors propagate faster than observations out of our chain layer.
Besides: it would be perfectly fine to ignore this if we see the head advance correctly into the next state. Should we "tone down" the message of this error as it is something which is not so severe?
Also: This also reminds us from the "pending transaction" situation where we made the TUI block before submitting another transaction.
Next step: Spend 1-2 hours to analyze this situation (either on Fanout or Collect) in our e2e tests (controlled environment) to find out what the cardano-node behavior is exactly in this case. i.e. does it already have the block with the fanout/collect tx in it and just doesn't tell us?
Context & versions
0.10.0 unstable
Steps to reproduce
Actual behavior
The head fanout does success but all but one party will return to the client:
PostTxOnChainFailed
which makes the user confused about what happened.#832 contains more details with error logs from one node.
Expected behavior
If the fanout succeed, no party should see no error.
Extra Information
The fanout transaction needs to spend the output of the close transaction (or the last contest). There is only one such output so if we have several parties trying to spend this output in a fanout transaction, of course, only one of these transaction will succeed and the other transactions will fail.
The hydra-node whose transactions fail would receive an error of the form:
Are we able to figure out that this is an ok error and, either ignore it, or raise a
AlreadyFanedOut
error to the client?The text was updated successfully, but these errors were encountered: