I am analysing Issue #3194, on how to make State Channels become usable earlier, ideally without sacrificing too much safety.
I have started writing down the analysis in a Github wiki page, and would appreciate comments on the different alternatives.
While investigating, I noticed that the minimum_depth_strategy option wasn’t ever officially documented. You will find a short description and some examples in the article.
So first of all, thank you for documenting how the minimum_depth works. I am not sure if this had been documented so far, if it had - I am not aware of it
Then I don’t see why both parties should coordinate somehow their minimum_depth values: each channel participant takes care for their own benefit and this could sometimes mean that they require a different amount of confirmations. Once a participant’s FSM receives enough confirmations, it would inform the other participant’s FSM that it is ready to continue. Once the second one confirms - the channel is ready to go. The problem with having different minimum_depth values would be that the different FSMs would require a different amount of time to consider the confirmations to be enough. That actually is ok as the faster participant would wait for the slower one.
Regarding the link above, I see an extensive analysis of the minimum_depth. All of the approaches seem handy, except the first one (I guess it is for completeness). The thing is that all the three approaches are great but they solve different issues:
the modifiable minimum_depth per transaction makes more granular and pushes the responsibility to the client where it should be
the modifiable minimum_depth is no brainer, it should be changeable
the new request to the FSM is also no brainer as it empowers the client to make the decision when one feels secure enough to continue
So they are all connected and solving the similar problems. Possibly we want all of them, but if I were to pick just one, it would be the last one (and I will set a high default value at channel creation time…). In this case I would still miss the rest of the functionalities
I have a few more things I would like to add, then I want to break it down into separate issues that could be discussed and prioritized. I agree that there are some alternatives that could achieve at least part of what the initial problem formulation aims at.