<oembed><type>rich</type><version>1.0</version><author_name>npub1rmlhmgvxk3p6kv9dgr9tpccm8uh9hejycjm5wag033fvhtpn0jqslw5exr</author_name><author_url>https://nostr.ae/npub1rmlhmgvxk3p6kv9dgr9tpccm8uh9hejycjm5wag033fvhtpn0jqslw5exr</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>📅 Original date posted:2022-10-11&#xA;📝 Original message:&#xA;Hi Dave,&#xA;&#xA;Thanks for reading and for doing a better job of explaining the ideas than I did!&#xA;&#xA;Responses are in-line below:&#xA;&#xA;&gt; Hi John,&#xA;&gt; &#xA;&gt; I had difficulty understanding your proposal description here and in &#xA;&gt; your paper[1].  I wonder if others are having the same the same &#xA;&gt; difficulty, so I&#39;ve tried to reduce it down to just the essential idea &#xA;&gt; so you can tell me if I&#39;m understanding correctly and others can &#xA;&gt; evaluate it more quickly.  Here I go:&#xA;&gt; &#xA;&gt; In a traditional HTLC, the agreement is essentially:&#xA;&gt; &#xA;&gt; - Setup: Alice has x BTC, an unpublished value y, and the hash digest z &#xA;&gt; which is hash(y)&#xA;&gt; - HTLC success: Alice offers Bob the x BTC, which he can claim at any &#xA;&gt; time if he publishes y satisfying the equation hash(y) == z&#xA;&gt; - HTLC failure: Alice can spend the x BTC back to her wallet after some &#xA;&gt; time t has elapsed&#xA;&gt; &#xA;&gt; If I understand your modified protocol correctly, the essential modified &#xA;&gt; agreement is:&#xA;&gt; &#xA;&gt; - [Setup the same]&#xA;&gt; - [HTLC success the same]&#xA;&gt; - HTLC failure: Alice can spend the x BTC back to her wallet by first &#xA;&gt; getting a trigger[2] transaction confirmed onchain, waiting b blocks, &#xA;&gt; then getting the actual spend-back-to-wallet transaction confirmed&#xA;&gt; &#xA;&gt; Because the trigger transaction needs to be confirmed for b blocks &#xA;&gt; before Alice can can spend the money back to her wallet, Bob doesn&#39;t &#xA;&gt; need to take any action to lock-in an HTLC Success unless he sees the &#xA;&gt; trigger transaction appear onchain or he expects to be offline for more &#xA;&gt; than b blocks.  This allows Alice to stay offline for as long as Bob can &#xA;&gt; tolerate (which goes towards your point of Alice prepaying Bob for that &#xA;&gt; tolerance).&#xA;&#xA;Yes, that&#39;s exactly right.&#xA;&#xA;I&#39;d note that the transaction that plays the role of the &#34;trigger&#34; transaction is actually just Alice&#39;s Commitment transaction, so no new transaction is required.&#xA;&#xA;I&#39;d also note that the parameter &#34;b&#34; is exactly Bob&#39;s to_self_delay parameter and he has already committed himself to being able to respond to Alice&#39;s on-chain transactions within a window of b blocks, so the protocol doesn&#39;t put any additional requirements on his monitoring of the blockchain.&#xA;&#xA;&gt; &#xA;&gt; [1] &#xA;&gt; &lt;a href=&#34;https://raw.githubusercontent.com/JohnLaw2/ln-watchtower-free/main/watchtowerfree10.pdf&#34;&gt;https://raw.githubusercontent.com/JohnLaw2/ln-watchtower-free/main/watchtowerfree10.pdf&lt;/a&gt;&#xA;&gt; [2] &#34;Trigger&#34; transaction is the name given to that type of transaction &#xA;&gt; in section 4.2 of the Eltoo paper: &lt;a href=&#34;https://blockstream.com/eltoo.pdf&#34;&gt;https://blockstream.com/eltoo.pdf&lt;/a&gt;&#xA;&gt; &#xA;&gt; &gt; One-Shot Receives&#xA;&gt; &gt; =================&#xA;&gt; &gt;&#xA;&gt; I understand the essence of this idea to be simply encumbering dedicated &#xA;&gt; user Bob&#39;s commitment transaction with a timelock so that he can&#39;t &#xA;&gt; publish it until near the time when any HTLCs in it would expire.  &#xA;&gt; Alice&#39;s version of commitment would be unencumbered, so she could &#xA;&gt; publish it any time.&#xA;&#xA;Yes, that&#39;s correct.&#xA;&#xA;In particular, dedicated user Bob can&#39;t publish his current Commitment transaction until Alice has put her conflicting current Commitment transaction on-chain (assuming she follows the protocol) or both parties have updated the state off-chain. As a result, Alice doesn&#39;t have to worry about the case where she submits her current Commitment and HTLC-success transactions only to later discover that Bob&#39;s current Commitment transaction has won the race, thus forcing Alice to then submit her transaction (which is like an HTLC-success transaction but isn&#39;t actually called that in the protocol) which reveals the hash preimage and takes payment of the HTLC. Forcing Alice to wait around to see who&#39;s current Commitment transaction has won the race seems like an inconvenient requirement for a casual user.&#xA;&#xA;Is my understanding of this issue correct, or can Alice submit her transaction spending the HTLC output of Bob&#39;s current Commitment transaction even before he has submitted his current Commitment transaction? I realize this part of the protocol depends on node relay behavior, so it&#39;s harder to nail down and reason about than the consensus portion of the protocol. I may not have the correct understanding here, and if my understanding isn&#39;t correct, I&#39;d really like to fix it.&#xA;&#xA;&gt; Although your proposal may address this in the normal case, I think it &#xA;&gt; doesn&#39;t address the pathological case where honest casual user Alice &#xA;&gt; broadcasts the latest commitment transaction but her channel partner, &#xA;&gt; malicious dedicated user Mallory, broadcasts an older revoked commitment &#xA;&gt; transaction.  Because Mallory&#39;s revoked commitment transaction is older, &#xA;&gt; its timelock has expired, so it can win the race against Alice&#39;s latest &#xA;&gt; commitment transaction.&#xA;&gt; &#xA;&gt; To become aware of this situation and to broadcast a penalty transaction &#xA;&gt; within the necessary time limit, Alice still needs to monitor the block &#xA;&gt; chain.  If Alice still needs to monitor the block chain in any case, &#xA;&gt; this proposed change doesn&#39;t eliminate the underlying problem of onerous &#xA;&gt; monitoring as far as I can tell.&#xA;&#xA;You&#39;re right that Bob (or Mallory) could still broadcast an older revoked transaction, and if that happens, Alice needs to broadcast a penalty transaction within her long interval (I_L) safety parameter which I was suggesting she could set to something like 1-3 months. I felt that being able to shut off her phone and not worry about the Lightning app for all but a short time (say 10 minutes) every few months wasn&#39;t overly onerous. Do you feel that casual users wouldn&#39;t see it that way?&#xA;&#xA;The issue of how often Alice needs to monitor the blockchain is based on her setting of her I_L parameter and is really independent of her ability to perform one-shot receives. My understanding is that in the current Lightning protocol, if Alice is receiving a payment and she gives the payment&#39;s secret to her partner Bob, and if Bob fails to update the channel state to reflect the payment, Alice has to 1) submit her Commitment and HTLC-success transactions, 2) wait to see if her current Commitment transaction or Bob&#39;s current Commitment transaction won the race, and if Bob&#39;s current Commitment transaction won, 3) submit her transaction spending Bob&#39;s current Commitment transaction&#39;s HTLC output. The protocol that supports one-shot receives eliminates steps 2) and 3) above, which seems like a better user interface.&#xA;&#xA;Does that make sense?&#xA;&#xA;Many thanks,&#xA;John&#xA;&#xA;&#xA;&#xA;Sent with Proton Mail secure email.</html></oembed>