PTLCs early draft specification



Summary:

In a mailing list conversation, Lloyd Fournier pointed out that the final message "Bob -> Alice: revoke_and_ack" is not necessary if Alice is only sending new transactions paying Bob. However, it's intended to cover all update messages, and if Alice is also including any `update_fulfill_htlc` or `update_fail_htlc` messages in the commitment, she's potentially gaining funds. As an alternative to the `option_simplified_update` approach, aj suggested an approach where each node can unilaterally send various messages that always update the state asynchronously and nodes can track the state by having a list of htlcs/ptlcs/balances, etc for state (n), and a list of unapplied update messages for themselves and the other party (a+1,...,a') and (b+1,...,b'), and apply them in order when constructing the new state (n+1) for a new commitment signing round. The proposal message should just include both update values (a') and (b'). Though Bob's new commit tx can use the same revocation key as the previous one, fail/fulfill messages break it. Nonetheless, avoiding sending unnecessary messages is usually more performant and simpler, and the extra message from Bob allows Alice to discard the adaptor sigs associated with the old state.


Updated on: 2023-05-23T16:55:24.840861+00:00