-
Notifications
You must be signed in to change notification settings - Fork 939
@rustyrussell: Protocol-triggered unilateral closure due to deadline hit on HTLC with our revoke_and_ack
not known to have been received
#8218
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
Detailed Event Analysis
Now we are expecting to receive a new commitment from the peer.
Now we are expected to send a
Now we are expected to send a new commitment.
Now we are expecting to receive a
Now we are expected to send a new commitment, but we can't because we are still waiting to receive a
Now we are expected to send a new commitment, but we still can't because we are still waiting to receive a
Now we are expected to send a
Now we are expected to send a new commitment, but we still can't because we are still waiting to receive a
Now we are expected to send a new commitment, but we still can't because we are still waiting to receive a
We are still expected to send a new commitment, and now we can.
Now we are expecting to receive a
Now we are expecting to receive a new commitment from the peer.
Now we are expected to send a
Now we're all sync'd up with our HTLCs 35771 and 35772 fully added to the channel. (The channel also has our HTLC 35770.) |
Now we are expecting to receive a new commitment from the peer.
Now we are expected to send a new commitment. We are also still expecting to receive a new commitment from the peer.
Now we are expecting to receive a
Now we are expected to send a
Now we are expected to send a new commitment, but we can't because we are still waiting to receive a
We are still expected to send a new commitment, but we still can't because we are still waiting to receive a
We are still expected to send a new commitment, and now we can. We are also still expecting to receive a new commitment from the peer.
Now we are expecting to receive a
Now we are expected to send a
Now we are expected to send a new commitment, but we can't because we are still waiting to receive a
We are still expected to send a new commitment, and now we can.
Now we are expecting to receive a new commitment from the peer. We are also still expected to send our own new commitment.
Now we are expecting to receive a
Now we are expected to send a new commitment, but we can't because we are still waiting to receive a
This has the effect of reverting our HTLC 35772 back to the |
The peer reconnects to us, and we reëstablish the channel with our HTLC 35771 in the
We are still expecting to receive a We receive a
We are still expecting to receive a
Now we are expected to send a new commitment, but we can't because we are still waiting to receive a
This has the effect of dropping our HTLC 35774. The peer reconnects to us, and we reëstablish the channel with our HTLC 35771 in the
We are still expecting to receive a We receive a
We are still expecting to receive a
Now we are expected to send a new commitment, but we can't because we are still waiting to receive a
Now we are expecting to receive a new commitment from the peer. We are also still expected to send our own new commitment, but we can't because we are still waiting to receive a
This has the effect of reverting our HTLC 35772 back to the The peer reconnects to us, and we reëstablish the channel with our HTLC 35771 in the
We are still expecting to receive a We receive a
We are still expecting to receive a
Now we are expecting to receive a new commitment from the peer. We are also still expecting to receive a
Now we are expected to send a
Now we are expected to send a new commitment, but we can't because we are still waiting to receive a
We are still expected to send a new commitment, and now we can.
Now we are expecting to receive a
Now we're all sync'd up with our HTLCs 35771 and 35772 fully removed from the channel. Much later… The peer reconnects to us, and we reëstablish the channel with our HTLC 35773 (and four others) in the
We receive a
Later still… (with no intervening disconnections)
|
@rustyrussell: What follows is a detailed analysis of the failure of a very active channel due to the peer's neglect to remove an HTLC before its deadline. The HTLC in question had reached the
SENT_ADD_ACK_REVOCATION
state just prior to the peer connection being lost, and we didn't receive any messages from the peer that would indicate that it had received ourrevoke_and_ack
(or any message we sent subsequently), so it is possible that it did not. The peer is known to have been running LND 0.18.5.I am sure that much of the following discussion will be superfluous, but I want to give context to show that the channel was working correctly and to highlight the overlapped nature of the HTLCs, which hopefully may lend a clue as to why the peer evidently didn't believe it needed to remove one of our HTLCs before its deadline.
Overview
SENT_ADD_ACK_REVOCATION
⇒RCVD_REMOVE_HTLC
RCVD_REMOVE_HTLC
⇒RCVD_REMOVE_COMMIT
RCVD_REMOVE_COMMIT
⇒SENT_REMOVE_REVOCATION
SENT_REMOVE_REVOCATION
⇒SENT_REMOVE_ACK_COMMIT
SENT_ADD_ACK_REVOCATION
⇒RCVD_REMOVE_HTLC
SENT_ADD_HTLC
RCVD_REMOVE_HTLC
⇒RCVD_REMOVE_COMMIT
RCVD_REMOVE_COMMIT
⇒SENT_REMOVE_REVOCATION
SENT_ADD_HTLC
SENT_REMOVE_ACK_COMMIT
⇒RCVD_REMOVE_ACK_REVOCATION
SENT_REMOVE_REVOCATION
⇒SENT_REMOVE_ACK_COMMIT
HTLC 35771:
SENT_ADD_HTLC
⇒SENT_ADD_COMMIT
HTLC 35772:
SENT_ADD_HTLC
⇒SENT_ADD_COMMIT
SENT_REMOVE_ACK_COMMIT
⇒RCVD_REMOVE_ACK_REVOCATION
RCVD_ADD_REVOCATION
⇒RCVD_ADD_ACK_COMMIT
HTLC 35772:
RCVD_ADD_REVOCATION
⇒RCVD_ADD_ACK_COMMIT
RCVD_ADD_ACK_COMMIT
⇒SENT_ADD_ACK_REVOCATION
HTLC 35772:
RCVD_ADD_ACK_COMMIT
⇒SENT_ADD_ACK_REVOCATION
SENT_ADD_ACK_REVOCATION
⇒RCVD_REMOVE_HTLC
SENT_ADD_HTLC
SENT_ADD_HTLC
⇒SENT_ADD_COMMIT
RCVD_REMOVE_HTLC
⇒RCVD_REMOVE_COMMIT
RCVD_REMOVE_COMMIT
⇒SENT_REMOVE_REVOCATION
SENT_ADD_ACK_REVOCATION
⇒RCVD_REMOVE_HTLC
SENT_ADD_COMMIT
⇒RCVD_ADD_REVOCATION
SENT_REMOVE_REVOCATION
⇒SENT_REMOVE_ACK_COMMIT
RCVD_REMOVE_HTLC
⇒RCVD_REMOVE_COMMIT
HTLC 35773:
RCVD_ADD_REVOCATION
⇒RCVD_ADD_ACK_COMMIT
RCVD_REMOVE_COMMIT
⇒SENT_REMOVE_REVOCATION
HTLC 35773:
RCVD_ADD_ACK_COMMIT
⇒SENT_ADD_ACK_REVOCATION
SENT_REMOVE_ACK_COMMIT
⇒RCVD_REMOVE_ACK_REVOCATION
SENT_ADD_ACK_REVOCATION
⇒RCVD_REMOVE_HTLC
SENT_REMOVE_REVOCATION
⇒SENT_REMOVE_ACK_COMMIT
SENT_ADD_HTLC
RCVD_REMOVE_HTLC
⇒SENT_ADD_ACK_REVOCATION
(reverted)HTLC 35774: (dropped)
SENT_ADD_HTLC
SENT_ADD_HTLC
SENT_ADD_ACK_REVOCATION
⇒RCVD_REMOVE_HTLC
RCVD_REMOVE_HTLC
⇒SENT_ADD_ACK_REVOCATION
(reverted)HTLC 35774: (dropped)
SENT_ADD_ACK_REVOCATION
⇒RCVD_REMOVE_HTLC
RCVD_REMOVE_HTLC
⇒RCVD_REMOVE_COMMIT
RCVD_REMOVE_COMMIT
⇒SENT_REMOVE_REVOCATION
SENT_REMOVE_ACK_COMMIT
⇒RCVD_REMOVE_ACK_REVOCATION
SENT_REMOVE_REVOCATION
⇒SENT_REMOVE_ACK_COMMIT
SENT_REMOVE_ACK_COMMIT
⇒RCVD_REMOVE_ACK_REVOCATION
(Detailed analysis of the above to follow in comments due to GitHub's post length limit.)
The text was updated successfully, but these errors were encountered: