<oembed><type>rich</type><version>1.0</version><author_name>npub17fjkngg0s0mfx4uhhz6n4puhflwvrhn2h5c78vdr5xda4mvqx89swntr0s</author_name><author_url>https://nostr.ae/npub17fjkngg0s0mfx4uhhz6n4puhflwvrhn2h5c78vdr5xda4mvqx89swntr0s</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>📅 Original date posted:2021-12-21&#xA;📝 Original message:&#xA;Hey AJ and list,&#xA;&#xA;That&#39;s a very good point, it&#39;s really worth highlighting!&#xA;&#xA;The reason we have &#34;toxic waste&#34; with HTLCs is because we commit to the&#xA;payment_hash directly inside the transaction scripts, so we need to&#xA;remember all the payment_hash we&#39;ve seen to be able to recreate the&#xA;scripts (and spend the outputs, even if they are revoked).&#xA;&#xA;But with PTLCs, we commit to a payment_point outside of the scripts (in&#xA;the adaptor signature that is exchanged), so we&#39;re able to recreate the&#xA;scripts independently of the payment details! This also means that the&#xA;payment_point never appears on-chain (which is good for privacy) whereas&#xA;the payment_hash does appear on-chain for HTLCs.&#xA;&#xA;*_anchor: dust, who cares -- might be better if local_anchor used key =&#xA;&gt; revkey&#xA;&#xA;&#xA;I don&#39;t think we can use revkey, this would prevent us from bumping the&#xA;current remote commitment if it appears on-chain (because we don&#39;t know&#xA;the private revkey yet if this is the latest commitment). Usually the&#xA;remote peer should bump it, but if they don&#39;t, we may want to bump it&#xA;ourselves instead of publishing our own commitment (where our main&#xA;output has a long CSV).&#xA;&#xA;But as you already mentioned, who cares, it&#39;s dust and we don&#39;t even need&#xA;it to CPFP the revoked commitment, we can use any other output since the&#xA;revocation path isn&#39;t encumbered with a CSV 1.&#xA;&#xA;Cheers,&#xA;Bastien&#xA;&#xA;Le dim. 19 déc. 2021 à 23:23, Anthony Towns &lt;aj at erisian.com.au&gt; a écrit :&#xA;&#xA;&gt; On Wed, Dec 08, 2021 at 04:02:02PM +0100, Bastien TEINTURIER wrote:&#xA;&gt; &gt; I updated my article [0], people jumping on the thread now may find it&#xA;&gt; &gt; helpful to better understand this discussion.&#xA;&gt; &gt; [0] https://github.com/t-bast/lightning-docs/pull/16&#xA;&gt;&#xA;&gt; Since merged, so&#xA;&gt; https://github.com/t-bast/lightning-docs/blob/master/taproot-updates.md&#xA;&gt;&#xA;&gt; So imagine that this proposal is finished and widely adopted/deployed&#xA;&gt; and someone adds an additional feature bit that allows a channel to&#xA;&gt; forward PTLCs only, no HTLCs.&#xA;&gt;&#xA;&gt; Then suppose that you forget every old PTLC, because you don&#39;t like&#xA;&gt; having your channel state grow without bound. What happens if your&#xA;&gt; counterparty broadcasts an old state?&#xA;&gt;&#xA;&gt;  * the musig2 channel funding is irrelevant -- the funding tx has been&#xA;&gt;    spend at this point&#xA;&gt;&#xA;&gt;  * the unspent commitment outputs pay to:&#xA;&gt;      to_local: ipk = musig(revkey, mykey) -- known ; scripts also known&#xA;&gt;      to_remote: claimable in 1 block, would be better if ipk was also musig&#xA;&gt;      *_anchor: dust, who cares -- might be better if local_anchor used&#xA;&gt;         key = revkey&#xA;&gt;      *_htlc: irrelevant by definition&#xA;&gt;      local_ptlc: ipk = musig(revkey, mykey) -- known; scripts also known&#xA;&gt;&#xA;&gt;  * commitment outputs may be immediately spent via layered txs. if so,&#xA;&gt;    their outputs are: ipk = musig(revkey, mykey); with fixed scripts,&#xA;&gt;    that include a relative timelock&#xA;&gt;&#xA;&gt; So provided you know the revocation key (which you do, because it&#39;s an&#xA;&gt; old transaction and that only requires log(states) data to reconstruct)&#xA;&gt; and your own private key, you can reconstruct all the scripts and use&#xA;&gt; key path spends for every output immediately (excepting the local_anchor,&#xA;&gt; and to_remote is delayed by a block).&#xA;&gt;&#xA;&gt; So while this doesn&#39;t achieve eltoo&#39;s goal of &#34;no toxic waste&#34;, I believe&#xA;&gt; it does achieve the goal of &#34;state information is bounded no matter&#xA;&gt; how long you leave the channel open / how many transactions travel over&#xA;&gt; the channel&#34;.&#xA;&gt;&#xA;&gt; (Provided you&#39;re willing to wait for the other party to attempt to claim&#xA;&gt; a htlc via their layered transaction, you can use this strategy for&#xA;&gt; htlcs as well as ptlcs -- however this leaves you the risk that they&#xA;&gt; never attempt to claim the funds, which may leave you out of pocket,&#xA;&gt; and may give them the opportunity to do an attack along the lines of&#xA;&gt; &#34;you don&#39;t get access to the $10,000 locked in old HTLCs unless you pay&#xA;&gt; me $1,000&#34;.  So I don&#39;t think that&#39;s really a smart thing to do)&#xA;&gt;&#xA;&gt; Cheers,&#xA;&gt; aj&#xA;&gt;&#xA;&gt;&#xA;-------------- next part --------------&#xA;An HTML attachment was scrubbed...&#xA;URL: &lt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20211221/471cbd0d/attachment.html&gt;</html></oembed>