-
Notifications
You must be signed in to change notification settings - Fork 404
Document consistency and availability assumption of watchtower infrastructure #604
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
Comments
One of your monitor instance may crash silently for a while and you might not learn it if you don't update_monitor() due to lack of channel updates ? Your implementation of ManyChannelMonitor might force-close preemptively channel at risk in reaction. See also #667 (review) |
Watchtower Alice receives block 100, broadcasts state X, rejects state Y. See also #667 (comment) |
Right, I think the only way to solve that pattern is to have some kind of consensus on when to broadcast a transaction - if you can't get a majority of watchtowers to agree to halt updates, then you shouldn't be able to broadcast a transaction as otherwise a majority of watchtowers could revoke the now-broadcast transaction. |
I think there are two separate animals here.
I agree with @TheBlueMatt - the HSMs embedded in each channel-monitor must achieve consensus in order to move the state forward (e.g. revoke an old state). This can be achieved with a majority voting scheme. |
I like the distinction, but note that usually LN folks have used private/public watchtower for the trusted-vs-untrusted deployment. Though it hasn't been done with that much rigor. You may delegate running one instance of your distributed channel-monitor to a third-party, you may have out-of-band remedies against them, that's up to you. That said, I think than less-than-unanimity to move state forward (i.e accept |
I think after a bunch of back and forth @ariard and I are on a similar page - there are really two supported modes here (or should be) - either you get majority consensus of your monitors for each action (including broadcasting) or you get 100% consensus of your monitors for updates (but any one monitor can broadcast on its own). Still #679 makes it easier to build the second since it avoids the need to do complicated pre-consensus, allowing you to simple apply new updates to monitors and wait until all monitors have verified they've applied the update before moving the channel forward. |
Describe responsibilities between a) off-chain manager b) monitor coordinator c) per-channel monitor. |
For remote watchers, we may have race conditions between learning of a revocation secrets and a counterparty commitment transaction as a former can happen after the latter. Verify or do something. |
Document different internal monitor backup strategies. See #681 (comment) |
We may have hints that coordinator is buggy or compromised based on our local state. If this happen, we may go onchain to avoid further risks. See #681 (comment) |
Getting a fail-safe/highly robust watchtower model is harder than expected. As we encounter issue while moving forward we should keep track of them and draw a consistent model step by step.
See #597 (comment)
TODO: link #watchtower slack discussion on quorum-vs-consensus alternatives.
The text was updated successfully, but these errors were encountered: