<oembed><type>rich</type><version>1.0</version><title>David A. Harding [ARCHIVE] wrote</title><author_name>David A. Harding [ARCHIVE] (npub16d…x4wrd)</author_name><author_url>https://yabu.me/npub16dt55fpq3a8r6zpphd9xngxr46zzqs75gna9cj5vf8pknyv2d7equx4wrd</author_url><provider_name>njump</provider_name><provider_url>https://yabu.me</provider_url><html>📅 Original date posted:2020-12-13&#xA;📝 Original message:&#xA;On Fri, Dec 11, 2020 at 01:02:04PM +1100, Lloyd Fournier wrote:&#xA;&gt; If c = 1 (i.e. the node is fine and it wants to continue the channel) then&#xA;&gt; it checks `encrypted_signature_verify(X, settlement_tx, Y)`. If it passes&#xA;&gt; it sends the commitment blinding y back to prove that it doesn&#39;t have the&#xA;&gt; signature (i.e. prove c = 1). If verification fails then the node is&#xA;&gt; malicious and it fails the channel. &#xA;&#xA;This is really cool!  However, I don&#39;t understand why it&#39;s needed.  Your&#xA;goal seems to be for the sender to provide the commitment transaction&#xA;and signatures before he learns whether the receiver actually needs&#xA;them.  That&#39;s just as easily accomplished by sending the data upfront in&#xA;plain text.  For example, it seems to me that both of the following&#xA;protocols provide identical utility:&#xA;&#xA;1. On every reconnection, request the plain text unsigned commitment&#xA;   transaction, send a pedersen commitment, and receive the encrypted&#xA;   signature(s).  If c=1, verify the encrypted signature(s) and (on&#xA;   success) send the blinding factor or (on failure) fail the channel&#xA;   and ban the peer.  If c=0, decrypt the signature(s), apply them to&#xA;   the commitment transaction, and broadcast.&#xA;&#xA;2. On every reconnection, request the plain text unsigned commitment&#xA;   transaction with all of its signatures, also in plain text.  If our&#xA;   database is intact, verify the commitment transaction and its&#xA;   signatures are valid and (on success) continue or (on failure) fail&#xA;   and ban.  If we lost data, broadcast the commitment transaction.&#xA;&#xA;Unless I&#39;m forgetting something, there&#39;s no reason a node shouldn&#39;t send&#xA;its latest commitment transaction to its counterparty in plain text&#xA;(over the regular BOLT8 P2P encrypted and authenticated link).&#xA;&#xA;I think the challenge in either protocol above is deciding which peer&#xA;goes first, because whoever sends the commitment transaction reveals&#xA;what they think the current state is.  Any node that refuses to go first&#xA;can then be suspected of having lost data.  BOLT2&#xA;option_static_remotekey has this same problem, which is reasonably&#xA;mitigated IMO by LN&#39;s penalty mechanism forcing any would-be thief to&#xA;risk their own funds; this doesn&#39;t work for basic eltoo, though.&#xA;&#xA;-Dave&#xA;-------------- next part --------------&#xA;A non-text attachment was scrubbed...&#xA;Name: signature.asc&#xA;Type: application/pgp-signature&#xA;Size: 833 bytes&#xA;Desc: not available&#xA;URL: &lt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20201213/778f3af7/attachment.sig&gt;</html></oembed>