<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <updated>2023-06-09T12:20:40Z</updated>
  <generator>https://njump.me</generator>

  <title>Nostr notes by Antoine Riard [ARCHIVE]</title>
  <author>
    <name>Antoine Riard [ARCHIVE]</name>
  </author>
  <link rel="self" type="application/atom+xml" href="https://njump.me/npub1vjzmc45k8dgujppapp2ue20h3l9apnsntgv4c0ukncvv549q64gsz4x8dd.rss" />
  <link href="https://njump.me/npub1vjzmc45k8dgujppapp2ue20h3l9apnsntgv4c0ukncvv549q64gsz4x8dd" />
  <id>https://njump.me/npub1vjzmc45k8dgujppapp2ue20h3l9apnsntgv4c0ukncvv549q64gsz4x8dd</id>
  <icon></icon>
  <logo></logo>




  <entry>
    <id>https://njump.me/nevent1qqsfyf7aljgwmkceflsr6pd56j3pw39a5ycgrmvvenmnpqtf60jqmrqzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zsru6al</id>
    
      <title type="html">📅 Original date posted:2023-10-17 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsfyf7aljgwmkceflsr6pd56j3pw39a5ycgrmvvenmnpqtf60jqmrqzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zsru6al" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsf39ulaygy8wnn03mcl80yqwlq476gnmdvrd7sd55cjrxygyw9etck9su52&#39;&gt;nevent1q…su52&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-10-17&lt;br/&gt;🗒️ Summary of this message: Enabling lightning withdrawals from exchanges to user wallets efficiently requires the use of covenants. Batching multiple transactions into one is a possible solution, but it requires signatures from multiple users.&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Bastien,&lt;br/&gt;&lt;br/&gt;&amp;gt; The naive way of enabling lightning withdrawals is to make the user&lt;br/&gt;&amp;gt; provide a lightning invoice that the exchange pays over lightning. The&lt;br/&gt;&amp;gt; issue is that in most cases, this simply shifts the burden of making an&lt;br/&gt;&amp;gt; on-chain transaction to the user&amp;#39;s wallet provider: if the user doesn&amp;#39;t&lt;br/&gt;&amp;gt; have enough inbound liquidity (which is likely), a splice transaction&lt;br/&gt;&amp;gt; will be necessary. If N users withdraw funds from an exchange, we most&lt;br/&gt;&amp;gt; likely will end up with N separate splice transactions.&lt;br/&gt;&lt;br/&gt;It is uncertain to me if secure fee-bumping, even with future mechanisms&lt;br/&gt;like package relay and nversion=3, is robust enough for multi-party&lt;br/&gt;transactions and covenant-enable constructions under usual risk models.&lt;br/&gt;&lt;br/&gt;See test here:&lt;br/&gt;&lt;a href=&#34;https://github.com/ariard/bitcoin/commit/19d61fa8cf22a5050b51c4005603f43d72f1efcf&#34;&gt;https://github.com/ariard/bitcoin/commit/19d61fa8cf22a5050b51c4005603f43d72f1efcf&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Appreciated expert eyes of folks understanding both lightning and core&lt;br/&gt;mempool on this.&lt;br/&gt;There was a lot of back and forth on nversion=3 design rules, though the&lt;br/&gt;test is normally built on glozow top commit of the 3 Oct 2023.&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;Le mar. 17 oct. 2023 à 14:03, Bastien TEINTURIER &amp;lt;bastien at acinq.fr&amp;gt; a&lt;br/&gt;écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Good morning list,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I&amp;#39;ve been trying to design a protocol to let users withdraw funds from&lt;br/&gt;&amp;gt; exchanges directly into their lightning wallet in an efficient way&lt;br/&gt;&amp;gt; (with the smallest on-chain footprint possible).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I&amp;#39;ve come to the conclusion that this is only possible with some form of&lt;br/&gt;&amp;gt; covenants (e.g. `SIGHASH_ANYPREVOUT` would work fine in this case). The&lt;br/&gt;&amp;gt; goal of this post is to explain why, and add this usecase to the list of&lt;br/&gt;&amp;gt; useful things we could do if we had covenants (insert &amp;#34;wen APO?&amp;#34; meme).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The naive way of enabling lightning withdrawals is to make the user&lt;br/&gt;&amp;gt; provide a lightning invoice that the exchange pays over lightning. The&lt;br/&gt;&amp;gt; issue is that in most cases, this simply shifts the burden of making an&lt;br/&gt;&amp;gt; on-chain transaction to the user&amp;#39;s wallet provider: if the user doesn&amp;#39;t&lt;br/&gt;&amp;gt; have enough inbound liquidity (which is likely), a splice transaction&lt;br/&gt;&amp;gt; will be necessary. If N users withdraw funds from an exchange, we most&lt;br/&gt;&amp;gt; likely will end up with N separate splice transactions.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Hence the idea of batching those into a single transaction. Since we&lt;br/&gt;&amp;gt; don&amp;#39;t want to introduce any intermediate transaction, we must be able&lt;br/&gt;&amp;gt; to create one transaction that splices multiple channels at once. The&lt;br/&gt;&amp;gt; issue is that for each of these channels, we need a signature from the&lt;br/&gt;&amp;gt; corresponding wallet user, because we&amp;#39;re spending the current funding&lt;br/&gt;&amp;gt; output, which is a 2-of-2 multisig between the wallet user and the&lt;br/&gt;&amp;gt; wallet provider. So we run into the usual availability problem: we need&lt;br/&gt;&amp;gt; signatures from N users who may not be online at the same time, and if&lt;br/&gt;&amp;gt; one of those users never comes online or doesn&amp;#39;t complete the protocol,&lt;br/&gt;&amp;gt; we must discard the whole batch.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; There is a workaround though: each wallet user can provide a signature&lt;br/&gt;&amp;gt; using `SIGHASH_SINGLE | SIGHASH_ANYONECANPAY` that spends their current&lt;br/&gt;&amp;gt; funding output to create a new funding output with the expected amount.&lt;br/&gt;&amp;gt; This lets users sign *before* knowing the final transaction, which the&lt;br/&gt;&amp;gt; exchange can create by batching pairs of inputs/outputs. But this has&lt;br/&gt;&amp;gt; a fatal issue: at that point the wallet user has no way of spending the&lt;br/&gt;&amp;gt; new funding output (since it is also a 2-of-2 between the wallet user&lt;br/&gt;&amp;gt; and the wallet provider). The wallet provider can now blackmail the user&lt;br/&gt;&amp;gt; and force them to pay to get their funds back.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Lightning normally fixes this by exchanging signatures for a commitment&lt;br/&gt;&amp;gt; transaction that sends the funds back to their owners *before* signing&lt;br/&gt;&amp;gt; the parent funding/splice transaction. But here that is impossible,&lt;br/&gt;&amp;gt; because we don&amp;#39;t know yet the `txid` of the batch transaction (that&amp;#39;s&lt;br/&gt;&amp;gt; the whole point, we want to be able to sign before creating the batch)&lt;br/&gt;&amp;gt; so we don&amp;#39;t know the new `prevout` we should spend from. I couldn&amp;#39;t find&lt;br/&gt;&amp;gt; a clever way to work around that, and I don&amp;#39;t think there is one (but&lt;br/&gt;&amp;gt; I would be happy to be wrong).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; With `SIGHASH_ANYPREVOUT`, this is immediately fixed: we can exchange&lt;br/&gt;&amp;gt; anyprevout signatures for the commitment transaction, and they will be&lt;br/&gt;&amp;gt; valid to spend from the batch transaction. We are safe from signature&lt;br/&gt;&amp;gt; reuse, because funding keys are rotated at each splice so we will never&lt;br/&gt;&amp;gt; create another output that uses the same 2-of-2 script.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I haven&amp;#39;t looked at other forms of covenants, but most of them likely&lt;br/&gt;&amp;gt; address this problem as well.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; Bastien&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20231017/65951f73/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20231017/65951f73/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-10-18T13:02:10Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsrua9yxg2vr074wy5emyalkh9x6qf6zyl7s0hj8y2m4dv8deyjhlgzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24ze608nn</id>
    
      <title type="html">📅 Original date posted:2023-10-17 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsrua9yxg2vr074wy5emyalkh9x6qf6zyl7s0hj8y2m4dv8deyjhlgzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24ze608nn" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqst0jqj54kn8l7pyfpn5ga9d2nz6qp94xcr7xt5fr7jpxv7dr002nqv4aq8r&#39;&gt;nevent1q…aq8r&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-10-17&lt;br/&gt;🗒️ Summary of this message: The disclosed mitigations for lightning attacks include mempool scanning, transaction re-signing/re-broadcasting, and bumping CLTV delta. However, these mitigations may not be effective in fixing the issue. Additional measures such as stratum v2 deployment and a replacement buffer at the mempool level may make the attack harder. The issue of fees is also a challenge.&lt;br/&gt;📝 Original message:&lt;br/&gt;The disclosure mails noted a 3rd mitigation beyond mempool scanning and&lt;br/&gt;transaction re-signing / re-broadcasting, namely bumping CLTV delta.&lt;br/&gt;&lt;br/&gt;Generally bumping CLTV delta is a basic line of mitigations for a lot of&lt;br/&gt;lightning attacks, as it gives opportunity to node operators to intervene&lt;br/&gt;and re-broadcast their time-sensitive transactions on other interfaces (e.g&lt;br/&gt;a secondary full-node if the first one is eclipsed).&lt;br/&gt;&lt;br/&gt;About the second mitigation transaction re-signing, if done correctly at&lt;br/&gt;least sounds to put an economic cost (denominated in fees / feerates) on&lt;br/&gt;the attack. This is unclear to me if the game-theory of this cost holds.&lt;br/&gt;&lt;br/&gt;One thing which sounds to me making the attack harder is stratum v2&lt;br/&gt;deployment, as you&amp;#39;re increasing the number of miners which might do their&lt;br/&gt;own block templates, and therefore the number of miners&amp;#39; mempools where an&lt;br/&gt;attacker has to successfully continuously replace in cycles channels&lt;br/&gt;counterparties transactions.&lt;br/&gt;&lt;br/&gt;A replacement buffer or history of transactions at the mempool level might&lt;br/&gt;be a mitigation to this attack. I believe this is yet to be seen if it can&lt;br/&gt;be made robust enough.&lt;br/&gt;&lt;br/&gt;I don&amp;#39;t know if folks like tadge or rusty who have been involved in the&lt;br/&gt;early design of lightning have more ideas of mitigations. Fees was noted as&lt;br/&gt;a hard issue in the original paper.&lt;br/&gt;&lt;br/&gt;Le mer. 18 oct. 2023 à 01:17, Matt Corallo &amp;lt;lf-lists at mattcorallo.com&amp;gt; a&lt;br/&gt;écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; There appears to be some confusion about this issue and the mitigations.&lt;br/&gt;&amp;gt; To be clear, the deployed&lt;br/&gt;&amp;gt; mitigations are not expected to fix this issue, its arguable if they&lt;br/&gt;&amp;gt; provide anything more than a PR&lt;br/&gt;&amp;gt; statement.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; There are two discussed mitigations here - mempool scanning and&lt;br/&gt;&amp;gt; transaction re-signing/re-broadcasting.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Mempool scanning relies on regularly checking the mempool of a local node&lt;br/&gt;&amp;gt; to see if we can catch the&lt;br/&gt;&amp;gt; replacement cycle mid-cycle. It only works if wee see the first&lt;br/&gt;&amp;gt; transaction before the second&lt;br/&gt;&amp;gt; transaction replaces it.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Today, a large majority of lightning nodes run on machines with a Bitcoin&lt;br/&gt;&amp;gt; node on the same IP&lt;br/&gt;&amp;gt; address, making it very clear what the &amp;#34;local node&amp;#34; of the lightning node&lt;br/&gt;&amp;gt; is. An attacker can&lt;br/&gt;&amp;gt; trivially use this information to connect to said local node and do the&lt;br/&gt;&amp;gt; replacement quickly,&lt;br/&gt;&amp;gt; preventing the victim from seeing the replacement.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; More generally, however, similar discoverability is true for mining pools.&lt;br/&gt;&amp;gt; An attacker performing&lt;br/&gt;&amp;gt; this attack is likely to do the replacement attack on a miner&amp;#39;s node&lt;br/&gt;&amp;gt; directly, potentially reducing&lt;br/&gt;&amp;gt; the reach of the intermediate transaction to only miners, such that the&lt;br/&gt;&amp;gt; victim can never discover it&lt;br/&gt;&amp;gt; at all.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The second mitigation is similarly pathetic. Re-signing and&lt;br/&gt;&amp;gt; re-broadcasting the victim&amp;#39;s transaction&lt;br/&gt;&amp;gt; in an attempt to get it to miners even if its been removed may work, if&lt;br/&gt;&amp;gt; the attacker is super lazy&lt;br/&gt;&amp;gt; and didn&amp;#39;t finish writing their attack system. If the attacker is&lt;br/&gt;&amp;gt; connected to a large majority of&lt;br/&gt;&amp;gt; hashrate (which has historically been fairly doable), they can simply do&lt;br/&gt;&amp;gt; their replacement in a&lt;br/&gt;&amp;gt; cycle aggressively and arbitrarily reduce the probability that the&lt;br/&gt;&amp;gt; victim&amp;#39;s transaction gets confirmed.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Now, the above is all true in a spherical cow kinda world, and the P2P&lt;br/&gt;&amp;gt; network has plenty of slow&lt;br/&gt;&amp;gt; nodes and strange behavior. Its possible that these mitigations might, by&lt;br/&gt;&amp;gt; some stroke of luck,&lt;br/&gt;&amp;gt; happen to catch such an attack and prevent it, because something took&lt;br/&gt;&amp;gt; longer than the attacker&lt;br/&gt;&amp;gt; intended or whatever. But, that&amp;#39;s a far cry from any kind of material&lt;br/&gt;&amp;gt; &amp;#34;fix&amp;#34; for the issue.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Ultimately the only fix for this issue will be when miners keep a history&lt;br/&gt;&amp;gt; of transactions they&amp;#39;ve&lt;br/&gt;&amp;gt; seen and try them again after they may be able to enter the mempool&lt;br/&gt;&amp;gt; because of an attack like this.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Matt&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On 10/16/23 12:57 PM, Antoine Riard wrote:&lt;br/&gt;&amp;gt; &amp;gt; (cross-posting mempool issues identified are exposing lightning chan to&lt;br/&gt;&amp;gt; loss of funds risks, other&lt;br/&gt;&amp;gt; &amp;gt; multi-party bitcoin apps might be affected)&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Hi,&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; End of last year (December 2022), amid technical discussions on eltoo&lt;br/&gt;&amp;gt; payment channels and&lt;br/&gt;&amp;gt; &amp;gt; incentives compatibility of the mempool anti-DoS rules, a new&lt;br/&gt;&amp;gt; transaction-relay jamming attack&lt;br/&gt;&amp;gt; &amp;gt; affecting lightning channels was discovered.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; After careful analysis, it turns out this attack is practical and&lt;br/&gt;&amp;gt; immediately exposed lightning&lt;br/&gt;&amp;gt; &amp;gt; routing hops carrying HTLC traffic to loss of funds security risks, both&lt;br/&gt;&amp;gt; legacy and anchor output&lt;br/&gt;&amp;gt; &amp;gt; channels. A potential exploitation plausibly happening even without&lt;br/&gt;&amp;gt; network mempools congestion.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Mitigations have been designed, implemented and deployed by all major&lt;br/&gt;&amp;gt; lightning implementations&lt;br/&gt;&amp;gt; &amp;gt; during the last months.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Please find attached the release numbers, where the mitigations should&lt;br/&gt;&amp;gt; be present:&lt;br/&gt;&amp;gt; &amp;gt; - LDK: v0.0.118 - CVE-2023 -40231&lt;br/&gt;&amp;gt; &amp;gt; - Eclair: v0.9.0 - CVE-2023-40232&lt;br/&gt;&amp;gt; &amp;gt; - LND: v.0.17.0-beta - CVE-2023-40233&lt;br/&gt;&amp;gt; &amp;gt; - Core-Lightning: v.23.08.01 - CVE-2023-40234&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; While neither replacement cycling attacks have been observed or reported&lt;br/&gt;&amp;gt; in the wild since the last&lt;br/&gt;&amp;gt; &amp;gt; ~10 months or experimented in real-world conditions on bitcoin mainet,&lt;br/&gt;&amp;gt; functional test is available&lt;br/&gt;&amp;gt; &amp;gt; exercising the affected lightning channel against bitcoin core mempool&lt;br/&gt;&amp;gt; (26.0 release cycle).&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; It is understood that a simple replacement cycling attack does not&lt;br/&gt;&amp;gt; demand privileged capabilities&lt;br/&gt;&amp;gt; &amp;gt; from an attacker (e.g no low-hashrate power) and only access to basic&lt;br/&gt;&amp;gt; bitcoin and lightning&lt;br/&gt;&amp;gt; &amp;gt; software. Yet I still think executing such an attack successfully&lt;br/&gt;&amp;gt; requests a fair amount of bitcoin&lt;br/&gt;&amp;gt; &amp;gt; technical know-how and decent preparation.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;  From my understanding of those issues, it is yet to be determined if&lt;br/&gt;&amp;gt; the mitigations deployed are&lt;br/&gt;&amp;gt; &amp;gt; robust enough in face of advanced replacement cycling attackers,&lt;br/&gt;&amp;gt; especially ones able to combine&lt;br/&gt;&amp;gt; &amp;gt; different classes of transaction-relay jamming such as pinnings or&lt;br/&gt;&amp;gt; vetted with more privileged&lt;br/&gt;&amp;gt; &amp;gt; capabilities.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Please find a list of potential affected bitcoin applications in this&lt;br/&gt;&amp;gt; full disclosure report using&lt;br/&gt;&amp;gt; &amp;gt; bitcoin script timelocks or multi-party transactions, albeit no&lt;br/&gt;&amp;gt; immediate security risk exposure as&lt;br/&gt;&amp;gt; &amp;gt; severe as the ones affecting lightning has been identified. Only cursory&lt;br/&gt;&amp;gt; review of non-lightning&lt;br/&gt;&amp;gt; &amp;gt; applications has been conducted so far.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; There is a paper published summarizing replacement cycling attacks on&lt;br/&gt;&amp;gt; the lightning network:&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/ariard/mempool-research/blob/2023-10-replacement-paper/replacement-cycling.pdf&#34;&gt;https://github.com/ariard/mempool-research/blob/2023-10-replacement-paper/replacement-cycling.pdf&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;lt;&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/ariard/mempool-research/blob/2023-10-replacement-paper/replacement-cycling.pdf&#34;&gt;https://github.com/ariard/mempool-research/blob/2023-10-replacement-paper/replacement-cycling.pdf&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;   ## Problem&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; A lightning node allows HTLCs forwarding (in bolt3&amp;#39;s parlance accepted&lt;br/&gt;&amp;gt; HTLC on incoming link and&lt;br/&gt;&amp;gt; &amp;gt; offered HTLC on outgoing link) should settle the outgoing state with&lt;br/&gt;&amp;gt; either a success or timeout&lt;br/&gt;&amp;gt; &amp;gt; before the incoming state timelock becomes final and an asymmetric&lt;br/&gt;&amp;gt; defavorable settlement might&lt;br/&gt;&amp;gt; &amp;gt; happen (cf &amp;#34;Flood &amp;amp; Loot: A Systematic Attack on The Lightning Network&amp;#34;&lt;br/&gt;&amp;gt; section 2.3 for a classical&lt;br/&gt;&amp;gt; &amp;gt; exposition of this lightning security property).&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Failure to satisfy this settlement requirement exposes a forwarding hop&lt;br/&gt;&amp;gt; to a loss of fund risk where&lt;br/&gt;&amp;gt; &amp;gt; the offered HTLC is spent by the outgoing link counterparty&amp;#39;s&lt;br/&gt;&amp;gt; HTLC-preimage and the accepted HTLC is&lt;br/&gt;&amp;gt; &amp;gt; spent by the incoming link counterparty&amp;#39;s HTLC-timeout.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; The specification mandates the incoming HTLC expiration timelock to be&lt;br/&gt;&amp;gt; spaced out by an interval of&lt;br/&gt;&amp;gt; &amp;gt; `cltv_expiry_delta` from the outgoing HTLC expiration timelock, this&lt;br/&gt;&amp;gt; exact interval value being an&lt;br/&gt;&amp;gt; &amp;gt; implementation and node policy setting. As a minimal value, the&lt;br/&gt;&amp;gt; specification recommends 34 blocks&lt;br/&gt;&amp;gt; &amp;gt; of interval. If the timelock expiration I of the inbound HTLC is equal&lt;br/&gt;&amp;gt; to 100 from chain tip, the&lt;br/&gt;&amp;gt; &amp;gt; timelock expiration O of the outbound HTLC must be equal to 66 blocks&lt;br/&gt;&amp;gt; from chain tip, giving a&lt;br/&gt;&amp;gt; &amp;gt; reasonable buffer of reaction to the lightning forwarding node.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; In the lack of cooperative off-chain settlement of the HTLC on the&lt;br/&gt;&amp;gt; outgoing link negotiated with the&lt;br/&gt;&amp;gt; &amp;gt; counterparty (either `update_fulfill_htlc` or `update_fail_htlc`) when O&lt;br/&gt;&amp;gt; is reached, the lightning&lt;br/&gt;&amp;gt; &amp;gt; node should broadcast its commitment transaction. Once the commitment is&lt;br/&gt;&amp;gt; confirmed (if anchor and&lt;br/&gt;&amp;gt; &amp;gt; the 1 CSV encumbrance is present), the lightning node broadcasts and&lt;br/&gt;&amp;gt; confirms its HTLC-timeout&lt;br/&gt;&amp;gt; &amp;gt; before I height is reached.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Here enter a replacement cycling attack. A malicious channel&lt;br/&gt;&amp;gt; counterparty can broadcast its&lt;br/&gt;&amp;gt; &amp;gt; HTLC-preimage transaction with a higher absolute fee and higher feerate&lt;br/&gt;&amp;gt; than the honest HTLC-timeout&lt;br/&gt;&amp;gt; &amp;gt; of the victim lightning node and triggers a replacement. Both for legacy&lt;br/&gt;&amp;gt; and anchor output channels,&lt;br/&gt;&amp;gt; &amp;gt; a HTLC-preimage on a counterparty commitment transaction is malleable,&lt;br/&gt;&amp;gt; i.e additional inputs or&lt;br/&gt;&amp;gt; &amp;gt; outputs can be added. The HTLC-preimage spends an unconfirmed and&lt;br/&gt;&amp;gt; unrelated to the channel parent&lt;br/&gt;&amp;gt; &amp;gt; transaction M and conflicts its child.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; As the HTLC-preimage spends an unconfirmed input that was already&lt;br/&gt;&amp;gt; included in the unconfirmed and&lt;br/&gt;&amp;gt; &amp;gt; unrelated child transaction (rule 2), pays an absolute higher fee of at&lt;br/&gt;&amp;gt; least the sum paid by the&lt;br/&gt;&amp;gt; &amp;gt; HTLC-timeout and child transaction (rule 3) and the HTLC-preimage&lt;br/&gt;&amp;gt; feerate is greater than all&lt;br/&gt;&amp;gt; &amp;gt; directly conflicting transactions (rule 6), the replacement is accepted.&lt;br/&gt;&amp;gt; The honest HTLC-timeout is&lt;br/&gt;&amp;gt; &amp;gt; evicted out of the mempool.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; In an ulterior move, the malicious counterparty can replace the parent&lt;br/&gt;&amp;gt; transaction itself with&lt;br/&gt;&amp;gt; &amp;gt; another candidate N satisfying the replacement rules, triggering the&lt;br/&gt;&amp;gt; eviction of the malicious&lt;br/&gt;&amp;gt; &amp;gt; HTLC-preimage from the mempool as it was a child of the parent T.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; There is no spending candidate of the offered HTLC output for the&lt;br/&gt;&amp;gt; current block laying in network&lt;br/&gt;&amp;gt; &amp;gt; mempools.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; This replacement cycling tricks can be repeated for each rebroadcast&lt;br/&gt;&amp;gt; attempt of the HTLC-timeout by&lt;br/&gt;&amp;gt; &amp;gt; the honest lightning node until expiration of the inbound HTLC timelock&lt;br/&gt;&amp;gt; I. Once this height is&lt;br/&gt;&amp;gt; &amp;gt; reached a HTLC-timeout is broadcast by the counterparty&amp;#39;s on the&lt;br/&gt;&amp;gt; incoming link in collusion with the&lt;br/&gt;&amp;gt; &amp;gt; one on the outgoing link broadcasting its own HTLC-preimage.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; The honest Lightning node has been &amp;#34;double-spent&amp;#34; in its HTLC forwarding.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; As a notable factor impacting the success of the attack, a lightning&lt;br/&gt;&amp;gt; node&amp;#39;s honest HTLC-timeout&lt;br/&gt;&amp;gt; &amp;gt; might be included in the block template of the miner winning the block&lt;br/&gt;&amp;gt; race and therefore realizes a&lt;br/&gt;&amp;gt; &amp;gt; spent of the offered output. In practice, a replacement cycling attack&lt;br/&gt;&amp;gt; might over-connect to miners&amp;#39;&lt;br/&gt;&amp;gt; &amp;gt; mempools and public reachable nodes to succeed in a fast eviction of the&lt;br/&gt;&amp;gt; HTLC-timeout by its&lt;br/&gt;&amp;gt; &amp;gt; HTLC-preimage. As this latter transaction can come with a better&lt;br/&gt;&amp;gt; ancestor-score, it should be picked&lt;br/&gt;&amp;gt; &amp;gt; up on the flight by economically competitive miners.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; A functional test exercising a simple replacement cycling of a HTLC&lt;br/&gt;&amp;gt; transaction on bitcoin core&lt;br/&gt;&amp;gt; &amp;gt; mempool is available:&lt;br/&gt;&amp;gt; &amp;gt; &lt;a href=&#34;https://github.com/ariard/bitcoin/commits/2023-test-mempool&#34;&gt;https://github.com/ariard/bitcoin/commits/2023-test-mempool&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;lt;&lt;a href=&#34;https://github.com/ariard/bitcoin/commits/2023-test-mempool&amp;gt&#34;&gt;https://github.com/ariard/bitcoin/commits/2023-test-mempool&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; ## Deployed LN mitigations&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Aggressive rebroadcasting: As the replacement cycling attacker benefits&lt;br/&gt;&amp;gt; from the HTLC-timeout being&lt;br/&gt;&amp;gt; &amp;gt; usually broadcast by lightning nodes only once every block, or less the&lt;br/&gt;&amp;gt; replacement cycling&lt;br/&gt;&amp;gt; &amp;gt; malicious transactions paid only equal the sum of the absolute fees paid&lt;br/&gt;&amp;gt; by the HTLC, adjusted with&lt;br/&gt;&amp;gt; &amp;gt; the replacement penalty. Rebroadcasting randomly and multiple times&lt;br/&gt;&amp;gt; before the next block increases&lt;br/&gt;&amp;gt; &amp;gt; the absolute fee cost for the attacker.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Implemented and deployed by Eclair, Core-Lightning, LND and LDK .&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Local-mempool preimage monitoring: As the replacement cycling attacker&lt;br/&gt;&amp;gt; in a simple setup broadcast&lt;br/&gt;&amp;gt; &amp;gt; the HTLC-preimage to all the network mempools, the honest lightning node&lt;br/&gt;&amp;gt; is able to catch on the&lt;br/&gt;&amp;gt; &amp;gt; flight the unconfirmed HTLC-preimage, before its subsequent mempool&lt;br/&gt;&amp;gt; replacement. The preimage can be&lt;br/&gt;&amp;gt; &amp;gt; extracted from the second-stage HTLC-preimage and used to fetch the&lt;br/&gt;&amp;gt; off-chain inbound HTLC with a&lt;br/&gt;&amp;gt; &amp;gt; cooperative message or go on-chain with it to claim the accepted HTLC&lt;br/&gt;&amp;gt; output.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Implemented and deployed by Eclair and LND.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; CLTV Expiry Delta: With every jammed block comes an absolute fee cost&lt;br/&gt;&amp;gt; paid by the attacker, a risk&lt;br/&gt;&amp;gt; &amp;gt; of the HTLC-preimage being detected or discovered by the honest&lt;br/&gt;&amp;gt; lightning node, or the HTLC-timeout&lt;br/&gt;&amp;gt; &amp;gt; to slip in a winning block template. Bumping the default CLTV delta&lt;br/&gt;&amp;gt; hardens the odds of success of a&lt;br/&gt;&amp;gt; &amp;gt; simple replacement cycling attack.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Default setting: Eclair 144, Core-Lightning 34, LND 80 and LDK 72.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; ## Affected Bitcoin Protocols and Applications&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;  From my understanding the following list of Bitcoin protocols and&lt;br/&gt;&amp;gt; applications could be affected by&lt;br/&gt;&amp;gt; &amp;gt; new denial-of-service vectors under some level of network mempools&lt;br/&gt;&amp;gt; congestion. Neither tests or&lt;br/&gt;&amp;gt; &amp;gt; advanced review of specifications (when available) has been conducted&lt;br/&gt;&amp;gt; for each of them:&lt;br/&gt;&amp;gt; &amp;gt; - on-chain DLCs&lt;br/&gt;&amp;gt; &amp;gt; - coinjoins&lt;br/&gt;&amp;gt; &amp;gt; - payjoins&lt;br/&gt;&amp;gt; &amp;gt; - wallets with time-sensitive paths&lt;br/&gt;&amp;gt; &amp;gt; - peerswap and submarine swaps&lt;br/&gt;&amp;gt; &amp;gt; - batch payouts&lt;br/&gt;&amp;gt; &amp;gt; - transaction &amp;#34;accelerators&amp;#34;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Inviting their developers, maintainers and operators to investigate how&lt;br/&gt;&amp;gt; replacement cycling attacks&lt;br/&gt;&amp;gt; &amp;gt; might disrupt their in-mempool chain of transactions, or fee-bumping&lt;br/&gt;&amp;gt; flows at the shortest delay.&lt;br/&gt;&amp;gt; &amp;gt; Simple flows and non-multi-party transactions should not be affected to&lt;br/&gt;&amp;gt; the best of my understanding.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; ## Open Problems: Package Malleability&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Pinning attacks have been known for years as a practical vector to&lt;br/&gt;&amp;gt; compromise lightning channels&lt;br/&gt;&amp;gt; &amp;gt; funds safety, under different scenarios (cf. current bip331&amp;#39;s motivation&lt;br/&gt;&amp;gt; section). Mitigations at&lt;br/&gt;&amp;gt; &amp;gt; the mempool level have been designed, discussed and are under&lt;br/&gt;&amp;gt; implementation by the community&lt;br/&gt;&amp;gt; &amp;gt; (ancestor package relay &#43; nverrsion=3 policy). Ideally, they should&lt;br/&gt;&amp;gt; constraint a pinning attacker to&lt;br/&gt;&amp;gt; &amp;gt; always attach a high feerate package (commitment &#43; CPFP) to replace the&lt;br/&gt;&amp;gt; honest package, or allow a&lt;br/&gt;&amp;gt; &amp;gt; honest lightning node to overbid a malicious pinning package and get its&lt;br/&gt;&amp;gt; time-sensitive transaction&lt;br/&gt;&amp;gt; &amp;gt; optimistically included in the chain.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Replacement cycling attack seem to offer a new way to neutralize the&lt;br/&gt;&amp;gt; design goals of package relay&lt;br/&gt;&amp;gt; &amp;gt; and its companion nversion=3 policy, where an attacker package RBF a&lt;br/&gt;&amp;gt; honest package out of the&lt;br/&gt;&amp;gt; &amp;gt; mempool to subsequently double-spend its own high-fee child with a&lt;br/&gt;&amp;gt; transaction unrelated to the&lt;br/&gt;&amp;gt; &amp;gt; channel. As the remaining commitment transaction is pre-signed with a&lt;br/&gt;&amp;gt; minimal relay fee, it can be&lt;br/&gt;&amp;gt; &amp;gt; evicted out of the mempool.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; A functional test exercising a simple replacement cycling of a lightning&lt;br/&gt;&amp;gt; channel commitment&lt;br/&gt;&amp;gt; &amp;gt; transaction on top of the nversion=3 code branch is available:&lt;br/&gt;&amp;gt; &amp;gt; &lt;a href=&#34;https://github.com/ariard/bitcoin/commits/2023-10-test-mempool-2&#34;&gt;https://github.com/ariard/bitcoin/commits/2023-10-test-mempool-2&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;lt;&lt;a href=&#34;https://github.com/ariard/bitcoin/commits/2023-10-test-mempool-2&amp;gt&#34;&gt;https://github.com/ariard/bitcoin/commits/2023-10-test-mempool-2&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; ## Discovery&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; In 2018, the issue of static fees for pre-signed lightning transactions&lt;br/&gt;&amp;gt; is made more widely known,&lt;br/&gt;&amp;gt; &amp;gt; the carve-out exemption in mempool rules to mitigate in-mempool package&lt;br/&gt;&amp;gt; limits pinning and the&lt;br/&gt;&amp;gt; &amp;gt; anchor output pattern are proposed.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; In 2019, bitcoin core 0.19 is released with carve-out support. Continued&lt;br/&gt;&amp;gt; discussion of the anchor&lt;br/&gt;&amp;gt; &amp;gt; output pattern as a dynamic fee-bumping method.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; In 2020, draft of anchor output submitted to the bolts. Initial finding&lt;br/&gt;&amp;gt; of economic pinning against&lt;br/&gt;&amp;gt; &amp;gt; lightning commitment and second-stage HTLC transactions. Subsequent&lt;br/&gt;&amp;gt; discussions of a&lt;br/&gt;&amp;gt; &amp;gt; preimage-overlay network or package-relay as mitigations. Public call&lt;br/&gt;&amp;gt; made to inquiry more on&lt;br/&gt;&amp;gt; &amp;gt; potential other transaction-relay jamming attacks affecting lightning.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; In 2021, initial work in bitcoin core 22.0 of package acceptance.&lt;br/&gt;&amp;gt; Continued discussion of the&lt;br/&gt;&amp;gt; &amp;gt; pinning attacks and shortcomings of current mempool rules during&lt;br/&gt;&amp;gt; community-wide online workshops.&lt;br/&gt;&amp;gt; &amp;gt; Later the year, in light of all issues for bitcoin second-layers, a&lt;br/&gt;&amp;gt; proposal is made about killing&lt;br/&gt;&amp;gt; &amp;gt; the mempool.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; In 2022, bip proposed for package relay and new proposed v3 policy&lt;br/&gt;&amp;gt; design proposed for a review and&lt;br/&gt;&amp;gt; &amp;gt; implementation. Mempoolfullrbf is supported in bitcoin core 24.0 and&lt;br/&gt;&amp;gt; conceptual questions about&lt;br/&gt;&amp;gt; &amp;gt; alignment of mempool rules w.r.t miners incentives are investigated.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Along this year 2022, eltoo lightning channels design are discussed,&lt;br/&gt;&amp;gt; implemented and reviewed. In&lt;br/&gt;&amp;gt; &amp;gt; this context and after discussions on mempool anti-DoS rules, I&lt;br/&gt;&amp;gt; discovered this new replacement&lt;br/&gt;&amp;gt; &amp;gt; cycling attack was affecting deployed lightning channels and immediately&lt;br/&gt;&amp;gt; reported the finding to&lt;br/&gt;&amp;gt; &amp;gt; some bitcoin core developers and lightning maintainers.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; ## Timeline&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; - 2022-12-16: Report of the finding to Suhas Daftuar, Anthony Towns,&lt;br/&gt;&amp;gt; Greg Sanders and Gloria Zhao&lt;br/&gt;&amp;gt; &amp;gt; - 2022-12-16: Report to LN maintainers: Rusty Russell, Bastien&lt;br/&gt;&amp;gt; Teinturier, Matt Corallo and Olaoluwa&lt;br/&gt;&amp;gt; &amp;gt; Osuntunkun&lt;br/&gt;&amp;gt; &amp;gt; - 2022-12-23: Sharing to Eugene Siegel (LND)&lt;br/&gt;&amp;gt; &amp;gt; - 2022-12-24: Sharing to James O&amp;#39;Beirne and Antoine Poinsot&lt;br/&gt;&amp;gt; (non-lightning potential affected projects)&lt;br/&gt;&amp;gt; &amp;gt; - 2022-01-14: Sharing to Gleb Naumenko (miners incentives and&lt;br/&gt;&amp;gt; cross-layers issuers) and initial&lt;br/&gt;&amp;gt; &amp;gt; proposal of an early public disclosure&lt;br/&gt;&amp;gt; &amp;gt; - 2022-01-19: Collection of analysis if other second-layers and&lt;br/&gt;&amp;gt; multi-party applications affected.&lt;br/&gt;&amp;gt; &amp;gt; LN mitigations development starts.&lt;br/&gt;&amp;gt; &amp;gt; - 2023-05-04: Sharing to Wilmer Paulino (LDK)&lt;br/&gt;&amp;gt; &amp;gt; - 2023-06-20: LN mitigations implemented and progressively released.&lt;br/&gt;&amp;gt; Week of the 16 october proposed&lt;br/&gt;&amp;gt; &amp;gt; for full disclosure.&lt;br/&gt;&amp;gt; &amp;gt; - 2023-08-10: CVEs assigned by MITRE&lt;br/&gt;&amp;gt; &amp;gt; - 2023-10-05: Pre-disclosure of LN CVEs numbers and replacement cycling&lt;br/&gt;&amp;gt; attack existence to&lt;br/&gt;&amp;gt; &amp;gt; security at bitcoincore.org &amp;lt;mailto:security at bitcoincore.org&amp;gt;.&lt;br/&gt;&amp;gt; &amp;gt; - 2023-10-16: Full disclosure of CVE-2023-40231 / CVE-2023-40232 /&lt;br/&gt;&amp;gt; CVE-2023-40233 / CVE-2023-40234&lt;br/&gt;&amp;gt; &amp;gt; and replacement cycling attacks&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; ## Conclusion&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Despite the line of mitigations adopted and deployed by current major&lt;br/&gt;&amp;gt; lightning implementations, I&lt;br/&gt;&amp;gt; &amp;gt; believe replacement cycling attacks are still practical for advanced&lt;br/&gt;&amp;gt; attackers. Beyond this new&lt;br/&gt;&amp;gt; &amp;gt; attack might come as a way to partially or completely defeat some of the&lt;br/&gt;&amp;gt; pinning mitigations which&lt;br/&gt;&amp;gt; &amp;gt; have been working for years as a community.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; As of today, it is uncertain to me if lightning is not affected by a&lt;br/&gt;&amp;gt; more severe long-term package&lt;br/&gt;&amp;gt; &amp;gt; malleability critical security issue under current consensus rules, and&lt;br/&gt;&amp;gt; if any other time-sensitive&lt;br/&gt;&amp;gt; &amp;gt; multi-party protocol, designed or deployed isn&amp;#39;t de facto affected too&lt;br/&gt;&amp;gt; (loss of funds or denial of&lt;br/&gt;&amp;gt; &amp;gt; service).&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Assuming analysis on package malleability is correct, it is unclear to&lt;br/&gt;&amp;gt; me if it can be corrected by&lt;br/&gt;&amp;gt; &amp;gt; changes in replacement / eviction rules or mempool chain of transactions&lt;br/&gt;&amp;gt; processing strategy.&lt;br/&gt;&amp;gt; &amp;gt; Inviting my technical peers and the bitcoin community to look more on&lt;br/&gt;&amp;gt; this issue, including to&lt;br/&gt;&amp;gt; &amp;gt; dissent. I&amp;#39;ll be the first one pleased if I&amp;#39;m fundamentally wrong on&lt;br/&gt;&amp;gt; those issues, or if any element&lt;br/&gt;&amp;gt; &amp;gt; has not been weighted with the adequate technical accuracy it deserves.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Do not trust, verify. All mistakes and opinions are my own.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Antoine&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;#34;meet with Triumph and Disaster. And treat those two impostors just the&lt;br/&gt;&amp;gt; same&amp;#34; - K.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; &amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; &amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20231018/dfcf4d45/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20231018/dfcf4d45/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-10-18T13:02:09Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsq67ee8l3x4xv55hgljg9x4xc55wdxcu27attsgtlnad3v7f07qpgzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zvmqj3l</id>
    
      <title type="html">📅 Original date posted:2023-10-17 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsq67ee8l3x4xv55hgljg9x4xc55wdxcu27attsgtlnad3v7f07qpgzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zvmqj3l" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsz6cent45n3xlkf84y70nsxc2v0axntyelluyrrwk2ugvyx0wnkrcamwlld&#39;&gt;nevent1q…wlld&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-10-17&lt;br/&gt;🗒️ Summary of this message: No experiments have been conducted yet due to limited experts and other pending security issues.&lt;br/&gt;📝 Original message:&lt;br/&gt;&amp;gt; We have conducted one so far, multiple scenarios to look at.&lt;br/&gt;&lt;br/&gt;_*none*_ so far. typo of mine - apologize english is not my native language.&lt;br/&gt;&lt;br/&gt;We discussed conducting experiments pre-disclosure in an e-mail of the 11th&lt;br/&gt;August 2023.&lt;br/&gt;&lt;br/&gt;&amp;#34;If someone is down to setup a &amp;#34;black box&amp;#34; Lightning infra on mainet, I&amp;#39;m&lt;br/&gt;game on to exercise the vulnerabilities and mitigations during the coming&lt;br/&gt;months and revisit the disclosure date dependent on the learnings.&amp;#34;&lt;br/&gt;&lt;br/&gt;However as the number of Lightning worldwide experts who have level of&lt;br/&gt;knowledge and understandings to take part to experiments is I think&lt;br/&gt;restrained to people listed on the disclosure mails _and_ we had other&lt;br/&gt;pendings non-disclosed security issues at the time like the ones revealed&lt;br/&gt;&amp;#34;fake channel DoS vector&amp;#34; the 23th August 2023, we didn&amp;#39;t conduct them.&lt;br/&gt;&lt;br/&gt;Le mar. 17 oct. 2023 à 18:47, Antoine Riard &amp;lt;antoine.riard at gmail.com&amp;gt; a&lt;br/&gt;écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi Ziggie,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; thanks for this detailed explanation. This class of pinning attacks&lt;br/&gt;&amp;gt; sound not too unlikely especially if the attacker targets channels with&lt;br/&gt;&amp;gt; high capacity and very loose channel policies (allowing the full htlc&lt;br/&gt;&amp;gt; &amp;gt; amount to be the channel capacity). Could you add more details about the&lt;br/&gt;&amp;gt; attack you observed on mainnet ? How did you monitor the chain, are the&lt;br/&gt;&amp;gt; some tools available I can run in parallel to my&lt;br/&gt;&amp;gt; &amp;gt; lightning software to record this kind of suspicious behaviour (which&lt;br/&gt;&amp;gt; did you use)?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Just to give a clarification no _such_ attack has been observed on&lt;br/&gt;&amp;gt; mainnet, since I and other LN maintainers have been aware of this issue. If&lt;br/&gt;&amp;gt; there is a confusion on the disclosure mail thanks to point to it, I&amp;#39;ll&lt;br/&gt;&amp;gt; correct it.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; We discussed privately to experiment a demo attack in restrained dev&lt;br/&gt;&amp;gt; circles, like we have done in the past for some LN sec issues. We have&lt;br/&gt;&amp;gt; conducted one so far, multiple scenarios to look at.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I confirm the risk of exposure if an attacker targets channels with high&lt;br/&gt;&amp;gt; capacity and loose channel policies. Note there is no way to configure the&lt;br/&gt;&amp;gt; cap for the total value of outbound HTLC in-flight, which is the flow&lt;br/&gt;&amp;gt; affected.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If you would like to observe the existence of such an attack happening,&lt;br/&gt;&amp;gt; look at your mempool logs and the amount of HTLC output being&lt;br/&gt;&amp;gt; systematically conflicted out with the following sequence (HTLC-timeout -&lt;br/&gt;&amp;gt; HTLC-preimage - HTLC-timeout - ...).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; As an observation note, this is not akin to a pinning attack, as there is&lt;br/&gt;&amp;gt; no &amp;#34;honest&amp;#34; or &amp;#34;malicious&amp;#34; transaction pinned in network mempools. And it&lt;br/&gt;&amp;gt; can happen without network mempools congestion.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; What&amp;#39;s also worth mentioning here is that you do not really have to&lt;br/&gt;&amp;gt; control 2 neighbouring nodes to target your victim. If you can cycle the&lt;br/&gt;&amp;gt; attack on the tail side and delay the confirmation of the htlc- timeout&lt;br/&gt;&amp;gt; covenant the peer at the front (incoming link) of the victim will&lt;br/&gt;&amp;gt; force-close the channel and claim his timeout-path in the same way&lt;br/&gt;&amp;gt; (canceling back the initial htlc amount to the attackers initial node).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I think this is a behavior worthy of testing.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Apart from that I think one can even introduce some kind of feebumping&lt;br/&gt;&amp;gt; race between the victim and the attacker on the tail side of the attack&lt;br/&gt;&amp;gt; making the attack even more costly. I think&lt;br/&gt;&amp;gt; &amp;gt; currently when lightning nodes see the preimage in the mempool (during&lt;br/&gt;&amp;gt; the time where they already can spend the same output with the&lt;br/&gt;&amp;gt; timeout-covenant) we are honest and just extract&lt;br/&gt;&amp;gt; &amp;gt; the preimage and don&amp;#39;t try to race this tx output.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Local-mempool preimage monitoring has been implemented by Eclair for years&lt;br/&gt;&amp;gt; as a mitigation against old school pinning attacks on second-stage HTLC&lt;br/&gt;&amp;gt; transactions.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This mechanism has been implemented by LND in the last months, following&lt;br/&gt;&amp;gt; the report of replacement cycling attacks. As of today this is not&lt;br/&gt;&amp;gt; implemented by Core-Lightning or LDK.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; So we maybe should start feebumping this output if we end up in this&lt;br/&gt;&amp;gt; scenario? If we see the preimage and can also claim this output via the&lt;br/&gt;&amp;gt; htlc-timeout path, we should aggressively fee-bump (racing this output) our&lt;br/&gt;&amp;gt; htlc-output in addition to grabbing the preimage and claiming it on the&lt;br/&gt;&amp;gt; incoming. This is only feasible with anchor channels where we can add fees&lt;br/&gt;&amp;gt; to the htlc-covenant. This would make the attack more costly for a peer&lt;br/&gt;&amp;gt; when he knows that we use fees up to 50% of the htlc value. When you cycle&lt;br/&gt;&amp;gt; this 144 times you will be at a heavy loss trying to steal this htlc.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This is the &amp;#34;defensive fee mitigation&amp;#34; proposed in the paper. Coming with&lt;br/&gt;&amp;gt; some unknown.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; I would add another mitigation to the list for node runners to restrict&lt;br/&gt;&amp;gt; the amount and number of HTLCs  for big channels to unknown peers. It&lt;br/&gt;&amp;gt; quickly comes with a loss when the HTLCs the attacker tries to steal are&lt;br/&gt;&amp;gt; small.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; See the point above on the lack of way at the spec-level to negotiate cap&lt;br/&gt;&amp;gt; on the total value of outbound HTLC in-flight.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Le mar. 17 oct. 2023 à 08:21, ziggie1984 &amp;lt;ziggie1984 at protonmail.com&amp;gt; a&lt;br/&gt;&amp;gt; écrit :&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; ## Deployed LN mitigations&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Aggressive rebroadcasting: As the replacement cycling attacker benefits&lt;br/&gt;&amp;gt;&amp;gt; from the HTLC-timeout being usually broadcast by lightning nodes only once&lt;br/&gt;&amp;gt;&amp;gt; every block, or less the replacement cycling malicious transactions paid&lt;br/&gt;&amp;gt;&amp;gt; only equal the sum of the absolute fees paid by the HTLC, adjusted with the&lt;br/&gt;&amp;gt;&amp;gt; replacement penalty. Rebroadcasting randomly and multiple times before the&lt;br/&gt;&amp;gt;&amp;gt; next block increases the absolute fee cost for the attacker.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Implemented and deployed by Eclair, Core-Lightning, LND and LDK .&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Local-mempool preimage monitoring: As the replacement cycling attacker in&lt;br/&gt;&amp;gt;&amp;gt; a simple setup broadcast the HTLC-preimage to all the network mempools, the&lt;br/&gt;&amp;gt;&amp;gt; honest lightning node is able to catch on the flight the unconfirmed&lt;br/&gt;&amp;gt;&amp;gt; HTLC-preimage, before its subsequent mempool replacement. The preimage can&lt;br/&gt;&amp;gt;&amp;gt; be extracted from the second-stage HTLC-preimage and used to fetch the&lt;br/&gt;&amp;gt;&amp;gt; off-chain inbound HTLC with a cooperative message or go on-chain with it to&lt;br/&gt;&amp;gt;&amp;gt; claim the accepted HTLC output.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Hi Antoine,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; thanks for this detailed explanation. This class of pinning attacks sound&lt;br/&gt;&amp;gt;&amp;gt; not too unlikely especially if the attacker targets channels with high&lt;br/&gt;&amp;gt;&amp;gt; capacity and very loose channel policies (allowing the full htlc amount to&lt;br/&gt;&amp;gt;&amp;gt; be the channel capacity). Could you add more details about the attack you&lt;br/&gt;&amp;gt;&amp;gt; observed on mainnet ? How did you monitor the chain, are the some tools&lt;br/&gt;&amp;gt;&amp;gt; available I can run in parallel to my lightning software to record this&lt;br/&gt;&amp;gt;&amp;gt; kind of suspicious behaviour (which did you use)?&lt;br/&gt;&amp;gt;&amp;gt; What&amp;#39;s also worth mentioning here is that you do not really have to&lt;br/&gt;&amp;gt;&amp;gt; control 2 neighbouring nodes to target your victim. If you can cycle the&lt;br/&gt;&amp;gt;&amp;gt; attack on the tail side and delay the confirmation of the htlc-timeout&lt;br/&gt;&amp;gt;&amp;gt; covenant the peer at the front (incoming link) of the victim will&lt;br/&gt;&amp;gt;&amp;gt; force-close the channel and claim his timeout-path in the same way&lt;br/&gt;&amp;gt;&amp;gt; (canceling back the initial htlc amount to the attackers initial node).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Apart from that I think one can even introduce some kind of feebumping&lt;br/&gt;&amp;gt;&amp;gt; race between the victim and the attacker on the tail side of the attack&lt;br/&gt;&amp;gt;&amp;gt; making the attack even more costly. I think currently when lightning nodes&lt;br/&gt;&amp;gt;&amp;gt; see the preimage in the mempool (during the time where they already can&lt;br/&gt;&amp;gt;&amp;gt; spend the same output with the timeout-covenant) we are honest and just&lt;br/&gt;&amp;gt;&amp;gt; extract the preimage and don&amp;#39;t try to race this tx output. So we maybe&lt;br/&gt;&amp;gt;&amp;gt; should start feebumping this output if we end up in this scenario? If we&lt;br/&gt;&amp;gt;&amp;gt; see the preimage and can also claim this output via the htlc-timeout path,&lt;br/&gt;&amp;gt;&amp;gt; we should aggressively fee-bump (racing this output) our htlc-output in&lt;br/&gt;&amp;gt;&amp;gt; addition to grabbing the preimage and claiming it on the incoming. This is&lt;br/&gt;&amp;gt;&amp;gt; only feasible with anchor channels where we can add fees to the&lt;br/&gt;&amp;gt;&amp;gt; htlc-covenant. This would make the attack more costly for a peer when he&lt;br/&gt;&amp;gt;&amp;gt; knows that we use fees up to 50% of the htlc value. When you cycle this 144&lt;br/&gt;&amp;gt;&amp;gt; times you will be at a heavy loss trying to steal this htlc.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I would add another mitigation to the list for node runners to restrict&lt;br/&gt;&amp;gt;&amp;gt; the amount and number of HTLCs  for big channels to unknown peers. It&lt;br/&gt;&amp;gt;&amp;gt; quickly comes with a loss when the HTLCs the attacker tries to steal are&lt;br/&gt;&amp;gt;&amp;gt; small.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Kind regards,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; ziggie&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; ------- Original Message -------&lt;br/&gt;&amp;gt;&amp;gt; On Monday, October 16th, 2023 at 18:57, Antoine Riard &amp;lt;&lt;br/&gt;&amp;gt;&amp;gt; antoine.riard at gmail.com&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; (cross-posting mempool issues identified are exposing lightning chan to&lt;br/&gt;&amp;gt;&amp;gt; loss of funds risks, other multi-party bitcoin apps might be affected)&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Hi,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; End of last year (December 2022), amid technical discussions on eltoo&lt;br/&gt;&amp;gt;&amp;gt; payment channels and incentives compatibility of the mempool anti-DoS&lt;br/&gt;&amp;gt;&amp;gt; rules, a new transaction-relay jamming attack affecting lightning channels&lt;br/&gt;&amp;gt;&amp;gt; was discovered.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; After careful analysis, it turns out this attack is practical and&lt;br/&gt;&amp;gt;&amp;gt; immediately exposed lightning routing hops carrying HTLC traffic to loss of&lt;br/&gt;&amp;gt;&amp;gt; funds security risks, both legacy and anchor output channels. A potential&lt;br/&gt;&amp;gt;&amp;gt; exploitation plausibly happening even without network mempools congestion.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Mitigations have been designed, implemented and deployed by all major&lt;br/&gt;&amp;gt;&amp;gt; lightning implementations during the last months.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Please find attached the release numbers, where the mitigations should be&lt;br/&gt;&amp;gt;&amp;gt; present:&lt;br/&gt;&amp;gt;&amp;gt; - LDK: v0.0.118 - CVE-2023 -40231&lt;br/&gt;&amp;gt;&amp;gt; - Eclair: v0.9.0 - CVE-2023-40232&lt;br/&gt;&amp;gt;&amp;gt; - LND: v.0.17.0-beta - CVE-2023-40233&lt;br/&gt;&amp;gt;&amp;gt; - Core-Lightning: v.23.08.01 - CVE-2023-40234&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; While neither replacement cycling attacks have been observed or reported&lt;br/&gt;&amp;gt;&amp;gt; in the wild since the last ~10 months or experimented in real-world&lt;br/&gt;&amp;gt;&amp;gt; conditions on bitcoin mainet, functional test is available exercising the&lt;br/&gt;&amp;gt;&amp;gt; affected lightning channel against bitcoin core mempool (26.0 release&lt;br/&gt;&amp;gt;&amp;gt; cycle).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; It is understood that a simple replacement cycling attack does not demand&lt;br/&gt;&amp;gt;&amp;gt; privileged capabilities from an attacker (e.g no low-hashrate power) and&lt;br/&gt;&amp;gt;&amp;gt; only access to basic bitcoin and lightning software. Yet I still think&lt;br/&gt;&amp;gt;&amp;gt; executing such an attack successfully requests a fair amount of bitcoin&lt;br/&gt;&amp;gt;&amp;gt; technical know-how and decent preparation.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; From my understanding of those issues, it is yet to be determined if the&lt;br/&gt;&amp;gt;&amp;gt; mitigations deployed are robust enough in face of advanced replacement&lt;br/&gt;&amp;gt;&amp;gt; cycling attackers, especially ones able to combine different classes of&lt;br/&gt;&amp;gt;&amp;gt; transaction-relay jamming such as pinnings or vetted with more privileged&lt;br/&gt;&amp;gt;&amp;gt; capabilities.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Please find a list of potential affected bitcoin applications in this&lt;br/&gt;&amp;gt;&amp;gt; full disclosure report using bitcoin script timelocks or multi-party&lt;br/&gt;&amp;gt;&amp;gt; transactions, albeit no immediate security risk exposure as severe as the&lt;br/&gt;&amp;gt;&amp;gt; ones affecting lightning has been identified. Only cursory review of&lt;br/&gt;&amp;gt;&amp;gt; non-lightning applications has been conducted so far.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; There is a paper published summarizing replacement cycling attacks on the&lt;br/&gt;&amp;gt;&amp;gt; lightning network:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://github.com/ariard/mempool-research/blob/2023-10-replacement-paper/replacement-cycling.pdf&#34;&gt;https://github.com/ariard/mempool-research/blob/2023-10-replacement-paper/replacement-cycling.pdf&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; ## Problem&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; A lightning node allows HTLCs forwarding (in bolt3&amp;#39;s parlance accepted&lt;br/&gt;&amp;gt;&amp;gt; HTLC on incoming link and offered HTLC on outgoing link) should settle the&lt;br/&gt;&amp;gt;&amp;gt; outgoing state with either a success or timeout before the incoming state&lt;br/&gt;&amp;gt;&amp;gt; timelock becomes final and an asymmetric defavorable settlement might&lt;br/&gt;&amp;gt;&amp;gt; happen (cf &amp;#34;Flood &amp;amp; Loot: A Systematic Attack on The Lightning Network&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt; section 2.3 for a classical exposition of this lightning security property).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Failure to satisfy this settlement requirement exposes a forwarding hop&lt;br/&gt;&amp;gt;&amp;gt; to a loss of fund risk where the offered HTLC is spent by the outgoing link&lt;br/&gt;&amp;gt;&amp;gt; counterparty&amp;#39;s HTLC-preimage and the accepted HTLC is spent by the incoming&lt;br/&gt;&amp;gt;&amp;gt; link counterparty&amp;#39;s HTLC-timeout.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; The specification mandates the incoming HTLC expiration timelock to be&lt;br/&gt;&amp;gt;&amp;gt; spaced out by an interval of `cltv_expiry_delta` from the outgoing HTLC&lt;br/&gt;&amp;gt;&amp;gt; expiration timelock, this exact interval value being an implementation and&lt;br/&gt;&amp;gt;&amp;gt; node policy setting. As a minimal value, the specification recommends 34&lt;br/&gt;&amp;gt;&amp;gt; blocks of interval. If the timelock expiration I of the inbound HTLC is&lt;br/&gt;&amp;gt;&amp;gt; equal to 100 from chain tip, the timelock expiration O of the outbound HTLC&lt;br/&gt;&amp;gt;&amp;gt; must be equal to 66 blocks from chain tip, giving a reasonable buffer of&lt;br/&gt;&amp;gt;&amp;gt; reaction to the lightning forwarding node.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; In the lack of cooperative off-chain settlement of the HTLC on the&lt;br/&gt;&amp;gt;&amp;gt; outgoing link negotiated with the counterparty (either&lt;br/&gt;&amp;gt;&amp;gt; `update_fulfill_htlc` or `update_fail_htlc`) when O is reached, the&lt;br/&gt;&amp;gt;&amp;gt; lightning node should broadcast its commitment transaction. Once the&lt;br/&gt;&amp;gt;&amp;gt; commitment is confirmed (if anchor and the 1 CSV encumbrance is present),&lt;br/&gt;&amp;gt;&amp;gt; the lightning node broadcasts and confirms its HTLC-timeout before I height&lt;br/&gt;&amp;gt;&amp;gt; is reached.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Here enter a replacement cycling attack. A malicious channel counterparty&lt;br/&gt;&amp;gt;&amp;gt; can broadcast its HTLC-preimage transaction with a higher absolute fee and&lt;br/&gt;&amp;gt;&amp;gt; higher feerate than the honest HTLC-timeout of the victim lightning node&lt;br/&gt;&amp;gt;&amp;gt; and triggers a replacement. Both for legacy and anchor output channels, a&lt;br/&gt;&amp;gt;&amp;gt; HTLC-preimage on a counterparty commitment transaction is malleable, i.e&lt;br/&gt;&amp;gt;&amp;gt; additional inputs or outputs can be added. The HTLC-preimage spends an&lt;br/&gt;&amp;gt;&amp;gt; unconfirmed and unrelated to the channel parent transaction M and conflicts&lt;br/&gt;&amp;gt;&amp;gt; its child.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; As the HTLC-preimage spends an unconfirmed input that was already&lt;br/&gt;&amp;gt;&amp;gt; included in the unconfirmed and unrelated child transaction (rule 2), pays&lt;br/&gt;&amp;gt;&amp;gt; an absolute higher fee of at least the sum paid by the HTLC-timeout and&lt;br/&gt;&amp;gt;&amp;gt; child transaction (rule 3) and the HTLC-preimage feerate is greater than&lt;br/&gt;&amp;gt;&amp;gt; all directly conflicting transactions (rule 6), the replacement is&lt;br/&gt;&amp;gt;&amp;gt; accepted. The honest HTLC-timeout is evicted out of the mempool.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; In an ulterior move, the malicious counterparty can replace the parent&lt;br/&gt;&amp;gt;&amp;gt; transaction itself with another candidate N satisfying the replacement&lt;br/&gt;&amp;gt;&amp;gt; rules, triggering the eviction of the malicious HTLC-preimage from the&lt;br/&gt;&amp;gt;&amp;gt; mempool as it was a child of the parent T.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; There is no spending candidate of the offered HTLC output for the current&lt;br/&gt;&amp;gt;&amp;gt; block laying in network mempools.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; This replacement cycling tricks can be repeated for each rebroadcast&lt;br/&gt;&amp;gt;&amp;gt; attempt of the HTLC-timeout by the honest lightning node until expiration&lt;br/&gt;&amp;gt;&amp;gt; of the inbound HTLC timelock I. Once this height is reached a HTLC-timeout&lt;br/&gt;&amp;gt;&amp;gt; is broadcast by the counterparty&amp;#39;s on the incoming link in collusion with&lt;br/&gt;&amp;gt;&amp;gt; the one on the outgoing link broadcasting its own HTLC-preimage.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; The honest Lightning node has been &amp;#34;double-spent&amp;#34; in its HTLC forwarding.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; As a notable factor impacting the success of the attack, a lightning&lt;br/&gt;&amp;gt;&amp;gt; node&amp;#39;s honest HTLC-timeout might be included in the block template of the&lt;br/&gt;&amp;gt;&amp;gt; miner winning the block race and therefore realizes a spent of the offered&lt;br/&gt;&amp;gt;&amp;gt; output. In practice, a replacement cycling attack might over-connect to&lt;br/&gt;&amp;gt;&amp;gt; miners&amp;#39; mempools and public reachable nodes to succeed in a fast eviction&lt;br/&gt;&amp;gt;&amp;gt; of the HTLC-timeout by its HTLC-preimage. As this latter transaction can&lt;br/&gt;&amp;gt;&amp;gt; come with a better ancestor-score, it should be picked up on the flight by&lt;br/&gt;&amp;gt;&amp;gt; economically competitive miners.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; A functional test exercising a simple replacement cycling of a HTLC&lt;br/&gt;&amp;gt;&amp;gt; transaction on bitcoin core mempool is available:&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://github.com/ariard/bitcoin/commits/2023-test-mempool&#34;&gt;https://github.com/ariard/bitcoin/commits/2023-test-mempool&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; ## Deployed LN mitigations&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Aggressive rebroadcasting: As the replacement cycling attacker benefits&lt;br/&gt;&amp;gt;&amp;gt; from the HTLC-timeout being usually broadcast by lightning nodes only once&lt;br/&gt;&amp;gt;&amp;gt; every block, or less the replacement cycling malicious transactions paid&lt;br/&gt;&amp;gt;&amp;gt; only equal the sum of the absolute fees paid by the HTLC, adjusted with the&lt;br/&gt;&amp;gt;&amp;gt; replacement penalty. Rebroadcasting randomly and multiple times before the&lt;br/&gt;&amp;gt;&amp;gt; next block increases the absolute fee cost for the attacker.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Implemented and deployed by Eclair, Core-Lightning, LND and LDK .&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Local-mempool preimage monitoring: As the replacement cycling attacker in&lt;br/&gt;&amp;gt;&amp;gt; a simple setup broadcast the HTLC-preimage to all the network mempools, the&lt;br/&gt;&amp;gt;&amp;gt; honest lightning node is able to catch on the flight the unconfirmed&lt;br/&gt;&amp;gt;&amp;gt; HTLC-preimage, before its subsequent mempool replacement. The preimage can&lt;br/&gt;&amp;gt;&amp;gt; be extracted from the second-stage HTLC-preimage and used to fetch the&lt;br/&gt;&amp;gt;&amp;gt; off-chain inbound HTLC with a cooperative message or go on-chain with it to&lt;br/&gt;&amp;gt;&amp;gt; claim the accepted HTLC output.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Implemented and deployed by Eclair and LND.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; CLTV Expiry Delta: With every jammed block comes an absolute fee cost&lt;br/&gt;&amp;gt;&amp;gt; paid by the attacker, a risk of the HTLC-preimage being detected or&lt;br/&gt;&amp;gt;&amp;gt; discovered by the honest lightning node, or the HTLC-timeout to slip in a&lt;br/&gt;&amp;gt;&amp;gt; winning block template. Bumping the default CLTV delta hardens the odds of&lt;br/&gt;&amp;gt;&amp;gt; success of a simple replacement cycling attack.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Default setting: Eclair 144, Core-Lightning 34, LND 80 and LDK 72.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; ## Affected Bitcoin Protocols and Applications&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; From my understanding the following list of Bitcoin protocols and&lt;br/&gt;&amp;gt;&amp;gt; applications could be affected by new denial-of-service vectors under some&lt;br/&gt;&amp;gt;&amp;gt; level of network mempools congestion. Neither tests or advanced review of&lt;br/&gt;&amp;gt;&amp;gt; specifications (when available) has been conducted for each of them:&lt;br/&gt;&amp;gt;&amp;gt; - on-chain DLCs&lt;br/&gt;&amp;gt;&amp;gt; - coinjoins&lt;br/&gt;&amp;gt;&amp;gt; - payjoins&lt;br/&gt;&amp;gt;&amp;gt; - wallets with time-sensitive paths&lt;br/&gt;&amp;gt;&amp;gt; - peerswap and submarine swaps&lt;br/&gt;&amp;gt;&amp;gt; - batch payouts&lt;br/&gt;&amp;gt;&amp;gt; - transaction &amp;#34;accelerators&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Inviting their developers, maintainers and operators to investigate how&lt;br/&gt;&amp;gt;&amp;gt; replacement cycling attacks might disrupt their in-mempool chain of&lt;br/&gt;&amp;gt;&amp;gt; transactions, or fee-bumping flows at the shortest delay. Simple flows and&lt;br/&gt;&amp;gt;&amp;gt; non-multi-party transactions should not be affected to the best of my&lt;br/&gt;&amp;gt;&amp;gt; understanding.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; ## Open Problems: Package Malleability&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Pinning attacks have been known for years as a practical vector to&lt;br/&gt;&amp;gt;&amp;gt; compromise lightning channels funds safety, under different scenarios (cf.&lt;br/&gt;&amp;gt;&amp;gt; current bip331&amp;#39;s motivation section). Mitigations at the mempool level have&lt;br/&gt;&amp;gt;&amp;gt; been designed, discussed and are under implementation by the community&lt;br/&gt;&amp;gt;&amp;gt; (ancestor package relay &#43; nverrsion=3 policy). Ideally, they should&lt;br/&gt;&amp;gt;&amp;gt; constraint a pinning attacker to always attach a high feerate package&lt;br/&gt;&amp;gt;&amp;gt; (commitment &#43; CPFP) to replace the honest package, or allow a honest&lt;br/&gt;&amp;gt;&amp;gt; lightning node to overbid a malicious pinning package and get its&lt;br/&gt;&amp;gt;&amp;gt; time-sensitive transaction optimistically included in the chain.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Replacement cycling attack seem to offer a new way to neutralize the&lt;br/&gt;&amp;gt;&amp;gt; design goals of package relay and its companion nversion=3 policy, where an&lt;br/&gt;&amp;gt;&amp;gt; attacker package RBF a honest package out of the mempool to subsequently&lt;br/&gt;&amp;gt;&amp;gt; double-spend its own high-fee child with a transaction unrelated to the&lt;br/&gt;&amp;gt;&amp;gt; channel. As the remaining commitment transaction is pre-signed with a&lt;br/&gt;&amp;gt;&amp;gt; minimal relay fee, it can be evicted out of the mempool.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; A functional test exercising a simple replacement cycling of a lightning&lt;br/&gt;&amp;gt;&amp;gt; channel commitment transaction on top of the nversion=3 code branch is&lt;br/&gt;&amp;gt;&amp;gt; available:&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://github.com/ariard/bitcoin/commits/2023-10-test-mempool-2&#34;&gt;https://github.com/ariard/bitcoin/commits/2023-10-test-mempool-2&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; ## Discovery&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; In 2018, the issue of static fees for pre-signed lightning transactions&lt;br/&gt;&amp;gt;&amp;gt; is made more widely known, the carve-out exemption in mempool rules to&lt;br/&gt;&amp;gt;&amp;gt; mitigate in-mempool package limits pinning and the anchor output pattern&lt;br/&gt;&amp;gt;&amp;gt; are proposed.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; In 2019, bitcoin core 0.19 is released with carve-out support. Continued&lt;br/&gt;&amp;gt;&amp;gt; discussion of the anchor output pattern as a dynamic fee-bumping method.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; In 2020, draft of anchor output submitted to the bolts. Initial finding&lt;br/&gt;&amp;gt;&amp;gt; of economic pinning against lightning commitment and second-stage HTLC&lt;br/&gt;&amp;gt;&amp;gt; transactions. Subsequent discussions of a preimage-overlay network or&lt;br/&gt;&amp;gt;&amp;gt; package-relay as mitigations. Public call made to inquiry more on potential&lt;br/&gt;&amp;gt;&amp;gt; other transaction-relay jamming attacks affecting lightning.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; In 2021, initial work in bitcoin core 22.0 of package acceptance.&lt;br/&gt;&amp;gt;&amp;gt; Continued discussion of the pinning attacks and shortcomings of current&lt;br/&gt;&amp;gt;&amp;gt; mempool rules during community-wide online workshops. Later the year, in&lt;br/&gt;&amp;gt;&amp;gt; light of all issues for bitcoin second-layers, a proposal is made about&lt;br/&gt;&amp;gt;&amp;gt; killing the mempool.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; In 2022, bip proposed for package relay and new proposed v3 policy design&lt;br/&gt;&amp;gt;&amp;gt; proposed for a review and implementation. Mempoolfullrbf is supported in&lt;br/&gt;&amp;gt;&amp;gt; bitcoin core 24.0 and conceptual questions about alignment of mempool rules&lt;br/&gt;&amp;gt;&amp;gt; w.r.t miners incentives are investigated.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Along this year 2022, eltoo lightning channels design are discussed,&lt;br/&gt;&amp;gt;&amp;gt; implemented and reviewed. In this context and after discussions on mempool&lt;br/&gt;&amp;gt;&amp;gt; anti-DoS rules, I discovered this new replacement cycling attack was&lt;br/&gt;&amp;gt;&amp;gt; affecting deployed lightning channels and immediately reported the finding&lt;br/&gt;&amp;gt;&amp;gt; to some bitcoin core developers and lightning maintainers.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; ## Timeline&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; - 2022-12-16: Report of the finding to Suhas Daftuar, Anthony Towns, Greg&lt;br/&gt;&amp;gt;&amp;gt; Sanders and Gloria Zhao&lt;br/&gt;&amp;gt;&amp;gt; - 2022-12-16: Report to LN maintainers: Rusty Russell, Bastien&lt;br/&gt;&amp;gt;&amp;gt; Teinturier, Matt Corallo and Olaoluwa Osuntunkun&lt;br/&gt;&amp;gt;&amp;gt; - 2022-12-23: Sharing to Eugene Siegel (LND)&lt;br/&gt;&amp;gt;&amp;gt; - 2022-12-24: Sharing to James O&amp;#39;Beirne and Antoine Poinsot&lt;br/&gt;&amp;gt;&amp;gt; (non-lightning potential affected projects)&lt;br/&gt;&amp;gt;&amp;gt; - 2022-01-14: Sharing to Gleb Naumenko (miners incentives and&lt;br/&gt;&amp;gt;&amp;gt; cross-layers issuers) and initial proposal of an early public disclosure&lt;br/&gt;&amp;gt;&amp;gt; - 2022-01-19: Collection of analysis if other second-layers and&lt;br/&gt;&amp;gt;&amp;gt; multi-party applications affected. LN mitigations development starts.&lt;br/&gt;&amp;gt;&amp;gt; - 2023-05-04: Sharing to Wilmer Paulino (LDK)&lt;br/&gt;&amp;gt;&amp;gt; - 2023-06-20: LN mitigations implemented and progressively released. Week&lt;br/&gt;&amp;gt;&amp;gt; of the 16 october proposed for full disclosure.&lt;br/&gt;&amp;gt;&amp;gt; - 2023-08-10: CVEs assigned by MITRE&lt;br/&gt;&amp;gt;&amp;gt; - 2023-10-05: Pre-disclosure of LN CVEs numbers and replacement cycling&lt;br/&gt;&amp;gt;&amp;gt; attack existence to security at bitcoincore.org.&lt;br/&gt;&amp;gt;&amp;gt; - 2023-10-16: Full disclosure of CVE-2023-40231 / CVE-2023-40232 /&lt;br/&gt;&amp;gt;&amp;gt; CVE-2023-40233 / CVE-2023-40234 and replacement cycling attacks&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; ## Conclusion&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Despite the line of mitigations adopted and deployed by current major&lt;br/&gt;&amp;gt;&amp;gt; lightning implementations, I believe replacement cycling attacks are still&lt;br/&gt;&amp;gt;&amp;gt; practical for advanced attackers. Beyond this new attack might come as a&lt;br/&gt;&amp;gt;&amp;gt; way to partially or completely defeat some of the pinning mitigations which&lt;br/&gt;&amp;gt;&amp;gt; have been working for years as a community.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; As of today, it is uncertain to me if lightning is not affected by a more&lt;br/&gt;&amp;gt;&amp;gt; severe long-term package malleability critical security issue under current&lt;br/&gt;&amp;gt;&amp;gt; consensus rules, and if any other time-sensitive multi-party protocol,&lt;br/&gt;&amp;gt;&amp;gt; designed or deployed isn&amp;#39;t de facto affected too (loss of funds or denial&lt;br/&gt;&amp;gt;&amp;gt; of service).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Assuming analysis on package malleability is correct, it is unclear to me&lt;br/&gt;&amp;gt;&amp;gt; if it can be corrected by changes in replacement / eviction rules or&lt;br/&gt;&amp;gt;&amp;gt; mempool chain of transactions processing strategy. Inviting my technical&lt;br/&gt;&amp;gt;&amp;gt; peers and the bitcoin community to look more on this issue, including to&lt;br/&gt;&amp;gt;&amp;gt; dissent. I&amp;#39;ll be the first one pleased if I&amp;#39;m fundamentally wrong on those&lt;br/&gt;&amp;gt;&amp;gt; issues, or if any element has not been weighted with the adequate technical&lt;br/&gt;&amp;gt;&amp;gt; accuracy it deserves.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Do not trust, verify. All mistakes and opinions are my own.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Antoine&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;#34;meet with Triumph and Disaster. And treat those two impostors just the&lt;br/&gt;&amp;gt;&amp;gt; same&amp;#34; - K.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20231017/36ea4307/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20231017/36ea4307/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-10-18T13:02:09Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsv0ghgu50qgw0sgznusqjghx90thv4wqd2vh4lplqzuyt3lzey3kszypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zz65f8q</id>
    
      <title type="html">📅 Original date posted:2023-10-17 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsv0ghgu50qgw0sgznusqjghx90thv4wqd2vh4lplqzuyt3lzey3kszypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zz65f8q" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsq7mwlfy4d92ucamqlf568wqd59x0gmhd4dlypen9vqns7zpnf4sgw9wsd9&#39;&gt;nevent1q…wsd9&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-10-17&lt;br/&gt;🗒️ Summary of this message: At block height 100, node B forces the B-C channel onchain because the B-C HTLC timelock has expired without node C claiming it. However, the onchain feerates have risen and the transactions do not confirm. At block height 144, node A drops the A-B channel onchain and is able to recover the HTLC funds. Node C then broadcasts an HTLC-success transaction with high feerates that replaces the HTLC-timeout transaction, allowing C to get the value of the HTLC. Node B is no longer able to use the knowledge of the preimage.&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Zeeman,&lt;br/&gt;&lt;br/&gt;&amp;gt; At block height 100, `B` notices the `B-&amp;gt;C` HTLC timelock is expired&lt;br/&gt;without `C` having claimed it, so `B` forces the `B====C` channel onchain.&lt;br/&gt;&amp;gt; However, onchain feerates have risen and the commitment transaction and&lt;br/&gt;HTLC-timeout transaction do not confirm.&lt;br/&gt;&lt;br/&gt;This is not that the HTLC-timeout does not confirm. It is replaced in&lt;br/&gt;cycles by C&amp;#39;s HTLC-preimage which is still valid after `B-&amp;gt;C` HTLC timelock&lt;br/&gt;has expired. And this HTLC-preimage is subsequently replaced itself.&lt;br/&gt;&lt;br/&gt;See the test here:&lt;br/&gt;&lt;a href=&#34;https://github.com/ariard/bitcoin/commit/19d61fa8cf22a5050b51c4005603f43d72f1efcf&#34;&gt;https://github.com/ariard/bitcoin/commit/19d61fa8cf22a5050b51c4005603f43d72f1efcf&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; At block height 144, `B` is still not able to claim the `A-&amp;gt;B` HTLC, so&lt;br/&gt;`A` drops the `A====B` channel onchain.&lt;br/&gt;&amp;gt; As the fees are up-to-date, this confirms immediately and `A` is able to&lt;br/&gt;recover the HTLC funds.&lt;br/&gt;&amp;gt; However, the feerates of the `B====C` pre-signed transactions remain at&lt;br/&gt;the old, uncompetitive feerates.&lt;br/&gt;&lt;br/&gt;This is correct that A tries to recover the HTLC funds on the `A===B`&lt;br/&gt;channel.&lt;br/&gt;&lt;br/&gt;However, there is no need to consider the fee rates nor mempool congestion&lt;br/&gt;as the exploit lays on the replacement mechanism itself (in simple&lt;br/&gt;scenario).&lt;br/&gt;&lt;br/&gt;&amp;gt; At this point, `C` broadcasts an HTLC-success transaction with high&lt;br/&gt;feerates that CPFPs the commitment tx.&lt;br/&gt;&amp;gt; However, it replaces the HTLC-timeout transaction, which is at the old,&lt;br/&gt;low feerate.&lt;br/&gt;&amp;gt; `C` is thus able to get the value of the HTLC, but `B` is now no longer&lt;br/&gt;able to use the knowledge of the preimage, as its own incoming HTLC was&lt;br/&gt;already confirmed as claimed by `A`.&lt;br/&gt;&lt;br/&gt;This is correct that `C` broadcasts an HTLC-success transaction at block&lt;br/&gt;height 144.&lt;br/&gt;&lt;br/&gt;However `C` broadcasts this high feerate transaction at _every block_&lt;br/&gt;between blocks 100 and 144 to replace B&amp;#39;s HTLC-timeout transaction.&lt;br/&gt;&lt;br/&gt;&amp;gt; Let me also explain to non-Lightning experts why HTLC-timeout is&lt;br/&gt;presigned in this case and why `B` cannot feebump it.&lt;br/&gt;&lt;br/&gt;Note `B` can feebump the HTLC-timeout for anchor output channels thanks to&lt;br/&gt;sighash_single | anyonecanpay on C&amp;#39;s signature.&lt;br/&gt;&lt;br/&gt;Le mar. 17 oct. 2023 à 11:34, ZmnSCPxj &amp;lt;ZmnSCPxj at protonmail.com&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Good morning Antoine et al.,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Let me try to rephrase the core of the attack.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; There exists these nodes on the LN (letters `A`, `B`, and `C` are nodes,&lt;br/&gt;&amp;gt; `==` are channels):&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;     A ===== B ===== C&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; `A` routes `A-&amp;gt;B-&amp;gt;C`.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The timelocks, for example, could be:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;    A-&amp;gt;B timeelock = 144&lt;br/&gt;&amp;gt;    B-&amp;gt;C timelock = 100&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The above satisfies the LN BOLT requirements, as long as `B` has a&lt;br/&gt;&amp;gt; `cltv_expiry_delta` of 44 or lower.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; After `B` forwards the HTLC `B-&amp;gt;C`, C suddenly goes offline, and all the&lt;br/&gt;&amp;gt; signed transactions --- commitment transaction and HTLC-timeout&lt;br/&gt;&amp;gt; transactions --- are &amp;#34;stuck&amp;#34; at the feerate at the time.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; At block height 100, `B` notices the `B-&amp;gt;C` HTLC timelock is expired&lt;br/&gt;&amp;gt; without `C` having claimed it, so `B` forces the `B====C` channel onchain.&lt;br/&gt;&amp;gt; However, onchain feerates have risen and the commitment transaction and&lt;br/&gt;&amp;gt; HTLC-timeout transaction do not confirm.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In the mean time, `A` is still online with `B` and updates the onchain&lt;br/&gt;&amp;gt; fees of the `A====B` channel pre-signed transactions (commitment tx and&lt;br/&gt;&amp;gt; HTLC-timeout tx) to the latest.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; At block height 144, `B` is still not able to claim the `A-&amp;gt;B` HTLC, so&lt;br/&gt;&amp;gt; `A` drops the `A====B` channel onchain.&lt;br/&gt;&amp;gt; As the fees are up-to-date, this confirms immediately and `A` is able to&lt;br/&gt;&amp;gt; recover the HTLC funds.&lt;br/&gt;&amp;gt; However, the feerates of the `B====C` pre-signed transactions remain at&lt;br/&gt;&amp;gt; the old, uncompetitive feerates.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; At this point, `C` broadcasts an HTLC-success transaction with high&lt;br/&gt;&amp;gt; feerates that CPFPs the commitment tx.&lt;br/&gt;&amp;gt; However, it replaces the HTLC-timeout transaction, which is at the old,&lt;br/&gt;&amp;gt; low feerate.&lt;br/&gt;&amp;gt; `C` is thus able to get the value of the HTLC, but `B` is now no longer&lt;br/&gt;&amp;gt; able to use the knowledge of the preimage, as its own incoming HTLC was&lt;br/&gt;&amp;gt; already confirmed as claimed by `A`.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Is the above restatement accurate?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ----&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Let me also explain to non-Lightning experts why HTLC-timeout is presigned&lt;br/&gt;&amp;gt; in this case and why `B` cannot feebump it.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In the Poon-Dryja mechanism, the HTLCs are &amp;#34;infected&amp;#34; by the Poon-Dryja&lt;br/&gt;&amp;gt; penalty case, and are not plain HTLCs.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A plain HTLC offerred by `B` to `C` would look like this:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;     (B &amp;amp;&amp;amp; OP_CLTV) || (C &amp;amp;&amp;amp; OP_HASH160)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; However, on the commitment transaction held by `B`, it would be infected&lt;br/&gt;&amp;gt; by the penalty case in this way:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;     (B &amp;amp;&amp;amp; C &amp;amp;&amp;amp; OP_CLTV) || (C &amp;amp;&amp;amp; OP_HASH160) || (C &amp;amp;&amp;amp; revocation)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; There are two changes:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * The addition of a revocation branch `C &amp;amp;&amp;amp; revocation`.&lt;br/&gt;&amp;gt; * The branch claimable by `B` in the &amp;#34;plain&amp;#34; HTLC (`B &amp;amp;&amp;amp; OP_CLTV`) also&lt;br/&gt;&amp;gt; includes `C`.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; These are necessary in case `B` tries to cheat and this HTLC is on an old,&lt;br/&gt;&amp;gt; revoked transaction.&lt;br/&gt;&amp;gt; If the revoked transaction is *really* old, the `OP_CLTV` would already&lt;br/&gt;&amp;gt; impose a timelock far in the past.&lt;br/&gt;&amp;gt; This means that a plain `B &amp;amp;&amp;amp; OP_CLTV` branch can be claimed by `B` if it&lt;br/&gt;&amp;gt; retained this very old revoked transaction.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; To prevent that, `C` is added to the `B &amp;amp;&amp;amp; OP_CLTV` branch.&lt;br/&gt;&amp;gt; We also introduce an HTLC-timeout transaction, which spends the `B &amp;amp;&amp;amp; C &amp;amp;&amp;amp;&lt;br/&gt;&amp;gt; OP_CLTV` branch, and outputs to:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;     (B &amp;amp;&amp;amp; OP_CSV) || (C &amp;amp;&amp;amp; revocation)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Thus, even if `B` held onto a very old revoked commitment transaction and&lt;br/&gt;&amp;gt; attempts to spend the timelock branch (because the `OP_CLTV` is for an old&lt;br/&gt;&amp;gt; blockheight), it still has to contend with a new output with a *relative*&lt;br/&gt;&amp;gt; timelock.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Unfortunately, this means that the HTLC-timeout transaction is pre-signed,&lt;br/&gt;&amp;gt; and has a specific feerate.&lt;br/&gt;&amp;gt; In order to change the feerate, both `B` and `C` have to agree to re-sign&lt;br/&gt;&amp;gt; the HTLC-timeout transaction at the higher feerate.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; However, the HTLC-success transaction in this case spends the plain `(C &amp;amp;&amp;amp;&lt;br/&gt;&amp;gt; OP_HASH160)` branch, which only involves `C`.&lt;br/&gt;&amp;gt; This allows `C` to feebump the HTLC-success transaction arbitrarily even&lt;br/&gt;&amp;gt; if `B` does not cooperate.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; While anchor outputs can be added to the HTLC-timeout transaction as well,&lt;br/&gt;&amp;gt; `C` has a greater advantage here due to being able to RBF the HTLC-timeout&lt;br/&gt;&amp;gt; out of the way (1 transaction), while `B` has to get both HTLC-timeout and&lt;br/&gt;&amp;gt; a CPFP-RBF of the anchor output of the HTLC-timeout transaction (2&lt;br/&gt;&amp;gt; transactions).&lt;br/&gt;&amp;gt; `C` thus requires a smaller fee to achieve a particular feerate due to&lt;br/&gt;&amp;gt; having to push a smaller number of bytes compared to `B`.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Regards,&lt;br/&gt;&amp;gt; ZmnSCPxj&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20231017/e68491ea/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20231017/e68491ea/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-10-18T13:02:08Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqs9wsd56uge8engxk0ekys4tp3raw6xzemwzrz3xwmgwqcm7xmgpfgzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zuf2d7q</id>
    
      <title type="html">📅 Original date posted:2023-10-16 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqs9wsd56uge8engxk0ekys4tp3raw6xzemwzrz3xwmgwqcm7xmgpfgzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zuf2d7q" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsr9rmczvly2hpwtcewshekzmpg5mx4falg9xsxnptveywtqtzxq5cw4sk67&#39;&gt;nevent1q…sk67&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-10-16&lt;br/&gt;🗒️ Summary of this message: Cross-posting mempool issues have exposed lightning channels to the risk of loss of funds, potentially affecting other multi-party bitcoin applications. Mitigations have been implemented, but their effectiveness against advanced replacement cycling attacks is still uncertain.&lt;br/&gt;📝 Original message:&lt;br/&gt;(cross-posting mempool issues identified are exposing lightning chan to&lt;br/&gt;loss of funds risks, other multi-party bitcoin apps might be affected)&lt;br/&gt;&lt;br/&gt;Hi,&lt;br/&gt;&lt;br/&gt;End of last year (December 2022), amid technical discussions on eltoo&lt;br/&gt;payment channels and incentives compatibility of the mempool anti-DoS&lt;br/&gt;rules, a new transaction-relay jamming attack affecting lightning channels&lt;br/&gt;was discovered.&lt;br/&gt;&lt;br/&gt;After careful analysis, it turns out this attack is practical and&lt;br/&gt;immediately exposed lightning routing hops carrying HTLC traffic to loss of&lt;br/&gt;funds security risks, both legacy and anchor output channels. A potential&lt;br/&gt;exploitation plausibly happening even without network mempools congestion.&lt;br/&gt;&lt;br/&gt;Mitigations have been designed, implemented and deployed by all major&lt;br/&gt;lightning implementations during the last months.&lt;br/&gt;&lt;br/&gt;Please find attached the release numbers, where the mitigations should be&lt;br/&gt;present:&lt;br/&gt;- LDK: v0.0.118 - CVE-2023 -40231&lt;br/&gt;- Eclair: v0.9.0 - CVE-2023-40232&lt;br/&gt;- LND: v.0.17.0-beta - CVE-2023-40233&lt;br/&gt;- Core-Lightning: v.23.08.01 - CVE-2023-40234&lt;br/&gt;&lt;br/&gt;While neither replacement cycling attacks have been observed or reported in&lt;br/&gt;the wild since the last ~10 months or experimented in real-world conditions&lt;br/&gt;on bitcoin mainet, functional test is available exercising the affected&lt;br/&gt;lightning channel against bitcoin core mempool (26.0 release cycle).&lt;br/&gt;&lt;br/&gt;It is understood that a simple replacement cycling attack does not demand&lt;br/&gt;privileged capabilities from an attacker (e.g no low-hashrate power) and&lt;br/&gt;only access to basic bitcoin and lightning software. Yet I still think&lt;br/&gt;executing such an attack successfully requests a fair amount of bitcoin&lt;br/&gt;technical know-how and decent preparation.&lt;br/&gt;&lt;br/&gt;&amp;gt;From my understanding of those issues, it is yet to be determined if the&lt;br/&gt;mitigations deployed are robust enough in face of advanced replacement&lt;br/&gt;cycling attackers, especially ones able to combine different classes of&lt;br/&gt;transaction-relay jamming such as pinnings or vetted with more privileged&lt;br/&gt;capabilities.&lt;br/&gt;&lt;br/&gt;Please find a list of potential affected bitcoin applications in this full&lt;br/&gt;disclosure report using bitcoin script timelocks or multi-party&lt;br/&gt;transactions, albeit no immediate security risk exposure as severe as the&lt;br/&gt;ones affecting lightning has been identified. Only cursory review of&lt;br/&gt;non-lightning applications has been conducted so far.&lt;br/&gt;&lt;br/&gt;There is a paper published summarizing replacement cycling attacks on the&lt;br/&gt;lightning network:&lt;br/&gt;&lt;a href=&#34;https://github.com/ariard/mempool-research/blob/2023-10-replacement-paper/replacement-cycling.pdf&#34;&gt;https://github.com/ariard/mempool-research/blob/2023-10-replacement-paper/replacement-cycling.pdf&lt;/a&gt;&lt;br/&gt;&lt;br/&gt; ## Problem&lt;br/&gt;&lt;br/&gt;A lightning node allows HTLCs forwarding (in bolt3&amp;#39;s parlance accepted HTLC&lt;br/&gt;on incoming link and offered HTLC on outgoing link) should settle the&lt;br/&gt;outgoing state with either a success or timeout before the incoming state&lt;br/&gt;timelock becomes final and an asymmetric defavorable settlement might&lt;br/&gt;happen (cf &amp;#34;Flood &amp;amp; Loot: A Systematic Attack on The Lightning Network&amp;#34;&lt;br/&gt;section 2.3 for a classical exposition of this lightning security property).&lt;br/&gt;&lt;br/&gt;Failure to satisfy this settlement requirement exposes a forwarding hop to&lt;br/&gt;a loss of fund risk where the offered HTLC is spent by the outgoing link&lt;br/&gt;counterparty&amp;#39;s HTLC-preimage and the accepted HTLC is spent by the incoming&lt;br/&gt;link counterparty&amp;#39;s HTLC-timeout.&lt;br/&gt;&lt;br/&gt;The specification mandates the incoming HTLC expiration timelock to be&lt;br/&gt;spaced out by an interval of `cltv_expiry_delta` from the outgoing HTLC&lt;br/&gt;expiration timelock, this exact interval value being an implementation and&lt;br/&gt;node policy setting. As a minimal value, the specification recommends 34&lt;br/&gt;blocks of interval. If the timelock expiration I of the inbound HTLC is&lt;br/&gt;equal to 100 from chain tip, the timelock expiration O of the outbound HTLC&lt;br/&gt;must be equal to 66 blocks from chain tip, giving a reasonable buffer of&lt;br/&gt;reaction to the lightning forwarding node.&lt;br/&gt;&lt;br/&gt;In the lack of cooperative off-chain settlement of the HTLC on the outgoing&lt;br/&gt;link negotiated with the counterparty (either `update_fulfill_htlc` or&lt;br/&gt;`update_fail_htlc`) when O is reached, the lightning node should broadcast&lt;br/&gt;its commitment transaction. Once the commitment is confirmed (if anchor and&lt;br/&gt;the 1 CSV encumbrance is present), the lightning node broadcasts and&lt;br/&gt;confirms its HTLC-timeout before I height is reached.&lt;br/&gt;&lt;br/&gt;Here enter a replacement cycling attack. A malicious channel counterparty&lt;br/&gt;can broadcast its HTLC-preimage transaction with a higher absolute fee and&lt;br/&gt;higher feerate than the honest HTLC-timeout of the victim lightning node&lt;br/&gt;and triggers a replacement. Both for legacy and anchor output channels, a&lt;br/&gt;HTLC-preimage on a counterparty commitment transaction is malleable, i.e&lt;br/&gt;additional inputs or outputs can be added. The HTLC-preimage spends an&lt;br/&gt;unconfirmed and unrelated to the channel parent transaction M and conflicts&lt;br/&gt;its child.&lt;br/&gt;&lt;br/&gt;As the HTLC-preimage spends an unconfirmed input that was already included&lt;br/&gt;in the unconfirmed and unrelated child transaction (rule 2), pays an&lt;br/&gt;absolute higher fee of at least the sum paid by the HTLC-timeout and child&lt;br/&gt;transaction (rule 3) and the HTLC-preimage feerate is greater than all&lt;br/&gt;directly conflicting transactions (rule 6), the replacement is accepted.&lt;br/&gt;The honest HTLC-timeout is evicted out of the mempool.&lt;br/&gt;&lt;br/&gt;In an ulterior move, the malicious counterparty can replace the parent&lt;br/&gt;transaction itself with another candidate N satisfying the replacement&lt;br/&gt;rules, triggering the eviction of the malicious HTLC-preimage from the&lt;br/&gt;mempool as it was a child of the parent T.&lt;br/&gt;&lt;br/&gt;There is no spending candidate of the offered HTLC output for the current&lt;br/&gt;block laying in network mempools.&lt;br/&gt;&lt;br/&gt;This replacement cycling tricks can be repeated for each rebroadcast&lt;br/&gt;attempt of the HTLC-timeout by the honest lightning node until expiration&lt;br/&gt;of the inbound HTLC timelock I. Once this height is reached a HTLC-timeout&lt;br/&gt;is broadcast by the counterparty&amp;#39;s on the incoming link in collusion with&lt;br/&gt;the one on the outgoing link broadcasting its own HTLC-preimage.&lt;br/&gt;&lt;br/&gt;The honest Lightning node has been &amp;#34;double-spent&amp;#34; in its HTLC forwarding.&lt;br/&gt;&lt;br/&gt;As a notable factor impacting the success of the attack, a lightning node&amp;#39;s&lt;br/&gt;honest HTLC-timeout might be included in the block template of the miner&lt;br/&gt;winning the block race and therefore realizes a spent of the offered&lt;br/&gt;output. In practice, a replacement cycling attack might over-connect to&lt;br/&gt;miners&amp;#39; mempools and public reachable nodes to succeed in a fast eviction&lt;br/&gt;of the HTLC-timeout by its HTLC-preimage. As this latter transaction can&lt;br/&gt;come with a better ancestor-score, it should be picked up on the flight by&lt;br/&gt;economically competitive miners.&lt;br/&gt;&lt;br/&gt;A functional test exercising a simple replacement cycling of a HTLC&lt;br/&gt;transaction on bitcoin core mempool is available:&lt;br/&gt;&lt;a href=&#34;https://github.com/ariard/bitcoin/commits/2023-test-mempool&#34;&gt;https://github.com/ariard/bitcoin/commits/2023-test-mempool&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;## Deployed LN mitigations&lt;br/&gt;&lt;br/&gt;Aggressive rebroadcasting: As the replacement cycling attacker benefits&lt;br/&gt;from the HTLC-timeout being usually broadcast by lightning nodes only once&lt;br/&gt;every block, or less the replacement cycling malicious transactions paid&lt;br/&gt;only equal the sum of the absolute fees paid by the HTLC, adjusted with the&lt;br/&gt;replacement penalty. Rebroadcasting randomly and multiple times before the&lt;br/&gt;next block increases the absolute fee cost for the attacker.&lt;br/&gt;&lt;br/&gt;Implemented and deployed by Eclair, Core-Lightning, LND and LDK .&lt;br/&gt;&lt;br/&gt;Local-mempool preimage monitoring: As the replacement cycling attacker in a&lt;br/&gt;simple setup broadcast the HTLC-preimage to all the network mempools, the&lt;br/&gt;honest lightning node is able to catch on the flight the unconfirmed&lt;br/&gt;HTLC-preimage, before its subsequent mempool replacement. The preimage can&lt;br/&gt;be extracted from the second-stage HTLC-preimage and used to fetch the&lt;br/&gt;off-chain inbound HTLC with a cooperative message or go on-chain with it to&lt;br/&gt;claim the accepted HTLC output.&lt;br/&gt;&lt;br/&gt;Implemented and deployed by Eclair and LND.&lt;br/&gt;&lt;br/&gt;CLTV Expiry Delta: With every jammed block comes an absolute fee cost paid&lt;br/&gt;by the attacker, a risk of the HTLC-preimage being detected or discovered&lt;br/&gt;by the honest lightning node, or the HTLC-timeout to slip in a winning&lt;br/&gt;block template. Bumping the default CLTV delta hardens the odds of success&lt;br/&gt;of a simple replacement cycling attack.&lt;br/&gt;&lt;br/&gt;Default setting: Eclair 144, Core-Lightning 34, LND 80 and LDK 72.&lt;br/&gt;&lt;br/&gt;## Affected Bitcoin Protocols and Applications&lt;br/&gt;&lt;br/&gt;&amp;gt;From my understanding the following list of Bitcoin protocols and&lt;br/&gt;applications could be affected by new denial-of-service vectors under some&lt;br/&gt;level of network mempools congestion. Neither tests or advanced review of&lt;br/&gt;specifications (when available) has been conducted for each of them:&lt;br/&gt;- on-chain DLCs&lt;br/&gt;- coinjoins&lt;br/&gt;- payjoins&lt;br/&gt;- wallets with time-sensitive paths&lt;br/&gt;- peerswap and submarine swaps&lt;br/&gt;- batch payouts&lt;br/&gt;- transaction &amp;#34;accelerators&amp;#34;&lt;br/&gt;&lt;br/&gt;Inviting their developers, maintainers and operators to investigate how&lt;br/&gt;replacement cycling attacks might disrupt their in-mempool chain of&lt;br/&gt;transactions, or fee-bumping flows at the shortest delay. Simple flows and&lt;br/&gt;non-multi-party transactions should not be affected to the best of my&lt;br/&gt;understanding.&lt;br/&gt;&lt;br/&gt;## Open Problems: Package Malleability&lt;br/&gt;&lt;br/&gt;Pinning attacks have been known for years as a practical vector to&lt;br/&gt;compromise lightning channels funds safety, under different scenarios (cf.&lt;br/&gt;current bip331&amp;#39;s motivation section). Mitigations at the mempool level have&lt;br/&gt;been designed, discussed and are under implementation by the community&lt;br/&gt;(ancestor package relay &#43; nverrsion=3 policy). Ideally, they should&lt;br/&gt;constraint a pinning attacker to always attach a high feerate package&lt;br/&gt;(commitment &#43; CPFP) to replace the honest package, or allow a honest&lt;br/&gt;lightning node to overbid a malicious pinning package and get its&lt;br/&gt;time-sensitive transaction optimistically included in the chain.&lt;br/&gt;&lt;br/&gt;Replacement cycling attack seem to offer a new way to neutralize the design&lt;br/&gt;goals of package relay and its companion nversion=3 policy, where an&lt;br/&gt;attacker package RBF a honest package out of the mempool to subsequently&lt;br/&gt;double-spend its own high-fee child with a transaction unrelated to the&lt;br/&gt;channel. As the remaining commitment transaction is pre-signed with a&lt;br/&gt;minimal relay fee, it can be evicted out of the mempool.&lt;br/&gt;&lt;br/&gt;A functional test exercising a simple replacement cycling of a lightning&lt;br/&gt;channel commitment transaction on top of the nversion=3 code branch is&lt;br/&gt;available:&lt;br/&gt;&lt;a href=&#34;https://github.com/ariard/bitcoin/commits/2023-10-test-mempool-2&#34;&gt;https://github.com/ariard/bitcoin/commits/2023-10-test-mempool-2&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;## Discovery&lt;br/&gt;&lt;br/&gt;In 2018, the issue of static fees for pre-signed lightning transactions is&lt;br/&gt;made more widely known, the carve-out exemption in mempool rules to&lt;br/&gt;mitigate in-mempool package limits pinning and the anchor output pattern&lt;br/&gt;are proposed.&lt;br/&gt;&lt;br/&gt;In 2019, bitcoin core 0.19 is released with carve-out support. Continued&lt;br/&gt;discussion of the anchor output pattern as a dynamic fee-bumping method.&lt;br/&gt;&lt;br/&gt;In 2020, draft of anchor output submitted to the bolts. Initial finding of&lt;br/&gt;economic pinning against lightning commitment and second-stage HTLC&lt;br/&gt;transactions. Subsequent discussions of a preimage-overlay network or&lt;br/&gt;package-relay as mitigations. Public call made to inquiry more on potential&lt;br/&gt;other transaction-relay jamming attacks affecting lightning.&lt;br/&gt;&lt;br/&gt;In 2021, initial work in bitcoin core 22.0 of package acceptance. Continued&lt;br/&gt;discussion of the pinning attacks and shortcomings of current mempool rules&lt;br/&gt;during community-wide online workshops. Later the year, in light of all&lt;br/&gt;issues for bitcoin second-layers, a proposal is made about killing the&lt;br/&gt;mempool.&lt;br/&gt;&lt;br/&gt;In 2022, bip proposed for package relay and new proposed v3 policy design&lt;br/&gt;proposed for a review and implementation. Mempoolfullrbf is supported in&lt;br/&gt;bitcoin core 24.0 and conceptual questions about alignment of mempool rules&lt;br/&gt;w.r.t miners incentives are investigated.&lt;br/&gt;&lt;br/&gt;Along this year 2022, eltoo lightning channels design are discussed,&lt;br/&gt;implemented and reviewed. In this context and after discussions on mempool&lt;br/&gt;anti-DoS rules, I discovered this new replacement cycling attack was&lt;br/&gt;affecting deployed lightning channels and immediately reported the finding&lt;br/&gt;to some bitcoin core developers and lightning maintainers.&lt;br/&gt;&lt;br/&gt;## Timeline&lt;br/&gt;&lt;br/&gt;- 2022-12-16: Report of the finding to Suhas Daftuar, Anthony Towns, Greg&lt;br/&gt;Sanders and Gloria Zhao&lt;br/&gt;- 2022-12-16: Report to LN maintainers: Rusty Russell, Bastien Teinturier,&lt;br/&gt;Matt Corallo and Olaoluwa Osuntunkun&lt;br/&gt;- 2022-12-23: Sharing to Eugene Siegel (LND)&lt;br/&gt;- 2022-12-24: Sharing to James O&amp;#39;Beirne and Antoine Poinsot (non-lightning&lt;br/&gt;potential affected projects)&lt;br/&gt;- 2022-01-14: Sharing to Gleb Naumenko (miners incentives and cross-layers&lt;br/&gt;issuers) and initial proposal of an early public disclosure&lt;br/&gt;- 2022-01-19: Collection of analysis if other second-layers and multi-party&lt;br/&gt;applications affected. LN mitigations development starts.&lt;br/&gt;- 2023-05-04: Sharing to Wilmer Paulino (LDK)&lt;br/&gt;- 2023-06-20: LN mitigations implemented and progressively released. Week&lt;br/&gt;of the 16 october proposed for full disclosure.&lt;br/&gt;- 2023-08-10: CVEs assigned by MITRE&lt;br/&gt;- 2023-10-05: Pre-disclosure of LN CVEs numbers and replacement cycling&lt;br/&gt;attack existence to security at bitcoincore.org.&lt;br/&gt;- 2023-10-16: Full disclosure of CVE-2023-40231 / CVE-2023-40232 /&lt;br/&gt;CVE-2023-40233 / CVE-2023-40234 and replacement cycling attacks&lt;br/&gt;&lt;br/&gt;## Conclusion&lt;br/&gt;&lt;br/&gt;Despite the line of mitigations adopted and deployed by current major&lt;br/&gt;lightning implementations, I believe replacement cycling attacks are still&lt;br/&gt;practical for advanced attackers. Beyond this new attack might come as a&lt;br/&gt;way to partially or completely defeat some of the pinning mitigations which&lt;br/&gt;have been working for years as a community.&lt;br/&gt;&lt;br/&gt;As of today, it is uncertain to me if lightning is not affected by a more&lt;br/&gt;severe long-term package malleability critical security issue under current&lt;br/&gt;consensus rules, and if any other time-sensitive multi-party protocol,&lt;br/&gt;designed or deployed isn&amp;#39;t de facto affected too (loss of funds or denial&lt;br/&gt;of service).&lt;br/&gt;&lt;br/&gt;Assuming analysis on package malleability is correct, it is unclear to me&lt;br/&gt;if it can be corrected by changes in replacement / eviction rules or&lt;br/&gt;mempool chain of transactions processing strategy. Inviting my technical&lt;br/&gt;peers and the bitcoin community to look more on this issue, including to&lt;br/&gt;dissent. I&amp;#39;ll be the first one pleased if I&amp;#39;m fundamentally wrong on those&lt;br/&gt;issues, or if any element has not been weighted with the adequate technical&lt;br/&gt;accuracy it deserves.&lt;br/&gt;&lt;br/&gt;Do not trust, verify. All mistakes and opinions are my own.&lt;br/&gt;&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;&amp;#34;meet with Triumph and Disaster. And treat those two impostors just the&lt;br/&gt;same&amp;#34; - K.&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20231016/6e4e649f/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20231016/6e4e649f/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-10-18T13:02:08Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsz6cent45n3xlkf84y70nsxc2v0axntyelluyrrwk2ugvyx0wnkrczypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zw8m9pw</id>
    
      <title type="html">📅 Original date posted:2023-10-17 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsz6cent45n3xlkf84y70nsxc2v0axntyelluyrrwk2ugvyx0wnkrczypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zw8m9pw" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsv0ghgu50qgw0sgznusqjghx90thv4wqd2vh4lplqzuyt3lzey3ksjt78cc&#39;&gt;nevent1q…78cc&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-10-17&lt;br/&gt;🗒️ Summary of this message: No pinning attacks have been observed on the mainnet. Monitoring mempool logs can help detect suspicious behavior. Feebumping could be considered as a mitigation strategy.&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Ziggie,&lt;br/&gt;&lt;br/&gt;&amp;gt; thanks for this detailed explanation. This class of pinning attacks sound&lt;br/&gt;not too unlikely especially if the attacker targets channels with high&lt;br/&gt;capacity and very loose channel policies (allowing the full htlc&lt;br/&gt;&amp;gt; amount to be the channel capacity). Could you add more details about the&lt;br/&gt;attack you observed on mainnet ? How did you monitor the chain, are the&lt;br/&gt;some tools available I can run in parallel to my&lt;br/&gt;&amp;gt; lightning software to record this kind of suspicious behaviour (which did&lt;br/&gt;you use)?&lt;br/&gt;&lt;br/&gt;Just to give a clarification no _such_ attack has been observed on mainnet,&lt;br/&gt;since I and other LN maintainers have been aware of this issue. If there is&lt;br/&gt;a confusion on the disclosure mail thanks to point to it, I&amp;#39;ll correct it.&lt;br/&gt;&lt;br/&gt;We discussed privately to experiment a demo attack in restrained dev&lt;br/&gt;circles, like we have done in the past for some LN sec issues. We have&lt;br/&gt;conducted one so far, multiple scenarios to look at.&lt;br/&gt;&lt;br/&gt;I confirm the risk of exposure if an attacker targets channels with high&lt;br/&gt;capacity and loose channel policies. Note there is no way to configure the&lt;br/&gt;cap for the total value of outbound HTLC in-flight, which is the flow&lt;br/&gt;affected.&lt;br/&gt;&lt;br/&gt;If you would like to observe the existence of such an attack happening,&lt;br/&gt;look at your mempool logs and the amount of HTLC output being&lt;br/&gt;systematically conflicted out with the following sequence (HTLC-timeout -&lt;br/&gt;HTLC-preimage - HTLC-timeout - ...).&lt;br/&gt;&lt;br/&gt;As an observation note, this is not akin to a pinning attack, as there is&lt;br/&gt;no &amp;#34;honest&amp;#34; or &amp;#34;malicious&amp;#34; transaction pinned in network mempools. And it&lt;br/&gt;can happen without network mempools congestion.&lt;br/&gt;&lt;br/&gt;&amp;gt; What&amp;#39;s also worth mentioning here is that you do not really have to&lt;br/&gt;control 2 neighbouring nodes to target your victim. If you can cycle the&lt;br/&gt;attack on the tail side and delay the confirmation of the htlc- timeout&lt;br/&gt;covenant the peer at the front (incoming link) of the victim will&lt;br/&gt;force-close the channel and claim his timeout-path in the same way&lt;br/&gt;(canceling back the initial htlc amount to the attackers initial node).&lt;br/&gt;&lt;br/&gt;I think this is a behavior worthy of testing.&lt;br/&gt;&lt;br/&gt;&amp;gt; Apart from that I think one can even introduce some kind of feebumping&lt;br/&gt;race between the victim and the attacker on the tail side of the attack&lt;br/&gt;making the attack even more costly. I think&lt;br/&gt;&amp;gt; currently when lightning nodes see the preimage in the mempool (during&lt;br/&gt;the time where they already can spend the same output with the&lt;br/&gt;timeout-covenant) we are honest and just extract&lt;br/&gt;&amp;gt; the preimage and don&amp;#39;t try to race this tx output.&lt;br/&gt;&lt;br/&gt;Local-mempool preimage monitoring has been implemented by Eclair for years&lt;br/&gt;as a mitigation against old school pinning attacks on second-stage HTLC&lt;br/&gt;transactions.&lt;br/&gt;&lt;br/&gt;This mechanism has been implemented by LND in the last months, following&lt;br/&gt;the report of replacement cycling attacks. As of today this is not&lt;br/&gt;implemented by Core-Lightning or LDK.&lt;br/&gt;&lt;br/&gt;&amp;gt; So we maybe should start feebumping this output if we end up in this&lt;br/&gt;scenario? If we see the preimage and can also claim this output via the&lt;br/&gt;htlc-timeout path, we should aggressively fee-bump (racing this output) our&lt;br/&gt;htlc-output in addition to grabbing the preimage and claiming it on the&lt;br/&gt;incoming. This is only feasible with anchor channels where we can add fees&lt;br/&gt;to the htlc-covenant. This would make the attack more costly for a peer&lt;br/&gt;when he knows that we use fees up to 50% of the htlc value. When you cycle&lt;br/&gt;this 144 times you will be at a heavy loss trying to steal this htlc.&lt;br/&gt;&lt;br/&gt;This is the &amp;#34;defensive fee mitigation&amp;#34; proposed in the paper. Coming with&lt;br/&gt;some unknown.&lt;br/&gt;&lt;br/&gt;&amp;gt; I would add another mitigation to the list for node runners to restrict&lt;br/&gt;the amount and number of HTLCs  for big channels to unknown peers. It&lt;br/&gt;quickly comes with a loss when the HTLCs the attacker tries to steal are&lt;br/&gt;small.&lt;br/&gt;&lt;br/&gt;See the point above on the lack of way at the spec-level to negotiate cap&lt;br/&gt;on the total value of outbound HTLC in-flight.&lt;br/&gt;&lt;br/&gt;Le mar. 17 oct. 2023 à 08:21, ziggie1984 &amp;lt;ziggie1984 at protonmail.com&amp;gt; a&lt;br/&gt;écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; ## Deployed LN mitigations&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Aggressive rebroadcasting: As the replacement cycling attacker benefits&lt;br/&gt;&amp;gt; from the HTLC-timeout being usually broadcast by lightning nodes only once&lt;br/&gt;&amp;gt; every block, or less the replacement cycling malicious transactions paid&lt;br/&gt;&amp;gt; only equal the sum of the absolute fees paid by the HTLC, adjusted with the&lt;br/&gt;&amp;gt; replacement penalty. Rebroadcasting randomly and multiple times before the&lt;br/&gt;&amp;gt; next block increases the absolute fee cost for the attacker.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Implemented and deployed by Eclair, Core-Lightning, LND and LDK .&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Local-mempool preimage monitoring: As the replacement cycling attacker in&lt;br/&gt;&amp;gt; a simple setup broadcast the HTLC-preimage to all the network mempools, the&lt;br/&gt;&amp;gt; honest lightning node is able to catch on the flight the unconfirmed&lt;br/&gt;&amp;gt; HTLC-preimage, before its subsequent mempool replacement. The preimage can&lt;br/&gt;&amp;gt; be extracted from the second-stage HTLC-preimage and used to fetch the&lt;br/&gt;&amp;gt; off-chain inbound HTLC with a cooperative message or go on-chain with it to&lt;br/&gt;&amp;gt; claim the accepted HTLC output.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Hi Antoine,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; thanks for this detailed explanation. This class of pinning attacks sound&lt;br/&gt;&amp;gt; not too unlikely especially if the attacker targets channels with high&lt;br/&gt;&amp;gt; capacity and very loose channel policies (allowing the full htlc amount to&lt;br/&gt;&amp;gt; be the channel capacity). Could you add more details about the attack you&lt;br/&gt;&amp;gt; observed on mainnet ? How did you monitor the chain, are the some tools&lt;br/&gt;&amp;gt; available I can run in parallel to my lightning software to record this&lt;br/&gt;&amp;gt; kind of suspicious behaviour (which did you use)?&lt;br/&gt;&amp;gt; What&amp;#39;s also worth mentioning here is that you do not really have to&lt;br/&gt;&amp;gt; control 2 neighbouring nodes to target your victim. If you can cycle the&lt;br/&gt;&amp;gt; attack on the tail side and delay the confirmation of the htlc-timeout&lt;br/&gt;&amp;gt; covenant the peer at the front (incoming link) of the victim will&lt;br/&gt;&amp;gt; force-close the channel and claim his timeout-path in the same way&lt;br/&gt;&amp;gt; (canceling back the initial htlc amount to the attackers initial node).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Apart from that I think one can even introduce some kind of feebumping&lt;br/&gt;&amp;gt; race between the victim and the attacker on the tail side of the attack&lt;br/&gt;&amp;gt; making the attack even more costly. I think currently when lightning nodes&lt;br/&gt;&amp;gt; see the preimage in the mempool (during the time where they already can&lt;br/&gt;&amp;gt; spend the same output with the timeout-covenant) we are honest and just&lt;br/&gt;&amp;gt; extract the preimage and don&amp;#39;t try to race this tx output. So we maybe&lt;br/&gt;&amp;gt; should start feebumping this output if we end up in this scenario? If we&lt;br/&gt;&amp;gt; see the preimage and can also claim this output via the htlc-timeout path,&lt;br/&gt;&amp;gt; we should aggressively fee-bump (racing this output) our htlc-output in&lt;br/&gt;&amp;gt; addition to grabbing the preimage and claiming it on the incoming. This is&lt;br/&gt;&amp;gt; only feasible with anchor channels where we can add fees to the&lt;br/&gt;&amp;gt; htlc-covenant. This would make the attack more costly for a peer when he&lt;br/&gt;&amp;gt; knows that we use fees up to 50% of the htlc value. When you cycle this 144&lt;br/&gt;&amp;gt; times you will be at a heavy loss trying to steal this htlc.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I would add another mitigation to the list for node runners to restrict&lt;br/&gt;&amp;gt; the amount and number of HTLCs  for big channels to unknown peers. It&lt;br/&gt;&amp;gt; quickly comes with a loss when the HTLCs the attacker tries to steal are&lt;br/&gt;&amp;gt; small.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Kind regards,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ziggie&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ------- Original Message -------&lt;br/&gt;&amp;gt; On Monday, October 16th, 2023 at 18:57, Antoine Riard &amp;lt;&lt;br/&gt;&amp;gt; antoine.riard at gmail.com&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; (cross-posting mempool issues identified are exposing lightning chan to&lt;br/&gt;&amp;gt; loss of funds risks, other multi-party bitcoin apps might be affected)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Hi,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; End of last year (December 2022), amid technical discussions on eltoo&lt;br/&gt;&amp;gt; payment channels and incentives compatibility of the mempool anti-DoS&lt;br/&gt;&amp;gt; rules, a new transaction-relay jamming attack affecting lightning channels&lt;br/&gt;&amp;gt; was discovered.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; After careful analysis, it turns out this attack is practical and&lt;br/&gt;&amp;gt; immediately exposed lightning routing hops carrying HTLC traffic to loss of&lt;br/&gt;&amp;gt; funds security risks, both legacy and anchor output channels. A potential&lt;br/&gt;&amp;gt; exploitation plausibly happening even without network mempools congestion.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Mitigations have been designed, implemented and deployed by all major&lt;br/&gt;&amp;gt; lightning implementations during the last months.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Please find attached the release numbers, where the mitigations should be&lt;br/&gt;&amp;gt; present:&lt;br/&gt;&amp;gt; - LDK: v0.0.118 - CVE-2023 -40231&lt;br/&gt;&amp;gt; - Eclair: v0.9.0 - CVE-2023-40232&lt;br/&gt;&amp;gt; - LND: v.0.17.0-beta - CVE-2023-40233&lt;br/&gt;&amp;gt; - Core-Lightning: v.23.08.01 - CVE-2023-40234&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; While neither replacement cycling attacks have been observed or reported&lt;br/&gt;&amp;gt; in the wild since the last ~10 months or experimented in real-world&lt;br/&gt;&amp;gt; conditions on bitcoin mainet, functional test is available exercising the&lt;br/&gt;&amp;gt; affected lightning channel against bitcoin core mempool (26.0 release&lt;br/&gt;&amp;gt; cycle).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It is understood that a simple replacement cycling attack does not demand&lt;br/&gt;&amp;gt; privileged capabilities from an attacker (e.g no low-hashrate power) and&lt;br/&gt;&amp;gt; only access to basic bitcoin and lightning software. Yet I still think&lt;br/&gt;&amp;gt; executing such an attack successfully requests a fair amount of bitcoin&lt;br/&gt;&amp;gt; technical know-how and decent preparation.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; From my understanding of those issues, it is yet to be determined if the&lt;br/&gt;&amp;gt; mitigations deployed are robust enough in face of advanced replacement&lt;br/&gt;&amp;gt; cycling attackers, especially ones able to combine different classes of&lt;br/&gt;&amp;gt; transaction-relay jamming such as pinnings or vetted with more privileged&lt;br/&gt;&amp;gt; capabilities.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Please find a list of potential affected bitcoin applications in this full&lt;br/&gt;&amp;gt; disclosure report using bitcoin script timelocks or multi-party&lt;br/&gt;&amp;gt; transactions, albeit no immediate security risk exposure as severe as the&lt;br/&gt;&amp;gt; ones affecting lightning has been identified. Only cursory review of&lt;br/&gt;&amp;gt; non-lightning applications has been conducted so far.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; There is a paper published summarizing replacement cycling attacks on the&lt;br/&gt;&amp;gt; lightning network:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/ariard/mempool-research/blob/2023-10-replacement-paper/replacement-cycling.pdf&#34;&gt;https://github.com/ariard/mempool-research/blob/2023-10-replacement-paper/replacement-cycling.pdf&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ## Problem&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A lightning node allows HTLCs forwarding (in bolt3&amp;#39;s parlance accepted&lt;br/&gt;&amp;gt; HTLC on incoming link and offered HTLC on outgoing link) should settle the&lt;br/&gt;&amp;gt; outgoing state with either a success or timeout before the incoming state&lt;br/&gt;&amp;gt; timelock becomes final and an asymmetric defavorable settlement might&lt;br/&gt;&amp;gt; happen (cf &amp;#34;Flood &amp;amp; Loot: A Systematic Attack on The Lightning Network&amp;#34;&lt;br/&gt;&amp;gt; section 2.3 for a classical exposition of this lightning security property).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Failure to satisfy this settlement requirement exposes a forwarding hop to&lt;br/&gt;&amp;gt; a loss of fund risk where the offered HTLC is spent by the outgoing link&lt;br/&gt;&amp;gt; counterparty&amp;#39;s HTLC-preimage and the accepted HTLC is spent by the incoming&lt;br/&gt;&amp;gt; link counterparty&amp;#39;s HTLC-timeout.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The specification mandates the incoming HTLC expiration timelock to be&lt;br/&gt;&amp;gt; spaced out by an interval of `cltv_expiry_delta` from the outgoing HTLC&lt;br/&gt;&amp;gt; expiration timelock, this exact interval value being an implementation and&lt;br/&gt;&amp;gt; node policy setting. As a minimal value, the specification recommends 34&lt;br/&gt;&amp;gt; blocks of interval. If the timelock expiration I of the inbound HTLC is&lt;br/&gt;&amp;gt; equal to 100 from chain tip, the timelock expiration O of the outbound HTLC&lt;br/&gt;&amp;gt; must be equal to 66 blocks from chain tip, giving a reasonable buffer of&lt;br/&gt;&amp;gt; reaction to the lightning forwarding node.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In the lack of cooperative off-chain settlement of the HTLC on the&lt;br/&gt;&amp;gt; outgoing link negotiated with the counterparty (either&lt;br/&gt;&amp;gt; `update_fulfill_htlc` or `update_fail_htlc`) when O is reached, the&lt;br/&gt;&amp;gt; lightning node should broadcast its commitment transaction. Once the&lt;br/&gt;&amp;gt; commitment is confirmed (if anchor and the 1 CSV encumbrance is present),&lt;br/&gt;&amp;gt; the lightning node broadcasts and confirms its HTLC-timeout before I height&lt;br/&gt;&amp;gt; is reached.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Here enter a replacement cycling attack. A malicious channel counterparty&lt;br/&gt;&amp;gt; can broadcast its HTLC-preimage transaction with a higher absolute fee and&lt;br/&gt;&amp;gt; higher feerate than the honest HTLC-timeout of the victim lightning node&lt;br/&gt;&amp;gt; and triggers a replacement. Both for legacy and anchor output channels, a&lt;br/&gt;&amp;gt; HTLC-preimage on a counterparty commitment transaction is malleable, i.e&lt;br/&gt;&amp;gt; additional inputs or outputs can be added. The HTLC-preimage spends an&lt;br/&gt;&amp;gt; unconfirmed and unrelated to the channel parent transaction M and conflicts&lt;br/&gt;&amp;gt; its child.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; As the HTLC-preimage spends an unconfirmed input that was already included&lt;br/&gt;&amp;gt; in the unconfirmed and unrelated child transaction (rule 2), pays an&lt;br/&gt;&amp;gt; absolute higher fee of at least the sum paid by the HTLC-timeout and child&lt;br/&gt;&amp;gt; transaction (rule 3) and the HTLC-preimage feerate is greater than all&lt;br/&gt;&amp;gt; directly conflicting transactions (rule 6), the replacement is accepted.&lt;br/&gt;&amp;gt; The honest HTLC-timeout is evicted out of the mempool.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In an ulterior move, the malicious counterparty can replace the parent&lt;br/&gt;&amp;gt; transaction itself with another candidate N satisfying the replacement&lt;br/&gt;&amp;gt; rules, triggering the eviction of the malicious HTLC-preimage from the&lt;br/&gt;&amp;gt; mempool as it was a child of the parent T.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; There is no spending candidate of the offered HTLC output for the current&lt;br/&gt;&amp;gt; block laying in network mempools.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This replacement cycling tricks can be repeated for each rebroadcast&lt;br/&gt;&amp;gt; attempt of the HTLC-timeout by the honest lightning node until expiration&lt;br/&gt;&amp;gt; of the inbound HTLC timelock I. Once this height is reached a HTLC-timeout&lt;br/&gt;&amp;gt; is broadcast by the counterparty&amp;#39;s on the incoming link in collusion with&lt;br/&gt;&amp;gt; the one on the outgoing link broadcasting its own HTLC-preimage.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The honest Lightning node has been &amp;#34;double-spent&amp;#34; in its HTLC forwarding.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; As a notable factor impacting the success of the attack, a lightning&lt;br/&gt;&amp;gt; node&amp;#39;s honest HTLC-timeout might be included in the block template of the&lt;br/&gt;&amp;gt; miner winning the block race and therefore realizes a spent of the offered&lt;br/&gt;&amp;gt; output. In practice, a replacement cycling attack might over-connect to&lt;br/&gt;&amp;gt; miners&amp;#39; mempools and public reachable nodes to succeed in a fast eviction&lt;br/&gt;&amp;gt; of the HTLC-timeout by its HTLC-preimage. As this latter transaction can&lt;br/&gt;&amp;gt; come with a better ancestor-score, it should be picked up on the flight by&lt;br/&gt;&amp;gt; economically competitive miners.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A functional test exercising a simple replacement cycling of a HTLC&lt;br/&gt;&amp;gt; transaction on bitcoin core mempool is available:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/ariard/bitcoin/commits/2023-test-mempool&#34;&gt;https://github.com/ariard/bitcoin/commits/2023-test-mempool&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ## Deployed LN mitigations&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Aggressive rebroadcasting: As the replacement cycling attacker benefits&lt;br/&gt;&amp;gt; from the HTLC-timeout being usually broadcast by lightning nodes only once&lt;br/&gt;&amp;gt; every block, or less the replacement cycling malicious transactions paid&lt;br/&gt;&amp;gt; only equal the sum of the absolute fees paid by the HTLC, adjusted with the&lt;br/&gt;&amp;gt; replacement penalty. Rebroadcasting randomly and multiple times before the&lt;br/&gt;&amp;gt; next block increases the absolute fee cost for the attacker.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Implemented and deployed by Eclair, Core-Lightning, LND and LDK .&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Local-mempool preimage monitoring: As the replacement cycling attacker in&lt;br/&gt;&amp;gt; a simple setup broadcast the HTLC-preimage to all the network mempools, the&lt;br/&gt;&amp;gt; honest lightning node is able to catch on the flight the unconfirmed&lt;br/&gt;&amp;gt; HTLC-preimage, before its subsequent mempool replacement. The preimage can&lt;br/&gt;&amp;gt; be extracted from the second-stage HTLC-preimage and used to fetch the&lt;br/&gt;&amp;gt; off-chain inbound HTLC with a cooperative message or go on-chain with it to&lt;br/&gt;&amp;gt; claim the accepted HTLC output.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Implemented and deployed by Eclair and LND.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; CLTV Expiry Delta: With every jammed block comes an absolute fee cost paid&lt;br/&gt;&amp;gt; by the attacker, a risk of the HTLC-preimage being detected or discovered&lt;br/&gt;&amp;gt; by the honest lightning node, or the HTLC-timeout to slip in a winning&lt;br/&gt;&amp;gt; block template. Bumping the default CLTV delta hardens the odds of success&lt;br/&gt;&amp;gt; of a simple replacement cycling attack.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Default setting: Eclair 144, Core-Lightning 34, LND 80 and LDK 72.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ## Affected Bitcoin Protocols and Applications&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; From my understanding the following list of Bitcoin protocols and&lt;br/&gt;&amp;gt; applications could be affected by new denial-of-service vectors under some&lt;br/&gt;&amp;gt; level of network mempools congestion. Neither tests or advanced review of&lt;br/&gt;&amp;gt; specifications (when available) has been conducted for each of them:&lt;br/&gt;&amp;gt; - on-chain DLCs&lt;br/&gt;&amp;gt; - coinjoins&lt;br/&gt;&amp;gt; - payjoins&lt;br/&gt;&amp;gt; - wallets with time-sensitive paths&lt;br/&gt;&amp;gt; - peerswap and submarine swaps&lt;br/&gt;&amp;gt; - batch payouts&lt;br/&gt;&amp;gt; - transaction &amp;#34;accelerators&amp;#34;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Inviting their developers, maintainers and operators to investigate how&lt;br/&gt;&amp;gt; replacement cycling attacks might disrupt their in-mempool chain of&lt;br/&gt;&amp;gt; transactions, or fee-bumping flows at the shortest delay. Simple flows and&lt;br/&gt;&amp;gt; non-multi-party transactions should not be affected to the best of my&lt;br/&gt;&amp;gt; understanding.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ## Open Problems: Package Malleability&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Pinning attacks have been known for years as a practical vector to&lt;br/&gt;&amp;gt; compromise lightning channels funds safety, under different scenarios (cf.&lt;br/&gt;&amp;gt; current bip331&amp;#39;s motivation section). Mitigations at the mempool level have&lt;br/&gt;&amp;gt; been designed, discussed and are under implementation by the community&lt;br/&gt;&amp;gt; (ancestor package relay &#43; nverrsion=3 policy). Ideally, they should&lt;br/&gt;&amp;gt; constraint a pinning attacker to always attach a high feerate package&lt;br/&gt;&amp;gt; (commitment &#43; CPFP) to replace the honest package, or allow a honest&lt;br/&gt;&amp;gt; lightning node to overbid a malicious pinning package and get its&lt;br/&gt;&amp;gt; time-sensitive transaction optimistically included in the chain.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Replacement cycling attack seem to offer a new way to neutralize the&lt;br/&gt;&amp;gt; design goals of package relay and its companion nversion=3 policy, where an&lt;br/&gt;&amp;gt; attacker package RBF a honest package out of the mempool to subsequently&lt;br/&gt;&amp;gt; double-spend its own high-fee child with a transaction unrelated to the&lt;br/&gt;&amp;gt; channel. As the remaining commitment transaction is pre-signed with a&lt;br/&gt;&amp;gt; minimal relay fee, it can be evicted out of the mempool.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A functional test exercising a simple replacement cycling of a lightning&lt;br/&gt;&amp;gt; channel commitment transaction on top of the nversion=3 code branch is&lt;br/&gt;&amp;gt; available:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/ariard/bitcoin/commits/2023-10-test-mempool-2&#34;&gt;https://github.com/ariard/bitcoin/commits/2023-10-test-mempool-2&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ## Discovery&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In 2018, the issue of static fees for pre-signed lightning transactions is&lt;br/&gt;&amp;gt; made more widely known, the carve-out exemption in mempool rules to&lt;br/&gt;&amp;gt; mitigate in-mempool package limits pinning and the anchor output pattern&lt;br/&gt;&amp;gt; are proposed.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In 2019, bitcoin core 0.19 is released with carve-out support. Continued&lt;br/&gt;&amp;gt; discussion of the anchor output pattern as a dynamic fee-bumping method.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In 2020, draft of anchor output submitted to the bolts. Initial finding of&lt;br/&gt;&amp;gt; economic pinning against lightning commitment and second-stage HTLC&lt;br/&gt;&amp;gt; transactions. Subsequent discussions of a preimage-overlay network or&lt;br/&gt;&amp;gt; package-relay as mitigations. Public call made to inquiry more on potential&lt;br/&gt;&amp;gt; other transaction-relay jamming attacks affecting lightning.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In 2021, initial work in bitcoin core 22.0 of package acceptance.&lt;br/&gt;&amp;gt; Continued discussion of the pinning attacks and shortcomings of current&lt;br/&gt;&amp;gt; mempool rules during community-wide online workshops. Later the year, in&lt;br/&gt;&amp;gt; light of all issues for bitcoin second-layers, a proposal is made about&lt;br/&gt;&amp;gt; killing the mempool.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In 2022, bip proposed for package relay and new proposed v3 policy design&lt;br/&gt;&amp;gt; proposed for a review and implementation. Mempoolfullrbf is supported in&lt;br/&gt;&amp;gt; bitcoin core 24.0 and conceptual questions about alignment of mempool rules&lt;br/&gt;&amp;gt; w.r.t miners incentives are investigated.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Along this year 2022, eltoo lightning channels design are discussed,&lt;br/&gt;&amp;gt; implemented and reviewed. In this context and after discussions on mempool&lt;br/&gt;&amp;gt; anti-DoS rules, I discovered this new replacement cycling attack was&lt;br/&gt;&amp;gt; affecting deployed lightning channels and immediately reported the finding&lt;br/&gt;&amp;gt; to some bitcoin core developers and lightning maintainers.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ## Timeline&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; - 2022-12-16: Report of the finding to Suhas Daftuar, Anthony Towns, Greg&lt;br/&gt;&amp;gt; Sanders and Gloria Zhao&lt;br/&gt;&amp;gt; - 2022-12-16: Report to LN maintainers: Rusty Russell, Bastien Teinturier,&lt;br/&gt;&amp;gt; Matt Corallo and Olaoluwa Osuntunkun&lt;br/&gt;&amp;gt; - 2022-12-23: Sharing to Eugene Siegel (LND)&lt;br/&gt;&amp;gt; - 2022-12-24: Sharing to James O&amp;#39;Beirne and Antoine Poinsot (non-lightning&lt;br/&gt;&amp;gt; potential affected projects)&lt;br/&gt;&amp;gt; - 2022-01-14: Sharing to Gleb Naumenko (miners incentives and cross-layers&lt;br/&gt;&amp;gt; issuers) and initial proposal of an early public disclosure&lt;br/&gt;&amp;gt; - 2022-01-19: Collection of analysis if other second-layers and&lt;br/&gt;&amp;gt; multi-party applications affected. LN mitigations development starts.&lt;br/&gt;&amp;gt; - 2023-05-04: Sharing to Wilmer Paulino (LDK)&lt;br/&gt;&amp;gt; - 2023-06-20: LN mitigations implemented and progressively released. Week&lt;br/&gt;&amp;gt; of the 16 october proposed for full disclosure.&lt;br/&gt;&amp;gt; - 2023-08-10: CVEs assigned by MITRE&lt;br/&gt;&amp;gt; - 2023-10-05: Pre-disclosure of LN CVEs numbers and replacement cycling&lt;br/&gt;&amp;gt; attack existence to security at bitcoincore.org.&lt;br/&gt;&amp;gt; - 2023-10-16: Full disclosure of CVE-2023-40231 / CVE-2023-40232 /&lt;br/&gt;&amp;gt; CVE-2023-40233 / CVE-2023-40234 and replacement cycling attacks&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ## Conclusion&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Despite the line of mitigations adopted and deployed by current major&lt;br/&gt;&amp;gt; lightning implementations, I believe replacement cycling attacks are still&lt;br/&gt;&amp;gt; practical for advanced attackers. Beyond this new attack might come as a&lt;br/&gt;&amp;gt; way to partially or completely defeat some of the pinning mitigations which&lt;br/&gt;&amp;gt; have been working for years as a community.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; As of today, it is uncertain to me if lightning is not affected by a more&lt;br/&gt;&amp;gt; severe long-term package malleability critical security issue under current&lt;br/&gt;&amp;gt; consensus rules, and if any other time-sensitive multi-party protocol,&lt;br/&gt;&amp;gt; designed or deployed isn&amp;#39;t de facto affected too (loss of funds or denial&lt;br/&gt;&amp;gt; of service).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Assuming analysis on package malleability is correct, it is unclear to me&lt;br/&gt;&amp;gt; if it can be corrected by changes in replacement / eviction rules or&lt;br/&gt;&amp;gt; mempool chain of transactions processing strategy. Inviting my technical&lt;br/&gt;&amp;gt; peers and the bitcoin community to look more on this issue, including to&lt;br/&gt;&amp;gt; dissent. I&amp;#39;ll be the first one pleased if I&amp;#39;m fundamentally wrong on those&lt;br/&gt;&amp;gt; issues, or if any element has not been weighted with the adequate technical&lt;br/&gt;&amp;gt; accuracy it deserves.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Do not trust, verify. All mistakes and opinions are my own.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Antoine&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;#34;meet with Triumph and Disaster. And treat those two impostors just the&lt;br/&gt;&amp;gt; same&amp;#34; - K.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20231017/9d438d0e/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20231017/9d438d0e/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-10-18T13:02:08Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqswllgflk7crsry732m6fpmy8qjrq7ehvj6r8ph5w7jhlu2cswklfczypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zxkwxmj</id>
    
      <title type="html">📅 Original date posted:2023-09-25 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqswllgflk7crsry732m6fpmy8qjrq7ehvj6r8ph5w7jhlu2cswklfczypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zxkwxmj" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs8y5067xa3gceg87skte7wcxwnn33stgt3w06cn4xlenjeukzgacqzzthwn&#39;&gt;nevent1q…thwn&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-09-25&lt;br/&gt;🗒️ Summary of this message: Payment pools and channel factories face limitations in interactivity, affecting the security of user funds. Proposed solutions include introducing a coordinator or partitioning balances, but these may not be economically practical. A potential solution is to prevent off-chain group equivocation by editing the funding utxo in a way that allows for the registration of new off-chain subgroups. CoinPool&amp;#39;s idea of including user pubkeys and balance amounts in Taproot leaves could be utilized for privacy-preserving payments and contracts.&lt;br/&gt;📝 Original message:&lt;br/&gt;Payment pools and channel factories are afflicted by severe interactivity&lt;br/&gt;constraints worsening with the number of users owning an off-chain balance&lt;br/&gt;in the construction. The security of user funds is paramount on the ability&lt;br/&gt;to withdraw unilaterally from the off-chain construction. As such any&lt;br/&gt;update applied to the off-chain balances requires a signature contribution&lt;br/&gt;from the unanimity of the construction users to ensure this ability is&lt;br/&gt;conserved along updates.&lt;br/&gt;&lt;br/&gt;As soon as one user starts to be offline or irresponsive, the updates of&lt;br/&gt;the off-chain balances must have to be halted and payments progress are&lt;br/&gt;limited among subsets of 2 users sharing a channel. Different people have&lt;br/&gt;proposed solutions to this issue: introducing a coordinator, partitioning&lt;br/&gt;or layering balances in off-chain users subsets. I think all those&lt;br/&gt;solutions have circled around a novel issue introduced, namely equivocation&lt;br/&gt;of off-chain balances at the harm of construction counterparties [0].&lt;br/&gt;&lt;br/&gt;As ZmnSCPxj pointed out recently, one way to mitigate this equivocation&lt;br/&gt;consists in punishing the cheating pre-nominated coordinator on an external&lt;br/&gt;fidelity bond. One can even imagine more trust-mimized and decentralized&lt;br/&gt;fraud proofs to implement this mitigation, removing the need of a&lt;br/&gt;coordinator [1].&lt;br/&gt;&lt;br/&gt;However, I believe punishment equivocation to be game-theory sound should&lt;br/&gt;compensate a defrauded counterparty of the integrity of its lost off-chain&lt;br/&gt;balance. As one cheating counterparty can equivocate in the worst-case&lt;br/&gt;against all the other counterparties in the construction, one fidelity bond&lt;br/&gt;should be equal to ( C - 1 ) * B satoshi amount, where C is the number of&lt;br/&gt;construction counterparty and B the initial off-chain balance of the&lt;br/&gt;cheating counterparty.&lt;br/&gt;&lt;br/&gt;Moreover, I guess it is impossible to know ahead of a partition or&lt;br/&gt;transition who will be the &amp;#34;honest&amp;#34; counterparties from the &amp;#34;dishonest&amp;#34;&lt;br/&gt;ones, therefore this ( C - 1 ) * B-sized fidelity bond must be maintained&lt;br/&gt;by every counterparty in the pool or factory. On this ground, I think this&lt;br/&gt;mitigation and other corrective ones are not economically practical for&lt;br/&gt;large-scale pools among a set of anonymous users.&lt;br/&gt;&lt;br/&gt;I think the best solution to solve the interactivity issue which is&lt;br/&gt;realistic to design is one ruling out off-chain group equivocation in a&lt;br/&gt;prophylactic fashion. The pool or factory funding utxo should be edited in&lt;br/&gt;an efficient way to register new off-chain subgroups, as lack of&lt;br/&gt;interactivity from a subset of counterparties demands it.&lt;br/&gt;&lt;br/&gt;With CoinPool, there is already this idea of including a user pubkey and&lt;br/&gt;balance amount to each leaf composing the Taproot tree while preserving the&lt;br/&gt;key-path spend in case of unanimity in the user group. Taproot leaves can&lt;br/&gt;be effectively regarded as off-chain user accounts available to realize&lt;br/&gt;privacy-preserving payments and contracts.&lt;br/&gt;&lt;br/&gt;I think one (new ?) idea can be to introduce taproot leaves &amp;#34;cut-through&amp;#34;&lt;br/&gt;spends where multiple leaves are updated with a single witness,&lt;br/&gt;interactively composed by the owners of the spent leaves. This spend sends&lt;br/&gt;back the leaves amount to a new single leaf, aggregating the amounts and&lt;br/&gt;user pubkeys. The user leaves not participating in this &amp;#34;cut-through&amp;#34; are&lt;br/&gt;inherited with full integrity in the new version of the Taproot tree, at&lt;br/&gt;the gain of no interactivity from their side.&lt;br/&gt;&lt;br/&gt;Let&amp;#39;s say you have a CoinPool funded and initially set with Alice, Bob,&lt;br/&gt;Caroll, Dave and Eve. Each pool participant has a leaf L.x committing to an&lt;br/&gt;amount A.x and user pubkey P.x, where x is the user name owning a leaf.&lt;br/&gt;&lt;br/&gt;Bob and Eve are deemed to be offline by the Alice, Caroll and Dave subset&lt;br/&gt;(the ACD group).&lt;br/&gt;&lt;br/&gt;The ACD group composes a cut-through spend of L.a &#43; L.c &#43; L.d. This spends&lt;br/&gt;generates a new leaf L.(acd) leaf committing to amount A.(acd) and P.(acd).&lt;br/&gt;&lt;br/&gt;Amount A.(acd) = A.a &#43; A.c &#43; A.d and pubkey P.(acd) = P.a &#43; P.c &#43; P.d.&lt;br/&gt;&lt;br/&gt;Bob&amp;#39;s leaf L.b and Eve&amp;#39;s leaf L.e are left unmodified.&lt;br/&gt;&lt;br/&gt;The ACD group generates a new Taproot tree T&amp;#39; = L.(acd) &#43; L.b &#43; L.e, where&lt;br/&gt;the key-path K spend including the original unanimity of pool&lt;br/&gt;counterparties is left unmodified.&lt;br/&gt;&lt;br/&gt;The ACD group can confirm a transaction spending the pool funding utxo to a&lt;br/&gt;new single output committing to the scriptpubkey K &#43; T&amp;#39;.&lt;br/&gt;&lt;br/&gt;&amp;gt;From then, the ACD group can pursue off-chain balance updates among the&lt;br/&gt;subgroup thanks to the new P.(acd) and relying on the known Eltoo&lt;br/&gt;mechanism. There is no possibility for any member of the ACD group to&lt;br/&gt;equivocate with Bob or Eve in a non-observable fashion.&lt;br/&gt;&lt;br/&gt;Once Bob and Eve are online and ready to negotiate an on-chain pool&lt;br/&gt;&amp;#34;refresh&amp;#34; transaction, the conserved key-path spend can be used to&lt;br/&gt;re-equilibrate the Taproot tree, prune out old subgroups unlikely to be&lt;br/&gt;used and provision future subgroups, all with a compact spend based on&lt;br/&gt;signature aggregation.&lt;br/&gt;&lt;br/&gt;Few new Taproot tree update script primitives have been proposed, e.g [2].&lt;br/&gt;Though I think none with the level of flexibility offered to generate&lt;br/&gt;leaves cut-through spends, or even batch of &amp;#34;cut-through&amp;#34; where M subgroups&lt;br/&gt;are willing to spend N leaves to compose P new subgroups fan-out in Q new&lt;br/&gt;outputs, with showing a single on-chain witness. I believe such a&lt;br/&gt;hypothetical primitive can also reduce the chain space consumed in the&lt;br/&gt;occurrence of naive mass pool withdraws at the same time.&lt;br/&gt;&lt;br/&gt;I think this solution to the high-interactivity issue of payment pools and&lt;br/&gt;factories shifts the burden on each individual user to pre-commit fast&lt;br/&gt;Taproot tree traversals, allowing them to compose new pool subgroups as&lt;br/&gt;fluctuations in pool users&amp;#39; level of liveliness demand it. Pool efficiency&lt;br/&gt;becomes the sum of the quality of user prediction on its counterparties&amp;#39;&lt;br/&gt;liveliness during the construction lifetime. Recursive taproot tree spends&lt;br/&gt;or more efficient accumulator than merkle tree sounds ideas to lower the&lt;br/&gt;on-chain witness space consumed by every pool in the average&lt;br/&gt;non-interactive case.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;[0]&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-April/020370.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-April/020370.html&lt;/a&gt;&lt;br/&gt;[1]&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2023-August/004043.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2023-August/004043.html&lt;/a&gt;&lt;br/&gt;[2]&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-September/019420.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-September/019420.html&lt;/a&gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230925/77e3936d/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230925/77e3936d/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-10-03T21:44:18Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsrpksc3pzsnp0x8awx6kyus4d0quw9v9nx5pkgtjvqq56ku3rz2eczypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zvkc6ck</id>
    
      <title type="html">📅 Original date posted:2023-08-18 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsrpksc3pzsnp0x8awx6kyus4d0quw9v9nx5pkgtjvqq56ku3rz2eczypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zvkc6ck" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs85a80mwptzcf4my8rapsufc7lv6cfq7ezpjzvhusfwld2z5jtpuqluzsmg&#39;&gt;nevent1q…zsmg&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-08-18&lt;br/&gt;🗒️ Summary of this message: The author discusses the differences between oracles and miners in terms of game theory and utility functions. They also mention the lack of a complete security model for &amp;#34;DLC-like&amp;#34; oracles and the risks associated with cross-UTXO covenant inspection. The author emphasizes the need for world-class standards in software engineering R&amp;amp;D for the Bitcoin ecosystem.&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Symphonic,&lt;br/&gt;&lt;br/&gt;&amp;gt;From a game-theory viewpoint where we define among other players utility&lt;br/&gt;functions, set of moves, rules of the games and pattern of information, I&lt;br/&gt;don&amp;#39;t think oracles can be mathematically reduced to miners.&lt;br/&gt;&lt;br/&gt;Miners are competing to generate a proof-of-work on a set of transactions.&lt;br/&gt;This proof-of-work requires hashrate capabilities investment and censoring&lt;br/&gt;LN time-sensitive transactions impacting their marginal gains in the mining&lt;br/&gt;competitions to sustain the investment renewment in their mining chips.&lt;br/&gt;&lt;br/&gt;On the other hand, anyone can show as a proof-of-real-world-state oracle,&lt;br/&gt;without mining investment. They will take a while to build a reputation as&lt;br/&gt;a UTXO state oracle and even in case of wrongdoing, laziness is hard to&lt;br/&gt;prove [0].&lt;br/&gt;&lt;br/&gt;To the best of my knowledge, there is no complete and practical security&lt;br/&gt;model for &amp;#34;DLC-like&amp;#34; oracles, as such it&amp;#39;s hard to have the epistemological&lt;br/&gt;discussion on which assumptions should be regarded as valid or excluded&lt;br/&gt;from the formalization.&lt;br/&gt;&lt;br/&gt;As a note the CLTV-timelock matter for LN-like protocol, beyond CSV and&lt;br/&gt;here you start to have interactions with timewarp inflation attacks, which&lt;br/&gt;is still not fixed as a consensus-level vulnerability [1].&lt;br/&gt;&lt;br/&gt;I think my previous statement that the addition of cross-UTXO covenant&lt;br/&gt;inspection raises risks in the lack of further R&amp;amp;D on the security model&lt;br/&gt;and the game-theory of Bitcoin is still correct. While a risk zero is not&lt;br/&gt;an intellectual mirage, at the very least when we&amp;#39;re talking about the&lt;br/&gt;consensus rules of a $500 B ecosystem, we should bind to world-class&lt;br/&gt;standards of software engineering R&amp;amp;D. And as the ecosystem grows, I think&lt;br/&gt;we should aim to match best practices in aircraft software design or&lt;br/&gt;nuclear reactors.&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;[0] &lt;a href=&#34;https://github.com/discreetlogcontracts/dlcspecs/pull/152&#34;&gt;https://github.com/discreetlogcontracts/dlcspecs/pull/152&lt;/a&gt;&lt;br/&gt;[1]&lt;br/&gt;&lt;a href=&#34;https://github.com/TheBlueMatt/bips/blob/cleanup-softfork/bip-XXXX.mediawiki&#34;&gt;https://github.com/TheBlueMatt/bips/blob/cleanup-softfork/bip-XXXX.mediawiki&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Le lun. 14 août 2023 à 15:07, symphonicbtc &amp;lt;symphonicbtc at proton.me&amp;gt; a&lt;br/&gt;écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; &amp;gt; I think cross-input inspection (not cross-input signature aggregation&lt;br/&gt;&amp;gt; which is different) is opening a pandora box in terms of &amp;#34;malicious&amp;#34;&lt;br/&gt;&amp;gt; off-chain contracts than one could design. E.g miners bribing contracts to&lt;br/&gt;&amp;gt; censor the confirmation of time-sensitive lightning channel transactions,&lt;br/&gt;&amp;gt; where the bribes are paid on the hashrate distribution of miners during the&lt;br/&gt;&amp;gt; previous difficulty period, thanks to the coinbase pubkey.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; See &lt;a href=&#34;https://blog.bitmex.com/txwithhold-smart-contracts/&#34;&gt;https://blog.bitmex.com/txwithhold-smart-contracts/&lt;/a&gt; and&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2023-February/021395.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2023-February/021395.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Hi Antoine,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; These two papers make a lot of incorrect assumptions about bitcoins&lt;br/&gt;&amp;gt; security model. The assumption of the existence of constructs such as&lt;br/&gt;&amp;gt; oracles or altchains for “trustless” out-of-band payments opens the door&lt;br/&gt;&amp;gt; for plenty of things that in reality are not possible without sacrificing&lt;br/&gt;&amp;gt; security. The assumption that these constructs “minimize” miner / attacker&lt;br/&gt;&amp;gt; trust is no better than assuming the existence of an oracle that can simply&lt;br/&gt;&amp;gt; perform the entire attack.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Moreover, even the limited examples of attacks that do not use these&lt;br/&gt;&amp;gt; constructs completely overlook the fact that bitcoins security model is&lt;br/&gt;&amp;gt; dependent on the preservation of the nash equilibrium between miners. Not&lt;br/&gt;&amp;gt; only is it disincentivized for miners to engage in any form of censorship,&lt;br/&gt;&amp;gt; because they can all be fired by node-runners at any time, it is also not&lt;br/&gt;&amp;gt; in miners interests to reorg the chain if say an anonymous miner mines some&lt;br/&gt;&amp;gt; transactions that were being censored. Sustained, successful censorship in&lt;br/&gt;&amp;gt; any capacity assumes that bitcoin is compromised, a 51% attack has&lt;br/&gt;&amp;gt; occurred, and necessitates a change in PoW algorithm. A sufficient CSV in&lt;br/&gt;&amp;gt; LN-like protocols is always sufficient to avoid being attacked in this way.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The addition of most forms of covenant does not assist any of these&lt;br/&gt;&amp;gt; attacks afaict because they already make assumptions rendering them invalid.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Symphonic&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ------- Original Message -------&lt;br/&gt;&amp;gt; On Monday, August 14th, 2023 at 3:00 AM, Antoine Riard via bitcoin-dev &amp;lt;&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Hi Salvatore,&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; This also allows inspection of other inputs, that was not possible&lt;br/&gt;&amp;gt; with the original opcodes.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; I think cross-input inspection (not cross-input signature aggregation&lt;br/&gt;&amp;gt; which is different) is opening a pandora box in terms of &amp;#34;malicious&amp;#34;&lt;br/&gt;&amp;gt; off-chain contracts than one could design. E.g miners bribing contracts to&lt;br/&gt;&amp;gt; censor the confirmation of time-sensitive lightning channel transactions,&lt;br/&gt;&amp;gt; where the bribes are paid on the hashrate distribution of miners during the&lt;br/&gt;&amp;gt; previous difficulty period, thanks to the coinbase pubkey.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; See &lt;a href=&#34;https://blog.bitmex.com/txwithhold-smart-contracts/&#34;&gt;https://blog.bitmex.com/txwithhold-smart-contracts/&lt;/a&gt; and&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2023-February/021395.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2023-February/021395.html&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; I wonder if we might face the dilemma of miners censorship attacks, if&lt;br/&gt;&amp;gt; we wish to have more advanced bitcoin contracts, though I think it would be&lt;br/&gt;&amp;gt; safe design practice to rule out those types of concerns thanks to smart&lt;br/&gt;&amp;gt; bitcoin contracting primitives.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; I think this is a common risk to all second-layers vaults, lightning&lt;br/&gt;&amp;gt; channels and payment pools.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; A flag can disable this behavior&amp;#34;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; More than a binary flag like a matrix could be introduced to encode&lt;br/&gt;&amp;gt; subset of introspected inputs /outputs to enable sighash_group-like&lt;br/&gt;&amp;gt; semantic:&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-July/019243.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-July/019243.html&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; There are two defined flags:&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; - CCV_FLAG_CHECK_INPUT = 1: if present, &amp;lt;index&amp;gt; refers to an input;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; otherwise, it refers to an output.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; - CCV_FLAG_IGNORE_OUTPUT_AMOUNT = 2: only defined when _CHECK_INPUT&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; is absent, it disables the deferred checks logic for amounts.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Or even beyond a matrix, it could be a set of &amp;#34;tags&amp;#34;. There could be a&lt;br/&gt;&amp;gt; generalized tag for unstructured data, and another one for bitcoin&lt;br/&gt;&amp;gt; transaction / script data types (e.g scriptpubkey, amount, nsequence,&lt;br/&gt;&amp;gt; merkle branch) that could be fetched from the taproot annex.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; After the evaluation of all inputs, it is verified that each output&amp;#39;s&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; amount is greater than or equal to the total amount in the bucket&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; if that output (validation of the deferred checks).&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; At the very least, I think for the payment pool, where you&amp;#39;re&lt;br/&gt;&amp;gt; fanning-out satoshis value from a subset of inputs to another subset of&lt;br/&gt;&amp;gt; outputs, I think you would need more malleability here.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; It is unclear if all the special values above will be useful in&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; applications; however, as each special case requires very little added&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; code, I tried to make the specs as flexible as possible at this time.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; I think this generic framework is interesting for joinpool / coinpool /&lt;br/&gt;&amp;gt; payment pool, as you can check that any withdrawal output can be committed&lt;br/&gt;&amp;gt; as part of the input scriptpubkey, and spend it on&lt;br/&gt;&amp;gt; blessed-with-one-participant-sig script. There is still a big open question&lt;br/&gt;&amp;gt; if it&amp;#39;s efficient in terms of witness space consumed.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; That said, I still think you would need at least ANYPREVOUT and more&lt;br/&gt;&amp;gt; malleability for the amount transfer validation as laid out above.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Looking on the `DeferredCheck` framework commit, one obvious low-level&lt;br/&gt;&amp;gt; concern is the DoS risk for full-nodes participating in transaction-relay,&lt;br/&gt;&amp;gt; and that maybe policy rules should be introduced to keep the worst-CPU&lt;br/&gt;&amp;gt; input in the ranges of current transaction spend allowed to propagate on&lt;br/&gt;&amp;gt; the network today.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Thanks for the proposal,&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Best,&lt;br/&gt;&amp;gt; &amp;gt; Antoine&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Le dim. 30 juil. 2023 à 22:52, Salvatore Ingala via bitcoin-dev &amp;lt;&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&amp;gt; a écrit :&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; Hi all,&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; I have put together a first complete proposal for the core opcodes of&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; MATT [1][2].&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; The changes make the opcode functionally complete, and the&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; implementation is revised and improved.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; The code is implemented in the following fork of the&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; bitcoin-inquisition repo:&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &lt;a href=&#34;https://github.com/Merkleize/bitcoin/tree/checkcontractverify&#34;&gt;https://github.com/Merkleize/bitcoin/tree/checkcontractverify&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; Therefore, it also includes OP_CHECKTEMPLATEVERIFY, as in a&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; previous early demo for vaults [3].&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; Please check out the diff [4] if you are interested in the&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; implementation details. It includes some basic functional tests for&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; the main cases of the opcode.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; ## Changes vs the previous draft&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; These are the changes compared to the initial incomplete proposal:&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; - OP_CHECK{IN,OUT}CONTRACTVERIFY are replaced by a single opcode&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; OP_CHECKCONTRACTVERIFY (CCV). An additional `flags` parameter allows&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; to specify if the opcode operates on an input or an output.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; This also allows inspection of other inputs, that was not possible&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; with the original opcodes.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; - For outputs, the default behavior is to have the following deferred&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; checks mechanism for amounts: all the inputs that have a CCV towards&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; the same output, have their input amounts summed, and that act as a&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; lower bound for that output&amp;#39;s amount.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; A flag can disable this behavior. [*]&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; - A number of special values of the parameters were defined in order&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; to optimize for common cases, and add some implicit introspection.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; - The order of parameters is modified (particularly, &amp;lt;data&amp;gt; is at the&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; bottom of the arguments, as so is more natural when writing Scripts).&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; ## Semantics&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; The new OP_CHECKCONTRACTVERIFY takes 5 parameters from the stack:&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;lt;data&amp;gt;, &amp;lt;index&amp;gt;, &amp;lt;pk&amp;gt;, &amp;lt;taptree&amp;gt;, &amp;lt;flags&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; The core logic of the opcode is as follows:&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;#34;Check if the &amp;lt;index&amp;gt;-th input/output&amp;#39;s scriptPubKey is a P2TR&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; whose public key is obtained from &amp;lt;pk&amp;gt;, (optionally) tweaked with&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;lt;data&amp;gt;, (optionally) tap-tweaked with &amp;lt;taptree&amp;gt;&amp;#34;.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; The following are special values of the parameters:&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; - if &amp;lt;pk&amp;gt; is empty, it is replaced with a fixed NUMS point. [**]&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; - if &amp;lt;pk&amp;gt; is -1, it is replaced with the current input&amp;#39;s taproot&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; internal key.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; - if &amp;lt;index&amp;gt; is -1, it is replaced with the current input&amp;#39;s index.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; - if &amp;lt;data&amp;gt; is empty, the data tweak is skipped.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; - if &amp;lt;taptree&amp;gt; is empty, the taptweak is skipped.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; - if &amp;lt;taptree&amp;gt; is -1, it is replaced with the current input&amp;#39;s root&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; of the taproot merkle tree.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; There are two defined flags:&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; - CCV_FLAG_CHECK_INPUT = 1: if present, &amp;lt;index&amp;gt; refers to an input;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; otherwise, it refers to an output.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; - CCV_FLAG_IGNORE_OUTPUT_AMOUNT = 2: only defined when _CHECK_INPUT&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; is absent, it disables the deferred checks logic for amounts.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; Finally, if both the flags CCV_FLAG_CHECK_INPUT and&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; CCV_FLAG_IGNORE_OUTPUT_AMOUNT are absent:&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; - Add the current input&amp;#39;s amount to the &amp;lt;index&amp;gt;-th output&amp;#39;s bucket.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; After the evaluation of all inputs, it is verified that each output&amp;#39;s&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; amount is greater than or equal to the total amount in the bucket&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; if that output (validation of the deferred checks).&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; ## Comment&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; It is unclear if all the special values above will be useful in&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; applications; however, as each special case requires very little added&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; code, I tried to make the specs as flexible as possible at this time.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; With this new opcode, the full generality of MATT (including the fraud&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; proofs) can be obtained with just two opcodes: OP_CHECKCONTRACTVERIFY&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; and OP_CAT.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; However, additional opcodes (and additional introspection) would&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; surely benefit some applications.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; I look forward to your comments, and to start drafting a BIP proposal.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; Best,&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; Salvatore Ingala&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; [*] - Credits go to James O&amp;#39;Beirne for this approach, taken from his&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; OP_VAULT proposal. I cherry-picked the commit containing the&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; Deferred Checks framework.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; [**] - The same NUMS point suggested in BIP-0341 was used.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; References:&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; [1] - &lt;a href=&#34;https://merkle.fun/&#34;&gt;https://merkle.fun/&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; [2] -&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-November/021182.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-November/021182.html&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; [3] -&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2023-April/021588.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2023-April/021588.html&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; [4] -&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/bitcoin-inquisition/bitcoin/compare/24.0...Merkleize:bitcoin:checkcontractverify&#34;&gt;https://github.com/bitcoin-inquisition/bitcoin/compare/24.0...Merkleize:bitcoin:checkcontractverify&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230818/f1e1fc18/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230818/f1e1fc18/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-08-21T09:55:29Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsfyyru04szncpwxs7txxaxwcnjua687rgsn8rfqfjtae452ys6epgzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zsg7c5s</id>
    
      <title type="html">📅 Original date posted:2023-08-14 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsfyyru04szncpwxs7txxaxwcnjua687rgsn8rfqfjtae452ys6epgzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zsg7c5s" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs8gg30nglxww5c0c5st48gp28l67m9p3qluy5u0urqglzhsvyw8jgtz47rh&#39;&gt;nevent1q…47rh&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-08-14&lt;br/&gt;🗒️ Summary of this message: The author discusses the potential risks of cross-input inspection in Bitcoin contracts, such as miners bribing contracts to censor transactions. They propose using flags or tags to enable selective introspection of inputs/outputs. The author also mentions the need for more malleability and efficient witness space consumption.&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Salvatore,&lt;br/&gt;&lt;br/&gt;&amp;gt; This also allows inspection of other inputs, that was not possible with&lt;br/&gt;the original opcodes.&lt;br/&gt;&lt;br/&gt;I think cross-input inspection (not cross-input signature aggregation which&lt;br/&gt;is different) is opening a pandora box in terms of &amp;#34;malicious&amp;#34; off-chain&lt;br/&gt;contracts than one could design. E.g miners bribing contracts to censor the&lt;br/&gt;confirmation of time-sensitive lightning channel transactions, where the&lt;br/&gt;bribes are paid on the hashrate distribution of miners during the previous&lt;br/&gt;difficulty period, thanks to the coinbase pubkey.&lt;br/&gt;&lt;br/&gt;See &lt;a href=&#34;https://blog.bitmex.com/txwithhold-smart-contracts/&#34;&gt;https://blog.bitmex.com/txwithhold-smart-contracts/&lt;/a&gt; and&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2023-February/021395.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2023-February/021395.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;I wonder if we might face the dilemma of miners censorship attacks, if we&lt;br/&gt;wish to have more advanced bitcoin contracts, though I think it would be&lt;br/&gt;safe design practice to rule out those types of concerns thanks to smart&lt;br/&gt;bitcoin contracting primitives.&lt;br/&gt;&lt;br/&gt;I think this is a common risk to all second-layers vaults, lightning&lt;br/&gt;channels and payment pools.&lt;br/&gt;&lt;br/&gt;&amp;gt; A flag can disable this behavior&amp;#34;&lt;br/&gt;&lt;br/&gt;More than a binary flag like a matrix could be introduced to encode subset&lt;br/&gt;of introspected inputs /outputs to enable sighash_group-like semantic:&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-July/019243.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-July/019243.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; There are two defined flags:&lt;br/&gt;&amp;gt; - CCV_FLAG_CHECK_INPUT = 1: if present, &amp;lt;index&amp;gt; refers to an input;&lt;br/&gt;&amp;gt;  otherwise, it refers to an output.&lt;br/&gt;&amp;gt; - CCV_FLAG_IGNORE_OUTPUT_AMOUNT = 2: only defined when _CHECK_INPUT&lt;br/&gt;&amp;gt;  is absent, it disables the deferred checks logic for amounts.&lt;br/&gt;&lt;br/&gt;Or even beyond a matrix, it could be a set of &amp;#34;tags&amp;#34;. There could be a&lt;br/&gt;generalized tag for unstructured data, and another one for bitcoin&lt;br/&gt;transaction / script data types (e.g scriptpubkey, amount, nsequence,&lt;br/&gt;merkle branch) that could be fetched from the taproot annex.&lt;br/&gt;&lt;br/&gt;&amp;gt; After the evaluation of all inputs, it is verified that each output&amp;#39;s&lt;br/&gt;&amp;gt; amount is greater than or equal to the total amount in the bucket&lt;br/&gt;&amp;gt; if that output (validation of the deferred checks).&lt;br/&gt;&lt;br/&gt;At the very least, I think for the payment pool, where you&amp;#39;re fanning-out&lt;br/&gt;satoshis value from a subset of inputs to another subset of outputs, I&lt;br/&gt;think you would need more malleability here.&lt;br/&gt;&lt;br/&gt;&amp;gt; It is unclear if all the special values above will be useful in&lt;br/&gt;&amp;gt; applications; however, as each special case requires very little added&lt;br/&gt;&amp;gt; code, I tried to make the specs as flexible as possible at this time.&lt;br/&gt;&lt;br/&gt;I think this generic framework is interesting for joinpool / coinpool /&lt;br/&gt;payment pool, as you can check that any withdrawal output can be committed&lt;br/&gt;as part of the input scriptpubkey, and spend it on&lt;br/&gt;blessed-with-one-participant-sig script. There is still a big open question&lt;br/&gt;if it&amp;#39;s efficient in terms of witness space consumed.&lt;br/&gt;&lt;br/&gt;That said, I still think you would need at least ANYPREVOUT and more&lt;br/&gt;malleability for the amount transfer validation as laid out above.&lt;br/&gt;&lt;br/&gt;Looking on the `DeferredCheck` framework commit, one obvious low-level&lt;br/&gt;concern is the DoS risk for full-nodes participating in transaction-relay,&lt;br/&gt;and that maybe policy rules should be introduced to keep the worst-CPU&lt;br/&gt;input in the ranges of current transaction spend allowed to propagate on&lt;br/&gt;the network today.&lt;br/&gt;&lt;br/&gt;Thanks for the proposal,&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Le dim. 30 juil. 2023 à 22:52, Salvatore Ingala via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi all,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I have put together a first complete proposal for the core opcodes of&lt;br/&gt;&amp;gt; MATT [1][2].&lt;br/&gt;&amp;gt; The changes make the opcode functionally complete, and the&lt;br/&gt;&amp;gt; implementation is revised and improved.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The code is implemented in the following fork of the&lt;br/&gt;&amp;gt; bitcoin-inquisition repo:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/Merkleize/bitcoin/tree/checkcontractverify&#34;&gt;https://github.com/Merkleize/bitcoin/tree/checkcontractverify&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Therefore, it also includes OP_CHECKTEMPLATEVERIFY, as in a&lt;br/&gt;&amp;gt; previous early demo for vaults [3].&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Please check out the diff [4] if you are interested in the&lt;br/&gt;&amp;gt; implementation details. It includes some basic functional tests for&lt;br/&gt;&amp;gt; the main cases of the opcode.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ## Changes vs the previous draft&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; These are the changes compared to the initial incomplete proposal:&lt;br/&gt;&amp;gt; - OP_CHECK{IN,OUT}CONTRACTVERIFY are replaced by a single opcode&lt;br/&gt;&amp;gt;   OP_CHECKCONTRACTVERIFY (CCV). An additional `flags` parameter allows&lt;br/&gt;&amp;gt;   to specify if the opcode operates on an input or an output.&lt;br/&gt;&amp;gt;   This also allows inspection of other inputs, that was not possible&lt;br/&gt;&amp;gt;   with the original opcodes.&lt;br/&gt;&amp;gt; - For outputs, the default behavior is to have the following deferred&lt;br/&gt;&amp;gt;   checks mechanism for amounts: all the inputs that have a CCV towards&lt;br/&gt;&amp;gt;   the same output, have their input amounts summed, and that act as a&lt;br/&gt;&amp;gt;   lower bound for that output&amp;#39;s amount.&lt;br/&gt;&amp;gt;   A flag can disable this behavior. [*]&lt;br/&gt;&amp;gt; - A number of special values of the parameters were defined in order&lt;br/&gt;&amp;gt;   to optimize for common cases, and add some implicit introspection.&lt;br/&gt;&amp;gt; - The order of parameters is modified (particularly, &amp;lt;data&amp;gt; is at the&lt;br/&gt;&amp;gt;   bottom of the arguments, as so is more natural when writing Scripts).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ## Semantics&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The new OP_CHECKCONTRACTVERIFY takes 5 parameters from the stack:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   &amp;lt;data&amp;gt;, &amp;lt;index&amp;gt;, &amp;lt;pk&amp;gt;, &amp;lt;taptree&amp;gt;, &amp;lt;flags&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The core logic of the opcode is as follows:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;#34;Check if the &amp;lt;index&amp;gt;-th input/output&amp;#39;s scriptPubKey is a P2TR&lt;br/&gt;&amp;gt; whose public key is obtained from &amp;lt;pk&amp;gt;, (optionally) tweaked with&lt;br/&gt;&amp;gt; &amp;lt;data&amp;gt;, (optionally) tap-tweaked with &amp;lt;taptree&amp;gt;&amp;#34;.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The following are special values of the parameters:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; - if &amp;lt;pk&amp;gt; is empty, it is replaced with a fixed NUMS point. [**]&lt;br/&gt;&amp;gt; - if &amp;lt;pk&amp;gt; is -1, it is replaced with the current input&amp;#39;s taproot&lt;br/&gt;&amp;gt;   internal key.&lt;br/&gt;&amp;gt; - if &amp;lt;index&amp;gt; is -1, it is replaced with the current input&amp;#39;s index.&lt;br/&gt;&amp;gt; - if &amp;lt;data&amp;gt; is empty, the data tweak is skipped.&lt;br/&gt;&amp;gt; - if &amp;lt;taptree&amp;gt; is empty, the taptweak is skipped.&lt;br/&gt;&amp;gt; - if &amp;lt;taptree&amp;gt; is -1, it is replaced with the current input&amp;#39;s root&lt;br/&gt;&amp;gt;   of the taproot merkle tree.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; There are two defined flags:&lt;br/&gt;&amp;gt; - CCV_FLAG_CHECK_INPUT = 1: if present, &amp;lt;index&amp;gt; refers to an input;&lt;br/&gt;&amp;gt;   otherwise, it refers to an output.&lt;br/&gt;&amp;gt; - CCV_FLAG_IGNORE_OUTPUT_AMOUNT = 2: only defined when _CHECK_INPUT&lt;br/&gt;&amp;gt;   is absent, it disables the deferred checks logic for amounts.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Finally, if both the flags CCV_FLAG_CHECK_INPUT and&lt;br/&gt;&amp;gt; CCV_FLAG_IGNORE_OUTPUT_AMOUNT are absent:&lt;br/&gt;&amp;gt;   - Add the current input&amp;#39;s amount to the &amp;lt;index&amp;gt;-th output&amp;#39;s bucket.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; After the evaluation of all inputs, it is verified that each output&amp;#39;s&lt;br/&gt;&amp;gt; amount is greater than or equal to the total amount in the bucket&lt;br/&gt;&amp;gt; if that output (validation of the deferred checks).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ## Comment&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It is unclear if all the special values above will be useful in&lt;br/&gt;&amp;gt; applications; however, as each special case requires very little added&lt;br/&gt;&amp;gt; code, I tried to make the specs as flexible as possible at this time.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; With this new opcode, the full generality of MATT (including the fraud&lt;br/&gt;&amp;gt; proofs) can be obtained with just two opcodes: OP_CHECKCONTRACTVERIFY&lt;br/&gt;&amp;gt; and OP_CAT.&lt;br/&gt;&amp;gt; However, additional opcodes (and additional introspection) would&lt;br/&gt;&amp;gt; surely benefit some applications.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I look forward to your comments, and to start drafting a BIP proposal.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Best,&lt;br/&gt;&amp;gt; Salvatore Ingala&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [*] - Credits go to James O&amp;#39;Beirne for this approach, taken from his&lt;br/&gt;&amp;gt;       OP_VAULT proposal. I cherry-picked the commit containing the&lt;br/&gt;&amp;gt;       Deferred Checks framework.&lt;br/&gt;&amp;gt; [**] - The same NUMS point suggested in BIP-0341 was used.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; References:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [1] - &lt;a href=&#34;https://merkle.fun/&#34;&gt;https://merkle.fun/&lt;/a&gt;&lt;br/&gt;&amp;gt; [2] -&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-November/021182.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-November/021182.html&lt;/a&gt;&lt;br/&gt;&amp;gt; [3] -&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2023-April/021588.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2023-April/021588.html&lt;/a&gt;&lt;br/&gt;&amp;gt; [4] -&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/bitcoin-inquisition/bitcoin/compare/24.0...Merkleize:bitcoin:checkcontractverify&#34;&gt;https://github.com/bitcoin-inquisition/bitcoin/compare/24.0...Merkleize:bitcoin:checkcontractverify&lt;/a&gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230814/cef35006/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230814/cef35006/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-08-16T00:45:52Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsycrf77qysfwu5a8crrgu78wkh2n5jq590su79a9qlmvdmz75gpwgzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zxp9xmy</id>
    
      <title type="html">📅 Original date posted:2023-08-06 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsycrf77qysfwu5a8crrgu78wkh2n5jq590su79a9qlmvdmz75gpwgzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zxp9xmy" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqswhft2482tykf24p24kt43fhps3cjrafyjrtuc2scpzxqmdzgufpqld92ry&#39;&gt;nevent1q…92ry&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-08-06&lt;br/&gt;🗒️ Summary of this message: The text discusses the Ark proposal, which involves three entities: the sender, receiver, and ASP. It explains the different types of transactions involved and highlights a potential weakness in the vTXLO transfer phase. The weakness allows the sender and receiver to collude and double-spend the ASP without compensation. The author suggests adding another round of interactivity to fix the weakness.&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Burak,&lt;br/&gt;&lt;br/&gt;Thanks for the interesting Ark proposal.&lt;br/&gt;&lt;br/&gt;&amp;gt;From my understanding the protocol is played between 3 entities: the&lt;br/&gt;sender, the receiver and the ASP and you have 3 types of transactions:&lt;br/&gt;- the pool_tx&lt;br/&gt;- the ATLC-connection_tx&lt;br/&gt;- the ATLC-refund_tx&lt;br/&gt;&lt;br/&gt;The pool_tx spends an on-chain funding input and 3 outputs:&lt;br/&gt;- the commitment output, committing to a set of N vTXOs outputs (e.g a tree&lt;br/&gt;of promised outputs)&lt;br/&gt;- the connector output, spendable by the ASP signature&lt;br/&gt;- the change output, from the value overflow of the on-chain funding input&lt;br/&gt;&lt;br/&gt;A &amp;#34;receiver&amp;#34; vTXO scriptpubkey on pool_tx N includes the following&lt;br/&gt;pseudo-script: multisig(receiver, ASP) or ((pk(receiver)&#43;24h) or&lt;br/&gt;(pk(ASP)&#43;4weeks)). From the PoV of the next pool_tx state, the receiver&lt;br/&gt;becomes the sender.&lt;br/&gt;&lt;br/&gt;A ATLC-connection_tx is associated with a pool_tx N is spending one or more&lt;br/&gt;vTXOs outputs from the &amp;#34;sender&amp;#34; (i.e receiver at pool_tx N-1) and one or&lt;br/&gt;more connector outputs from pool_tx N. The initial&lt;br/&gt;uplifting ATLC- connection_tx spends an on-chain input from the initial&lt;br/&gt;sender.&lt;br/&gt;&lt;br/&gt;I think there is a loss of funds weakness during the vTXLO transfer phase,&lt;br/&gt;i.e by leveraging an ATLC-refund transaction using the unilateral exit path.&lt;br/&gt;&lt;br/&gt;Let&amp;#39;s say you have Alice (the sender), Bob (the receiver) and the ASP at&lt;br/&gt;state N. Alice owns a vTXO on pool_tx N:&lt;br/&gt;- after 24, her vTXO N can be spend unilaterally with only her own signature&lt;br/&gt;- she engages with the ASP to construct a new pool_tx N&#43;1 paying a vTXO to&lt;br/&gt;Bob (this vTXO has same relative locktime 24h)&lt;br/&gt;- she reveals her signature to the ASP for the ATLC-connection_tx N&#43;1&lt;br/&gt;spending her vTXO at state N and the connector output at state N&#43;1&lt;br/&gt;- the ASP broadcasts the pool_tx N&#43;1 and the transaction is pending in&lt;br/&gt;network mempools&lt;br/&gt;- Alice broadcasts her ATLC refund tx using the mature unilateral exit path&lt;br/&gt;- this ATLC refund tx replaces any ATLC-connection tx pending in network&lt;br/&gt;mempools&lt;br/&gt;- both the ATLC refund tx for vTXO at state N and the pool_tx at state N&#43;1&lt;br/&gt;confirms&lt;br/&gt;- Bob the receiver can wait 24h and then he can spend the vTXO at state N&#43;1&lt;br/&gt;unilaterally&lt;br/&gt;&lt;br/&gt;Alice and Bob successfully colluded to &amp;#34;double-spend&amp;#34; the ASP, without this&lt;br/&gt;service provider earning compensation for the pool_tx state N&#43;1 funding&lt;br/&gt;input.&lt;br/&gt;&lt;br/&gt;If I&amp;#39;m correct, I don&amp;#39;t know if this weakness can be fixed by adding&lt;br/&gt;another round of interactivity between the sender and the ASP, e.g&lt;br/&gt;disclosing a revocation secret for the ATLC-refund transaction, without&lt;br/&gt;opening the door for the ASP to steal user by stalling the next pool_tx N&#43;1&lt;br/&gt;broadcast and waiting 4 weeks time lock expiration.&lt;br/&gt;&lt;br/&gt;All mistakes, confusion or misunderstanding are my own. More details about&lt;br/&gt;transactions, scripts and protocol phases would be appreciated.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;Le ven. 26 mai 2023 à 16:27, Burak Keceli via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi David,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Ark can be used for three purposes:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1. Mixing coins.&lt;br/&gt;&amp;gt; Ark is a scalable, footprint-minimal off-chain mixer. People can use Ark&lt;br/&gt;&amp;gt; to mix their coins with others. This doesn’t require waiting for on-chain&lt;br/&gt;&amp;gt; confirmations since you’re mixing your own coins with others.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 2. Paying lightning invoices&lt;br/&gt;&amp;gt; Ark is interoperable with Lightning, and you can use your Ark funds to pay&lt;br/&gt;&amp;gt; Lightning invoices in a conjoin. This also doesn’t require waiting for&lt;br/&gt;&amp;gt; on-chain confirmations since you consider your payment “done” when you&lt;br/&gt;&amp;gt; obtain the vendor&amp;#39;s preimage.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 3. Making internal transfers&lt;br/&gt;&amp;gt; You can use your Ark funds to make internal money transfers without&lt;br/&gt;&amp;gt; introducing inbound liquidity assumptions. The recipient-end has to wait&lt;br/&gt;&amp;gt; for several on-chain confirmations to consider their payment “final”,&lt;br/&gt;&amp;gt; however, their payment has immediate availability to them. Recipients can&lt;br/&gt;&amp;gt; spend their zero-conf funds to pay Lightning invoices in coordination with&lt;br/&gt;&amp;gt; their service provider. If we want to enable Lightning-style instant&lt;br/&gt;&amp;gt; settlement assurances for the internal transfers, we need OP_XOR or OP_CAT&lt;br/&gt;&amp;gt; on the base layer [1].&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I think you get the gist of it, but I lost you after ”Bob wants to deposit&lt;br/&gt;&amp;gt; 1 BTC with Alice.” sorry.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The initial onboarding phase is non-interactive, and there is no PSBT&lt;br/&gt;&amp;gt; involved. Onboarding (or lifting) is as simple as funding a Bitcoin&lt;br/&gt;&amp;gt; address.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Here I have refactored it for you:&lt;br/&gt;&amp;gt; Bob wants to deposit 1 BTC with Alice. Bob asks his friend Charlie to send&lt;br/&gt;&amp;gt; 1 BTC to an on-chain Bitcoin address whose script is:&lt;br/&gt;&amp;gt; pk(B) &amp;amp;&amp;amp; (older(4 weeks) || pk(A))&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  From here, there are several things that Bob can do:&lt;br/&gt;&amp;gt; - *Unilaterally withdraw:*&lt;br/&gt;&amp;gt; If Alice happens to be non-collaborative or non-responsive, Bob can simply&lt;br/&gt;&amp;gt; take his 1 BTC back after four weeks.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; - *Collaboratively withdraw:*&lt;br/&gt;&amp;gt; Bob and Alice can sign from the 2-of-2 to collaboratively withdraw 1 BTC&lt;br/&gt;&amp;gt; anytime.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; - *Collaboratively trade commitments:*&lt;br/&gt;&amp;gt; Alice crafts a transaction containing three outputs; (a) a commitment&lt;br/&gt;&amp;gt; output, (b) a connector output, and (c) a change output. We call this&lt;br/&gt;&amp;gt; transaction “pool”.&lt;br/&gt;&amp;gt; (a) commitment output&lt;br/&gt;&amp;gt; Commitment output (either using CTV or n-of-n multisig) constrains its&lt;br/&gt;&amp;gt; descendant transaction to a set of transaction outputs. To simplify things,&lt;br/&gt;&amp;gt; let’s say there are no other participants in this transaction besides Bob,&lt;br/&gt;&amp;gt; and the descendant transaction has only one output. We call this output&lt;br/&gt;&amp;gt; Bob’s vTXO. Bob’s vTXO also constrains (using CTV or 2-of-2 multisig) its&lt;br/&gt;&amp;gt; descendant transaction to a single transaction output called Bob’s ATLC.&lt;br/&gt;&amp;gt; Bob’s ATLC contains the following script:&lt;br/&gt;&amp;gt; pk(B) &amp;amp;&amp;amp; (older(4 weeks) || pk(A))&lt;br/&gt;&amp;gt; As you realize “ATLC” script is identical to the “Funding address” script.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; (b) connectors output&lt;br/&gt;&amp;gt; Connectors output is simply a single-sig output spendable by Alice herself:&lt;br/&gt;&amp;gt; pk(A)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Alice locally crafts a descending transaction from this output, spending&lt;br/&gt;&amp;gt; “connectors output” to fund a new output. We call this output a&lt;br/&gt;&amp;gt; ”connector,” which always carries a dust value  and is spendable by Alice&lt;br/&gt;&amp;gt; herself:&lt;br/&gt;&amp;gt; pk(A)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In short, Alice crafts a Bitcoin transaction that spends an input that she&lt;br/&gt;&amp;gt; controls and funds an output that she controls. Alice does not broadcast&lt;br/&gt;&amp;gt; this transaction and keeps it secret.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; (c) change output&lt;br/&gt;&amp;gt; money not used for the other two outputs gets sent back to Alice.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1. Alice places one (or more) input(s) to her “pool” transaction to supply&lt;br/&gt;&amp;gt; funds to commitment output, connectors output, change output, and&lt;br/&gt;&amp;gt; transaction fees.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 2. Bob creates an unsigned PSBT, placing the input that Charlie was&lt;br/&gt;&amp;gt; previously funded.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 3. Bob passes his PSBT to Alice.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 4. Alice places one input to PSBT, the ”connector output,”  which is a&lt;br/&gt;&amp;gt; descendant of the (b) connectors output she is crafting.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 5. Alice places one output to PSBT, a single-sig output that sweeps all&lt;br/&gt;&amp;gt; money to herself (pk(A)).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 6. Alice passes PSBT to Bob. Alice and Bob sign the PSBT and keeps this&lt;br/&gt;&amp;gt; transaction private. This transaction is not valid yet, since the&lt;br/&gt;&amp;gt; connector’s outpoint context does not exist.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 7. Alice signs her one-in, three-out and broadcasts it.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 8. Alice can now claim 1 BTC Charlie has previously funded by revealing&lt;br/&gt;&amp;gt; the descendant transaction of (b) connectors output. She should claim this&lt;br/&gt;&amp;gt; before four weeks.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 9. Bob now has a 1 BTC worth UTXO representation as a descendant of the&lt;br/&gt;&amp;gt; (a) commitment output (a virtual UTXO). He can unilaterally claim this 1&lt;br/&gt;&amp;gt; BTC by revealing the child (Bob’s vTXO) and grandchild (Bob’s ATLC) of the&lt;br/&gt;&amp;gt; (a) commitments output, then waiting a 24-hour window period.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; So far, Charlie polluted on-chain by funding an address, and Alice by&lt;br/&gt;&amp;gt; claiming funds from that address. Further steps from here will be footprint&lt;br/&gt;&amp;gt; minimal.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1. Say, Bob wants to send 1 BTC to Dave.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 2. Alice crafts a transaction containing three outputs; (a) a commitment&lt;br/&gt;&amp;gt; output, (b) a connector output, and (c) a change output. This time&lt;br/&gt;&amp;gt; descendant of (a) commitment output is Daves’s vTXO instead of Bob’s.&lt;br/&gt;&amp;gt; Similarly descendant of Daves’s vTXO is Dave’s ATLC. Dave’s ATLC is:&lt;br/&gt;&amp;gt; pk(D) &amp;amp;&amp;amp; (older(4 weeks) || pk(A))&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 3. Alice places one connector output as a descendant of (b) connectors&lt;br/&gt;&amp;gt; output, just like before.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 4. Alice places one input to her one-in, three-out transaction to supply&lt;br/&gt;&amp;gt; funds to commitment output, connectors output, change output, and&lt;br/&gt;&amp;gt; transaction fees.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 5. Bob creates an unsigned PSBT, placing his 1-BTC-worth virtual UTXO from&lt;br/&gt;&amp;gt; the (a) commitment output descendants that Alice previously&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 6. Bob passes his PSBT to Alice.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 7. Alice places one input to PSBT, the ”connector output,”  which is a&lt;br/&gt;&amp;gt; descendant of the (b) connectors output she is crafting.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 8. Alice places one output to PSBT, a single-sig output that sweeps all&lt;br/&gt;&amp;gt; money to herself (pk(A)).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 9. Alice passes PSBT to Bob. Alice and Bob sign the PSBT and keeps this&lt;br/&gt;&amp;gt; transaction private.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 10. Alice signs her one-in, three-out transaction and broadcasts it.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 11. Bob lets Dave know about this transaction (Alice’s transaction id,&lt;br/&gt;&amp;gt; Dave’s vTXO output index) out-of-band.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 12. When Dave comes back online, he sees from the out-of-band message that&lt;br/&gt;&amp;gt; Bob sent him 1-BTC. He then verifies whether Alice’s transaction id exists,&lt;br/&gt;&amp;gt; whether his vTXO output index is correct, and a set of other validations.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 13. If Dave had been online all this time, he would have had to wait for&lt;br/&gt;&amp;gt; enough confirmations to consider his payment “final.”&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [1] &lt;a href=&#34;https://eprint.iacr.org/2017/394.pdf&#34;&gt;https://eprint.iacr.org/2017/394.pdf&lt;/a&gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230806/ea402b43/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230806/ea402b43/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-08-06T23:37:36Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsdvcqetwwcy8unt29naaneh6m2zxcaxnr54akd9dkdnl7tcd4mzdqzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zrpjv2u</id>
    
      <title type="html">📅 Original date posted:2023-07-25 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsdvcqetwwcy8unt29naaneh6m2zxcaxnr54akd9dkdnl7tcd4mzdqzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zrpjv2u" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs2aa66fneanycnjjffwl85hf5k37xmkzw9tnqvx4hs3v2ahzrlwlsadacuc&#39;&gt;nevent1q…acuc&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-07-25&lt;br/&gt;🗒️ Summary of this message: Proposal to use a tapscript branch instead of MuSig2 signing for unilateral closes in the Lightning Network. Discusses dynamic fees and Bitcoin as a universal clock.&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Zeeman,&lt;br/&gt;&lt;br/&gt;&amp;gt; A proposal I made in the Signal group after the summit would be to not&lt;br/&gt;use MuSig2 signing for commitment transactions (== unilateral closes).&lt;br/&gt;&amp;gt; Instead, we add a tapscript branch that is just `&amp;lt;A&amp;gt; OP_CHECKSIGVERIFY&lt;br/&gt;&amp;lt;B&amp;gt; OP_CHECKSIG` and use that for unilateral closes.&lt;br/&gt;&amp;gt; We only sign with MuSig2 on mutual closes, after we have negotiated&lt;br/&gt;closing fees (whether that is the current long closing conversation, or&lt;br/&gt;simplified closing) so that only mutual closes require nonce&lt;br/&gt;&amp;gt; storage.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; As mutual closes assume continuous connectivity anyway, we can keep&lt;br/&gt;counterparty nonces in volatile RAM and not store nonces in persistent&lt;br/&gt;storage; if a disconnection occurs, we just remove it from&lt;br/&gt;&amp;gt; volatile RAM and restart the mutual close negotiation on reconnection.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This is more palatable as even with a very restrictive hardware device&lt;br/&gt;you do not have to store the peer nonce in persistent storage.&lt;br/&gt;&amp;gt; The hope is that mutual closes dominate over unilateral closes.&lt;br/&gt;&lt;br/&gt;Hardware devices with reasonable persistent storage sounds cheaper than the&lt;br/&gt;additional fee-bumping reverse one (locally or a third-party), must&lt;br/&gt;conserve to pay for the probabilistic worst-case `&amp;lt;A&amp;gt; OP_CHECKSIGVERIFY &amp;lt;B&amp;gt;&lt;br/&gt;OP_CHECKSIG` satisfying witness.&lt;br/&gt;&lt;br/&gt;&amp;gt; Conditinoal fees already on the Lightning Network are already dynamic,&lt;br/&gt;with many people (including myself) writing software that measures demand&lt;br/&gt;and changes price accordingly.&lt;br/&gt;&amp;gt; Why would unconditional fees be necessarily static, when there is no&lt;br/&gt;mention of it being static?&lt;br/&gt;&lt;br/&gt;While I&amp;#39;m in sync with you on the Lightning Network being a system driven&lt;br/&gt;by demand and charge price accordingly, some of the recent jamming&lt;br/&gt;mitigation proposals where build on the proposal of &amp;#34;static fees&amp;#34; or&lt;br/&gt;unconditional fees, e.g &lt;a href=&#34;https://eprint.iacr/2022/1454.pdf&#34;&gt;https://eprint.iacr/2022/1454.pdf&lt;/a&gt;. As soon as you&lt;br/&gt;start to think in terms of dynamic fees, you start to have issues w.r.t&lt;br/&gt;gossip convergence delays and rate-limitation of your local unconditional&lt;br/&gt;fees updates.&lt;br/&gt;&lt;br/&gt;&amp;gt; Given a &amp;#34;stereotypical&amp;#34; forwarding node, what is the most likely&lt;br/&gt;subjective valuation?&lt;br/&gt;&amp;gt; If a node is not a stereotypical forwarding node, how does it deviate&lt;br/&gt;from the stereotypical one?&lt;br/&gt;&lt;br/&gt;Answer is a function of your collection of historical forwarding HTLC&lt;br/&gt;traffic and secondary source of information.&lt;br/&gt;Somehow the same as for base-layer fee-estimation, the more consistent your&lt;br/&gt;mempool data-set, the better will be your valuation.&lt;br/&gt;&lt;br/&gt;&amp;gt; The problem is that the Bitcoin clock is much too coarsely grained, with&lt;br/&gt;chain height advances occasionally taking several hours in the so-called&lt;br/&gt;&amp;#34;real world&amp;#34; I have heard much rumor about.&lt;br/&gt;&lt;br/&gt;Sure, I still think Bitcoin as a universal clock is still the most costly&lt;br/&gt;for a Lightning counterparty to game on, if it has to be used as a&lt;br/&gt;mechanism to arbitrate the fees / reputation paid for the in-flight&lt;br/&gt;duration of a HTLC. Even relying on timestamp sounds to offer some margin&lt;br/&gt;of malleation (e.g advance of max 2h, consensus rule) if you have hashrate&lt;br/&gt;capabilities.&lt;br/&gt;&lt;br/&gt;&amp;gt; Would not the halt of the channel progress be considered worthy of a&lt;br/&gt;reputation downgrade by itself?&lt;br/&gt;&lt;br/&gt;That&amp;#39;s an interesting point, rather than halting channel progress being&lt;br/&gt;marked as a strict reputation downgrade, you could negotiate a &amp;#34;grace&lt;br/&gt;delay&amp;#34; during which channel progress must be made forward (to allow for&lt;br/&gt;casualties like software upgrade or connectivity issue).&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;Le lun. 24 juil. 2023 à 09:14, ZmnSCPxj &amp;lt;ZmnSCPxj at protonmail.com&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; - For taproot/musig2 we need nonces:&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; - Today we store the commitment signature from the remote party. We&lt;br/&gt;&amp;gt; don’t need to store our own signature - we can sign at time of broadcast.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; - To be able to sign you need the verification nonce - you could&lt;br/&gt;&amp;gt; remember it, or you could use a counter:&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; - Counter based:&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; - We re-use shachain and then just use it to generate nonces.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; - Start with a seed, derive from that, use it to generate nonces.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; - This way you don’t need to remember state, since it can always be&lt;br/&gt;&amp;gt; generated from what you already have.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; - Why is this safe?&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; - We never re-use nonces.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; - The remote party never sees your partial signature.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; - The message always stays the same (the dangerous re-use case is&lt;br/&gt;&amp;gt; using the same nonce for different messages).&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; - If we used the same nonce for different messages we could leak our&lt;br/&gt;&amp;gt; key.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; - You can combine the sighash &#43; nonce to make it unique - this also&lt;br/&gt;&amp;gt; binds more.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; - Remote party will only see the full signature on chain, never your&lt;br/&gt;&amp;gt; partial one.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; - Each party has sign and verify nonces, 4 total.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; - Co-op close only has 2 because it’s symmetric.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; (I don&amp;#39;t know when mailing list post max size will be reached)&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Counter-based nonces versus stateful memorization of them from a user&lt;br/&gt;&amp;gt; perspective depends on the hardware capabilities you have access to.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; The taproot schnorr flow could be transparent from the underlying&lt;br/&gt;&amp;gt; signature scheme (FROST, musig2, TAPS in the future maybe).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A proposal I made in the Signal group after the summit would be to not use&lt;br/&gt;&amp;gt; MuSig2 signing for commitment transactions (== unilateral closes).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Instead, we add a tapscript branch that is just `&amp;lt;A&amp;gt; OP_CHECKSIGVERIFY &amp;lt;B&amp;gt;&lt;br/&gt;&amp;gt; OP_CHECKSIG` and use that for unilateral closes.&lt;br/&gt;&amp;gt; We only sign with MuSig2 on mutual closes, after we have negotiated&lt;br/&gt;&amp;gt; closing fees (whether that is the current long closing conversation, or&lt;br/&gt;&amp;gt; simplified closing) so that only mutual closes require nonce storage.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; As mutual closes assume continuous connectivity anyway, we can keep&lt;br/&gt;&amp;gt; counterparty nonces in volatile RAM and not store nonces in persistent&lt;br/&gt;&amp;gt; storage; if a disconnection occurs, we just remove it from volatile RAM and&lt;br/&gt;&amp;gt; restart the mutual close negotiation on reconnection.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This is more palatable as even with a very restrictive hardware device you&lt;br/&gt;&amp;gt; do not have to store the peer nonce in persistent storage.&lt;br/&gt;&amp;gt; The hope is that mutual closes dominate over unilateral closes.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; - We run into the same pricing issues.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; - Why these combinations?&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; - Since scarce resources are essentially monetary, we think that&lt;br/&gt;&amp;gt; unconditional fees are the simplest possible monetary solution.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; - Unconditional Fees:&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; - As a sender, you’re building a route and losing money if it doesn’t&lt;br/&gt;&amp;gt; go through?&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; - Yes, but they only need to be trivially small compared to success&lt;br/&gt;&amp;gt; case fee budgets.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; - You can also eventually succeed so long as you retry enough, even if&lt;br/&gt;&amp;gt; failure rates are very high.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; - How do you know that these fees will be small? The market could&lt;br/&gt;&amp;gt; decide otherwise.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Static unconditional fees is a limited tool in a world where rational&lt;br/&gt;&amp;gt; economic actors are pricing their liquidity in function of demand.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Conditinoal fees already on the Lightning Network are already dynamic,&lt;br/&gt;&amp;gt; with many people (including myself) writing software that measures demand&lt;br/&gt;&amp;gt; and changes price accordingly.&lt;br/&gt;&amp;gt; Why would unconditional fees be necessarily static, when there is no&lt;br/&gt;&amp;gt; mention of it being static?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; - We have to allow some natural rate of failure in the network.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; - An attacker can still aim to fall just below that failure threshold&lt;br/&gt;&amp;gt; and go through multiple channels to attack an individual channel.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; - THere isn’t any way to set a bar that an attacker can’t fall just&lt;br/&gt;&amp;gt; beneath.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; - Isn’t this the same for reputation? We have a suggestion for&lt;br/&gt;&amp;gt; reputation but all of them fail because they can be gamed below the bar.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; - If reputation matches the regular operation of nodes on the network,&lt;br/&gt;&amp;gt; you will naturally build reputation up over time.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; - If we do not match reputation accumulation to what normal nodes do,&lt;br/&gt;&amp;gt; then an attacker can take some other action to get more reputation than the&lt;br/&gt;&amp;gt; rest of the network. We don’t want attackers to be able to get ahead of&lt;br/&gt;&amp;gt; regular nodes.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; - Let’s say you get one point for success and one for failure, a&lt;br/&gt;&amp;gt; normal node will always have bad reputation. An attacker could then send 1&lt;br/&gt;&amp;gt; say payments all day long, pay a fee for it &amp;gt; and gain reputation.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; - Can you define jamming? Is it stuck HTLCs or a lot of 1 sat HTLCS&lt;br/&gt;&amp;gt; spamming up your DB?&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Jamming is an economic notion, as such relying on the subjectivism of&lt;br/&gt;&amp;gt; node appreciation of local ressources.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Given a &amp;#34;stereotypical&amp;#34; forwarding node, what is the most likely&lt;br/&gt;&amp;gt; subjective valuation?&lt;br/&gt;&amp;gt; If a node is not a stereotypical forwarding node, how does it deviate from&lt;br/&gt;&amp;gt; the stereotypical one?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; - The dream solution is to only pay for the amount of time that a HTLC&lt;br/&gt;&amp;gt; is held in flight.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; - The problem here is that there’s no way to prove time when things go&lt;br/&gt;&amp;gt; wrong, and any solution without a universal clock will fall back on&lt;br/&gt;&amp;gt; cooperation which breaks down in the case of &amp;gt; an attack.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; There is a universal clock in Bitcoin called the chain height advances.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The problem is that the Bitcoin clock is much too coarsely grained, with&lt;br/&gt;&amp;gt; chain height advances occasionally taking several hours in the so-called&lt;br/&gt;&amp;gt; &amp;#34;real world&amp;#34; I have heard much rumor about.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; - What NACK says is: I’ve ignored all of your updates and I’m&lt;br/&gt;&amp;gt; progressing to the next commitment.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; If resource bucketing or link-level liquidity management starts to be&lt;br/&gt;&amp;gt; involved, one can mask behind &amp;#34;NACK&amp;#34; to halt the channel progress, without&lt;br/&gt;&amp;gt; the reputation downgrade. Layer violation issue.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Would not the halt of the channel progress be considered worthy of a&lt;br/&gt;&amp;gt; reputation downgrade by itself?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Regards,&lt;br/&gt;&amp;gt; ZmnSCPxj&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230726/4858e570/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230726/4858e570/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-07-27T00:22:34Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsdw0jrpcnem9lxgwe0dzyl03sm0saf4yrm07cw49kx8g7w0ug24vczypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zqykl8e</id>
    
      <title type="html">📅 Original date posted:2023-07-20 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsdw0jrpcnem9lxgwe0dzyl03sm0saf4yrm07cw49kx8g7w0ug24vczypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zqykl8e" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsgl8e058krt5zemjvwgpgvd6k0aqqpfw4yw47sjw4q6g0e0u2gxhgx5x3lv&#39;&gt;nevent1q…x3lv&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-07-20&lt;br/&gt;🗒️ Summary of this message: The author discusses the development approach for consensus change primitives and mentions the importance of individual judgment for each BOLT. They also highlight the uncertainty surrounding Simplicity for small party channels and suggest exploring formal verification.&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Greg,&lt;br/&gt;&lt;br/&gt;I&amp;#39;m very meeting your development approach with regards to starting smalls&lt;br/&gt;about consensus change primitives, and I think taproot has demonstrated&lt;br/&gt;some good historical process, which has good archives about how development&lt;br/&gt;was conducted (e.g the community-wide taproot review of which the Bitcoin&lt;br/&gt;Contracting Primitives WG was built on this experience [0]).&lt;br/&gt;&lt;br/&gt;I don&amp;#39;t know about saying that the BOLTs (and its process) should be&lt;br/&gt;authoritative over the running code of implementations. While it&amp;#39;s&lt;br/&gt;definitely a mark of some bar of technical review and inter-compatibility,&lt;br/&gt;I think ultimately each BOLT has to be judged individually on its own&lt;br/&gt;technical merits. And I think we had a bunch of cases in the past when &amp;#34;the&lt;br/&gt;map is not the territory&amp;#34;. Even there are few areas of critical Lightning&lt;br/&gt;operations which are not documented by the BOLTs to the best of my&lt;br/&gt;knowledge (such as fee-bumping and transactions broadcast reactions as it&lt;br/&gt;was for on-chain DLCs [1]).&lt;br/&gt;&lt;br/&gt;Lastly, there is a huge area of uncertainty about the technical fitness of&lt;br/&gt;Simplicity for 2/small party channels. I remember a Russell O&amp;#39;connor&lt;br/&gt;presentation about Simplicity back in Paris (2017 or 2018 ?) and asking him&lt;br/&gt;how it would work in a chain of transactions, while the answer was iirc&lt;br/&gt;&amp;#34;yes it has been designed with this constraint&amp;#34;, it&amp;#39;s a very open question&lt;br/&gt;when you have off-chain states which advances in independence from the&lt;br/&gt;on-chain state between a dynamic number of counterparties (kinda the&lt;br/&gt;interactivity issue for payment pools). Here I guess you would have to come&lt;br/&gt;to a consensus to the model of logic followed for the analysis of such&lt;br/&gt;distributed systems e.g Leslie Lamport&amp;#39;s temporal logic [2]. Additionally,&lt;br/&gt;the theoretical foundations on the Coq prover are still actively studied by&lt;br/&gt;Xavier Leroy at the College de France and some novel insights might be&lt;br/&gt;interesting for using formal verification in terms of Bitcoin consensus&lt;br/&gt;changes development (and I don&amp;#39;t know if all the works and lessons have&lt;br/&gt;been translated from French to English).&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;[0] &lt;a href=&#34;https://github.com/ajtowns/taproot-review&#34;&gt;https://github.com/ajtowns/taproot-review&lt;/a&gt;&lt;br/&gt;[1]&lt;br/&gt;&lt;a href=&#34;https://github.com/discreetlogcontracts/dlcspecs/blob/master/Non-Interactive-Protocol.md&#34;&gt;https://github.com/discreetlogcontracts/dlcspecs/blob/master/Non-Interactive-Protocol.md&lt;/a&gt;&lt;br/&gt;[2] &lt;a href=&#34;https://en.wikipedia.org/wiki/Temporal_logic_of_actions&#34;&gt;https://en.wikipedia.org/wiki/Temporal_logic_of_actions&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Le mer. 19 juil. 2023 à 21:45, Greg Sanders &amp;lt;gsanders87 at gmail.com&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Hello Keagen,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Most of the complexity of LN cannot be resolved with covenants. Of the&lt;br/&gt;&amp;gt; things that can be simplified in my experience, you&amp;#39;re going to need more&lt;br/&gt;&amp;gt; than CTV to get significant gains. And in the end, channels can only get so&lt;br/&gt;&amp;gt; simple since we have many other BOLTs to deal with. And even then, you&amp;#39;re&lt;br/&gt;&amp;gt; going to have to convince LN spec writers to include such changes, whatever&lt;br/&gt;&amp;gt; they are, then get deployment.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Step 1 is finding a primitive that seems interesting. It&amp;#39;s important to&lt;br/&gt;&amp;gt; moderate enthusiasm for any primitive with reality, and probably by being&lt;br/&gt;&amp;gt; concrete by writing specs that use a primitive, and code it up to discover&lt;br/&gt;&amp;gt; what we&amp;#39;re overlooking. We&amp;#39;re always overlooking something! In my humble&lt;br/&gt;&amp;gt; opinion these are step 2 and 3 of gathering mind-share.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; As a more productive tact, if we&amp;#39;re thinking beyond 2/small party&lt;br/&gt;&amp;gt; channels, probably better to snap your fingers, pretend we have Simplicity,&lt;br/&gt;&amp;gt; see what we can build, and work backwards from there to see if we can&lt;br/&gt;&amp;gt; accomplish this within the confines of bitcoin script?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; Greg&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Wed, Jul 19, 2023 at 3:59 PM Keagan McClelland via bitcoin-dev &amp;lt;&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Hi Antoine,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Thank you for the effort you&amp;#39;ve put towards this. I generally agree that&lt;br/&gt;&amp;gt;&amp;gt; a smooth functioning Lightning Network is of greater importance than&lt;br/&gt;&amp;gt;&amp;gt; advanced contracting capabilities. However, as I dive deeper into some of&lt;br/&gt;&amp;gt;&amp;gt; the more ambitious goals for LN development I am learning that a great deal&lt;br/&gt;&amp;gt;&amp;gt; of complexity of some current lightning (LN) proposals can be handily&lt;br/&gt;&amp;gt;&amp;gt; discharged with CTV. While I am not intimately familiar with all of the&lt;br/&gt;&amp;gt;&amp;gt; other covenant schemes to the same level of technical proficiency, I have a&lt;br/&gt;&amp;gt;&amp;gt; suspicion that a number of them, if not all of them, are capable of&lt;br/&gt;&amp;gt;&amp;gt; discharging the same flavor and amount of complexity as well. Others should&lt;br/&gt;&amp;gt;&amp;gt; chime in if they can confirm this claim.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I have been publicly on the record as supporting the addition of some&lt;br/&gt;&amp;gt;&amp;gt; covenant scheme into Bitcoin for some time and have long held on&lt;br/&gt;&amp;gt;&amp;gt; theoretical grounds that the addition of such a mechanism is both necessary&lt;br/&gt;&amp;gt;&amp;gt; and inevitable if Bitcoin is to survive in the long term. However, as I&amp;#39;ve&lt;br/&gt;&amp;gt;&amp;gt; started to work more directly with the Lightning protocol, these&lt;br/&gt;&amp;gt;&amp;gt; theoretical and purely logical arguments became far more concrete and&lt;br/&gt;&amp;gt;&amp;gt; immediately beneficial.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I say this primarily to challenge the idea that covenants are a&lt;br/&gt;&amp;gt;&amp;gt; distraction from lightning development. It may very well be that your areas&lt;br/&gt;&amp;gt;&amp;gt; of focus on LN preclude you from splitting your attention and none of this&lt;br/&gt;&amp;gt;&amp;gt; email should be interpreted as a criticism of you applying your efforts in&lt;br/&gt;&amp;gt;&amp;gt; the highest leverage manner you can manage. That said, I don&amp;#39;t want&lt;br/&gt;&amp;gt;&amp;gt; observers of this thread to walk away with the impression that they are two&lt;br/&gt;&amp;gt;&amp;gt; independent efforts as covenants can significantly contribute to LN&amp;#39;s&lt;br/&gt;&amp;gt;&amp;gt; maturity. When and how should they be prioritized? Unfortunately I don&amp;#39;t&lt;br/&gt;&amp;gt;&amp;gt; feel able to comment on that at this time. All I know is that Lightning&lt;br/&gt;&amp;gt;&amp;gt; would almost certainly benefit substantially from having a covenant&lt;br/&gt;&amp;gt;&amp;gt; primitive.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt;&amp;gt; Keags&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; On Tue, Jul 18, 2023 at 3:40 PM Antoine Riard via bitcoin-dev &amp;lt;&lt;br/&gt;&amp;gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Hi list,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Last year amid the failure of the CTV speedy trial activation and&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; intense conversations about a rainbow of covenant proposals, I introduced&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; the idea of a new community process to specify covenants [0]. This post is&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; to resume the experiment so far and officially mark the process maintenance&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; as &amp;#34;up for grabs&amp;#34;, as I won&amp;#39;t actively pursue it further (after wavering on&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; such a decision a bit during May / June).&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Few of the goals announced at that time were to build a consistent&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; framework to evaluate covenant proposals, see the common grounds between&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; proposals if they could be composed or combined by their authors, open the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; consensus  changes development process beyond the historical boundaries of&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Bitcoin Core and maintain high-quality technical archive as a consensus&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; discussions have spawned half a decade from intellectual conception to&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; activation in average (at least for segwit, schnorr, taproot).&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Such effort was a speak-by-the-act answer to the issues in&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; consensus development changes pointed out by Jeremy Rubin in April of last&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; year [1]: namely the lack of a &amp;#34;codified checklist&amp;#34; for consensus changes,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; that &amp;#34;consensus is memoryless&amp;#34; and &amp;#34;bitcoin core is not bitcoin&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; (independently of the technical concerns as I have as limited or&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; non-adequate primitive for vaults / payment pools I expressed during the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; same time). Other complementary initiatives have been undertaken during the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; same period, AJ with the bitcoin-inquisition fork where the community of&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; developers and contracting primitives of researchers on a consensus-enabled&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; fork of core [2]. And Dave Harding with the careful archiving of all&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; covenant proposals under the Optech umbrella [3].&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; About the Bitcoin Contracting Primitives WG, a Github repository was&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; started and maintained to archive and document all the primitives (apo,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; tluv, ctv, the taproot annex, sighash_group, CSFS, cat, txhash, evict,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; check_output_covenant_verify, inherited ids, anyamount, singletons,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; op_vault) and the corresponding protocols (payment pools, vaults,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; drivechains, trust-minimized mining pools payouts). We had a total of 6&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; monthly meetings on the Libera chat #bitcoin-contracting-primitives-wg for&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; a number of more than 20 individual attendees representing most of the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; parts of the community. I think (missing march logs). Numerous in-depth&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; discussions did happen on the repository and on the channel on things like&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &amp;#34;merkelized all the things&amp;#34; or &amp;#34;payment pools for miners payoffs&amp;#34;.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; As I&amp;#39;ve been busy on the Lightning-side and other Bitcoin projects, I&amp;#39;ve&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; not run an online meeting since the month of April, while still having a&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; bunch of fruitful technical discussions with folks involved in the effort&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; at conferences and elsewhere. I launched the effort as an experiment with&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; the soft commitment to dedicate 20% of my time on it, after few successful&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; sessions I think such a process has an interest of its own, however it&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; comes with direct competition of my time to work on Lightning robustness.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Getting my hands dirty on low-level LDK development recently made me&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; realize we still have years of titan work to get a secure and reliable&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Lightning Network.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; As such, between extended covenant capabilities for advanced contracts&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; coming as a reality for Bitcoin _or_ LN working smoothly at scale with&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; 50-100M UTXO-sharing users on it during the next 5-7 years cycle, I think&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; the latter goal is more critical for Bitcoin existential survival, and&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; where on a personal title I&amp;#39;ll allocate the best of my time and energy (and&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; somehow it match the &amp;#34;slow&amp;#34; technical activity on bitcoin-inquisition&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; mostly done by Lightning hands).&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; This is my personal conclusion only on the state of Bitcoin&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; technological momentum, and this is quite tainted by my deep background in&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Lightning development. If you&amp;#39;ve been working on covenant changes&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; proposals, please don&amp;#39;t take it as a discouragement, I think Taproot&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; (privacy-preserving script policies behind the taproot tree branches) and&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Schnorr (for native multi-sig) soft forks have shown how it can improve the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; building of self-custody solutions by one or two order of magnitude, and&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; small incremental changes might be good enough to have a lower technical&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; consensus bar.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; On my side, I&amp;#39;ll pursue pure R&amp;amp;D works on CoinPool, notably coming with&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; better solutions with the interactivity issue and mass-compression of&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; withdrawal and design exotic advanced Bitcoin contracts based on the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; taproot annex, though more in a &amp;#34;l&amp;#39;art pour l&amp;#39;art&amp;#34; approach for the time&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; being [4]. Additionally, I might start to submit an in-depth security&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; review of consensus changes under pseudonyms, it has already been done in&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; the past and somehow it&amp;#39;s good practice in terms of &amp;#34;message neutrality&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; [5]. If folks wanna experiment in terms of payment pools deployment, Greg&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Maxwell&amp;#39;s old joinpool can be used today (and somehow it&amp;#39;s worthy of its&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; own as a net advance for coinjoins).&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; I&amp;#39;ll honestly acknowledge towards the community, I might have&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; overpromised with the kickstart of this new process aiming to move the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; frontlines in matters of Bitcoin consensus changes development process. On&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; the other hand, I think enough sessions of the working group have been&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; runned and enough marks of technical interests have been collected to&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; demonstrate the minimal value of such a process, so I would estimate my&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; open-source balance sheet towards the community to be in good standing ?&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; (open-minded question).&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; I don&amp;#39;t think Bitcoin fundamentally lacks compelling technical proposals&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; to advance the capabilities of Bitcoin Script today, nor the crowd of&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; seasoned and smart protocol developers to evaluate mature proposals&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; end-to-end and on multiple dimensions with a spirit of independence.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Rather, I believe what Bitcoin is lacking is a small crowd of technical&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; historians and archivist doing the work of assessing, collecting and&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; preserving consensus changes proposals and QA devs to ensure any consensus&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; change proposals has world-class battle-ground testing before to be&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; considered for deployment, ideally with the best standards of Bitcoin&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; decentralization and FOSS neutrality [6].&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; If you would like to pursue the maintenance and nurturing of the Bitcoin&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Contracting Primitives WG (or the bitcoin-inquisition fork or collaborate&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; with Optech to organize industry-wise workshop on covenants at the image of&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; what has been done in 2019 for Taproot), that you&amp;#39;re willing to show&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; proof-of-work and you estimate that operational ground, legal information&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; or financial resources will anchor your individual work on the long-term,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; don&amp;#39;t hesitate to reach out, I&amp;#39;ll see what I can do with a disinterested&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; mind [7].&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; With humility,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Antoine&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; [0]&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-July/020763.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-July/020763.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; [1]&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-April/020233.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-April/020233.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; [2]&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-September/020921.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-September/020921.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; [3] &lt;a href=&#34;https://github.com/bitcoinops/bitcoinops.github.io/pull/806&#34;&gt;https://github.com/bitcoinops/bitcoinops.github.io/pull/806&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; [4] Version 0.2 of the CoinPool whitepaper addressing most of the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; remaining &amp;#34;Big Problems&amp;#34; is still pending on my visit to co-author Gleb&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Naumenko in Ukraine, which has been postponed few times in light of the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; conflict operational evolutions.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; [5] See&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2020-February/017614.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2020-February/017614.html&lt;/a&gt;.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; For the philosophical reasons of doing so, I invite you to read Foucault&amp;#39;s&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; famous essay &amp;#34;Le philosophe masque&amp;#34;.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; [6] Somehow I come to share Jeremy&amp;#39;s thesis&amp;#39;s &amp;#34;Product management is not&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &amp;#34;my Job&amp;#34; it&amp;#39;s yours&amp;#34; in matters of consensus changes. I believe we might be&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; past the technical complexity threshold where even simple consensus changes&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; can be conducted from A to Z as a one man job or even by a group of 2/3&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; elite devs.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; [7] I&amp;#39;ve been reached out multiple times and consistently by R&amp;amp;D&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; non-profits, plebs whales and VC firms who were interested to commit&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; resources to advance softforks and covenants in the Bitcoin space, no doubt&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; when you&amp;#39;re reliable and with a track record, folks are ready to offer you&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; opportunities to work full-time on consensus changes.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230720/364b91a0/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230720/364b91a0/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-07-20T09:54:05Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsvqtyrqxzagrwntvly03qn0a5gt7rq4pxs56n8ndwvjq3uhuhjadczypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zg4ysev</id>
    
      <title type="html">📅 Original date posted:2023-07-18 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsvqtyrqxzagrwntvly03qn0a5gt7rq4pxs56n8ndwvjq3uhuhjadczypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zg4ysev" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqszyx5d6qs4x4qdvwcc63wyk2qdut9n3z5g4hpsmrgg67t3w24pnwqfckhh5&#39;&gt;nevent1q…khh5&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-07-18&lt;br/&gt;🗒️ Summary of this message: Last year, a new community process for specifying covenants was introduced, but the person behind it will no longer actively pursue it. Efforts were made to build a framework for evaluating covenant proposals and expand the consensus changes development process. Other initiatives were also undertaken during the same period. A Github repository was created to document Bitcoin contracting primitives and corresponding protocols. Monthly meetings were held with attendees from various parts of the community. However, the person behind the process has been busy with other Bitcoin projects and has not held online meetings since April.&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi list,&lt;br/&gt;&lt;br/&gt;Last year amid the failure of the CTV speedy trial activation and intense&lt;br/&gt;conversations about a rainbow of covenant proposals, I introduced the idea&lt;br/&gt;of a new community process to specify covenants [0]. This post is to resume&lt;br/&gt;the experiment so far and officially mark the process maintenance as &amp;#34;up&lt;br/&gt;for grabs&amp;#34;, as I won&amp;#39;t actively pursue it further (after wavering on such a&lt;br/&gt;decision a bit during May / June).&lt;br/&gt;&lt;br/&gt;Few of the goals announced at that time were to build a consistent&lt;br/&gt;framework to evaluate covenant proposals, see the common grounds between&lt;br/&gt;proposals if they could be composed or combined by their authors, open the&lt;br/&gt;consensus  changes development process beyond the historical boundaries of&lt;br/&gt;Bitcoin Core and maintain high-quality technical archive as a consensus&lt;br/&gt;discussions have spawned half a decade from intellectual conception to&lt;br/&gt;activation in average (at least for segwit, schnorr, taproot).&lt;br/&gt;&lt;br/&gt;Such effort was a speak-by-the-act answer to the issues in&lt;br/&gt;consensus development changes pointed out by Jeremy Rubin in April of last&lt;br/&gt;year [1]: namely the lack of a &amp;#34;codified checklist&amp;#34; for consensus changes,&lt;br/&gt;that &amp;#34;consensus is memoryless&amp;#34; and &amp;#34;bitcoin core is not bitcoin&amp;#34;&lt;br/&gt;(independently of the technical concerns as I have as limited or&lt;br/&gt;non-adequate primitive for vaults / payment pools I expressed during the&lt;br/&gt;same time). Other complementary initiatives have been undertaken during the&lt;br/&gt;same period, AJ with the bitcoin-inquisition fork where the community of&lt;br/&gt;developers and contracting primitives of researchers on a consensus-enabled&lt;br/&gt;fork of core [2]. And Dave Harding with the careful archiving of all&lt;br/&gt;covenant proposals under the Optech umbrella [3].&lt;br/&gt;&lt;br/&gt;About the Bitcoin Contracting Primitives WG, a Github repository was&lt;br/&gt;started and maintained to archive and document all the primitives (apo,&lt;br/&gt;tluv, ctv, the taproot annex, sighash_group, CSFS, cat, txhash, evict,&lt;br/&gt;check_output_covenant_verify, inherited ids, anyamount, singletons,&lt;br/&gt;op_vault) and the corresponding protocols (payment pools, vaults,&lt;br/&gt;drivechains, trust-minimized mining pools payouts). We had a total of 6&lt;br/&gt;monthly meetings on the Libera chat #bitcoin-contracting-primitives-wg for&lt;br/&gt;a number of more than 20 individual attendees representing most of the&lt;br/&gt;parts of the community. I think (missing march logs). Numerous in-depth&lt;br/&gt;discussions did happen on the repository and on the channel on things like&lt;br/&gt;&amp;#34;merkelized all the things&amp;#34; or &amp;#34;payment pools for miners payoffs&amp;#34;.&lt;br/&gt;&lt;br/&gt;As I&amp;#39;ve been busy on the Lightning-side and other Bitcoin projects, I&amp;#39;ve&lt;br/&gt;not run an online meeting since the month of April, while still having a&lt;br/&gt;bunch of fruitful technical discussions with folks involved in the effort&lt;br/&gt;at conferences and elsewhere. I launched the effort as an experiment with&lt;br/&gt;the soft commitment to dedicate 20% of my time on it, after few successful&lt;br/&gt;sessions I think such a process has an interest of its own, however it&lt;br/&gt;comes with direct competition of my time to work on Lightning robustness.&lt;br/&gt;Getting my hands dirty on low-level LDK development recently made me&lt;br/&gt;realize we still have years of titan work to get a secure and reliable&lt;br/&gt;Lightning Network.&lt;br/&gt;&lt;br/&gt;As such, between extended covenant capabilities for advanced contracts&lt;br/&gt;coming as a reality for Bitcoin _or_ LN working smoothly at scale with&lt;br/&gt;50-100M UTXO-sharing users on it during the next 5-7 years cycle, I think&lt;br/&gt;the latter goal is more critical for Bitcoin existential survival, and&lt;br/&gt;where on a personal title I&amp;#39;ll allocate the best of my time and energy (and&lt;br/&gt;somehow it match the &amp;#34;slow&amp;#34; technical activity on bitcoin-inquisition&lt;br/&gt;mostly done by Lightning hands).&lt;br/&gt;&lt;br/&gt;This is my personal conclusion only on the state of Bitcoin technological&lt;br/&gt;momentum, and this is quite tainted by my deep background in Lightning&lt;br/&gt;development. If you&amp;#39;ve been working on covenant changes proposals, please&lt;br/&gt;don&amp;#39;t take it as a discouragement, I think Taproot (privacy-preserving&lt;br/&gt;script policies behind the taproot tree branches) and Schnorr (for native&lt;br/&gt;multi-sig) soft forks have shown how it can improve the building of&lt;br/&gt;self-custody solutions by one or two order of magnitude, and small&lt;br/&gt;incremental changes might be good enough to have a lower technical&lt;br/&gt;consensus bar.&lt;br/&gt;&lt;br/&gt;On my side, I&amp;#39;ll pursue pure R&amp;amp;D works on CoinPool, notably coming with&lt;br/&gt;better solutions with the interactivity issue and mass-compression of&lt;br/&gt;withdrawal and design exotic advanced Bitcoin contracts based on the&lt;br/&gt;taproot annex, though more in a &amp;#34;l&amp;#39;art pour l&amp;#39;art&amp;#34; approach for the time&lt;br/&gt;being [4]. Additionally, I might start to submit an in-depth security&lt;br/&gt;review of consensus changes under pseudonyms, it has already been done in&lt;br/&gt;the past and somehow it&amp;#39;s good practice in terms of &amp;#34;message neutrality&amp;#34;&lt;br/&gt;[5]. If folks wanna experiment in terms of payment pools deployment, Greg&lt;br/&gt;Maxwell&amp;#39;s old joinpool can be used today (and somehow it&amp;#39;s worthy of its&lt;br/&gt;own as a net advance for coinjoins).&lt;br/&gt;&lt;br/&gt;I&amp;#39;ll honestly acknowledge towards the community, I might have overpromised&lt;br/&gt;with the kickstart of this new process aiming to move the frontlines in&lt;br/&gt;matters of Bitcoin consensus changes development process. On the other&lt;br/&gt;hand, I think enough sessions of the working group have been runned and&lt;br/&gt;enough marks of technical interests have been collected to demonstrate the&lt;br/&gt;minimal value of such a process, so I would estimate my open-source balance&lt;br/&gt;sheet towards the community to be in good standing ? (open-minded question).&lt;br/&gt;&lt;br/&gt;I don&amp;#39;t think Bitcoin fundamentally lacks compelling technical proposals to&lt;br/&gt;advance the capabilities of Bitcoin Script today, nor the crowd of seasoned&lt;br/&gt;and smart protocol developers to evaluate mature proposals end-to-end and&lt;br/&gt;on multiple dimensions with a spirit of independence. Rather, I believe&lt;br/&gt;what Bitcoin is lacking is a small crowd of technical historians and&lt;br/&gt;archivist doing the work of assessing, collecting and preserving consensus&lt;br/&gt;changes proposals and QA devs to ensure any consensus change proposals has&lt;br/&gt;world-class battle-ground testing before to be considered for deployment,&lt;br/&gt;ideally with the best standards of Bitcoin decentralization and FOSS&lt;br/&gt;neutrality [6].&lt;br/&gt;&lt;br/&gt;If you would like to pursue the maintenance and nurturing of the Bitcoin&lt;br/&gt;Contracting Primitives WG (or the bitcoin-inquisition fork or collaborate&lt;br/&gt;with Optech to organize industry-wise workshop on covenants at the image of&lt;br/&gt;what has been done in 2019 for Taproot), that you&amp;#39;re willing to show&lt;br/&gt;proof-of-work and you estimate that operational ground, legal information&lt;br/&gt;or financial resources will anchor your individual work on the long-term,&lt;br/&gt;don&amp;#39;t hesitate to reach out, I&amp;#39;ll see what I can do with a disinterested&lt;br/&gt;mind [7].&lt;br/&gt;&lt;br/&gt;With humility,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;[0]&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-July/020763.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-July/020763.html&lt;/a&gt;&lt;br/&gt;[1]&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-April/020233.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-April/020233.html&lt;/a&gt;&lt;br/&gt;[2]&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-September/020921.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-September/020921.html&lt;/a&gt;&lt;br/&gt;[3] &lt;a href=&#34;https://github.com/bitcoinops/bitcoinops.github.io/pull/806&#34;&gt;https://github.com/bitcoinops/bitcoinops.github.io/pull/806&lt;/a&gt;&lt;br/&gt;[4] Version 0.2 of the CoinPool whitepaper addressing most of the remaining&lt;br/&gt;&amp;#34;Big Problems&amp;#34; is still pending on my visit to co-author Gleb Naumenko in&lt;br/&gt;Ukraine, which has been postponed few times in light of the conflict&lt;br/&gt;operational evolutions.&lt;br/&gt;[5] See&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2020-February/017614.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2020-February/017614.html&lt;/a&gt;.&lt;br/&gt;For the philosophical reasons of doing so, I invite you to read Foucault&amp;#39;s&lt;br/&gt;famous essay &amp;#34;Le philosophe masque&amp;#34;.&lt;br/&gt;[6] Somehow I come to share Jeremy&amp;#39;s thesis&amp;#39;s &amp;#34;Product management is not&lt;br/&gt;&amp;#34;my Job&amp;#34; it&amp;#39;s yours&amp;#34; in matters of consensus changes. I believe we might be&lt;br/&gt;past the technical complexity threshold where even simple consensus changes&lt;br/&gt;can be conducted from A to Z as a one man job or even by a group of 2/3&lt;br/&gt;elite devs.&lt;br/&gt;[7] I&amp;#39;ve been reached out multiple times and consistently by R&amp;amp;D&lt;br/&gt;non-profits, plebs whales and VC firms who were interested to commit&lt;br/&gt;resources to advance softforks and covenants in the Bitcoin space, no doubt&lt;br/&gt;when you&amp;#39;re reliable and with a track record, folks are ready to offer you&lt;br/&gt;opportunities to work full-time on consensus changes.&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230718/0be965a9/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230718/0be965a9/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-07-19T02:09:38Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsgmt473ylp8t6jtwunu30sduca8ghnn3n9nuda0v0zcaayyfgm0kszypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zn9ez0u</id>
    
      <title type="html">📅 Original date posted:2023-07-04 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsgmt473ylp8t6jtwunu30sduca8ghnn3n9nuda0v0zcaayyfgm0kszypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zn9ez0u" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs8x7u2rf8jjl08j6ac9gchk3z0lh224aklp3t742cvsm4u7rvd4yqn9zgr0&#39;&gt;nevent1q…zgr0&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-07-04&lt;br/&gt;🗒️ Summary of this message: The author discusses the benefits of using the annex for backing up ephemeral signatures on the blockchain, particularly for time-locked vaults. They also mention the potential use of the annex for simplifying protocols and enabling clear ownership of collectibles.&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Joost,&lt;br/&gt;&lt;br/&gt;&amp;gt; Hopefully this further raises awareness of the on-chain ephemeral&lt;br/&gt;signature backup functionality that the annex uniquely enables.&lt;br/&gt;&lt;br/&gt;&amp;gt;From my perspective, if vault applications can be made more robust by&lt;br/&gt;on-chain backing up of ephemeral signatures, this can be rational to make&lt;br/&gt;the annex standard.&lt;br/&gt;&lt;br/&gt;There is the observation that other critical elements of vault&amp;#39;s&lt;br/&gt;application state could be backed up in this way (e.g pubkeys and amounts&lt;br/&gt;of the destination output) to rebuild from scratch a pre-signed withdrawal.&lt;br/&gt;The unstructured data could be even marked by an application-level &amp;#34;tag&amp;#34; or&lt;br/&gt;&amp;#34;signaling&amp;#34; to identify all the backup annexes composing your vault&lt;br/&gt;application state.&lt;br/&gt;&lt;br/&gt;Of course, such backing up of more critical elements comes with its own&lt;br/&gt;drawbacks in terms of confidentiality, as you would leak your vault policy&lt;br/&gt;on-chain, so they would need to be ciphered first, I think.&lt;br/&gt;&lt;br/&gt;It sounds to me another economically rational set of use-cases can be to&lt;br/&gt;simplify protocols using the chain as a publication space for collectibles.&lt;br/&gt;Using the annex as a publication space enables a clear chain of collectible&lt;br/&gt;ownership thanks to the key signing the annex, which is not permissible&lt;br/&gt;with op_return outputs today.&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Le mar. 20 juin 2023 à 13:30, Joost Jager &amp;lt;joost.jager at gmail.com&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi all,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Sat, Jun 10, 2023 at 9:43 AM Joost Jager &amp;lt;joost.jager at gmail.com&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; However, the primary advantage I see in the annex is that its data isn&amp;#39;t&lt;br/&gt;&amp;gt;&amp;gt; included in the calculation of the txid or a potential parent commit&lt;br/&gt;&amp;gt;&amp;gt; transaction&amp;#39;s txid (for inscriptions). I&amp;#39;ve explained this at [1]. This&lt;br/&gt;&amp;gt;&amp;gt; feature makes the annex a powerful tool for applications that would ideally&lt;br/&gt;&amp;gt;&amp;gt; use covenants.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; The most critical application in this category, for me, involves&lt;br/&gt;&amp;gt;&amp;gt; time-locked vaults. Given the positive reception to proposals such as&lt;br/&gt;&amp;gt;&amp;gt; OP_VAULT [2], I don&amp;#39;t think I&amp;#39;m alone in this belief. OP_VAULT is probably&lt;br/&gt;&amp;gt;&amp;gt; a bit further out, but pre-signed transactions signed using an ephemeral&lt;br/&gt;&amp;gt;&amp;gt; key can fill the gap and improve the safeguarding of Bitcoin in the short&lt;br/&gt;&amp;gt;&amp;gt; term.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Backing up the ephemeral signatures of the pre-signed transactions on the&lt;br/&gt;&amp;gt;&amp;gt; blockchain itself is an excellent way to ensure that the vault can always&lt;br/&gt;&amp;gt;&amp;gt; be &amp;#39;opened&amp;#39;. However, without the annex, this is not as safe as it could&lt;br/&gt;&amp;gt;&amp;gt; be. Due to the described circular reference problem, the vault creation and&lt;br/&gt;&amp;gt;&amp;gt; signature backup can&amp;#39;t be executed in one atomic operation. For example,&lt;br/&gt;&amp;gt;&amp;gt; you can store the backup in a child commit/reveal transaction set, but the&lt;br/&gt;&amp;gt;&amp;gt; vault itself can be confirmed independently and the backup may never&lt;br/&gt;&amp;gt;&amp;gt; confirm. If you create a vault and lose the ephemeral signatures, the funds&lt;br/&gt;&amp;gt;&amp;gt; will be lost.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; This use case for the annex has been labeled &amp;#39;speculative&amp;#39; elsewhere. To&lt;br/&gt;&amp;gt;&amp;gt; me, every use case appears speculative at this point because the annex&lt;br/&gt;&amp;gt;&amp;gt; isn&amp;#39;t available. However, if you believe that time-locked vaults are&lt;br/&gt;&amp;gt;&amp;gt; important for Bitcoin and also acknowledge that soft forks, such as the one&lt;br/&gt;&amp;gt;&amp;gt; required for OP_VAULT, aren&amp;#39;t easy to implement, I&amp;#39;d argue that the&lt;br/&gt;&amp;gt;&amp;gt; intermediate solution described above is very relevant.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; To support this use case of the taproot annex, I&amp;#39;ve create a simple demo&lt;br/&gt;&amp;gt; application here: &lt;a href=&#34;https://github.com/joostjager/annex-covenants&#34;&gt;https://github.com/joostjager/annex-covenants&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This demo shows how a coin can be spent to a special address from which it&lt;br/&gt;&amp;gt; can - at a later stage - only move to a pre-defined final destination. It&lt;br/&gt;&amp;gt; makes use of the annex to store the ephemeral signature for the presigned&lt;br/&gt;&amp;gt; transaction so that the coin cannot get lost. This is assuming that nodes&lt;br/&gt;&amp;gt; do not prune witness data en masse and also that the destination address&lt;br/&gt;&amp;gt; itself is known.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The application may not be the most practically useful, but more advanced&lt;br/&gt;&amp;gt; covenants such as time-locked vaults can be implemented similarly.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Hopefully this further raises awareness of the on-chain ephemeral&lt;br/&gt;&amp;gt; signature backup functionality that the annex uniquely enables.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Joost&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230704/ecfe6628/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230704/ecfe6628/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-07-04T22:46:05Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqstxnxs9datmsr2t3x5u9h53q0qnz0s8fzd0w58wy7ela6c8963u5szypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zxznl0z</id>
    
      <title type="html">📅 Original date posted:2023-06-30 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqstxnxs9datmsr2t3x5u9h53q0qnz0s8fzd0w58wy7ela6c8963u5szypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zxznl0z" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs25uwqw9tlrt0akx85kmlurp5cyaytjnhj3vrnvrfapvllul2ll6c3xvkth&#39;&gt;nevent1q…vkth&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-06-30&lt;br/&gt;🗒️ Summary of this message: The text discusses the concept of a bulletin board operator relaying orders in a market structure. It suggests that if the operator can generate outsized profits, competitors may enter the market. It also mentions the idea of tiered services and compares execution quality between operators.&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Chris,&lt;br/&gt;&lt;br/&gt;Thanks for the review and sorry for the late answer here.&lt;br/&gt;&lt;br/&gt;&amp;gt; To summarize, assume we have Mary the Maker, Terry the Taker, and Bob the&lt;br/&gt;bulletin board operator&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1. Mary the Maker publishes a limit order to buy a derivative&lt;br/&gt;&amp;gt; 2. Bob the bulletin board operator has the option to execute against&lt;br/&gt;Mary&amp;#39;s order&lt;br/&gt;&amp;gt; 3. If Bob doesn&amp;#39;t want to execute against the order, he relays the order&lt;br/&gt;to Terry the Taker (and other subscribers to Bob&amp;#39;s market)&lt;br/&gt;&amp;gt; 4. Terry has the option to execute a trade against Mary&amp;#39;s limit order&lt;br/&gt;&amp;gt; 5. If Terry decides not to execute, Mary&amp;#39;s order sits on the bulletin&lt;br/&gt;board.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I personally don&amp;#39;t think this is that big of a concern, if Bob can&lt;br/&gt;collect outsized profits from his trusted position as the bulletin board&lt;br/&gt;operator, Terry will eventually move to other markets because Bob is&lt;br/&gt;&amp;gt; only relaying what Bob perceives to be unprofitable orders.&lt;br/&gt;&lt;br/&gt;Yes this is somehow a design assumption of the CivKit architecture, to keep&lt;br/&gt;the migration cost low from a bulletin board to another one, if all the&lt;br/&gt;orders are executed by the &amp;#34;house&amp;#34; based on privileged &amp;#34;market-making&amp;#34;&lt;br/&gt;liquidity, and the outsized profits makes it interesting for another&lt;br/&gt;incumbent to enter into the market, you will spawn competing bulletin&lt;br/&gt;boards showing up.&lt;br/&gt;&lt;br/&gt;Note, Terry the maker client might be okay to follow and pay the premium&lt;br/&gt;for access to a market board, if the board has a very consistent policy&lt;br/&gt;protecting against &amp;#34;bad&amp;#34; order wasting timevalue of Terry&amp;#39;s liquidity.&lt;br/&gt;&lt;br/&gt;&amp;gt; From the perspective of Mary, she is happy. Her order got executed at the&lt;br/&gt;price she specified. Terry is the one that loses here. This model ends up&lt;br/&gt;looking much more like a brokerage rather than an&lt;br/&gt;&amp;gt; exchange market structure. Terry should open up his own brokerage&lt;br/&gt;(bulletin board) and compete on quoting prices with Bob.&lt;br/&gt;&lt;br/&gt;Yes, I think this is very expected that you might have tiered services&lt;br/&gt;where you have a market bulletin board specialized in processing&lt;br/&gt;large-scale volume of data (with high-guarantees of fault-tolerance) and&lt;br/&gt;another hand &amp;#34;brokers&amp;#34; which have more content aggregators. The brokerage&lt;br/&gt;service will be harder to &amp;#34;trust-minimized&amp;#34;, unless somehow all the Bobs&lt;br/&gt;are publishing their quoting prices in real-time.&lt;br/&gt;&lt;br/&gt;&amp;gt; Bob and Terry can then be compared on metrics like execution quality&lt;br/&gt;&amp;lt;&lt;a href=&#34;https://clearingcustody.fidelity.com/trade-execution-quality&amp;gt&#34;&gt;https://clearingcustody.fidelity.com/trade-execution-quality&amp;gt&lt;/a&gt;;, which then&lt;br/&gt;draws more market activity since they are providing better prices.&lt;br/&gt;&lt;br/&gt;Yes, I think this is more or less the type of &amp;#34;board monitoring&amp;#34; algorithms&lt;br/&gt;suggested in section 5 &amp;#34;orderbook risks&amp;#34;, though the scoring criterias are&lt;br/&gt;not presented like for the Fidelity definition of quality (i.e price&lt;br/&gt;improvement, execution price, execution speed, effective spread).&lt;br/&gt;&lt;br/&gt;One can expect to have this running as a &amp;#34;watchtower&amp;#34; like we have under&lt;br/&gt;deployment for Lightning clients with fluctuating levels of flappyness.&lt;br/&gt;&lt;br/&gt;&amp;gt; This. Frontrunning is a good problem to have, that means your market has&lt;br/&gt;active participants and liquidity. Finding what products people are&lt;br/&gt;interested in trading, and giving them a good user experience &amp;gt; is more&lt;br/&gt;important. Everything else will fall in line after that.&lt;br/&gt;&lt;br/&gt;While the first approach is the one more described in the CivKit paper,&lt;br/&gt;from the history of peer-to-peer systems bootstrap, relying on social&lt;br/&gt;assumptions like the over-the-counter ones might be more prolific. It might&lt;br/&gt;also be a better user experience when people are exchanging cash versus&lt;br/&gt;satoshis on the ground, or any other physical goods.&lt;br/&gt;&lt;br/&gt;Ideally, if the offers data structures and the reputation framework common&lt;br/&gt;between both OTC and &amp;#34;public boards&amp;#34; you might have traffic flows&lt;br/&gt;circulating between both, and users will pick up the trading approach that&lt;br/&gt;fits more the type of trades they wish to engage into. Compatibility of the&lt;br/&gt;key-material for the clients between the different contexts sounds to&lt;br/&gt;matter for smooth bootstrap too.&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;Le mar. 9 mai 2023 à 16:09, Chris Stewart &amp;lt;chris at suredbits.com&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; &amp;gt;In traditional finance, front-running is defined as &amp;#34;entering into an&lt;br/&gt;&amp;gt; equity trade, options or future contracts with advance knowledge of a block&lt;br/&gt;&amp;gt; transaction that will influence the price of the underlying security to&lt;br/&gt;&amp;gt; capitlize on the trade&amp;#34; [0]. In Bitcoin/Civkit parlance, a front-running&lt;br/&gt;&amp;gt; could be a board on the discovery of a batch of market offers increasing&lt;br/&gt;&amp;gt; liquidity for a fiat-2-btc pair, seizing the opportunity by forwarding a&lt;br/&gt;&amp;gt; HTLC across a Lightning payment path to enter into the trade, before&lt;br/&gt;&amp;gt; publishing the offer on its board.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; To summarize, assume we have Mary the Maker, Terry the Taker, and Bob the&lt;br/&gt;&amp;gt; bulletin board operator&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1. Mary the Maker publishes a limit order to buy a derivative&lt;br/&gt;&amp;gt; 2. Bob the bulletin board operator has the option to execute against&lt;br/&gt;&amp;gt; Mary&amp;#39;s order&lt;br/&gt;&amp;gt; 3. If Bob doesn&amp;#39;t want to execute against the order, he relays the order&lt;br/&gt;&amp;gt; to Terry the Taker (and other subscribers to Bob&amp;#39;s market)&lt;br/&gt;&amp;gt; 4. Terry has the option to execute a trade against Mary&amp;#39;s limit order&lt;br/&gt;&amp;gt; 5. If Terry decides not to execute, Mary&amp;#39;s order sits on the bulletin&lt;br/&gt;&amp;gt; board.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I personally don&amp;#39;t think this is that big of a concern, if Bob can collect&lt;br/&gt;&amp;gt; outsized profits from his trusted position as the bulletin board operator,&lt;br/&gt;&amp;gt; Terry will eventually move to other markets because Bob is only relaying&lt;br/&gt;&amp;gt; what Bob perceives to be unprofitable orders.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; From the perspective of Mary, she is happy. Her order got executed at the&lt;br/&gt;&amp;gt; price she specified. Terry is the one that loses here. This model ends up&lt;br/&gt;&amp;gt; looking much more like a brokerage rather than an exchange market&lt;br/&gt;&amp;gt; structure. Terry should open up his own brokerage (bulletin board) and&lt;br/&gt;&amp;gt; compete on quoting prices with Bob.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Bob and Terry can then be compared on metrics like execution quality&lt;br/&gt;&amp;gt; &amp;lt;&lt;a href=&#34;https://clearingcustody.fidelity.com/trade-execution-quality&amp;gt&#34;&gt;https://clearingcustody.fidelity.com/trade-execution-quality&amp;gt&lt;/a&gt;;, which&lt;br/&gt;&amp;gt; then draws more market activity since they are providing better prices.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;Somehow mass front-running on the board is a &amp;#34;champagne&amp;#34; issue I&amp;#39;ll be&lt;br/&gt;&amp;gt; happy to have.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This. Frontrunning is a good problem to have, that means your market has&lt;br/&gt;&amp;gt; active participants and liquidity. Finding what products people are&lt;br/&gt;&amp;gt; interested in trading, and giving them a good user experience is more&lt;br/&gt;&amp;gt; important. Everything else will fall in line after that.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Mon, May 1, 2023 at 1:06 PM Antoine Riard via bitcoin-dev &amp;lt;&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Hi all,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; One of the most relevant feedback I received on the paper publication was the lack of underscoring front-running resistance as a fundamental property wished for a peer-to-peer marketplace.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; It is expected the level of front-running resistance aimed by the market participants to be heavily functioned by the types of trades considered: fiat currencies, real goods, services. For some classes of goods, e.g commodities one cannot expect the same level of item liquidity due to cycle of production and exogenous factors like weather. Some types of trades marketplaces might be exposed to far less front-running risks and rather would have to deal with accurate risk modelling of the underlying goods. E.g attest there is a decentralized identifier or any other linkage proof of the physical good existence staying valid for the duration of offer lifetime. Offers conditions themselves might be far more verbose and precise special Bitcoin Script paths to morph the shipment risks.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; On the other hand, the types of trades like fiat currencies or bitcoin financial contracts (e.g discreet log contracts or submarine swaps), front-running risk by the bulletin board sounds a qualified concern. In traditional finance, front-running is defined as &amp;#34;entering into an equity trade, options or future contracts with advance knowledge of a block transaction that will influence the price of the underlying security to capitlize on the trade&amp;#34; [0]. In Bitcoin/Civkit parlance, a front-running could be a board on the discovery of a batch of market offers increasing liquidity for a fiat-2-btc pair, seizing the opportunity by forwarding a HTLC across a Lightning payment path to enter into the trade, before publishing the offer on its board.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I think you have at least two security paradigms to mitigate front-running happening peer-to-peer marketplace. The first one is to duplicate the announcement of the offers to a number of concurrent board operated by independent identities and in parallel monitor the latency. Latency anomalies should be spotted on by watchtower-like infrastructure at the service of makers/takers and in case of repeated anomalies a maker should disqualify the misbehaving board from future announcements. As all statistical mitigation it is not perfect and open the way to some margin of exploitation by the boards, as the watchtower monitoring frequency can be guessed. Additionally, this latency monitoring paradigm sounds to be valid under the assumption that at least one board is &amp;#34;honest&amp;#34; and board might have a holistic interest to silently collude. Running or accessing monitoring infrastructure comes with a new liveliness requirement or additional cost for mobile clients.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Another paradigm can be to run the bulletin boards as a federation e.g under Honey Badger BFT as used by Fedimint [1]. The incoming board offers become consensus items that must be announced to all the federations members onion gateway and which are not announced before a consensus proposal has been adopted. The e-cash tokens can be rather Bitcoin-paid credentials required by the board federation for publication. The federation members earn an income as a group to follow the consensus rules and be paid only when there is &amp;#34;consensus&amp;#34; publication. The federation could adopt some &amp;#34;DynFed&amp;#34; techniques to extend the federation set [2]. One can imagine a federation consisting of all the significant market participants, leveling the field for all.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Is there another security paradigm direction to mitigate front-running and other asymmetries of information ? I can&amp;#39;t immediately imagine more though I believe it stays an interesting open question.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; In fine, the Civkit proposes a flexible framework for peer-to-peer marketplace, where propagation latency monitoring and federation set and rules can be tweaked as &amp;#34;front-running resistance&amp;#34; parameters, adapting to the types of trades and market participants tolerance. Configuration of those parameters will at the end be function of real-world deployments. Somehow mass front-running on the board is a &amp;#34;champagne&amp;#34; issue  I&amp;#39;ll be happy to have.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Best,&lt;br/&gt;&amp;gt;&amp;gt; Antoine&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; [0] &lt;a href=&#34;https://www.finra.org/investors/insights/getting-speed-high-frequency-trading&#34;&gt;https://www.finra.org/investors/insights/getting-speed-high-frequency-trading&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; [1] &lt;a href=&#34;https://fedimint.org/docs/CommonTerms/HBBFTConsensus&#34;&gt;https://fedimint.org/docs/CommonTerms/HBBFTConsensus&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; [2] &lt;a href=&#34;https://blockstream.com/assets/downloads/pdf/liquid-whitepaper.pdf&#34;&gt;https://blockstream.com/assets/downloads/pdf/liquid-whitepaper.pdf&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Le jeu. 13 avr. 2023 à 15:10, Antoine Riard &amp;lt;antoine.riard at gmail.com&amp;gt; a&lt;br/&gt;&amp;gt;&amp;gt; écrit :&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Hi list,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; We have been working since a while with Nicholas Gregory (Commerce&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Block), Ray Youssef (the Built With Bitcoin foundation) and few others on a&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; new peer-to-peer market system to enable censorship-resistant and&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; permissionless global trading in all parts of the world. While the design&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; aims in priority to serve on-ramp/off-ramp trading, it can be extended to&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; support any kind of trading: goods, services, bitcoin financial derivatives&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; like discreet log contracts.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; The design combines the Nostr architecture of simple relays announcing&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; trade orders to their clients with Lightning onion routing infrastructure,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; therefore granting high-level of confidentiality to the market&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; participants. The market boards are Nostr relays with a Lightning gateway,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; each operating autonomously and in competition. The market boards can be&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; runned as a federation however there is no &amp;#34;decentralized orderbook&amp;#34; logged&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; into the blockchain. The trades are escrowed under Bitcoin Script&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; contracts, relying on moderations and know your peer oracles for&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; adjudication.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; The scoring of trades, counterparties and services operators should be&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; enabled by the introduction of a Web-of-Stakes, assembled from previous&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; ideas [0]. From the Bitcoin UTXO set servicing as a trustless source of&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; truth, an economic weight can be assigned to each market entity. This&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; reputation paradigm could be composed with state-of-the-art Web-of-Trust&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; techniques like decentralized identifiers [1].&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; A consistent incentive framework for service operators is proposed by&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; the intermediary of privacy-preserving credentials backed by Bitcoin&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; payments, following the lineaments of IETF&amp;#39;s Privacy Pass [2]. Services&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; operators like market boards and oracles are incentivized to thrive for&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; efficiency, akin to routing hops on Lightning and miners on the base layer.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; The whitepaper goes deep in the architecture of the system [3] (Thanks&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; to the peer reviewers!).&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; We&amp;#39;ll gradually release code and modules, extensively building on top of&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; the Lightning Dev Kit [4] and Nostr libraries. All according to the best&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Bitcoin open-source and decentralized standards established by Bitcoin Core&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; and we&amp;#39;re looking forward to collaborating with everyone in the community&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; to standardize libraries and guarantee interoperability between clients&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; with long-term thinking.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Feedback is very welcome!&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Nick, Ray and Antoine&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; [0]&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-November/002884.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-November/002884.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; [1] &lt;a href=&#34;https://www.w3.org/TR/2022/REC-did-core-20220719/&#34;&gt;https://www.w3.org/TR/2022/REC-did-core-20220719/&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; [2] &lt;a href=&#34;https://privacypass.github.io&#34;&gt;https://privacypass.github.io&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; [3] &lt;a href=&#34;https://github.com/civkit/paper/blob/main/civ_kit_paper.pdf&#34;&gt;https://github.com/civkit/paper/blob/main/civ_kit_paper.pdf&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; [4] &lt;a href=&#34;https://lightningdevkit.org&#34;&gt;https://lightningdevkit.org&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230630/863f1023/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230630/863f1023/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-07-01T12:15:29Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsxfmw0wfnfr55j3pvlfe8kahsfad9767tyr0hfmm5hf8syr3fefjgzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zl665hr</id>
    
      <title type="html">📅 Original date posted:2023-06-27 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsxfmw0wfnfr55j3pvlfe8kahsfad9767tyr0hfmm5hf8syr3fefjgzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zl665hr" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsvmjrzz9mm4gyepad44pnvfswkrg34jex3uexhcasa5xck75x4wjg33y599&#39;&gt;nevent1q…y599&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-06-27&lt;br/&gt;🗒️ Summary of this message: Different communities across Africa, such as Qala Africa and BitDevs, organize local meetups focused on Bitcoin and the lightning network. It is suggested to connect with these communities to plan the LN Summit 2024.&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Bernard and nully0x&lt;br/&gt;&lt;br/&gt;&amp;gt; To note, different community across Africa organises local meetups&lt;br/&gt;focused on technical session around Bitcoin and lightning network for&lt;br/&gt;example Qala Africa and a couple of BitDevs community across a couple of&lt;br/&gt;East and West African countries.&lt;br/&gt;&amp;gt; It will be a good step to connect with these communities first to&lt;br/&gt;bootstrap planning.&lt;br/&gt;&lt;br/&gt;Yes, one of the good steps is to survey all active Bitcoin communities in&lt;br/&gt;Africa during the coming weeks that could be interested in hosting the&lt;br/&gt;events.&lt;br/&gt;&lt;br/&gt;I&amp;#39;m thinking to have this list of countries to survey first&lt;br/&gt;(non-exhaustive, just already few connections for some and all English or&lt;br/&gt;French speaking):&lt;br/&gt;- Algeria&lt;br/&gt;- Cameroon&lt;br/&gt;- Ghana&lt;br/&gt;- Nigeria&lt;br/&gt;- Rwanda&lt;br/&gt;- Senegal&lt;br/&gt;- South Africa&lt;br/&gt;- Togo&lt;br/&gt;- Uganda&lt;br/&gt;&lt;br/&gt;Of course, once we have feedback, the step will be to survey privately&lt;br/&gt;senior Lightning devs to see if there is no issue with potential visa&lt;br/&gt;troubles and what country can gather consensus.&lt;br/&gt;&lt;br/&gt;Answered privately to nully0x&amp;#39;s mail.&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;Le lun. 26 juin 2023 à 17:10, nully0x--- via Lightning-dev &amp;lt;&lt;br/&gt;lightning-dev at lists.linuxfoundation.org&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Hello Antoine,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This proposal is a great one coming from the lightning dev community.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; To note, different community across Africa organises local meetups focused&lt;br/&gt;&amp;gt; on technical session around Bitcoin and lightning network for example Qala&lt;br/&gt;&amp;gt; Africa and a couple of BitDevs community across a couple of East and West&lt;br/&gt;&amp;gt; African countries.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It will be a good step to connect with these communities first to&lt;br/&gt;&amp;gt; bootstrap planning.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I will reach out privately.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Great idea here.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers nully0x&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Sent with Proton Mail secure email.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ------- Original Message -------&lt;br/&gt;&amp;gt; On Saturday, June 24th, 2023 at 1:00 PM,&lt;br/&gt;&amp;gt; lightning-dev-request at lists.linuxfoundation.org &amp;lt;&lt;br/&gt;&amp;gt; lightning-dev-request at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Send Lightning-dev mailing list submissions to&lt;br/&gt;&amp;gt; &amp;gt; lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; To subscribe or unsubscribe via the World Wide Web, visit&lt;br/&gt;&amp;gt; &amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt; or, via email, send a message with the subject or body &amp;#39;help&amp;#39; to&lt;br/&gt;&amp;gt; &amp;gt; lightning-dev-request at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; You can reach the person managing the list at&lt;br/&gt;&amp;gt; &amp;gt; lightning-dev-owner at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; When replying, please edit your Subject line so it is more specific&lt;br/&gt;&amp;gt; &amp;gt; than &amp;#34;Re: Contents of Lightning-dev digest...&amp;#34;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Today&amp;#39;s Topics:&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; 1. LN Summit 2024 Organization (Antoine Riard)&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; ----------------------------------------------------------------------&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Message: 1&lt;br/&gt;&amp;gt; &amp;gt; Date: Fri, 23 Jun 2023 10:39:18 &#43;0100&lt;br/&gt;&amp;gt; &amp;gt; From: Antoine Riard antoine.riard at gmail.com&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; To: &amp;#34;lightning-dev\\\\@lists.linuxfoundation.org&amp;#34;&lt;br/&gt;&amp;gt; &amp;gt; lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Subject: [Lightning-dev] LN Summit 2024 Organization&lt;br/&gt;&amp;gt; &amp;gt; Message-ID:&lt;br/&gt;&amp;gt; &amp;gt; CALZpt&#43;Hev9Z2ZXanCeqiG_g5q-xuhP_CYCv=G5wW2F&#43;7Kqb2wg at mail.gmail.com&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Content-Type: text/plain; charset=&amp;#34;utf-8&amp;#34;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Hi lightning devs,&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Proposing myself to organize next year&amp;#39;s LN Summit in Africa, with a&lt;br/&gt;&amp;gt; rough&lt;br/&gt;&amp;gt; &amp;gt; date somewhere in June 2024.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; There are a lot of reasons to hold a summit there. Africa is a beautiful&lt;br/&gt;&amp;gt; &amp;gt; continent, there is a rich cultural and historical past, a lot of&lt;br/&gt;&amp;gt; &amp;gt; fragmentation in the financial systems of the 56 states that can be&lt;br/&gt;&amp;gt; solved&lt;br/&gt;&amp;gt; &amp;gt; with a compatible payment protocol, an explosive demography with a lot of&lt;br/&gt;&amp;gt; &amp;gt; energy to get things done, more and more Lightning developers coming from&lt;br/&gt;&amp;gt; &amp;gt; this continent and formidable perspectives to grow &amp;#34;full-stack&amp;#34; local&lt;br/&gt;&amp;gt; &amp;gt; Lightning economies.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Usually, we don&amp;#39;t announce the organization of CoreDev or LN Summit on&lt;br/&gt;&amp;gt; open&lt;br/&gt;&amp;gt; &amp;gt; communication channels, as there is a goal of serenity of the engineering&lt;br/&gt;&amp;gt; &amp;gt; conversation (and as we would like to avoid being trolled by BSV fans or&lt;br/&gt;&amp;gt; &amp;gt; tabloid-style of journalism). For this time, given the operational&lt;br/&gt;&amp;gt; &amp;gt; challenges can be a bit more complex (e.g visas travels, &amp;#34;tropical&lt;br/&gt;&amp;gt; &amp;gt; weather&amp;#34;), better to have this announced far ahead [0]. Operations and&lt;br/&gt;&amp;gt; &amp;gt; financial resources should be okay, though nice if we have a&lt;br/&gt;&amp;gt; &amp;gt; multi-stakeholder approach, &amp;#34;skin in the game&amp;#34; from a bunch of folks is&lt;br/&gt;&amp;gt; the&lt;br/&gt;&amp;gt; &amp;gt; best way to guarantee fairness and transparency of the process.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; If you have any objection to my personna contribution to the organization&lt;br/&gt;&amp;gt; &amp;gt; of the LN Summit 2024, thanks for letting me know during the coming&lt;br/&gt;&amp;gt; weeks,&lt;br/&gt;&amp;gt; &amp;gt; either in public or on this thread, or privately by mail. As usual, I&amp;#39;ll&lt;br/&gt;&amp;gt; do&lt;br/&gt;&amp;gt; &amp;gt; my best to set strong transparency and accountability standards. In&lt;br/&gt;&amp;gt; matters&lt;br/&gt;&amp;gt; &amp;gt; of open-source, talk is cheap, better to speak by your actions.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; With any project, the best advice is always to start small, so the first&lt;br/&gt;&amp;gt; &amp;gt; step sounds to be to survey all the countries with reasonable operational&lt;br/&gt;&amp;gt; &amp;gt; stability that can fit the location (Algeria, Ghana, Senegal, Nigeria,&lt;br/&gt;&amp;gt; &amp;gt; etc). I&amp;#39;ll look into it and share the feedback privately to the Lightning&lt;br/&gt;&amp;gt; &amp;gt; attendees (based on neutral and technical proof of works heuristics),&lt;br/&gt;&amp;gt; &amp;gt; somewhere at the end of the summer.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Setted up a dedicated communication endpoint for this:&lt;br/&gt;&amp;gt; &amp;gt; lnsummit2024 at ariard.me&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; If you&amp;#39;re a LN dev, don&amp;#39;t hesitate to reach out if you wanna to be part&lt;br/&gt;&amp;gt; of&lt;br/&gt;&amp;gt; &amp;gt; the organization, this is a good opportunity to transfer knowledge&lt;br/&gt;&amp;gt; between&lt;br/&gt;&amp;gt; &amp;gt; generations of contributors.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Cheers,&lt;br/&gt;&amp;gt; &amp;gt; Antoine&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; [0] Already co-organized the CoreDev event in Zurich back in 2021 so I do&lt;br/&gt;&amp;gt; &amp;gt; have already the operational templates.&lt;br/&gt;&amp;gt; &amp;gt; -------------- next part --------------&lt;br/&gt;&amp;gt; &amp;gt; An HTML attachment was scrubbed...&lt;br/&gt;&amp;gt; &amp;gt; URL:&lt;br/&gt;&amp;gt; &lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230623/7469a241/attachment-0001.html&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230623/7469a241/attachment-0001.html&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; ------------------------------&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Subject: Digest Footer&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; &amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; &amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; ------------------------------&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; End of Lightning-dev Digest, Vol 94, Issue 17&lt;br/&gt;&amp;gt; &amp;gt; *********************************************&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230628/cfb5eb75/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230628/cfb5eb75/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-29T16:47:02Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsqgt75tpawrqmz48wq8f0u7l5dguhewgma0hlejcqk23rakqgun4qzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zpvrath</id>
    
      <title type="html">📅 Original date posted:2023-06-23 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsqgt75tpawrqmz48wq8f0u7l5dguhewgma0hlejcqk23rakqgun4qzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zpvrath" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsphj8jd2fdpdjqdrxzun9tmwp408quw8pe8kx55x6mc2nma5tl39qhnrdrr&#39;&gt;nevent1q…rdrr&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-06-23&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi lightning devs,&lt;br/&gt;&lt;br/&gt;Proposing myself to organize next year&amp;#39;s LN Summit in Africa, with a rough&lt;br/&gt;date somewhere in June 2024.&lt;br/&gt;&lt;br/&gt;There are a lot of reasons to hold a summit there. Africa is a beautiful&lt;br/&gt;continent, there is a rich cultural and historical past, a lot of&lt;br/&gt;fragmentation in the financial systems of the 56 states that can be solved&lt;br/&gt;with a compatible payment protocol, an explosive demography with a lot of&lt;br/&gt;energy to get things done, more and more Lightning developers coming from&lt;br/&gt;this continent and formidable perspectives to grow &amp;#34;full-stack&amp;#34; local&lt;br/&gt;Lightning economies.&lt;br/&gt;&lt;br/&gt;Usually, we don&amp;#39;t announce the organization of CoreDev or LN Summit on open&lt;br/&gt;communication channels, as there is a goal of serenity of the engineering&lt;br/&gt;conversation (and as we would like to avoid being trolled by BSV fans or&lt;br/&gt;tabloid-style of journalism). For this time, given the operational&lt;br/&gt;challenges can be a bit more complex (e.g visas travels, &amp;#34;tropical&lt;br/&gt;weather&amp;#34;), better to have this announced far ahead [0]. Operations and&lt;br/&gt;financial resources should be okay, though nice if we have a&lt;br/&gt;multi-stakeholder approach, &amp;#34;skin in the game&amp;#34; from a bunch of folks is the&lt;br/&gt;best way to guarantee fairness and transparency of the process.&lt;br/&gt;&lt;br/&gt;If you have any objection to my personna contribution to the organization&lt;br/&gt;of the LN Summit 2024, thanks for letting me know during the coming weeks,&lt;br/&gt;either in public or on this thread, or privately by mail. As usual, I&amp;#39;ll do&lt;br/&gt;my best to set strong transparency and accountability standards. In matters&lt;br/&gt;of open-source, talk is cheap, better to speak by your actions.&lt;br/&gt;&lt;br/&gt;With any project, the best advice is always to start small, so the first&lt;br/&gt;step sounds to be to survey all the countries with reasonable operational&lt;br/&gt;stability that can fit the location (Algeria, Ghana, Senegal, Nigeria,&lt;br/&gt;etc). I&amp;#39;ll look into it and share the feedback privately to the Lightning&lt;br/&gt;attendees (based on neutral and technical proof of works heuristics),&lt;br/&gt;somewhere at the end of the summer.&lt;br/&gt;&lt;br/&gt;Setted up a dedicated communication endpoint for this:&lt;br/&gt;lnsummit2024 at ariard.me&lt;br/&gt;&lt;br/&gt;If you&amp;#39;re a LN dev, don&amp;#39;t hesitate to reach out if you wanna to be part of&lt;br/&gt;the organization, this is a good opportunity to transfer knowledge between&lt;br/&gt;generations of contributors.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;[0] Already co-organized the CoreDev event in Zurich back in 2021 so I do&lt;br/&gt;have already the operational templates.&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230623/7469a241/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230623/7469a241/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-23T13:42:33Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsg8lgljg2qugukd0qg4fkcftseenqkc2lj7vpezutahh5e83wwrcqzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zvn8tjj</id>
    
      <title type="html">📅 Original date posted:2023-06-21 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsg8lgljg2qugukd0qg4fkcftseenqkc2lj7vpezutahh5e83wwrcqzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zvn8tjj" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsqezj5st359sdqna04hyhzmjsu3dwvdajh4dzq85gwu0dt9jckvfgrt24k9&#39;&gt;nevent1q…24k9&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-06-21&lt;br/&gt;🗒️ Summary of this message: CivKit Node, a Nostr relay with peer-to-peer market board features, has been released. The CLI-only release is written in Rust and has basic NIP 01 support.&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Bitcoin Devs,&lt;br/&gt;&lt;br/&gt;Proud to announce the first release of CivKit Node, a basic Nostr relay&lt;br/&gt;with additional features to have a functional peer-to-peer market board,&lt;br/&gt;written in Rust [0]. This is a very raw release as since we published the&lt;br/&gt;paper back in April, we&amp;#39;ve been reached out by a bunch of folks asking how&lt;br/&gt;they could contribute by code, or start to integrate CivKit in their Nostr&lt;br/&gt;and Lightning peer-to-peer market clients [1].&lt;br/&gt;&lt;br/&gt;Current release is CLI-only, just implementing basic NIP 01 support and is&lt;br/&gt;full of bugs and todos, has not been tested on a lot of platforms and still&lt;br/&gt;works as a local host for a lot of things [2]. There is a sample Nostr&lt;br/&gt;client binary joined for deployment and testing purposes and an utility&lt;br/&gt;binary to manage the node with a gRPC interface. Such an interface should&lt;br/&gt;lay the groundwork to build one or more GUI applications on top, as it&amp;#39;s a&lt;br/&gt;recurring and consistent request from the community.&lt;br/&gt;&lt;br/&gt;There is an experimental integration with BOLT8 Noise transport (thanks to&lt;br/&gt;LDK), where one can connect to another CivKit Node has a peer, Idea is to&lt;br/&gt;unify the communication infrastructure between Nostr and Lightning, and as&lt;br/&gt;such have a single market of p2p service providers (watchtower, state&lt;br/&gt;backup, boards) benefiting from network law effect. Beyond sharing all the&lt;br/&gt;work between Lightning and Nostr ecosystem in terms of spamming&lt;br/&gt;mitigations, careful crypto engineering (e.g onion routing) and&lt;br/&gt;privacy-preserving monetary credentials [3].&lt;br/&gt;&lt;br/&gt;With this released out, I think we&amp;#39;ll go for sound onion routing support,&lt;br/&gt;BOLT12 offers, the set of fundamental NIPs like NIP-09, NIP-16, NIP-33 and&lt;br/&gt;others, and integration with a notary protocol (e.g Mainstay). Still, we&lt;br/&gt;would like to listen to our users and we&amp;#39;ll plumber features in the&lt;br/&gt;function of relevant feedback collected from the community. One key lesson&lt;br/&gt;from years contributing on LDK, we do not want to stay in a &amp;#34;purist&lt;br/&gt;developer&amp;#34; ivory tower to avoid hard-to-integrate APIs, and make the&lt;br/&gt;&amp;#34;product management&amp;#34; of the project owned by the community to ensure we&amp;#39;re&lt;br/&gt;building for the real-world of unstable and constrained mobile clients.&lt;br/&gt;&lt;br/&gt;Once we have communication infrastructure and hopefully credentials&lt;br/&gt;framework working, I think we&amp;#39;ll start to have more serious development of&lt;br/&gt;the CivKit functionaries services themselves (e.g market bulletin boards,&lt;br/&gt;rank proof servers and moderation oracles in the paper parlance). Though&lt;br/&gt;again, if folks want to start more custom services on top of CivKit Node,&lt;br/&gt;we&amp;#39;ll see what we can do, there is a brave new world to explore with Nostr&lt;br/&gt;and Lightning maturation.&lt;br/&gt;&lt;br/&gt;For the historical note, peer-to-peer market features were present in&lt;br/&gt;Bitcoin Core circa 2010 (in fact before the ref client was dubbed Core).&lt;br/&gt;Those features were removed by commit 5253d1ab &amp;#34;strip out unfinished&lt;br/&gt;product, review and market stuff&amp;#34; by Satoshi [4]. Retrospectively, it was a&lt;br/&gt;good insight as Core has evolved as a complex beast enough and careful&lt;br/&gt;layerization is one of the best learning from the 50 years of Internet&lt;br/&gt;history. Still, censorship-resistant and large-scale peer-to-peer markets&lt;br/&gt;sounds still one of the missing blocks of the Bitcoin protocol stack.&lt;br/&gt;&lt;br/&gt;Looking forward to growing the Bitcoin and Lightning internal economies by&lt;br/&gt;an order of magnitude or two with the CivKit Node, if the kharma is with us.&lt;br/&gt;&lt;br/&gt;All works are released under MIT/Apache licenses and we aim to bind to the&lt;br/&gt;best open-source development standards as set by Bitcoin Core and the Linux&lt;br/&gt;kernel communities and we&amp;#39;re welcoming anyone strongly willing to build&lt;br/&gt;with passion and love.&lt;br/&gt;&lt;br/&gt;I think for the future, we&amp;#39;ll do the announcement on its own communication&lt;br/&gt;channel, whatever a new mailing list, or something experimental on top of&lt;br/&gt;Nostr groups, Still, if we innove in terms of cryptography we&amp;#39;re aiming to&lt;br/&gt;have things standardized under BIPs.&lt;br/&gt;&lt;br/&gt;&amp;#34;Sic itur ad astra&amp;#34; -&lt;br/&gt;Block 000000000000000000053fd09a45f48e747f281122021edc2f7e97efcdd66248&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;[0] &lt;a href=&#34;https://github.com/civkit/civkit-node&#34;&gt;https://github.com/civkit/civkit-node&lt;/a&gt;&lt;br/&gt;[1]&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2023-April/021556.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2023-April/021556.html&lt;/a&gt;&lt;br/&gt;[2] Of course, there are gazillins of things to implement, please open an&lt;br/&gt;issue on the repository directly rather to yell something doesn&amp;#39;t work.&lt;br/&gt;[3]&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2023-May/003964.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2023-May/003964.html&lt;/a&gt;&lt;br/&gt;[4] &lt;a href=&#34;https://github.com/bitcoin/bitcoin/commit/5253d1ab&#34;&gt;https://github.com/bitcoin/bitcoin/commit/5253d1ab&lt;/a&gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230621/7e720924/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230621/7e720924/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-21T09:18:57Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqs9ctjesskec6ee2432hy9hgh75s9mn9928hav33ghhwwharv876vszypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zrh8zlr</id>
    
      <title type="html">📅 Original date posted:2023-06-19 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqs9ctjesskec6ee2432hy9hgh75s9mn9928hav33ghhwwharv876vszypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zrh8zlr" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsgl4dn7fxa3n4udeg965dus9zr5gay80xhrwtvw698nkxdaymnzfglm0atv&#39;&gt;nevent1q…0atv&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-06-19&lt;br/&gt;🗒️ Summary of this message: LNbits discovered an exploit allowing attackers to create balances by abusing a quirk in how invoices are handled internally, which may affect other Lightning applications. A patch has been released.&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi calle,&lt;br/&gt;&lt;br/&gt;Thanks for the report.&lt;br/&gt;&lt;br/&gt;&amp;gt;From my understanding of what you&amp;#39;re describing, the attack is possible&lt;br/&gt;because LNBits backend does not check that an external received HTLC&lt;br/&gt;`amount_msat` satisfies the invoice amount for both matching preimage and&lt;br/&gt;payment secret. This sounds plausible to me.&lt;br/&gt;&lt;br/&gt;If you&amp;#39;re a custodial wallet, payment processor or account management&lt;br/&gt;software based on LDK, and you respect the API recommendations of using&lt;br/&gt;`create_inbound_payment`, you should not be affected as amount equivalence&lt;br/&gt;checks are handled by the implementation:&lt;br/&gt;&lt;a href=&#34;https://github.com/lightningdevkit/rust-lightning/blob/c3c105075aeb8128699e043f777b4c89c452e54d/lightning/src/ln/channelmanager.rs#L4469&#34;&gt;https://github.com/lightningdevkit/rust-lightning/blob/c3c105075aeb8128699e043f777b4c89c452e54d/lightning/src/ln/channelmanager.rs#L4469&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;The &amp;#34;checking ids&amp;#34; sounds a workable mitigation to firewall internal&lt;br/&gt;invoice state from external ones, though beware issues with id collision,&lt;br/&gt;if it can be determined by the attacker.&lt;br/&gt;&lt;br/&gt;Potential safety issues with invoices have been known since CVE-2020-26896.&lt;br/&gt;&lt;br/&gt;Good disclosure security practice suggests having previously warned the&lt;br/&gt;Lightning implementation maintainers on their respective security&lt;br/&gt;communication channels to ease patch coordination if needed with&lt;br/&gt;second-line vendors like wallets and processors.&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;Le lun. 19 juin 2023 à 17:19, callebtc via Lightning-dev &amp;lt;&lt;br/&gt;lightning-dev at lists.linuxfoundation.org&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Dear list,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; earlier last month, our team at LNbits discovered a rather interesting&lt;br/&gt;&amp;gt; exploit which wich would enable an attacker to create balances out of thin&lt;br/&gt;&amp;gt; air by abusing a quirk in how invoices are handled internally. We&amp;#39;ve&lt;br/&gt;&amp;gt; patched this in LNbits version 0.10.5 and urge anyone to update ASAP if you&lt;br/&gt;&amp;gt; haven&amp;#39;t done so already. I want to describe the attack here, since my gut&lt;br/&gt;&amp;gt; feeling is that carrying out the same exploit is possible in other&lt;br/&gt;&amp;gt; Lightning applications. If you&amp;#39;re working on custodial wallets, payment&lt;br/&gt;&amp;gt; processors, account management software, etc. you probably want to read&lt;br/&gt;&amp;gt; this.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In short, the attacker was able to insert a bolt-11 payment hash of&lt;br/&gt;&amp;gt; payment A into a different payment, creating a malicious invoice B that can&lt;br/&gt;&amp;gt; trick the backend into believing that B == A.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Here is how it goes:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; - Attacker creates invoice A of amount 1000 sat in LNbits&lt;br/&gt;&amp;gt; - Attacker creates invoice B&amp;#39; of amount 1 sat on her own node&lt;br/&gt;&amp;gt; - Attacker deserializes B&amp;#39;, inserts payment_hash(A) into payment_hash(B),&lt;br/&gt;&amp;gt; re-signs the invoice, and serializes it again, producing malicious invoice B&lt;br/&gt;&amp;gt; - Attacker creates a new account in LNbits and pays B&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; - LNbits backend uses payment_hash(B) to check whether this is an internal&lt;br/&gt;&amp;gt; payment or a payment via LN&lt;br/&gt;&amp;gt; - Backend finds A in its database since we implicitly assume that&lt;br/&gt;&amp;gt; payment_hash(A) commits to A&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ** This is the critical part! Payment hashes do *NOT* commit to any&lt;br/&gt;&amp;gt; payment details (like amount) but only to the preimage! **&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; - Backend settles payment internally by crediting A debiting B&lt;br/&gt;&amp;gt; - Attacker has &amp;#34;created&amp;#34; 999 sats&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Mitigation:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The mitigation is quite simple. Backends should either use self-generated&lt;br/&gt;&amp;gt; unique &amp;#34;checking id&amp;#39;s&amp;#34; for looking up internal payments or use additional&lt;br/&gt;&amp;gt; checks to make sure that the invoice details have not been messed around&lt;br/&gt;&amp;gt; with (e.g., asserting amount(A) == amount(B)).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Lessons:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I think there are two lessons here. First, it&amp;#39;s good to realize the level&lt;br/&gt;&amp;gt; of sophistication of LN-savvy attackers. This attack clearly involves a&lt;br/&gt;&amp;gt; fundamental understanding of bolt-11 and requires custom tooling to produce&lt;br/&gt;&amp;gt; the malicious invoice.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The second lesson is more valuable: The &amp;#34;payment hash&amp;#34; of an invoice is&lt;br/&gt;&amp;gt; not a &amp;#34;payment&amp;#34; hash but merely a &amp;#34;preimage&amp;#34; hash – and nothing else.&lt;br/&gt;&amp;gt; Naming this field as such increases the chance of developers implicitly&lt;br/&gt;&amp;gt; assuming that the hash commits to payment details like amount, pubkey, etc.&lt;br/&gt;&amp;gt; I will from now on call this simply the &amp;#34;preimage hash&amp;#34; and invite you to&lt;br/&gt;&amp;gt; do so too.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Best&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Calle&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230619/51635592/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230619/51635592/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-20T11:15:35Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqszx92ncssctttmuzvgmn0uvts6u7tlsj2a04daeefwjgsz3kpa9lqzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zxpzz93</id>
    
      <title type="html">📅 Original date posted:2023-06-18 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqszx92ncssctttmuzvgmn0uvts6u7tlsj2a04daeefwjgsz3kpa9lqzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zxpzz93" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsgj8mpyukxk4394s853ejklxfw9yka0qvzmcuaglh5s4p2t66y7mg40puzq&#39;&gt;nevent1q…puzq&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-06-18&lt;br/&gt;🗒️ Summary of this message: The proposed Taproot upgrade may require Lightning nodes to add an annex and commit to it in the BIP341 signature digest, which could break propagations of their `option_taproot` channel transactions. Additionally, a limit of 256 bytes may be introduced to protect opt-in users. A TLV format and only allowing tlv record 0 may also be implemented for future extensibility.&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi all,&lt;br/&gt;&lt;br/&gt;&amp;gt; * Opt-in annex (every input must commit to an annex even if its is empty)&lt;br/&gt;-&amp;gt; make sure existing multi-party protocols remain unaffected&lt;br/&gt;&lt;br/&gt;By requiring every input to commit to an annex even if it is empty, do you&lt;br/&gt;mean rejecting a transaction where the minimal annex with its 0x50 tag is&lt;br/&gt;absent ?&lt;br/&gt;&lt;br/&gt;If I understand correctly, this would require modifying current Taproot&lt;br/&gt;support on the Lightning-side, where all P2TR spends must add an annex and&lt;br/&gt;commit to it in the BIP341 signature digest. This would be quite a&lt;br/&gt;mandatory upgrade for Lightning nodes, as failure to do so would break&lt;br/&gt;propagations of their `option_taproot` channel transactions.&lt;br/&gt;&lt;br/&gt;&amp;gt; * Limit maximum size of the value to 256 bytes -&amp;gt; protect opt-in users&lt;br/&gt;&lt;br/&gt;There is another approach where the maximum size/weight of the&lt;br/&gt;witness/transaction is introduced as a TLV record itself:&lt;br/&gt;&lt;a href=&#34;https://github.com/bitcoin-inquisition/bitcoin/pull/28&#34;&gt;https://github.com/bitcoin-inquisition/bitcoin/pull/28&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Note this branch also implements the &amp;#34;only allow tlv record 0&amp;#34; with the TLV&lt;br/&gt;format from bips #1381.&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;Le ven. 16 juin 2023 à 14:31, Greg Sanders via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi Joost,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I haven&amp;#39;t thought a ton about the specific TLV format, but that seems like&lt;br/&gt;&amp;gt; a reasonable place to start as it shouldn&amp;#39;t unduly&lt;br/&gt;&amp;gt; impact current users, and is pretty simple from an accounting perspective.&lt;br/&gt;&amp;gt; It also can be further relaxed in the future if we so decide by using max&lt;br/&gt;&amp;gt; tx size policy &amp;#34;hints&amp;#34; in an annex field.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I&amp;#39;ll let others chime in at this point!&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; Greg&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Fri, Jun 16, 2023 at 7:27 AM Joost Jager &amp;lt;joost.jager at gmail.com&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Hi Greg,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; On Thu, Jun 15, 2023 at 12:39 PM Greg Sanders &amp;lt;gsanders87 at gmail.com&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; Would it then still be necessary to restrict the annex to a maximum&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; size?&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; I think it&amp;#39;s worth thinking about to protect the opt-in users, and can&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; also be used for other anti-pinning efforts(though clearly not sufficient&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; by itself for the many many pinning vectors we have :) )&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Thinking about the most restrictive policy that would still enable&lt;br/&gt;&amp;gt;&amp;gt; annex-vaults (which I believe has great potential for improving bitcoin&lt;br/&gt;&amp;gt;&amp;gt; custody) and is in line with work already done, I get to:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; * Opt-in annex (every input must commit to an annex even if its is empty)&lt;br/&gt;&amp;gt;&amp;gt; -&amp;gt; make sure existing multi-party protocols remain unaffected&lt;br/&gt;&amp;gt;&amp;gt; * Tlv format as defined in &lt;a href=&#34;https://github.com/bitcoin/bips/pull/1381&#34;&gt;https://github.com/bitcoin/bips/pull/1381&lt;/a&gt; -&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; future extensibility&lt;br/&gt;&amp;gt;&amp;gt; * Only allow tlv record 0 - unstructured data -&amp;gt; future extensibility&lt;br/&gt;&amp;gt;&amp;gt; * Limit maximum size of the value to 256 bytes -&amp;gt; protect opt-in users&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Unfortunately the limit of 126 bytes in&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://github.com/bitcoin-inquisition/bitcoin/pull/22&#34;&gt;https://github.com/bitcoin-inquisition/bitcoin/pull/22&lt;/a&gt; isn&amp;#39;t sufficient&lt;br/&gt;&amp;gt;&amp;gt; for these types of vaults. If there are two presigned txes (unvault and&lt;br/&gt;&amp;gt;&amp;gt; emergency), those signatures would already take up 2*64=128 bytes. Then you&lt;br/&gt;&amp;gt;&amp;gt; also want to store 32 bytes for the ephemeral key itself as the key can&amp;#39;t&lt;br/&gt;&amp;gt;&amp;gt; be reconstructed from the schnorr signature. The remaining bytes could be&lt;br/&gt;&amp;gt;&amp;gt; used for a third presigned tx and/or additional vault parameters.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Can you think of remaining practical objections to making the annex&lt;br/&gt;&amp;gt;&amp;gt; standard under the conditions listed above?&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Joost&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230618/e80a7213/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230618/e80a7213/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-19T18:19:59Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsfe5hgft3kkgzhga8yq5nwlnywrdmf2wyzy6f0ckfwetw0fza43kszypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zfdz7ln</id>
    
      <title type="html">📅 Original date posted:2023-06-12 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsfe5hgft3kkgzhga8yq5nwlnywrdmf2wyzy6f0ckfwetw0fza43kszypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zfdz7ln" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsd4z0wr8vt9lkqc8nl9kzzd8fmf97ntq5ayrjke4zjh6wl0q4u9zgl5w4fz&#39;&gt;nevent1q…w4fz&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-06-12&lt;br/&gt;🗒️ Summary of this message: The Taproot annex has the advantage of not including its data in the calculation of txid, making it a powerful tool for applications that would use covenants. The proposal to adopt a simple approach to the Taproot annex is to avoid a potentially long standardization process, but a 2 phase process could be considered.&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Joost,&lt;br/&gt;&lt;br/&gt;&amp;gt; However, the primary advantage I see in the annex is that its data isn&amp;#39;t&lt;br/&gt;included in the calculation of the txid or a potential parent commit&lt;br/&gt;transaction&amp;#39;s txid (for inscriptions). I&amp;#39;ve explained this at [1]. This&lt;br/&gt;&amp;gt; feature makes the annex a powerful tool for applications that would&lt;br/&gt;ideally use covenants.&lt;br/&gt;&lt;br/&gt;I share the observation that the annex data not being committed in the&lt;br/&gt;parent txid is very powerful for use-cases that would use covenants. E.g&lt;br/&gt;there could be an alternative design of CoinPool based on Grafroot, where&lt;br/&gt;the signed surrogate scripts authorized withdrawal abilities [0]. Once&lt;br/&gt;consumed the signed surrogate shouldn&amp;#39;t be replayable against the clawback&lt;br/&gt;pool output, and the signature of the surrogate added as &amp;#34;toxic&amp;#34; in a&lt;br/&gt;cryptographic accumulator. Efficient set test membership can be realized to&lt;br/&gt;refuse pool output spend attempts with consumed surrogate scripts.&lt;br/&gt;&lt;br/&gt;The annex is a perfect emplacement to locate such an accumulator in the&lt;br/&gt;future as the state of the accumulator cannot be predicted as pool setup&lt;br/&gt;time and is a function of the effective order withdrawal.&lt;br/&gt;&lt;br/&gt;Note with Taproot-based design, the replay protection is achieved by the&lt;br/&gt;removal from the taproot tree as edited by any contracting primitive during&lt;br/&gt;the withdrawal phase (e.g TLUV).&lt;br/&gt;&lt;br/&gt;&amp;gt; When it comes to the trade-offs associated with various encodings, I&lt;br/&gt;fully acknowledge their existence. The primary motivation behind my&lt;br/&gt;proposal to adopt a simple approach to the Taproot annex is to&lt;br/&gt;&amp;gt; avoid a potentially long standardization process. While I am not entirely&lt;br/&gt;familiar with the decision-making process of Bitcoin Core, my experience&lt;br/&gt;with other projects suggests that simpler changes often&lt;br/&gt;&amp;gt; encounter less resistance and can be implemented more swiftly. Perhaps I&lt;br/&gt;am being overly cautious here, though.&lt;br/&gt;&lt;br/&gt;I fully understand the motivation to avoid a lengthy standardization&lt;br/&gt;process, which can be a source of frustration for everyone, including the&lt;br/&gt;standard champions themselves. Indeed, no one lacks the bureaucratic-style&lt;br/&gt;of standardization process for their own sake.&lt;br/&gt;&lt;br/&gt;Long standardization processes in Bitcoin consensus are better explained by&lt;br/&gt;the number of technical dimensions to weigh in terms of designs (e.g&lt;br/&gt;full-nodes ressources scalability, fee economic costs, confidentiality,&lt;br/&gt;composability with other changes). And due to the asynchronous nature of&lt;br/&gt;FOSS development, every domain expert is constantly jungling between&lt;br/&gt;different engineering contributions priorities (e.g for myself currently&lt;br/&gt;package relay and mempool for L2s).&lt;br/&gt;&lt;br/&gt;All that said, to make the conversation of annex standardization more&lt;br/&gt;practical, and aiming to compose with all technical interest expressed, I&lt;br/&gt;can think about a 2 phase process, at least.&lt;br/&gt;&lt;br/&gt;Such standardization process reflects only my opinion, and is based on the&lt;br/&gt;experience of recent mempool fullrbf partial deployment experience, the&lt;br/&gt;Core&amp;#39;s trends to have tracking issues for substantial changes,&lt;br/&gt;bitcoin-inquisition and the bitcoin contracting primitives WG experiences.&lt;br/&gt;&lt;br/&gt;Phase 1:&lt;br/&gt;- a BIP proposal for the TLV records &#43; code (almost done with #9 in&lt;br/&gt;bitcoin-inquisition and #1421 in the bips repository)&lt;br/&gt;- a BIP proposal to reserve &amp;#34;tag 0&amp;#34; for unstructured data &#43; code (let&amp;#39;s say&lt;br/&gt;in bitcoin-inquisition)&lt;br/&gt;- anti-DoS mempool/transaction-relay/replacement code (same)&lt;br/&gt;- bonus point: documenting the new mempool/replacement rules like in Core&amp;#39;s&lt;br/&gt;`doc/policy`&lt;br/&gt;- preferential peering logic working code (there is already some code with&lt;br/&gt;Core&amp;#39;s #25600)&lt;br/&gt;- opt-in activation of the annex validation rules&lt;br/&gt;- engage Bitcoin devs appreciated by the community as domain experts in the&lt;br/&gt;covered areas to collect more relevant technical feedbacks&lt;br/&gt;&lt;br/&gt;Phase 2:&lt;br/&gt;- submit the annex branch with all the features on the Bitcoin Core&lt;br/&gt;repository&lt;br/&gt;- communicate to the Bitcoin technical community at large the existence of&lt;br/&gt;the proposal e.g dev mail list, technical newsletters&lt;br/&gt;- communicate to the second-layers and unstructured data application&lt;br/&gt;maintainers the existence of the proposal&lt;br/&gt;- integrate the feedback from Bitcoin Core, Bitcoin users and second-layers&lt;br/&gt;communities in a &amp;#34;staging code branch&amp;#34;&lt;br/&gt;- if there is a deep technical objection, go back to phase 1 (e.g a&lt;br/&gt;competing serializing proposal for the annex)&lt;br/&gt;- otherwise, split the annex reference branch core in logical chunks for&lt;br/&gt;optimal review process&lt;br/&gt;&lt;br/&gt;This is what an efficient-yet-decentralized standardization process of the&lt;br/&gt;annex would look like to me, I don&amp;#39;t know. About when we can expect a&lt;br/&gt;deployment of new policy rules for the annex, as Dave made me the&lt;br/&gt;(grounded) reprimand on the list a while back, I don&amp;#39;t think mentioning a&lt;br/&gt;date or software version release is appropriate. And this to avoid creating&lt;br/&gt;a sense of commitment on all the contributors involved in the projects&lt;br/&gt;above mentioned.&lt;br/&gt;&lt;br/&gt;I&amp;#39;m still interested in championing the &amp;#34;base&amp;#34; TLV serialization annex code&lt;br/&gt;and BIP. To move faster, I think it would be better to have another&lt;br/&gt;champion on the &amp;#34;tag 0&amp;#34; and BIP, especially as the unstructured data&lt;br/&gt;use-cases are coming with their own specifics.&lt;br/&gt;&lt;br/&gt;&amp;gt; Regarding the potential payload extension attack, I believe that the&lt;br/&gt;changes proposed in the [3] to allow tx replacement by smaller witnesses&lt;br/&gt;would provide a viable solution?&lt;br/&gt;&lt;br/&gt;To be honest, in terms of DoS, I wouldn&amp;#39;t give a strong opinion before&lt;br/&gt;better formalization or consensus of the use-case requirements. From&lt;br/&gt;experience of Core&amp;#39;s mempools PRs, you have few subcomponents that can be&lt;br/&gt;involved (replacement, block template, broadcast backend of L2s, etc).&lt;br/&gt;&lt;br/&gt;&amp;gt; That years-long timeline that you sketch for witness replacement (or any&lt;br/&gt;other policy change I presume?) to become effective is perhaps indicative&lt;br/&gt;of the need to have an alternative way to relay&lt;br/&gt;&amp;gt; transactions to miners besides the p2p network?&lt;br/&gt;&lt;br/&gt;Assuming an alternative p2p network, I don&amp;#39;t think we can avoid some&lt;br/&gt;standardization of fundamental data structures between those p2p network.&lt;br/&gt;Most of L2s are pre-signing transactions/packages and might not be able to&lt;br/&gt;alter the validity of such set of transactions in a unilateral fashion&lt;br/&gt;without re-introducing some “bad” malleability. And a L2 node has an&lt;br/&gt;interest to use multiple p2p networks to mitigate against things like&lt;br/&gt;time-dilation attacks.&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;[0]&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2018-February/015700.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2018-February/015700.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Le dim. 11 juin 2023 à 20:26, Joost Jager &amp;lt;joost.jager at gmail.com&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi Dave,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Sun, Jun 11, 2023 at 12:10 AM David A. Harding &amp;lt;dave at dtrt.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; 3. When paying the script in #2, Alice chooses the scriptpath spend from&lt;br/&gt;&amp;gt;&amp;gt;     #1 and pushes a serialized partial signature for the ephemeral key&lt;br/&gt;&amp;gt;&amp;gt;     from #2 onto the stack, where it&amp;#39;s immediately dropped by the&lt;br/&gt;&amp;gt;&amp;gt;     interpreter (but is permanently stored on the block chain).  She also&lt;br/&gt;&amp;gt;&amp;gt;     attaches a regular signature for the OP_CHECKSIG opcode.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Isn&amp;#39;t it the case that that op-dropped partial signature for the ephemeral&lt;br/&gt;&amp;gt; key isn&amp;#39;t committed to and thus can be modified by anyone before it is&lt;br/&gt;&amp;gt; mined, effectively deleting the keys to the vault? If not, this would be a&lt;br/&gt;&amp;gt; great alternative!&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Even better, I think you can achieve nearly the same safety without&lt;br/&gt;&amp;gt;&amp;gt; putting any data on the chain.  All you need is a widely used&lt;br/&gt;&amp;gt;&amp;gt; decentralized protocol that allows anyone who can prove ownership of a&lt;br/&gt;&amp;gt;&amp;gt; UTXO to store some data.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I appreciate the suggestion, but I am really looking for a bitcoin-native&lt;br/&gt;&amp;gt; solution to leverage bitcoin&amp;#39;s robustness and security properties.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; By comparison, rolling&lt;br/&gt;&amp;gt;&amp;gt; out relay of the annex and witness replacement may take months of review&lt;br/&gt;&amp;gt;&amp;gt; and years for &amp;gt;90% deployment among nodes, would allow an attacker to&lt;br/&gt;&amp;gt;&amp;gt; lower the feerate of coinjoin-style transactions by up to 4.99%, would&lt;br/&gt;&amp;gt;&amp;gt; allow an attacker to waste 8 million bytes of bandwidth per relay node&lt;br/&gt;&amp;gt;&amp;gt; for the same cost they&amp;#39;d have to pay to today to waste 400 thousand&lt;br/&gt;&amp;gt;&amp;gt; bytes, and might limit the flexibility and efficiency of future&lt;br/&gt;&amp;gt;&amp;gt; consensus changes that want to use the annex.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; That years-long timeline that you sketch for witness replacement (or any&lt;br/&gt;&amp;gt; other policy change I presume?) to become effective is perhaps indicative&lt;br/&gt;&amp;gt; of the need to have an alternative way to relay transactions to miners&lt;br/&gt;&amp;gt; besides the p2p network?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I agree though that it would be ideal if there is a good solution that&lt;br/&gt;&amp;gt; doesn&amp;#39;t require any protocol changes or upgrade path.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Joost&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230612/4d095d65/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230612/4d095d65/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-19T18:19:55Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqswvd3tgpj7vwxr8nx4haa807280m2yt2gzwn8z4p7ujz9qu0wxz4czypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zpl0dup</id>
    
      <title type="html">📅 Original date posted:2023-06-09 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqswvd3tgpj7vwxr8nx4haa807280m2yt2gzwn8z4p7ujz9qu0wxz4czypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zpl0dup" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsxvyqlvxv0dwvqq2znf9gluvgagw33lc9g73dwdv9su8gz2xgzsgcnx5g55&#39;&gt;nevent1q…5g55&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-06-09&lt;br/&gt;🗒️ Summary of this message: Proposal to define any taproot annex that begins with &amp;#39;0&amp;#39; as free-form, allowing immediate utilization and future flexibility for unstructured data use-cases.&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Joost,&lt;br/&gt;&lt;br/&gt;Thanks for detailing why a &amp;#39;0&amp;#39; as free-form, without any additional&lt;br/&gt;constraints offers valuable engineering properties as of today.&lt;br/&gt;&lt;br/&gt;&amp;gt;From a taproot annex design perspective, I think this could be very&lt;br/&gt;valuable if you have a list of unstructured data use-cases you&amp;#39;re thinking&lt;br/&gt;about ? As raised on the BIP proposal, those unstructured data use-cases&lt;br/&gt;could use annex tags with the benefit to combine multiple &amp;#34;types&amp;#34; of&lt;br/&gt;unstructured data in a single annex payload. As you&amp;#39;re raising smaller bits&lt;br/&gt;of unstructured data might not afford the overhead though my answer with&lt;br/&gt;this observation would be to move this traffic towards some L2 systems ? In&lt;br/&gt;my mind, the default of adding a version byte for the usage of unstructured&lt;br/&gt;data comes with the downside of having future consensus enabled use-cases&lt;br/&gt;encumbering by the extended witness economic cost.&lt;br/&gt;&lt;br/&gt;About the annex payload extension attack described by Greg. If my&lt;br/&gt;understanding of this transaction-relay jamming griefing issue is correct,&lt;br/&gt;we can have an annex tag in the future where the signer is committing to&lt;br/&gt;the total weight of the transaction, or even the max per-input annex size ?&lt;br/&gt;This should prevent a coinjoin or aggregated commitment transaction&lt;br/&gt;counterparty to inflate its annex space to downgrade the overall&lt;br/&gt;transaction feerate, I guess. And I think this could benefit unstructured&lt;br/&gt;data use-cases too.&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;Le ven. 2 juin 2023 à 22:18, Joost Jager via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; As it stands, the taproot annex is consensus valid but non-standard. The&lt;br/&gt;&amp;gt; conversations around standardization seem to be leaning towards the&lt;br/&gt;&amp;gt; adoption of a flexible Type-Length-Value (TLV) format [1]. There&amp;#39;s no doubt&lt;br/&gt;&amp;gt; that this approach has considerable potential. However, settling on an&lt;br/&gt;&amp;gt; exact format may require a significant amount of time.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In the interim, the benefits of making the annex available in a&lt;br/&gt;&amp;gt; non-structured form are both evident and immediate. By allowing developers&lt;br/&gt;&amp;gt; to utilize the taproot annex without delay, we can take advantage of its&lt;br/&gt;&amp;gt; features today, without the need to wait for the finalization of a more&lt;br/&gt;&amp;gt; lengthy standardization process.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; With this in view, I am proposing that we define any annex that begins&lt;br/&gt;&amp;gt; with &amp;#39;0&amp;#39; as free-form, without any additional constraints. This strategy&lt;br/&gt;&amp;gt; offers several distinct benefits:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Immediate utilization: This opens the door for developers to make use of&lt;br/&gt;&amp;gt; the taproot annex for a variety of applications straight away, thus&lt;br/&gt;&amp;gt; eliminating the need to wait for the implementation of TLV or any other&lt;br/&gt;&amp;gt; structured format.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Future flexibility: Assigning &amp;#39;0&amp;#39;-beginning annexes as free-form keeps our&lt;br/&gt;&amp;gt; options open for future developments and structure improvements. As we&lt;br/&gt;&amp;gt; forge ahead in determining the best way to standardize the annex, this&lt;br/&gt;&amp;gt; strategy ensures we do not limit ourselves by setting its structure in&lt;br/&gt;&amp;gt; stone prematurely.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Chainspace efficiency: Non-structured data may require fewer bytes&lt;br/&gt;&amp;gt; compared to a probable TLV format, which would necessitate the encoding of&lt;br/&gt;&amp;gt; length even when there&amp;#39;s only a single field.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In conclusion, adopting this approach will immediately broaden the&lt;br/&gt;&amp;gt; utilization scope of the taproot annex while preserving the possibility of&lt;br/&gt;&amp;gt; transitioning to a more structured format in the future. I believe this is&lt;br/&gt;&amp;gt; a pragmatic and efficient route, one that can yield substantial benefits in&lt;br/&gt;&amp;gt; both the short and long term.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Joost&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [1] &lt;a href=&#34;https://github.com/bitcoin/bips/pull/1381&#34;&gt;https://github.com/bitcoin/bips/pull/1381&lt;/a&gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230610/2249fe52/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230610/2249fe52/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-19T18:19:54Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqs286ut59cverx76p4v8jrsaerx24rgntpmxr2pqnxdnc5rwvqaw8gzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zmz79gn</id>
    
      <title type="html">📅 Original date posted:2023-05-31 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqs286ut59cverx76p4v8jrsaerx24rgntpmxr2pqnxdnc5rwvqaw8gzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zmz79gn" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsf2z7jl4grac3wfyjdgxpfatpmnn9hkhgd79r4hja06dalg4ylw5chmqjen&#39;&gt;nevent1q…qjen&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-05-31&lt;br/&gt;🗒️ Summary of this message: The distinction between routing fees and reputation revenue is important in the HTLC endorsement model. Compensation for revenue lost during an attack is given to nodes with high reputation. However, there may be issues with the coupling effect between routing scoring algorithms and the introduction of endorsement schemes.&lt;br/&gt;📝 Original message:&lt;br/&gt;&amp;gt; I think it&amp;#39;s important to differentiate between fees a node charges and&lt;br/&gt;&amp;gt; *reputation_revenue*. Reputation is determined as a function of the latter.&lt;br/&gt;&amp;gt; If Caroll has a very high *reputation_revenue* and Bob has a very low one,&lt;br/&gt;&amp;gt; then Bob probably won&amp;#39;t have a high reputation with Caroll, as the amount&lt;br/&gt;&amp;gt; of fees he forwards to Caroll is smaller than the damage he can create.&lt;br/&gt;&amp;gt; That is, if Caroll is a huge node and Bob is a raspberry pi, then Bob will&lt;br/&gt;&amp;gt; never have a good reputation with Caroll. If they have similar&lt;br/&gt;&amp;gt; *reputation_revenue*, then getting a good reputation with Bob is as&lt;br/&gt;&amp;gt; difficult as getting a good reputation with Caroll.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In your example (if I got it correctly) Bob&amp;#39;s *reputation_revenue* = 1,000,&lt;br/&gt;&amp;gt; *reputation_window*=100 and *routing_window*=10. Could you explain what are&lt;br/&gt;&amp;gt; Caroll&amp;#39;s parameters are in your example? The *fee_base_msat* does not&lt;br/&gt;&amp;gt; indicate Carolls *reputation_revenue* (unless Alice is the only one&lt;br/&gt;&amp;gt; transacting on the Bob-Caroll channel, and then she is the one paying for&lt;br/&gt;&amp;gt; Bob&amp;#39;s reputation).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; That being said, we use *reputation_revenue *to estimate the damage an&lt;br/&gt;&amp;gt; attacker can create. If there is a chain of nodes that have high reputation&lt;br/&gt;&amp;gt; with each other, and they are jammed, they would be compensated for the&lt;br/&gt;&amp;gt; revenue lost during the attack. If Bob finds that having a high reputation&lt;br/&gt;&amp;gt; with Caroll is crucial and 1,000 sats will not compensate him for loosing&lt;br/&gt;&amp;gt; it, then he should either never endorse anything on that channel, or at&lt;br/&gt;&amp;gt; least put a higher bar than *reputation_revenue*.&lt;br/&gt;&lt;br/&gt;I think the distinction you&amp;#39;re proposing between routing fees and&lt;br/&gt;reputation revenue matters in the HTLC endorsement model. For the&lt;br/&gt;example I&amp;#39;m using let&amp;#39;s say Caroll and Bob share the same exact&lt;br/&gt;parameters, *reputation_revenue* = 1,000, *routing_window*=100 and&lt;br/&gt;*routing_window*=10, where the reputation revenue of Bob towards&lt;br/&gt;Caroll is made from multiple incoming links.&lt;br/&gt;&lt;br/&gt;For each HTLC forwarding request issued from Alice, Bob has to make&lt;br/&gt;the decision between refusing Alice HTLC forward over the Caroll&lt;br/&gt;incoming link, and lose an opportunity of fee income, or accept the&lt;br/&gt;HTLC and suffers from a damage if Alice reveals a posteriori as a&lt;br/&gt;jamming attacker.&lt;br/&gt;&lt;br/&gt;This is unclear to me how the compensation mechanism works in the&lt;br/&gt;chain of nodes that have high reputation with each other, and I still&lt;br/&gt;think the HTLC endorsement mitigation suffers from the classic issues&lt;br/&gt;of reputation systems (i.e whitewashing).&lt;br/&gt;&lt;br/&gt;&amp;gt; Not sure what you mean by that.&lt;br/&gt;&lt;br/&gt;I think there is a coupling effec introduced between the historical&lt;br/&gt;liquidity buckets of routing scoring algorithms and the introduction&lt;br/&gt;of endorsment scheme with adjustement of the channel liquidity and&lt;br/&gt;slots in function of local topology reputation.&lt;br/&gt;&lt;br/&gt;See the LDK scoring engine comments here :&lt;br/&gt;&lt;a href=&#34;https://github.com/lightningdevkit/rust-lightning/blob/eec5ec6b50720144fc23503c3ee9c1c8850517ac/lightning/src/routing/scoring.rs#L336&#34;&gt;https://github.com/lightningdevkit/rust-lightning/blob/eec5ec6b50720144fc23503c3ee9c1c8850517ac/lightning/src/routing/scoring.rs#L336&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Le mer. 17 mai 2023 à 21:49, Clara Shikhelman &amp;lt;clara.shikhelman at gmail.com&amp;gt;&lt;br/&gt;a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; The lack of transitivity of the reputation acquisition cost (e.g based on&lt;br/&gt;&amp;gt;&amp;gt; historical fees earned from forwards originating from the peer) between the&lt;br/&gt;&amp;gt;&amp;gt; hops of the payment path still raises a vulnerability issue for the&lt;br/&gt;&amp;gt;&amp;gt; endorsement scheme, I think.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Namely, let&amp;#39;s say you have Alice, Bob and Caroll where endorsement has&lt;br/&gt;&amp;gt;&amp;gt; been obtained by Alice on the Bob incoming link by paying fees for an&lt;br/&gt;&amp;gt;&amp;gt; amount of 1000 sats for the last 100 blocks. Caroll offers a far higher&lt;br/&gt;&amp;gt;&amp;gt; pricing on her incoming link from Bob, 10000 sats as `fee_base_msat` on her&lt;br/&gt;&amp;gt;&amp;gt; endorsed slots. It sounds to me there is nothing preventing Alice from&lt;br/&gt;&amp;gt;&amp;gt; sacrificing her earned reputation to inflict a loss of routing fees damage&lt;br/&gt;&amp;gt;&amp;gt; on Caroll incoming link ?&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I think it&amp;#39;s important to differentiate between fees a node charges and&lt;br/&gt;&amp;gt; *reputation_revenue*. Reputation is determined as a function of the&lt;br/&gt;&amp;gt; latter. If Caroll has a very high *reputation_revenue* and Bob has a very&lt;br/&gt;&amp;gt; low one, then Bob probably won&amp;#39;t have a high reputation with Caroll, as the&lt;br/&gt;&amp;gt; amount of fees he forwards to Caroll is smaller than the damage he can&lt;br/&gt;&amp;gt; create. That is, if Caroll is a huge node and Bob is a raspberry pi, then&lt;br/&gt;&amp;gt; Bob will never have a good reputation with Caroll. If they have similar&lt;br/&gt;&amp;gt; *reputation_revenue*, then getting a good reputation with Bob is as&lt;br/&gt;&amp;gt; difficult as getting a good reputation with Caroll.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In your example (if I got it correctly) Bob&amp;#39;s *reputation_revenue* =&lt;br/&gt;&amp;gt; 1,000, *reputation_window*=100 and *routing_window*=10. Could you explain&lt;br/&gt;&amp;gt; what are Caroll&amp;#39;s parameters are in your example? The *fee_base_msat*&lt;br/&gt;&amp;gt; does not indicate Carolls *reputation_revenue* (unless Alice is the only&lt;br/&gt;&amp;gt; one transacting on the Bob-Caroll channel, and then she is the one paying&lt;br/&gt;&amp;gt; for Bob&amp;#39;s reputation).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; That being said, we use *reputation_revenue *to estimate the damage an&lt;br/&gt;&amp;gt; attacker can create. If there is a chain of nodes that have high reputation&lt;br/&gt;&amp;gt; with each other, and they are jammed, they would be compensated for the&lt;br/&gt;&amp;gt; revenue lost during the attack. If Bob finds that having a high reputation&lt;br/&gt;&amp;gt; with Caroll is crucial and 1,000 sats will not compensate him for loosing&lt;br/&gt;&amp;gt; it, then he should either never endorse anything on that channel, or at&lt;br/&gt;&amp;gt; least put a higher bar than *reputation_revenue*.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; There is an independent new observation on the effect of dynamic&lt;br/&gt;&amp;gt;&amp;gt; reputation windows on payment reliability, as those windows are not&lt;br/&gt;&amp;gt;&amp;gt; announced to the rest of the network, sudden changes in the links&lt;br/&gt;&amp;gt;&amp;gt; throughput based on HTLC resolution might break the historical liquidity&lt;br/&gt;&amp;gt;&amp;gt; buckets of routing scoring algorithms (at least in the way we&amp;#39;re doing it&lt;br/&gt;&amp;gt;&amp;gt; for LDK), I think ?&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Not sure what you mean by that.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Best,&lt;br/&gt;&amp;gt; Clara&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230531/5017e472/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230531/5017e472/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-19T17:42:25Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsp7pgy5uf4l8pgy8ajht95em7x0jfq0pad5074ft5lheg5uh7qs9szypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24z92afsq</id>
    
      <title type="html">📅 Original date posted:2023-05-17 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsp7pgy5uf4l8pgy8ajht95em7x0jfq0pad5074ft5lheg5uh7qs9szypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24z92afsq" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsgw3puhy32yn44nufpx2w8g0zc40pprm55zumpvmg9ur3a5a800agmaz7p9&#39;&gt;nevent1q…z7p9&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-05-17&lt;br/&gt;🗒️ Summary of this message: The Lightning Network&amp;#39;s reputation system is vulnerable to sudden changes in behavior and pricing variations between hops, potentially allowing for reputation sacrifice and loss of routing fees. Dynamic reputation windows may also affect payment reliability.&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi all,&lt;br/&gt;&lt;br/&gt;&amp;gt; That is, one cannot gain reputation during low fee times and use it when&lt;br/&gt;fees are high.&lt;br/&gt;&lt;br/&gt;&amp;gt; Good reputation is also a function of the general environment, and so if&lt;br/&gt;there is a fee spike, reputation will change. It is true that nodes can go&lt;br/&gt;rogue, but this is why we aim &amp;gt; for the price of a good reputation to be&lt;br/&gt;similar to the amount of damage they can create.&lt;br/&gt;&lt;br/&gt;The lack of transitivity of the reputation acquisition cost (e.g based on&lt;br/&gt;historical fees earned from forwards originating from the peer) between the&lt;br/&gt;hops of the payment path still raises a vulnerability issue for the&lt;br/&gt;endorsement scheme, I think.&lt;br/&gt;&lt;br/&gt;Namely, let&amp;#39;s say you have Alice, Bob and Caroll where endorsement has been&lt;br/&gt;obtained by Alice on the Bob incoming link by paying fees for an amount of&lt;br/&gt;1000 sats for the last 100 blocks. Caroll offers a far higher pricing on&lt;br/&gt;her incoming link from Bob, 10000 sats as `fee_base_msat` on her endorsed&lt;br/&gt;slots. It sounds to me there is nothing preventing Alice from sacrificing&lt;br/&gt;her earned reputation to inflict a loss of routing fees damage on Caroll&lt;br/&gt;incoming link ?&lt;br/&gt;&lt;br/&gt;Generally, I think the endorsement scheme assumes some synchronicity in the&lt;br/&gt;setting of routing fees by the hops. In practice, it&amp;#39;s expected there will&lt;br/&gt;be variations based on their own pricing of liquidity, their accumulated&lt;br/&gt;data sets (e.g historical view of LN gossips) and downstream link topology.&lt;br/&gt;And this is the same between building a mitigation on concepts like&lt;br/&gt;&amp;#34;peace/war&amp;#34; time, sophisticated attackers might be able to mask their&lt;br/&gt;traffic as some spontaneous congestion.&lt;br/&gt;&lt;br/&gt;There is an independent new observation on the effect of dynamic reputation&lt;br/&gt;windows on payment reliability, as those windows are not announced to the&lt;br/&gt;rest of the network, sudden changes in the links throughput based on HTLC&lt;br/&gt;resolution might break the historical liquidity buckets of routing scoring&lt;br/&gt;algorithms (at least in the way we&amp;#39;re doing it for LDK), I think ?&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Le mer. 10 mai 2023 à 16:59, Clara Shikhelman &amp;lt;clara.shikhelman at gmail.com&amp;gt;&lt;br/&gt;a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi Christian,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Thanks for your comments! We will discuss this further in the upcoming&lt;br/&gt;&amp;gt; call on the 15th, would be great to see you there!&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; this is an intrinsic issue with reputation systems, and the main&lt;br/&gt;&amp;gt;&amp;gt; reason I&amp;#39;m sceptical w.r.t. their usefulness in lightning.&lt;br/&gt;&amp;gt;&amp;gt; Fundamentally any reputation system bases their expectations for the&lt;br/&gt;&amp;gt;&amp;gt; future on experiences they made in the past, and they are thus always&lt;br/&gt;&amp;gt;&amp;gt; susceptible to sudden behavioral changes (going rogue from a prior&lt;br/&gt;&amp;gt;&amp;gt; clean record) and whitewashing attacks (switching identity, abusing&lt;br/&gt;&amp;gt;&amp;gt; any builtin bootstrapping method for new users to gain a good or&lt;br/&gt;&amp;gt;&amp;gt; neutral reputation before turning rogue repeatedly).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In the Lightning Network, fees are a native way to put a price on having a&lt;br/&gt;&amp;gt; good reputation (see details here [0]). In the design that we suggest, the&lt;br/&gt;&amp;gt; reputation gained today cannot be used in the distant future, and funds&lt;br/&gt;&amp;gt; need to be invested continuously to keep a good reputation. Good reputation&lt;br/&gt;&amp;gt; is also a function of the general environment, and so if there is a fee&lt;br/&gt;&amp;gt; spike, reputation will change. It is true that nodes can go rogue, but this&lt;br/&gt;&amp;gt; is why we aim for the price of a good reputation to be similar to the&lt;br/&gt;&amp;gt; amount of damage they can create.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; This gets compounded as soon as we start gossiping about reputations,&lt;br/&gt;&amp;gt;&amp;gt; since now our decisions are no longer based just on information we can&lt;br/&gt;&amp;gt;&amp;gt; witness ourselves, or at least verify its correctness, and as such an&lt;br/&gt;&amp;gt;&amp;gt; attacker can most likely &amp;#34;earn&amp;#34; a positive reputation in some other&lt;br/&gt;&amp;gt;&amp;gt; part of the world, and then turn around and attack the nodes that&lt;br/&gt;&amp;gt;&amp;gt; trusted the reputation shared from those other parts.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Notice that we are not gossiping about our peer&amp;#39;s reputation. The only&lt;br/&gt;&amp;gt; thing that a node communicates to its neighbor is whether they see an HTLC&lt;br/&gt;&amp;gt; as endorsed or just neutral, that is, should this HTLC be granted access to&lt;br/&gt;&amp;gt; all of the resources or just the restricted part.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I&amp;#39;d be very interested in how many repeat interactions nodes get from&lt;br/&gt;&amp;gt;&amp;gt; individual senders, since that also tells us how much use we can get&lt;br/&gt;&amp;gt;&amp;gt; out of local-only reputation based systems, and I wouldn&amp;#39;t be&lt;br/&gt;&amp;gt;&amp;gt; surprised if, for large routing nodes, we have sufficient data for&lt;br/&gt;&amp;gt;&amp;gt; them to make an informed decision, while the edges may be more&lt;br/&gt;&amp;gt;&amp;gt; vulnerable, but they&amp;#39;d also be used by way fewer senders, and the&lt;br/&gt;&amp;gt;&amp;gt; impact of an attack would also be proportionally smaller.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This is something we hope to learn once we&amp;#39;ll start collecting data from&lt;br/&gt;&amp;gt; our brave volunteers :)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; Clara&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230517/9cd075a3/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230517/9cd075a3/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-19T17:42:24Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsdus9q5emsjgjs4xnmxs6js3dxt8fpv9ffwk848nu5ydf973x9y9czypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zqeh9zr</id>
    
      <title type="html">📅 Original date posted:2023-05-06 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsdus9q5emsjgjs4xnmxs6js3dxt8fpv9ffwk848nu5ydf973x9y9czypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zqeh9zr" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqstukl9ph8f0phpg7nuk6xyshvnl06cd583lwtf80gey8jdz0jsuzc4e4mg3&#39;&gt;nevent1q…4mg3&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-05-06&lt;br/&gt;🗒️ Summary of this message: The Lightning Network community is exploring data gathering and local reputation tracking to mitigate channel jamming, starting with a binary endorsement field. The goal is to experiment with different algorithms for tracking local reputation and gather real-world data for future simulation work.&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi *,&lt;br/&gt;&lt;br/&gt;&amp;gt; Our suggestion is to start simple with a binary endorsement field. As&lt;br/&gt;&amp;gt; we learn more, we will be better equipped to understand whether a&lt;br/&gt;&amp;gt; more expressive value is required.&lt;br/&gt;&lt;br/&gt;I think the HTLC endorsement scheme as proposed is still suffering from a&lt;br/&gt;vulnerability as local reputation can be built up during periods of low&lt;br/&gt;routing fees, endorsement gained and then abused during periods of high&lt;br/&gt;routing fees. Therefore, it sounds to me this scheme should aim for some&lt;br/&gt;reputational transitivity between incoming traffic and outgoing traffic.&lt;br/&gt;Namely, the acquisition cost of the local reputation should be equal to the&lt;br/&gt;max timevalue damage that one can inflict on a routing node channel&lt;br/&gt;accessible from its local counterparty granting this high-level of&lt;br/&gt;reputation.&lt;br/&gt;&lt;br/&gt;I don&amp;#39;t know if this can be fixed by ensuring permanent link-level &amp;#34;gossip&amp;#34;&lt;br/&gt;where counterparties along a payment path expose their reputation&lt;br/&gt;heuristics to guarantee this transitivity, or it&amp;#39;s a fundamental issue with&lt;br/&gt;a point-to-point approach like HTLC endorsement.&lt;br/&gt;&lt;br/&gt;Opened an issue on the repository to converge on a threat model:&lt;br/&gt;&lt;a href=&#34;https://github.com/ClaraShk/LNJamming/pull/13&#34;&gt;https://github.com/ClaraShk/LNJamming/pull/13&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;I still think building data gathering infrastructure for Lightning is&lt;br/&gt;valuable as ultimately any jamming mitigation will have to adapt its&lt;br/&gt;upfront fees or reputation acquisition cost in function of HTLC traffic and&lt;br/&gt;market forces.&lt;br/&gt;&lt;br/&gt;Looking forward to giving an update on Staking Credentials [0], an&lt;br/&gt;end-to-end approach to mitigate channel jamming.&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;[0]&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-November/003754.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-November/003754.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Le dim. 30 avr. 2023 à 03:57, Carla Kirk-Cohen &amp;lt;kirkcohenc at gmail.com&amp;gt; a&lt;br/&gt;écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi list,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Some updates on channel jamming!&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # Next Call&lt;br/&gt;&amp;gt; - Monday 01 May @ 15:00 UTC&lt;br/&gt;&amp;gt; - &lt;a href=&#34;https://meet.jit.si/UnjammingLN&#34;&gt;https://meet.jit.si/UnjammingLN&lt;/a&gt;&lt;br/&gt;&amp;gt; - Agenda: &lt;a href=&#34;https://github.com/ClaraShk/LNJamming/issues/12&#34;&gt;https://github.com/ClaraShk/LNJamming/issues/12&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # Data Gathering&lt;br/&gt;&amp;gt; During these weekly calls, we&amp;#39;ve come to agreement that we would like&lt;br/&gt;&amp;gt; to gather data about the use of HTLC endorsement and local reputation&lt;br/&gt;&amp;gt; tracking for jamming mitigation. A reminder of the full scheme is&lt;br/&gt;&amp;gt; included at the end of this email, and covered more verbosely in [1].&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; We have a few goals in mind:&lt;br/&gt;&amp;gt; - Observe the effect of endorsement in the steady state with&lt;br/&gt;&amp;gt;   logging-only implementation.&lt;br/&gt;&amp;gt; - Gather real-world data for use in future simulation work.&lt;br/&gt;&amp;gt; - Experiment with different algorithms for tracking local reputation.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The minimal changes required to add HTLC endorsement are outlined in [2].&lt;br/&gt;&amp;gt; Our suggestion is to start simple with a binary endorsement field. As&lt;br/&gt;&amp;gt; we learn more, we will be better equipped to understand whether a&lt;br/&gt;&amp;gt; more expressive value is required.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; With this infrastructure in place, we can start to experiment with&lt;br/&gt;&amp;gt; various local reputation schemes and data gathering, possibly even&lt;br/&gt;&amp;gt; externally to LN implementations in projects like circuitbreaker [3].&lt;br/&gt;&amp;gt; We&amp;#39;d be interested to hear whether there&amp;#39;s any appetite to deploy using&lt;br/&gt;&amp;gt; an experimental TLV value?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # Reputation Scheme&lt;br/&gt;&amp;gt; - Each node locally tracks the reputation of its direct neighbors.&lt;br/&gt;&amp;gt; - Each node allocates, per its risk tolerance:&lt;br/&gt;&amp;gt;   - A number of slots reserved for endorsed HTLCs from high reputation&lt;br/&gt;&amp;gt;     peers.&lt;br/&gt;&amp;gt;   - A portion of liquidity reserved for endorsed HTLCs from high&lt;br/&gt;&amp;gt;     reputation peers.&lt;br/&gt;&amp;gt; - Forwarding of HTLCs:&lt;br/&gt;&amp;gt;   - If a HTLC is endorsed by a high reputation peer, it is forwarded&lt;br/&gt;&amp;gt;     as usual with endorsed = 1.&lt;br/&gt;&amp;gt;   - Otherwise, it is forwarded with endorsed = 0 if there are slots and&lt;br/&gt;&amp;gt;     liquidity available for unknown HTLCs.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Endorsement and reputation are proposed as the first step in a two part&lt;br/&gt;&amp;gt; scheme for mitigating channel jamming:&lt;br/&gt;&amp;gt; - Reputation for slow jams which are easily detected as misbehavior.&lt;br/&gt;&amp;gt; - Unconditional fees for quick jams that are difficult to detect, as&lt;br/&gt;&amp;gt;   they can always fall under a target threshold.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Looking forward to discussing further in the upcoming call!&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Best,&lt;br/&gt;&amp;gt; Carla and Clara&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [1] &lt;a href=&#34;https://gist.github.com/carlaKC/be820bb638624253f3ae7b39dbd0e343&#34;&gt;https://gist.github.com/carlaKC/be820bb638624253f3ae7b39dbd0e343&lt;/a&gt;&lt;br/&gt;&amp;gt; [2] &lt;a href=&#34;https://github.com/lightning/bolts/pull/1071&#34;&gt;https://github.com/lightning/bolts/pull/1071&lt;/a&gt;&lt;br/&gt;&amp;gt; [3] &lt;a href=&#34;https://github.com/lightningequipment/circuitbreaker&#34;&gt;https://github.com/lightningequipment/circuitbreaker&lt;/a&gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230506/40daccce/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230506/40daccce/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-19T17:42:21Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsqs089cl2mmn9mjxa79nmzj73s3pzs6uy8fyf0hklu6ptxcydnh6szypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zafrtgy</id>
    
      <title type="html">📅 Original date posted:2023-05-10 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsqs089cl2mmn9mjxa79nmzj73s3pzs6uy8fyf0hklu6ptxcydnh6szypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zafrtgy" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsgl563vyuuq72p6v0z94aacykywfeqr4rt7zt6ns385v9fe2mdu7sz6nshc&#39;&gt;nevent1q…nshc&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-05-10&lt;br/&gt;🗒️ Summary of this message: Bitcoin developer defends his right to expose potential conflicts of interest in open-source development and calls for protection of communication channels.&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Tony,&lt;br/&gt;&lt;br/&gt;&amp;gt; Is there a better place to have public communication? Unfortunately since&lt;br/&gt;one off topic email was sent here, it&amp;#39;s been a ghost town. It appears that&lt;br/&gt;there&amp;#39;s many emails being held and only one moderator that checks them once&lt;br/&gt;a week.&lt;br/&gt;&lt;br/&gt;As I think you&amp;#39;re referring to my post of March 21th and as the author of&lt;br/&gt;this post, I&amp;#39;ll politely refuse the qualification of &amp;#34;off-topic&amp;#34;. I had and&lt;br/&gt;I still have the concerns of &amp;#34;frivolous legal claims&amp;#34; being used between&lt;br/&gt;bitcoin developers/organizations provoking a distortion of the neutrality&lt;br/&gt;of the development and a chilling effect of the technical discussions (i.e&lt;br/&gt;code we compile and spec we implement). For those reasons, it was my legal&lt;br/&gt;right and moral duty to inform the community of what is happening between&lt;br/&gt;Chaincode and myself. And here I&amp;#39;m following the recommendation of one of&lt;br/&gt;the moderators of the Lightning mailing list himself &amp;#34;If this worries you&lt;br/&gt;too, let&amp;#39;s make sure we keep each other honest, OK?&amp;#34; [0].&lt;br/&gt;&lt;br/&gt;When you think a group of people with open-source responsibilities are in a&lt;br/&gt;situation of conflict of interests or &amp;#34;moral hazards&amp;#34;, or even the&lt;br/&gt;appearance of them, you have the right to expose the wrongdoing, including&lt;br/&gt;the _proportional_ revelation of private elements. People have done the&lt;br/&gt;&amp;#34;free choice&amp;#34; to conduct a career in open-source, for some even declaring&lt;br/&gt;in some context to maintain integrity and accept their actions to be&lt;br/&gt;submitted to external accountability [1]. While the exposure of private&lt;br/&gt;elements of public personalities might break common courtesy, it&amp;#39;s a&lt;br/&gt;morally valid practice if you&amp;#39;re familiar with the public institutions of&lt;br/&gt;US and Europe, and I think this practice has found validity in the history&lt;br/&gt;of open-source commons or IETF&amp;#39;s protocol development [1].&lt;br/&gt;&lt;br/&gt;Beyond, the Bitcoin and Lightning development communication channels&lt;br/&gt;constitute a public forum, where by nature the participants are exchanging&lt;br/&gt;ideas and defending competing interests. In consequence, the participants&amp;#39;&lt;br/&gt;rights and capabilities to contribute and speak their minds in those&lt;br/&gt;communication channels should be protected. Those communication channels&lt;br/&gt;are not your usual corporate workplace, and in case of conflicting&lt;br/&gt;principles, the maintainers of those communication channels should ensure a&lt;br/&gt;balance of rights and a proportionality in any restraining measure.&lt;br/&gt;&lt;br/&gt;And this new post is not to exonerate myself of any legal responsibility&lt;br/&gt;for personal matters that could be recognized as the outcome of a judicial&lt;br/&gt;process, respective of both rights of the accusation and rights of the&lt;br/&gt;defense. Rather to enlighten the Bitcoin community that the formal&lt;br/&gt;separation between private matters and open-source responsibilities, and&lt;br/&gt;the adequate check-and-balances to guarantee this separation is somehow&lt;br/&gt;what are the underlying stakes for this feud between Chaincode and myself,&lt;br/&gt;from my perspective. I can say missing an open-source engineering meeting&lt;br/&gt;or being revoked a few Github permissions matters far less than the clear&lt;br/&gt;affirmation and respect of the freedom of expression, the presumption of&lt;br/&gt;innocence and due process in the Bitcoin common space, all proportions&lt;br/&gt;conserved.&lt;br/&gt;&lt;br/&gt;I don&amp;#39;t blame any party involved in this issue, nor assign &amp;#34;bad&lt;br/&gt;intentions&amp;#39;&amp;#39;. One position is really a function of your life experiences,&lt;br/&gt;knowledge of the legal and cultural framework and access to the factual&lt;br/&gt;elements. As all human conflicts it is not binary rather &amp;#34;grey&amp;#34;. People can&lt;br/&gt;be top executives at a billion-dollar company, having successful ventures&lt;br/&gt;with hundreds of folks under management, or have a lot of responsibilities&lt;br/&gt;for their relative young age, and still disagree on the set of legal and&lt;br/&gt;moral principles to apply in the present case.&lt;br/&gt;&lt;br/&gt;Finally, thanks to the Bitcoin friends who have reached out to call for&lt;br/&gt;level-headedness and cool-mindness in the public discussion of this complex&lt;br/&gt;topic. Like I said to them, in the lack of more suspected wrongdoing from&lt;br/&gt;the other side, I won&amp;#39;t communicate further on this subject on the Bitcoin&lt;br/&gt;and Lightning technical channels. However I still firmly believe the&lt;br/&gt;discussion on the principles, abstract in the maximum from its private&lt;br/&gt;elements, should still be pursued on other channels. Independently, there&lt;br/&gt;is a legal channel opened between Chaincode and myself and good progress is&lt;br/&gt;made to find a serene and long-standing resolution to this issue.&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;[0]&lt;br/&gt;&lt;a href=&#34;https://rusty-lightning.medium.com/the-corrosion-of-ethics-in-cryptocurrencies-f7ba77e9dfc3&#34;&gt;https://rusty-lightning.medium.com/the-corrosion-of-ethics-in-cryptocurrencies-f7ba77e9dfc3&lt;/a&gt;&lt;br/&gt;[1]&lt;br/&gt;&lt;a href=&#34;https://github.com/btrustteam/board-book/blob/main/vision/genesis_principles.md&#34;&gt;https://github.com/btrustteam/board-book/blob/main/vision/genesis_principles.md&lt;/a&gt;&lt;br/&gt;[2]&lt;br/&gt;&lt;a href=&#34;https://www.ietf.org/about/administration/policies-procedures/conflict-interest/&#34;&gt;https://www.ietf.org/about/administration/policies-procedures/conflict-interest/&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Le lun. 8 mai 2023 à 21:26, Tony Giorgio via Lightning-dev &amp;lt;&lt;br/&gt;lightning-dev at lists.linuxfoundation.org&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Is there a better place to have public communication? Unfortunately since&lt;br/&gt;&amp;gt; one off topic email was sent here, it&amp;#39;s been a ghost town. It appears that&lt;br/&gt;&amp;gt; there&amp;#39;s many emails being held and only one moderator that checks them once&lt;br/&gt;&amp;gt; a week.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Would hate to see this list die but wondering if there&amp;#39;s a better place&lt;br/&gt;&amp;gt; for discussions?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Tony&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; -------- Original Message --------&lt;br/&gt;&amp;gt; On Apr 29, 2023, 9:57 PM, niftynei &amp;lt; niftynei at gmail.com&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Hi all,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; When I joined the lightning community a few years ago, I was relatively&lt;br/&gt;&amp;gt; new to open source software and specification work. Rusty really impressed&lt;br/&gt;&amp;gt; on me on the importance of holding conversations, as much as possible in&lt;br/&gt;&amp;gt; public.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Practically speaking, this encompasses IRC, this mailing list, and github&lt;br/&gt;&amp;gt; issues/PRs.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The reason for this is twofold.  It helps document the range of options&lt;br/&gt;&amp;gt; considered for technical decisions and it provides an interface point for&lt;br/&gt;&amp;gt; new participants to contribute to the discussion.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Given some recent mails that were posted to this list, now seems like a&lt;br/&gt;&amp;gt; good time to reiterate the importance and preference of public&lt;br/&gt;&amp;gt; communication whenever possible, especially for specification or technical&lt;br/&gt;&amp;gt; discussions.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ~ nifty&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230510/1f0f9268/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230510/1f0f9268/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-19T17:42:06Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqs2wmt3vqm04k6ua5tck3f367asku5a77w9yvpsw8dtzaxjm050cnczypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zekw4h5</id>
    
      <title type="html">📅 Original date posted:2023-06-06 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqs2wmt3vqm04k6ua5tck3f367asku5a77w9yvpsw8dtzaxjm050cnczypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zekw4h5" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs9tkgdgm2nlqrrzg2sh4nllgeafy4ka6jqegvzvedfjz2hx4tuvcsh8veuc&#39;&gt;nevent1q…veuc&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-06-06&lt;br/&gt;🗒️ Summary of this message: The Lightning Network may be vulnerable to liquidity griefing, where a counterparty locks up resources without paying fees. A &amp;#34;soft lock&amp;#34; strategy may not be enough to prevent this, and other solutions, such as the Staking Credentials framework, may need to be explored.&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Bastien,&lt;br/&gt;&lt;br/&gt;&amp;gt; This can be fixed by using a &amp;#34;soft lock&amp;#34; when selecting utxos for a non&lt;br/&gt;&amp;gt; 0-conf funding attempt. 0-conf funding attempts must ignore soft locked&lt;br/&gt;&amp;gt; utxos while non 0-conf funding attempts can (should) reuse soft locked&lt;br/&gt;&amp;gt; utxos.&lt;br/&gt;&lt;br/&gt;If my understanding of the &amp;#34;soft lock&amp;#34; strategy is correct - Only locking&lt;br/&gt;UTXO when it&amp;#39;s a non 0-conf funding attempt - I think you&amp;#39;re still exposed&lt;br/&gt;to liquidity griefing with dual-funding or splicing.&lt;br/&gt;&lt;br/&gt;The vector of griefing you&amp;#39;re mentioning is the lack of signature release&lt;br/&gt;for a shared input by your counterparty. However, in the context of&lt;br/&gt;dual-funding where the counterparty can add any output with&lt;br/&gt;`tx_add_output`, the transaction can be pinned in the mempool in a very&lt;br/&gt;sneaky way e.g abuse of replacement rule 3.&lt;br/&gt;&lt;br/&gt;This latter pinning vector is advantageous to the malicious counterparty as&lt;br/&gt;I think you can batch your pinning against unrelated dual-funding, only&lt;br/&gt;linked in the mempool by a malicious pinning CPFP.&lt;br/&gt;&lt;br/&gt;It is left as an exercise to the reader to find other vectors of pinnings&lt;br/&gt;that can be played out in the dual-funding flow.&lt;br/&gt;&lt;br/&gt;In terms of (quick) solution to prevent liquidity griefing related to&lt;br/&gt;mempool vectors, the (honest) counterparty can enforce that any contributed&lt;br/&gt;outputs must be encumbered by a 1 CSV, unless being a 2-of-2 funding.&lt;br/&gt;Still, this mitigation can be limited as I think the initial commitment&lt;br/&gt;transaction must have anchor outputs on each-side, for each party to&lt;br/&gt;recover its contributed UTXOs in any case.&lt;br/&gt;&lt;br/&gt;&amp;gt; Then we immediately send `channel_ready` as well and start using that&lt;br/&gt;&amp;gt; channel (because we know we won&amp;#39;t double spend ourselves). This is nice&lt;br/&gt;&amp;gt; because it lets us use 0-conf in a way where only one side of the&lt;br/&gt;&amp;gt; channel needs to trust the other side (instead of both sides trusting&lt;br/&gt;&amp;gt; each other).&lt;br/&gt;&lt;br/&gt;&amp;gt;From the 0-conf initiator viewpoint (the one contributing the UTXO(s)), it&lt;br/&gt;can still be valuable to disable inbound payments, or requires a longer&lt;br/&gt;`cltv_expiry_delta` than usual, in case of mempool fee spikes delaying the&lt;br/&gt;0-conf chain confirmation.&lt;br/&gt;&lt;br/&gt;Beyond, it sounds liquidity griefing provoked by a lack of signature&lt;br/&gt;release or mempool funny games will always be there ? Even for the second&lt;br/&gt;with package relay/nVersion deployment, there is still the duration between&lt;br/&gt;the pinning happening among network mempools and your replacement broadcast&lt;br/&gt;kickstarts.&lt;br/&gt;&lt;br/&gt;As a more long-term solution, we might reuse solutions worked out to&lt;br/&gt;mitigate channel jamming, as the abstract problem is the same, namely your&lt;br/&gt;counterparty can lock up scarce resources without (on-chain/off-chain&lt;br/&gt;whatever) fees paid.&lt;br/&gt;&lt;br/&gt;E.g the Staking Credentials framework could be deployed by dual-funding&lt;br/&gt;market-makers beyond routing hops [0]. The dual-funding initiator should&lt;br/&gt;pay to the maker a fee scale up on the amount of UTXOs contributed, and&lt;br/&gt;some worst-case liquidity griefing scenario. A privacy-preserving&lt;br/&gt;credential can be introduced between the payment of the fee and the redeem&lt;br/&gt;of the service to unlink dual-funding initiators (if the maker has enough&lt;br/&gt;volume to constitute a reasonable anonymity set).&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;[0]&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2023-May/003964.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2023-May/003964.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Le sam. 6 mai 2023 à 04:15, Bastien TEINTURIER &amp;lt;bastien at acinq.fr&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Good morning list,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; One of the challenges created by the introduction of dual funded&lt;br/&gt;&amp;gt; transactions [1] in lightning is how to protect against liquidity&lt;br/&gt;&amp;gt; griefing attacks from malicious peers [2].&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Let&amp;#39;s start by reviewing this liquidity griefing issue. The dual funding&lt;br/&gt;&amp;gt; protocol starts by exchanging data about the utxos each peer adds to the&lt;br/&gt;&amp;gt; shared transaction, then exchange signatures and broadcast the resulting&lt;br/&gt;&amp;gt; transaction. If peers lock their utxos as soon as they&amp;#39;ve decided to add&lt;br/&gt;&amp;gt; them to the shared transaction, the remote node may go silent. If that&lt;br/&gt;&amp;gt; happens, the honest node has some liquidity that is locked and unusable.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This cannot easily be fixed by simply unlocking utxos *after* detecting&lt;br/&gt;&amp;gt; that the remote node is fishy, because the remote node would still have&lt;br/&gt;&amp;gt; succeeded at locking your liquidity for a (small) duration, and could&lt;br/&gt;&amp;gt; start other instances of that attack with different node_ids.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; An elegant solution to this issue is to never lock utxos used in dual&lt;br/&gt;&amp;gt; funded transactions. If a remote node goes silent in the middle of an&lt;br/&gt;&amp;gt; instance of the protocol, your utxos will automatically be re-used in&lt;br/&gt;&amp;gt; another instance of the protocol. The only drawback with that approach&lt;br/&gt;&amp;gt; is that when you have multiple concurrent instances of dual funding with&lt;br/&gt;&amp;gt; honest peers, some of them may fail because they are double-spent by one&lt;br/&gt;&amp;gt; of the concurrent instances. This is acceptable, since the protocol&lt;br/&gt;&amp;gt; should complete fairly quickly when peers are honest, and at worst, it&lt;br/&gt;&amp;gt; can simply be restarted when failure is detected.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; But that solution falls short when using 0-conf, because accidentally&lt;br/&gt;&amp;gt; double-spending a 0-conf channel (because of concurrent instances) can&lt;br/&gt;&amp;gt; result in loss of funds for one of the peers (if payments were made on&lt;br/&gt;&amp;gt; that channel before detecting the double-spend). It seems like using&lt;br/&gt;&amp;gt; 0-conf forces us to lock utxos to avoid this issue, which means that&lt;br/&gt;&amp;gt; nodes offering 0-conf services expose themselves to liquidity griefing.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Another related issue is that nodes that want to offer 0-conf channels&lt;br/&gt;&amp;gt; must ensure that the utxos they use for 0-conf are isolated from the&lt;br/&gt;&amp;gt; utxos they use for non 0-conf, otherwise it is not possible to properly&lt;br/&gt;&amp;gt; lock utxos, because of the following race scenario:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; - utxoA is selected for a non 0-conf funding attempt and not locked&lt;br/&gt;&amp;gt;   (to protect against liquidity griefing)&lt;br/&gt;&amp;gt; - utxoA is also selected for a 0-conf funding attempt (because it is&lt;br/&gt;&amp;gt;   found unlocked in the wallet) and then locked&lt;br/&gt;&amp;gt; - the funding transaction for the 0-conf channel is successfully&lt;br/&gt;&amp;gt;   published first and that channel is instantly used for payments&lt;br/&gt;&amp;gt; - the funding transaction for the non 0-conf channel is then published&lt;br/&gt;&amp;gt;   and confirms, accidentally double-spending the 0-conf channel&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This can be fixed by using a &amp;#34;soft lock&amp;#34; when selecting utxos for a non&lt;br/&gt;&amp;gt; 0-conf funding attempt. 0-conf funding attempts must ignore soft locked&lt;br/&gt;&amp;gt; utxos while non 0-conf funding attempts can (should) reuse soft locked&lt;br/&gt;&amp;gt; utxos.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In eclair, we are currently doing &amp;#34;opportunistic&amp;#34; 0-conf:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; - if we receive `channel_ready` immediately (which means that our peer&lt;br/&gt;&amp;gt;   trusts us to use 0-conf)&lt;br/&gt;&amp;gt; - and we&amp;#39;re the only contributor to the funding transaction (our peer&lt;br/&gt;&amp;gt;   doesn&amp;#39;t have any input that they could use to double-spend)&lt;br/&gt;&amp;gt; - and the transaction hasn&amp;#39;t been RBF-ed yet&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Then we immediately send `channel_ready` as well and start using that&lt;br/&gt;&amp;gt; channel (because we know we won&amp;#39;t double spend ourselves). This is nice&lt;br/&gt;&amp;gt; because it lets us use 0-conf in a way where only one side of the&lt;br/&gt;&amp;gt; channel needs to trust the other side (instead of both sides trusting&lt;br/&gt;&amp;gt; each other).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Unfortunately, we cannot do that anymore when mixing 0-conf and non&lt;br/&gt;&amp;gt; 0-conf funding attempts, because the utxos may be soft locked,&lt;br/&gt;&amp;gt; preventing us from &amp;#34;upgrading&amp;#34; to 0-conf.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; You have successfully reached the end of this quite technical post,&lt;br/&gt;&amp;gt; congrats! My goal with this post is to gather ideas on how we could&lt;br/&gt;&amp;gt; improve that situation and offer good enough protections against&lt;br/&gt;&amp;gt; liquidity griefing for nodes offering 0-conf services. Please share&lt;br/&gt;&amp;gt; your ideas! And yes, I know, 0-conf is a massive implementation pain&lt;br/&gt;&amp;gt; point that we would all like to remove from our codebases, but hey,&lt;br/&gt;&amp;gt; users like it ¯\_(ツ)_/¯&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; Bastien&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [1] &lt;a href=&#34;https://github.com/lightning/bolts/pull/851&#34;&gt;https://github.com/lightning/bolts/pull/851&lt;/a&gt;&lt;br/&gt;&amp;gt; [2] &lt;a href=&#34;https://github.com/lightning/bolts/pull/851#discussion_r997537630&#34;&gt;https://github.com/lightning/bolts/pull/851#discussion_r997537630&lt;/a&gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230607/50378bc7/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230607/50378bc7/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:13:27Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsfn5myjz63yhlhdy2q9jxgmla6hkrenxgw3d5zrv8qpklhqfpa36gzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zmsc8xt</id>
    
      <title type="html">📅 Original date posted:2023-05-24 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsfn5myjz63yhlhdy2q9jxgmla6hkrenxgw3d5zrv8qpklhqfpa36gzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zmsc8xt" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsq6cs5uz7d9c7qzlcqhxtzes985t6885jd5alhqe02r063u749vpg2x4dq5&#39;&gt;nevent1q…4dq5&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-05-24&lt;br/&gt;🗒️ Summary of this message: A new framework called &amp;#34;Staking Credentials&amp;#34; has been introduced to mitigate jamming attacks over the Lightning Network. The framework introduces credentials that must be acquired by HTLC senders to lock each hop liquidity along the forwarding path.&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi list,&lt;br/&gt;&lt;br/&gt;As it has been discussed before, a solution to mitigate jamming&lt;br/&gt;attacks over the Lightning Network consists in the introduction of&lt;br/&gt;credentials that must be acquired by HTLC senders to lock each hop&lt;br/&gt;liquidity along the forwarding path. Those credentials can be&lt;br/&gt;privacy-preserving to mask the identity of the HTLC senders towards&lt;br/&gt;the routing hops. They serve as a monetary hedge in case of default of&lt;br/&gt;the HTLC sender on the payment of the routing fees.&lt;br/&gt;&lt;br/&gt;As additional advantages, this credentials framework, dubbed &amp;#34;Staking&lt;br/&gt;Credentials&amp;#34;, can be deployed to mitigate other liquidity timevalue&lt;br/&gt;DoS in the Lightning landscape, e.g collaborative transaction&lt;br/&gt;construction or even beyond as an enhanced paywall to access Nostr&lt;br/&gt;relay services [0].&lt;br/&gt;&lt;br/&gt;This post gives an overview of the framework by detailing the key&lt;br/&gt;concepts, laying out the protocol phases, showing concrete examples&lt;br/&gt;and presenting the upsides and downsides of this mitigation approach&lt;br/&gt;for jamming.&lt;br/&gt;&lt;br/&gt;## Protocol Abstractions&lt;br/&gt;&lt;br/&gt;The protocol relies on basic mechanisms of the Lightning Network such&lt;br/&gt;as the onion messages, blinded paths where the sender doesn&amp;#39;t know who&lt;br/&gt;is the recipient and gossips, an information dissemination protocol&lt;br/&gt;not relying on third-party.&lt;br/&gt;&lt;br/&gt;Beyond, new abstractions are introduced:&lt;br/&gt;- credentials: unique keys establishing attributes of the bearer,&lt;br/&gt;those keys can be blinded [1].&lt;br/&gt;- scarce assets: e.g a Bitcoin transaction, a Lightning payment,&lt;br/&gt;chaumian ecash, UTXO ownership proofs.&lt;br/&gt;- Requester/Issuer entities: the Requester requires from the Issuer&lt;br/&gt;authentication of credentials in exchange for submitting scarce&lt;br/&gt;assets.&lt;br/&gt;- Client/Provider entities: the Client requires from the Provider a&lt;br/&gt;service in exchange of submitting a credential.&lt;br/&gt;&lt;br/&gt;## Protocol Phases&lt;br/&gt;&lt;br/&gt;The first phase of the protocol is the discovery by a user of the&lt;br/&gt;`credentials_policy` and `service_policy` gossips originating&lt;br/&gt;respectively from Issuers and Providers. By reading the&lt;br/&gt;`service_policy`, a user can discover the list of credentials Issuer a&lt;br/&gt;target service Provider is relying on.&lt;br/&gt;&lt;br/&gt;The user in the role of the Requester starts by committing a scarce&lt;br/&gt;asset as announced by the Issuer&amp;#39;s `credentials_policy`. E.g the&lt;br/&gt;Requester sends a Bitcoin on-chain to a destination scriptPubkey&lt;br/&gt;previously announced by the gossip mechanism. The user attaches the&lt;br/&gt;scarce asset proof with a set of blinded credentials, finds an onion&lt;br/&gt;path to the Issuer and sends the whole inside an onion message.&lt;br/&gt;&lt;br/&gt;When the Issuer receives the scarce asset proofs and the set of&lt;br/&gt;credentials, the proof is first verified e.g the on-chain payment must&lt;br/&gt;be confirmed to a destination scriptPubkey controlled by the Issuer.&lt;br/&gt;If the proof is correct and the scarce asset cost matches the quantity&lt;br/&gt;of credentials as announced by `credentials_policy`, the blinded&lt;br/&gt;credentials are countersigned by the Issuer and the signatures replied&lt;br/&gt;back to the Requester by using a blinded path.&lt;br/&gt;&lt;br/&gt;The Requester receives the Issuer signature and should verify they&amp;#39;re&lt;br/&gt;correct under the announced issuance public key in&lt;br/&gt;`credentials_policy`. If they are valid, the credentials can be&lt;br/&gt;unblinded and consumed for the satisfaction of a service or correct&lt;br/&gt;the transactional asymmetries of a Bitcoin financial contract (e.g the&lt;br/&gt;signature release for a dual-funding transaction).&lt;br/&gt;&lt;br/&gt;Alternatively, the credentials usage can be delegated to another user&lt;br/&gt;under the warning than for the second-user, there is no guarantee the&lt;br/&gt;credential transfer is not double-spend.&lt;br/&gt;&lt;br/&gt;The user in the role of the Client forwards the unblinded credentials&lt;br/&gt;and the corresponding Issuer signatures to a target service Provider.&lt;br/&gt;The service request can be protocol-specific and linked with the&lt;br/&gt;credentials submission with a simple pair of identifiers (e.g a&lt;br/&gt;32-byte random value). At reception by the Provider, the signatures on&lt;br/&gt;the unblinded credentials must be verified against the corresponding&lt;br/&gt;Issuance public key. The quantity of credentials must be equal to the&lt;br/&gt;service units requested as announced by `service_policy`.&lt;br/&gt;&lt;br/&gt;If those checks are correct, the Provider is satisfying the Client&lt;br/&gt;service request, and additionally can provide back authentication&lt;br/&gt;signatures for a new set of blinded credentials (optionally attached&lt;br/&gt;in the service request issued by the Client).&lt;br/&gt;&lt;br/&gt;## Example: Lightning jamming&lt;br/&gt;&lt;br/&gt;Alice, the routing hop, cumulates in this deployment both the role of&lt;br/&gt;Issuer and Provider. As an Issuer, she announces how much Lightning&lt;br/&gt;satoshis she wishes to be paid to countersign a quantity of N&lt;br/&gt;credentials in `credentials_policy`. As a Provider, she announces how&lt;br/&gt;much credentials she wishes to allow a lockup of her 10_000 sats&lt;br/&gt;Lightning channels for 100 blocks in `service_policy`.&lt;br/&gt;&lt;br/&gt;Bob the HTLC sender discovers Alice&amp;#39;s `credentials_policy`, sends a&lt;br/&gt;Lightning payment to Alice and then collects a quantity of N signed&lt;br/&gt;blinded credentials during a issuance dance with Alice. After this,&lt;br/&gt;Bob can build a payment path going through Alice, where her hop&amp;#39;s&lt;br/&gt;onion `payload` includes an identifier Z. Bob transfers the signed&lt;br/&gt;unblinded credentials with the same identifier Z through onion routing&lt;br/&gt;to Alice node.&lt;br/&gt;&lt;br/&gt;Alice node verifies the credentials with respect to her&lt;br/&gt;`service_policy` for the forwarding of HTLC. If this is correct, the&lt;br/&gt;HTLC is forward over her 10_000 sats Lightning channel. If the HTLC&lt;br/&gt;settlement is successful, a new quantity of blinded credentials is&lt;br/&gt;countersigned by Alice to reward Bob for the efficient usage of her&lt;br/&gt;liquidity.&lt;br/&gt;&lt;br/&gt;## Protocol Upsides&lt;br/&gt;&lt;br/&gt;The credentials allows a service Provider to establish a dynamic&lt;br/&gt;risk-management policy, where the submission of credentials is&lt;br/&gt;disabled during the &amp;#34;peaceful&amp;#34; state and where credentials must bind&lt;br/&gt;to 100% of the timevalue of the liquidity service in case of &amp;#34;war&amp;#34;&lt;br/&gt;state. E.g for jamming, the cost of the credentials can match 100% of&lt;br/&gt;the routing fees announced in `channel_update.&lt;br/&gt;&lt;br/&gt;The blinding of the credentials should preserve the privacy of the&lt;br/&gt;HTLC senders, therefore preventing deanonymization of the payments, or&lt;br/&gt;selective censorship of the HTLC forward by a specific HTLC sender.&lt;br/&gt;&lt;br/&gt;The credentials enable an emergent discount effect, where in case of&lt;br/&gt;&amp;#34;honest&amp;#34; behavior of the Client in the usage of the service, they can&lt;br/&gt;be rewarded by fresh credentials, therefore reducing the operational&lt;br/&gt;cost of their future service usage.&lt;br/&gt;&lt;br/&gt;The credentials framework should be generic enough to adapt to&lt;br/&gt;multiple Bitcoin flows beyond HTLC forwarding, and the Lightning&lt;br/&gt;jamming issue. Other flows of interest can be to cover the asymmetries&lt;br/&gt;in collaborative transaction construction, e.g the order of the&lt;br/&gt;release of the contributed UTXOs signatures. Qualitative credentials&lt;br/&gt;could be deployed enabling bounded routing fees or SLA of liquidity&lt;br/&gt;during periods of Lightning network congestion.&lt;br/&gt;&lt;br/&gt;There is a Rust implementation in early progress, with a short-term&lt;br/&gt;goal to have the full Staking Credential flow working in its&lt;br/&gt;non-blinded version for a 1-hop payment path.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;[0] &lt;a href=&#34;https://github.com/civkit/staking-credentials-spec&#34;&gt;https://github.com/civkit/staking-credentials-spec&lt;/a&gt;&lt;br/&gt;[1] &lt;a href=&#34;https://sceweb.sce.uhcl.edu/yang/teaching/csci5234WebSecurityFall2011/Chaum-blind-signatures.PDF&#34;&gt;https://sceweb.sce.uhcl.edu/yang/teaching/csci5234WebSecurityFall2011/Chaum-blind-signatures.PDF&lt;/a&gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230524/35f6e341/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230524/35f6e341/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:13:24Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsf2rdqcm0aatm8y89cx2t8a0n2d39kxqfxfgy3n8p2pxmv9vfhp4szypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24znhlq5f</id>
    
      <title type="html">📅 Original date posted:2023-05-31 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsf2rdqcm0aatm8y89cx2t8a0n2d39kxqfxfgy3n8p2pxmv9vfhp4szypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24znhlq5f" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsqktp7rj9mxccspeapv5tnwlua7ycmfywss6jhyv4m5e8k6nnd72s8degzq&#39;&gt;nevent1q…egzq&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-05-31&lt;br/&gt;🗒️ Summary of this message: The distinction between routing fees and reputation revenue is important in the HTLC endorsement model. Compensation for revenue lost during an attack is based on reputation revenue. However, there may be issues with the coupling effect between routing scoring algorithms and the introduction of endorsement schemes.&lt;br/&gt;📝 Original message:&lt;br/&gt;&amp;gt; I think it&amp;#39;s important to differentiate between fees a node charges and&lt;br/&gt;&amp;gt; *reputation_revenue*. Reputation is determined as a function of the latter.&lt;br/&gt;&amp;gt; If Caroll has a very high *reputation_revenue* and Bob has a very low one,&lt;br/&gt;&amp;gt; then Bob probably won&amp;#39;t have a high reputation with Caroll, as the amount&lt;br/&gt;&amp;gt; of fees he forwards to Caroll is smaller than the damage he can create.&lt;br/&gt;&amp;gt; That is, if Caroll is a huge node and Bob is a raspberry pi, then Bob will&lt;br/&gt;&amp;gt; never have a good reputation with Caroll. If they have similar&lt;br/&gt;&amp;gt; *reputation_revenue*, then getting a good reputation with Bob is as&lt;br/&gt;&amp;gt; difficult as getting a good reputation with Caroll.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In your example (if I got it correctly) Bob&amp;#39;s *reputation_revenue* = 1,000,&lt;br/&gt;&amp;gt; *reputation_window*=100 and *routing_window*=10. Could you explain what are&lt;br/&gt;&amp;gt; Caroll&amp;#39;s parameters are in your example? The *fee_base_msat* does not&lt;br/&gt;&amp;gt; indicate Carolls *reputation_revenue* (unless Alice is the only one&lt;br/&gt;&amp;gt; transacting on the Bob-Caroll channel, and then she is the one paying for&lt;br/&gt;&amp;gt; Bob&amp;#39;s reputation).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; That being said, we use *reputation_revenue *to estimate the damage an&lt;br/&gt;&amp;gt; attacker can create. If there is a chain of nodes that have high reputation&lt;br/&gt;&amp;gt; with each other, and they are jammed, they would be compensated for the&lt;br/&gt;&amp;gt; revenue lost during the attack. If Bob finds that having a high reputation&lt;br/&gt;&amp;gt; with Caroll is crucial and 1,000 sats will not compensate him for loosing&lt;br/&gt;&amp;gt; it, then he should either never endorse anything on that channel, or at&lt;br/&gt;&amp;gt; least put a higher bar than *reputation_revenue*.&lt;br/&gt;&lt;br/&gt;I think the distinction you&amp;#39;re proposing between routing fees and&lt;br/&gt;reputation revenue matters in the HTLC endorsement model. For the&lt;br/&gt;example I&amp;#39;m using let&amp;#39;s say Caroll and Bob share the same exact&lt;br/&gt;parameters, *reputation_revenue* = 1,000, *routing_window*=100 and&lt;br/&gt;*routing_window*=10, where the reputation revenue of Bob towards&lt;br/&gt;Caroll is made from multiple incoming links.&lt;br/&gt;&lt;br/&gt;For each HTLC forwarding request issued from Alice, Bob has to make&lt;br/&gt;the decision between refusing Alice HTLC forward over the Caroll&lt;br/&gt;incoming link, and lose an opportunity of fee income, or accept the&lt;br/&gt;HTLC and suffers from a damage if Alice reveals a posteriori as a&lt;br/&gt;jamming attacker.&lt;br/&gt;&lt;br/&gt;This is unclear to me how the compensation mechanism works in the&lt;br/&gt;chain of nodes that have high reputation with each other, and I still&lt;br/&gt;think the HTLC endorsement mitigation suffers from the classic issues&lt;br/&gt;of reputation systems (i.e whitewashing).&lt;br/&gt;&lt;br/&gt;&amp;gt; Not sure what you mean by that.&lt;br/&gt;&lt;br/&gt;I think there is a coupling effec introduced between the historical&lt;br/&gt;liquidity buckets of routing scoring algorithms and the introduction&lt;br/&gt;of endorsment scheme with adjustement of the channel liquidity and&lt;br/&gt;slots in function of local topology reputation.&lt;br/&gt;&lt;br/&gt;See the LDK scoring engine comments here :&lt;br/&gt;&lt;a href=&#34;https://github.com/lightningdevkit/rust-lightning/blob/eec5ec6b50720144fc23503c3ee9c1c8850517ac/lightning/src/routing/scoring.rs#L336&#34;&gt;https://github.com/lightningdevkit/rust-lightning/blob/eec5ec6b50720144fc23503c3ee9c1c8850517ac/lightning/src/routing/scoring.rs#L336&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Le mer. 17 mai 2023 à 21:49, Clara Shikhelman &amp;lt;clara.shikhelman at gmail.com&amp;gt;&lt;br/&gt;a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; The lack of transitivity of the reputation acquisition cost (e.g based on&lt;br/&gt;&amp;gt;&amp;gt; historical fees earned from forwards originating from the peer) between the&lt;br/&gt;&amp;gt;&amp;gt; hops of the payment path still raises a vulnerability issue for the&lt;br/&gt;&amp;gt;&amp;gt; endorsement scheme, I think.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Namely, let&amp;#39;s say you have Alice, Bob and Caroll where endorsement has&lt;br/&gt;&amp;gt;&amp;gt; been obtained by Alice on the Bob incoming link by paying fees for an&lt;br/&gt;&amp;gt;&amp;gt; amount of 1000 sats for the last 100 blocks. Caroll offers a far higher&lt;br/&gt;&amp;gt;&amp;gt; pricing on her incoming link from Bob, 10000 sats as `fee_base_msat` on her&lt;br/&gt;&amp;gt;&amp;gt; endorsed slots. It sounds to me there is nothing preventing Alice from&lt;br/&gt;&amp;gt;&amp;gt; sacrificing her earned reputation to inflict a loss of routing fees damage&lt;br/&gt;&amp;gt;&amp;gt; on Caroll incoming link ?&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I think it&amp;#39;s important to differentiate between fees a node charges and&lt;br/&gt;&amp;gt; *reputation_revenue*. Reputation is determined as a function of the&lt;br/&gt;&amp;gt; latter. If Caroll has a very high *reputation_revenue* and Bob has a very&lt;br/&gt;&amp;gt; low one, then Bob probably won&amp;#39;t have a high reputation with Caroll, as the&lt;br/&gt;&amp;gt; amount of fees he forwards to Caroll is smaller than the damage he can&lt;br/&gt;&amp;gt; create. That is, if Caroll is a huge node and Bob is a raspberry pi, then&lt;br/&gt;&amp;gt; Bob will never have a good reputation with Caroll. If they have similar&lt;br/&gt;&amp;gt; *reputation_revenue*, then getting a good reputation with Bob is as&lt;br/&gt;&amp;gt; difficult as getting a good reputation with Caroll.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In your example (if I got it correctly) Bob&amp;#39;s *reputation_revenue* =&lt;br/&gt;&amp;gt; 1,000, *reputation_window*=100 and *routing_window*=10. Could you explain&lt;br/&gt;&amp;gt; what are Caroll&amp;#39;s parameters are in your example? The *fee_base_msat*&lt;br/&gt;&amp;gt; does not indicate Carolls *reputation_revenue* (unless Alice is the only&lt;br/&gt;&amp;gt; one transacting on the Bob-Caroll channel, and then she is the one paying&lt;br/&gt;&amp;gt; for Bob&amp;#39;s reputation).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; That being said, we use *reputation_revenue *to estimate the damage an&lt;br/&gt;&amp;gt; attacker can create. If there is a chain of nodes that have high reputation&lt;br/&gt;&amp;gt; with each other, and they are jammed, they would be compensated for the&lt;br/&gt;&amp;gt; revenue lost during the attack. If Bob finds that having a high reputation&lt;br/&gt;&amp;gt; with Caroll is crucial and 1,000 sats will not compensate him for loosing&lt;br/&gt;&amp;gt; it, then he should either never endorse anything on that channel, or at&lt;br/&gt;&amp;gt; least put a higher bar than *reputation_revenue*.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; There is an independent new observation on the effect of dynamic&lt;br/&gt;&amp;gt;&amp;gt; reputation windows on payment reliability, as those windows are not&lt;br/&gt;&amp;gt;&amp;gt; announced to the rest of the network, sudden changes in the links&lt;br/&gt;&amp;gt;&amp;gt; throughput based on HTLC resolution might break the historical liquidity&lt;br/&gt;&amp;gt;&amp;gt; buckets of routing scoring algorithms (at least in the way we&amp;#39;re doing it&lt;br/&gt;&amp;gt;&amp;gt; for LDK), I think ?&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Not sure what you mean by that.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Best,&lt;br/&gt;&amp;gt; Clara&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230531/5017e472/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230531/5017e472/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:13:20Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqswtn72erngxenhe5lmjurk3rca508wcga4u5t056lvy6jgpcnry9czypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zvgysmt</id>
    
      <title type="html">📅 Original date posted:2023-05-17 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqswtn72erngxenhe5lmjurk3rca508wcga4u5t056lvy6jgpcnry9czypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zvgysmt" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqspgtrfralcekrak6f9fnpr9r52cm4geg4n3d2z9w73ylh9rjpvpmgak4hw9&#39;&gt;nevent1q…4hw9&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-05-17&lt;br/&gt;🗒️ Summary of this message: The Lightning Network&amp;#39;s reputation system is vulnerable to sudden changes in fees and behavior, making it susceptible to attacks and whitewashing.&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi all,&lt;br/&gt;&lt;br/&gt;&amp;gt; That is, one cannot gain reputation during low fee times and use it when&lt;br/&gt;fees are high.&lt;br/&gt;&lt;br/&gt;&amp;gt; Good reputation is also a function of the general environment, and so if&lt;br/&gt;there is a fee spike, reputation will change. It is true that nodes can go&lt;br/&gt;rogue, but this is why we aim &amp;gt; for the price of a good reputation to be&lt;br/&gt;similar to the amount of damage they can create.&lt;br/&gt;&lt;br/&gt;The lack of transitivity of the reputation acquisition cost (e.g based on&lt;br/&gt;historical fees earned from forwards originating from the peer) between the&lt;br/&gt;hops of the payment path still raises a vulnerability issue for the&lt;br/&gt;endorsement scheme, I think.&lt;br/&gt;&lt;br/&gt;Namely, let&amp;#39;s say you have Alice, Bob and Caroll where endorsement has been&lt;br/&gt;obtained by Alice on the Bob incoming link by paying fees for an amount of&lt;br/&gt;1000 sats for the last 100 blocks. Caroll offers a far higher pricing on&lt;br/&gt;her incoming link from Bob, 10000 sats as `fee_base_msat` on her endorsed&lt;br/&gt;slots. It sounds to me there is nothing preventing Alice from sacrificing&lt;br/&gt;her earned reputation to inflict a loss of routing fees damage on Caroll&lt;br/&gt;incoming link ?&lt;br/&gt;&lt;br/&gt;Generally, I think the endorsement scheme assumes some synchronicity in the&lt;br/&gt;setting of routing fees by the hops. In practice, it&amp;#39;s expected there will&lt;br/&gt;be variations based on their own pricing of liquidity, their accumulated&lt;br/&gt;data sets (e.g historical view of LN gossips) and downstream link topology.&lt;br/&gt;And this is the same between building a mitigation on concepts like&lt;br/&gt;&amp;#34;peace/war&amp;#34; time, sophisticated attackers might be able to mask their&lt;br/&gt;traffic as some spontaneous congestion.&lt;br/&gt;&lt;br/&gt;There is an independent new observation on the effect of dynamic reputation&lt;br/&gt;windows on payment reliability, as those windows are not announced to the&lt;br/&gt;rest of the network, sudden changes in the links throughput based on HTLC&lt;br/&gt;resolution might break the historical liquidity buckets of routing scoring&lt;br/&gt;algorithms (at least in the way we&amp;#39;re doing it for LDK), I think ?&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Le mer. 10 mai 2023 à 16:59, Clara Shikhelman &amp;lt;clara.shikhelman at gmail.com&amp;gt;&lt;br/&gt;a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi Christian,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Thanks for your comments! We will discuss this further in the upcoming&lt;br/&gt;&amp;gt; call on the 15th, would be great to see you there!&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; this is an intrinsic issue with reputation systems, and the main&lt;br/&gt;&amp;gt;&amp;gt; reason I&amp;#39;m sceptical w.r.t. their usefulness in lightning.&lt;br/&gt;&amp;gt;&amp;gt; Fundamentally any reputation system bases their expectations for the&lt;br/&gt;&amp;gt;&amp;gt; future on experiences they made in the past, and they are thus always&lt;br/&gt;&amp;gt;&amp;gt; susceptible to sudden behavioral changes (going rogue from a prior&lt;br/&gt;&amp;gt;&amp;gt; clean record) and whitewashing attacks (switching identity, abusing&lt;br/&gt;&amp;gt;&amp;gt; any builtin bootstrapping method for new users to gain a good or&lt;br/&gt;&amp;gt;&amp;gt; neutral reputation before turning rogue repeatedly).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In the Lightning Network, fees are a native way to put a price on having a&lt;br/&gt;&amp;gt; good reputation (see details here [0]). In the design that we suggest, the&lt;br/&gt;&amp;gt; reputation gained today cannot be used in the distant future, and funds&lt;br/&gt;&amp;gt; need to be invested continuously to keep a good reputation. Good reputation&lt;br/&gt;&amp;gt; is also a function of the general environment, and so if there is a fee&lt;br/&gt;&amp;gt; spike, reputation will change. It is true that nodes can go rogue, but this&lt;br/&gt;&amp;gt; is why we aim for the price of a good reputation to be similar to the&lt;br/&gt;&amp;gt; amount of damage they can create.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; This gets compounded as soon as we start gossiping about reputations,&lt;br/&gt;&amp;gt;&amp;gt; since now our decisions are no longer based just on information we can&lt;br/&gt;&amp;gt;&amp;gt; witness ourselves, or at least verify its correctness, and as such an&lt;br/&gt;&amp;gt;&amp;gt; attacker can most likely &amp;#34;earn&amp;#34; a positive reputation in some other&lt;br/&gt;&amp;gt;&amp;gt; part of the world, and then turn around and attack the nodes that&lt;br/&gt;&amp;gt;&amp;gt; trusted the reputation shared from those other parts.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Notice that we are not gossiping about our peer&amp;#39;s reputation. The only&lt;br/&gt;&amp;gt; thing that a node communicates to its neighbor is whether they see an HTLC&lt;br/&gt;&amp;gt; as endorsed or just neutral, that is, should this HTLC be granted access to&lt;br/&gt;&amp;gt; all of the resources or just the restricted part.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I&amp;#39;d be very interested in how many repeat interactions nodes get from&lt;br/&gt;&amp;gt;&amp;gt; individual senders, since that also tells us how much use we can get&lt;br/&gt;&amp;gt;&amp;gt; out of local-only reputation based systems, and I wouldn&amp;#39;t be&lt;br/&gt;&amp;gt;&amp;gt; surprised if, for large routing nodes, we have sufficient data for&lt;br/&gt;&amp;gt;&amp;gt; them to make an informed decision, while the edges may be more&lt;br/&gt;&amp;gt;&amp;gt; vulnerable, but they&amp;#39;d also be used by way fewer senders, and the&lt;br/&gt;&amp;gt;&amp;gt; impact of an attack would also be proportionally smaller.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This is something we hope to learn once we&amp;#39;ll start collecting data from&lt;br/&gt;&amp;gt; our brave volunteers :)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; Clara&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230517/9cd075a3/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230517/9cd075a3/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:13:19Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsy43ynv0szmhyy8p6um3n92rkevmx4zlvsa5tntghmukjw4dvv0mgzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zhkaehl</id>
    
      <title type="html">📅 Original date posted:2023-05-06 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsy43ynv0szmhyy8p6um3n92rkevmx4zlvsa5tntghmukjw4dvv0mgzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zhkaehl" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsd2elqza200t2kwq98az9r4kx5uv8spnx6ncvanu2u7rtmdttt2vc6agc8f&#39;&gt;nevent1q…gc8f&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-05-06&lt;br/&gt;🗒️ Summary of this message: The Lightning Network community is exploring data gathering and local reputation tracking to mitigate channel jamming, starting with a binary endorsement field. They aim to experiment with different algorithms for tracking local reputation and gather real-world data for future simulation work.&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi *,&lt;br/&gt;&lt;br/&gt;&amp;gt; Our suggestion is to start simple with a binary endorsement field. As&lt;br/&gt;&amp;gt; we learn more, we will be better equipped to understand whether a&lt;br/&gt;&amp;gt; more expressive value is required.&lt;br/&gt;&lt;br/&gt;I think the HTLC endorsement scheme as proposed is still suffering from a&lt;br/&gt;vulnerability as local reputation can be built up during periods of low&lt;br/&gt;routing fees, endorsement gained and then abused during periods of high&lt;br/&gt;routing fees. Therefore, it sounds to me this scheme should aim for some&lt;br/&gt;reputational transitivity between incoming traffic and outgoing traffic.&lt;br/&gt;Namely, the acquisition cost of the local reputation should be equal to the&lt;br/&gt;max timevalue damage that one can inflict on a routing node channel&lt;br/&gt;accessible from its local counterparty granting this high-level of&lt;br/&gt;reputation.&lt;br/&gt;&lt;br/&gt;I don&amp;#39;t know if this can be fixed by ensuring permanent link-level &amp;#34;gossip&amp;#34;&lt;br/&gt;where counterparties along a payment path expose their reputation&lt;br/&gt;heuristics to guarantee this transitivity, or it&amp;#39;s a fundamental issue with&lt;br/&gt;a point-to-point approach like HTLC endorsement.&lt;br/&gt;&lt;br/&gt;Opened an issue on the repository to converge on a threat model:&lt;br/&gt;&lt;a href=&#34;https://github.com/ClaraShk/LNJamming/pull/13&#34;&gt;https://github.com/ClaraShk/LNJamming/pull/13&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;I still think building data gathering infrastructure for Lightning is&lt;br/&gt;valuable as ultimately any jamming mitigation will have to adapt its&lt;br/&gt;upfront fees or reputation acquisition cost in function of HTLC traffic and&lt;br/&gt;market forces.&lt;br/&gt;&lt;br/&gt;Looking forward to giving an update on Staking Credentials [0], an&lt;br/&gt;end-to-end approach to mitigate channel jamming.&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;[0]&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-November/003754.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-November/003754.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Le dim. 30 avr. 2023 à 03:57, Carla Kirk-Cohen &amp;lt;kirkcohenc at gmail.com&amp;gt; a&lt;br/&gt;écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi list,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Some updates on channel jamming!&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # Next Call&lt;br/&gt;&amp;gt; - Monday 01 May @ 15:00 UTC&lt;br/&gt;&amp;gt; - &lt;a href=&#34;https://meet.jit.si/UnjammingLN&#34;&gt;https://meet.jit.si/UnjammingLN&lt;/a&gt;&lt;br/&gt;&amp;gt; - Agenda: &lt;a href=&#34;https://github.com/ClaraShk/LNJamming/issues/12&#34;&gt;https://github.com/ClaraShk/LNJamming/issues/12&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # Data Gathering&lt;br/&gt;&amp;gt; During these weekly calls, we&amp;#39;ve come to agreement that we would like&lt;br/&gt;&amp;gt; to gather data about the use of HTLC endorsement and local reputation&lt;br/&gt;&amp;gt; tracking for jamming mitigation. A reminder of the full scheme is&lt;br/&gt;&amp;gt; included at the end of this email, and covered more verbosely in [1].&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; We have a few goals in mind:&lt;br/&gt;&amp;gt; - Observe the effect of endorsement in the steady state with&lt;br/&gt;&amp;gt;   logging-only implementation.&lt;br/&gt;&amp;gt; - Gather real-world data for use in future simulation work.&lt;br/&gt;&amp;gt; - Experiment with different algorithms for tracking local reputation.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The minimal changes required to add HTLC endorsement are outlined in [2].&lt;br/&gt;&amp;gt; Our suggestion is to start simple with a binary endorsement field. As&lt;br/&gt;&amp;gt; we learn more, we will be better equipped to understand whether a&lt;br/&gt;&amp;gt; more expressive value is required.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; With this infrastructure in place, we can start to experiment with&lt;br/&gt;&amp;gt; various local reputation schemes and data gathering, possibly even&lt;br/&gt;&amp;gt; externally to LN implementations in projects like circuitbreaker [3].&lt;br/&gt;&amp;gt; We&amp;#39;d be interested to hear whether there&amp;#39;s any appetite to deploy using&lt;br/&gt;&amp;gt; an experimental TLV value?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # Reputation Scheme&lt;br/&gt;&amp;gt; - Each node locally tracks the reputation of its direct neighbors.&lt;br/&gt;&amp;gt; - Each node allocates, per its risk tolerance:&lt;br/&gt;&amp;gt;   - A number of slots reserved for endorsed HTLCs from high reputation&lt;br/&gt;&amp;gt;     peers.&lt;br/&gt;&amp;gt;   - A portion of liquidity reserved for endorsed HTLCs from high&lt;br/&gt;&amp;gt;     reputation peers.&lt;br/&gt;&amp;gt; - Forwarding of HTLCs:&lt;br/&gt;&amp;gt;   - If a HTLC is endorsed by a high reputation peer, it is forwarded&lt;br/&gt;&amp;gt;     as usual with endorsed = 1.&lt;br/&gt;&amp;gt;   - Otherwise, it is forwarded with endorsed = 0 if there are slots and&lt;br/&gt;&amp;gt;     liquidity available for unknown HTLCs.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Endorsement and reputation are proposed as the first step in a two part&lt;br/&gt;&amp;gt; scheme for mitigating channel jamming:&lt;br/&gt;&amp;gt; - Reputation for slow jams which are easily detected as misbehavior.&lt;br/&gt;&amp;gt; - Unconditional fees for quick jams that are difficult to detect, as&lt;br/&gt;&amp;gt;   they can always fall under a target threshold.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Looking forward to discussing further in the upcoming call!&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Best,&lt;br/&gt;&amp;gt; Carla and Clara&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [1] &lt;a href=&#34;https://gist.github.com/carlaKC/be820bb638624253f3ae7b39dbd0e343&#34;&gt;https://gist.github.com/carlaKC/be820bb638624253f3ae7b39dbd0e343&lt;/a&gt;&lt;br/&gt;&amp;gt; [2] &lt;a href=&#34;https://github.com/lightning/bolts/pull/1071&#34;&gt;https://github.com/lightning/bolts/pull/1071&lt;/a&gt;&lt;br/&gt;&amp;gt; [3] &lt;a href=&#34;https://github.com/lightningequipment/circuitbreaker&#34;&gt;https://github.com/lightningequipment/circuitbreaker&lt;/a&gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230506/40daccce/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230506/40daccce/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:13:17Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqs2wlgxj5stegpg2nc72yw59mtqr0wndrwn3squu2hv8asfg8tswcszypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zlm0lfe</id>
    
      <title type="html">📅 Original date posted:2023-05-10 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqs2wlgxj5stegpg2nc72yw59mtqr0wndrwn3squu2hv8asfg8tswcszypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zlm0lfe" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs83xyu79u4l9j8p859hn8ee74sgwghcca2tyrxemutg3g6jvgtulq8vcmz5&#39;&gt;nevent1q…cmz5&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-05-10&lt;br/&gt;🗒️ Summary of this message: Bitcoin developer defends his right to expose potential conflicts of interest and moral hazards in open-source development communication channels.&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Tony,&lt;br/&gt;&lt;br/&gt;&amp;gt; Is there a better place to have public communication? Unfortunately since&lt;br/&gt;one off topic email was sent here, it&amp;#39;s been a ghost town. It appears that&lt;br/&gt;there&amp;#39;s many emails being held and only one moderator that checks them once&lt;br/&gt;a week.&lt;br/&gt;&lt;br/&gt;As I think you&amp;#39;re referring to my post of March 21th and as the author of&lt;br/&gt;this post, I&amp;#39;ll politely refuse the qualification of &amp;#34;off-topic&amp;#34;. I had and&lt;br/&gt;I still have the concerns of &amp;#34;frivolous legal claims&amp;#34; being used between&lt;br/&gt;bitcoin developers/organizations provoking a distortion of the neutrality&lt;br/&gt;of the development and a chilling effect of the technical discussions (i.e&lt;br/&gt;code we compile and spec we implement). For those reasons, it was my legal&lt;br/&gt;right and moral duty to inform the community of what is happening between&lt;br/&gt;Chaincode and myself. And here I&amp;#39;m following the recommendation of one of&lt;br/&gt;the moderators of the Lightning mailing list himself &amp;#34;If this worries you&lt;br/&gt;too, let&amp;#39;s make sure we keep each other honest, OK?&amp;#34; [0].&lt;br/&gt;&lt;br/&gt;When you think a group of people with open-source responsibilities are in a&lt;br/&gt;situation of conflict of interests or &amp;#34;moral hazards&amp;#34;, or even the&lt;br/&gt;appearance of them, you have the right to expose the wrongdoing, including&lt;br/&gt;the _proportional_ revelation of private elements. People have done the&lt;br/&gt;&amp;#34;free choice&amp;#34; to conduct a career in open-source, for some even declaring&lt;br/&gt;in some context to maintain integrity and accept their actions to be&lt;br/&gt;submitted to external accountability [1]. While the exposure of private&lt;br/&gt;elements of public personalities might break common courtesy, it&amp;#39;s a&lt;br/&gt;morally valid practice if you&amp;#39;re familiar with the public institutions of&lt;br/&gt;US and Europe, and I think this practice has found validity in the history&lt;br/&gt;of open-source commons or IETF&amp;#39;s protocol development [1].&lt;br/&gt;&lt;br/&gt;Beyond, the Bitcoin and Lightning development communication channels&lt;br/&gt;constitute a public forum, where by nature the participants are exchanging&lt;br/&gt;ideas and defending competing interests. In consequence, the participants&amp;#39;&lt;br/&gt;rights and capabilities to contribute and speak their minds in those&lt;br/&gt;communication channels should be protected. Those communication channels&lt;br/&gt;are not your usual corporate workplace, and in case of conflicting&lt;br/&gt;principles, the maintainers of those communication channels should ensure a&lt;br/&gt;balance of rights and a proportionality in any restraining measure.&lt;br/&gt;&lt;br/&gt;And this new post is not to exonerate myself of any legal responsibility&lt;br/&gt;for personal matters that could be recognized as the outcome of a judicial&lt;br/&gt;process, respective of both rights of the accusation and rights of the&lt;br/&gt;defense. Rather to enlighten the Bitcoin community that the formal&lt;br/&gt;separation between private matters and open-source responsibilities, and&lt;br/&gt;the adequate check-and-balances to guarantee this separation is somehow&lt;br/&gt;what are the underlying stakes for this feud between Chaincode and myself,&lt;br/&gt;from my perspective. I can say missing an open-source engineering meeting&lt;br/&gt;or being revoked a few Github permissions matters far less than the clear&lt;br/&gt;affirmation and respect of the freedom of expression, the presumption of&lt;br/&gt;innocence and due process in the Bitcoin common space, all proportions&lt;br/&gt;conserved.&lt;br/&gt;&lt;br/&gt;I don&amp;#39;t blame any party involved in this issue, nor assign &amp;#34;bad&lt;br/&gt;intentions&amp;#39;&amp;#39;. One position is really a function of your life experiences,&lt;br/&gt;knowledge of the legal and cultural framework and access to the factual&lt;br/&gt;elements. As all human conflicts it is not binary rather &amp;#34;grey&amp;#34;. People can&lt;br/&gt;be top executives at a billion-dollar company, having successful ventures&lt;br/&gt;with hundreds of folks under management, or have a lot of responsibilities&lt;br/&gt;for their relative young age, and still disagree on the set of legal and&lt;br/&gt;moral principles to apply in the present case.&lt;br/&gt;&lt;br/&gt;Finally, thanks to the Bitcoin friends who have reached out to call for&lt;br/&gt;level-headedness and cool-mindness in the public discussion of this complex&lt;br/&gt;topic. Like I said to them, in the lack of more suspected wrongdoing from&lt;br/&gt;the other side, I won&amp;#39;t communicate further on this subject on the Bitcoin&lt;br/&gt;and Lightning technical channels. However I still firmly believe the&lt;br/&gt;discussion on the principles, abstract in the maximum from its private&lt;br/&gt;elements, should still be pursued on other channels. Independently, there&lt;br/&gt;is a legal channel opened between Chaincode and myself and good progress is&lt;br/&gt;made to find a serene and long-standing resolution to this issue.&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;[0]&lt;br/&gt;&lt;a href=&#34;https://rusty-lightning.medium.com/the-corrosion-of-ethics-in-cryptocurrencies-f7ba77e9dfc3&#34;&gt;https://rusty-lightning.medium.com/the-corrosion-of-ethics-in-cryptocurrencies-f7ba77e9dfc3&lt;/a&gt;&lt;br/&gt;[1]&lt;br/&gt;&lt;a href=&#34;https://github.com/btrustteam/board-book/blob/main/vision/genesis_principles.md&#34;&gt;https://github.com/btrustteam/board-book/blob/main/vision/genesis_principles.md&lt;/a&gt;&lt;br/&gt;[2]&lt;br/&gt;&lt;a href=&#34;https://www.ietf.org/about/administration/policies-procedures/conflict-interest/&#34;&gt;https://www.ietf.org/about/administration/policies-procedures/conflict-interest/&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Le lun. 8 mai 2023 à 21:26, Tony Giorgio via Lightning-dev &amp;lt;&lt;br/&gt;lightning-dev at lists.linuxfoundation.org&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Is there a better place to have public communication? Unfortunately since&lt;br/&gt;&amp;gt; one off topic email was sent here, it&amp;#39;s been a ghost town. It appears that&lt;br/&gt;&amp;gt; there&amp;#39;s many emails being held and only one moderator that checks them once&lt;br/&gt;&amp;gt; a week.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Would hate to see this list die but wondering if there&amp;#39;s a better place&lt;br/&gt;&amp;gt; for discussions?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Tony&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; -------- Original Message --------&lt;br/&gt;&amp;gt; On Apr 29, 2023, 9:57 PM, niftynei &amp;lt; niftynei at gmail.com&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Hi all,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; When I joined the lightning community a few years ago, I was relatively&lt;br/&gt;&amp;gt; new to open source software and specification work. Rusty really impressed&lt;br/&gt;&amp;gt; on me on the importance of holding conversations, as much as possible in&lt;br/&gt;&amp;gt; public.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Practically speaking, this encompasses IRC, this mailing list, and github&lt;br/&gt;&amp;gt; issues/PRs.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The reason for this is twofold.  It helps document the range of options&lt;br/&gt;&amp;gt; considered for technical decisions and it provides an interface point for&lt;br/&gt;&amp;gt; new participants to contribute to the discussion.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Given some recent mails that were posted to this list, now seems like a&lt;br/&gt;&amp;gt; good time to reiterate the importance and preference of public&lt;br/&gt;&amp;gt; communication whenever possible, especially for specification or technical&lt;br/&gt;&amp;gt; discussions.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ~ nifty&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230510/1f0f9268/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230510/1f0f9268/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:13:09Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqs06ukfa452d2uzu4h5njlvyatzql07u7lanneyyrv9lyszrz2uruczypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zrqs7h2</id>
    
      <title type="html">📅 Original date posted:2023-04-03 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqs06ukfa452d2uzu4h5njlvyatzql07u7lanneyyrv9lyszrz2uruczypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zrqs7h2" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqswfh2t29h3rq3atgeqqyqlkagrmpe9atyx3zz0aezcnetxt80jxsqzpwzjn&#39;&gt;nevent1q…wzjn&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-04-03&lt;br/&gt;🗒️ Summary of this message: Developers discuss challenges with implementing 0-conf splicing in Bitcoin&amp;#39;s Lightning Network, including the risk of double-spending and potential vulnerabilities.&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Bastien,&lt;br/&gt;&lt;br/&gt;Thanks for the update on the state of splicing.&lt;br/&gt;&lt;br/&gt;&amp;gt; We&amp;#39;ve also discovered that implementing 0-conf splicing is tricky: you&lt;br/&gt;&amp;gt; need to be very careful about scenarios where your peer force-closes&lt;br/&gt;&amp;gt; using an *inactive* commitment that ends up double-spending what you&lt;br/&gt;&amp;gt; think is the only *active* commitment but is unconfirmed. We&amp;#39;d be happy&lt;br/&gt;&amp;gt; to discuss that in more details with other implementers to reduce the&lt;br/&gt;&amp;gt; risk of introducing new vulnerabilities when shipping that feature.&lt;br/&gt;&lt;br/&gt;I think halting 0-conf splicing is pretty easy for a counterparty by&lt;br/&gt;abusing Bitcoin Core mempool replacement rule #5 on the maximum number of&lt;br/&gt;original transactions replaced.&lt;br/&gt;&lt;br/&gt;Let&amp;#39;s say you have Alice with 10% of the channel capacity as a balance in&lt;br/&gt;the &amp;#34;inactive&amp;#34; commitment and the 90% remaining in favor of Bob. Bob has&lt;br/&gt;initiated a splice out of 70% of the channel capacity. On the interactive&lt;br/&gt;transaction, Alice adds 4 unrelated confirmed inputs and then broadcasts 4&lt;br/&gt;chains of 25 unconfirmed transactions from those inputs.&lt;br/&gt;&lt;br/&gt;When Bob broadcasts the splice-out, it should be rejected by the network&lt;br/&gt;mempools on the grounds of RBF rule #5, whatever the absolute fee and&lt;br/&gt;feerate. So the &amp;#34;0-conf&amp;#34; splicing might be maintained under risk of&lt;br/&gt;double-spend by your counterparty for a while.&lt;br/&gt;&lt;br/&gt;It sounds like Bob&amp;#39;s splice out funds should be segregated until the&lt;br/&gt;corresponding &amp;#34;active commitment&amp;#34; is confirmed, i.e no use to fund another&lt;br/&gt;channel,&lt;br/&gt;with inbound/outbound HTLC flows.&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;Le lun. 3 avr. 2023 à 00:25, Bastien TEINTURIER &amp;lt;bastien at acinq.fr&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Good morning list,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; As some of you may know, we&amp;#39;ve been hard at work experimenting with&lt;br/&gt;&amp;gt; splicing [1]. Splicing is a complex feature with a large design space.&lt;br/&gt;&amp;gt; It was interesting to iterate on two separate implementations (eclair&lt;br/&gt;&amp;gt; and cln) and discover the pain points, edge cases and things that could&lt;br/&gt;&amp;gt; be improved in the protocol specification.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; After a few months trying out different approaches, we&amp;#39;d like to share&lt;br/&gt;&amp;gt; changes that we believe make the splicing protocol simpler and more&lt;br/&gt;&amp;gt; robust.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; We call &amp;#34;active commitments&amp;#34; the set of valid commitment transactions to&lt;br/&gt;&amp;gt; which updates must be applied. While one (or more) splices are ongoing,&lt;br/&gt;&amp;gt; there is more than one active commitment. When signing updates, we send&lt;br/&gt;&amp;gt; one `commitment_signed` message per active commitment. We send those&lt;br/&gt;&amp;gt; messages in the order in which the corresponding funding transactions&lt;br/&gt;&amp;gt; have been created, which lets the receiver implicitly match every&lt;br/&gt;&amp;gt; `commitment_signed` to their respective funding transaction.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Once we&amp;#39;ve negotiated a new splice and reached the signing steps of the&lt;br/&gt;&amp;gt; interactive-tx protocol, we send a single `commitment_signed` for that&lt;br/&gt;&amp;gt; new commitment. We don&amp;#39;t revoke the previous commitment(s), as this adds&lt;br/&gt;&amp;gt; an unnecessary step. Conceptually, we&amp;#39;re simply adding a new commitment&lt;br/&gt;&amp;gt; to our active commitments set.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A sample flow will look like this:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;    Alice                           Bob&lt;br/&gt;&amp;gt;      |             stfu             |&lt;br/&gt;&amp;gt;      |-----------------------------&amp;gt;|&lt;br/&gt;&amp;gt;      |             stfu             |&lt;br/&gt;&amp;gt;      |&amp;lt;-----------------------------|&lt;br/&gt;&amp;gt;      |          splice_init         |&lt;br/&gt;&amp;gt;      |-----------------------------&amp;gt;|&lt;br/&gt;&amp;gt;      |          splice_ack          |&lt;br/&gt;&amp;gt;      |&amp;lt;-----------------------------|&lt;br/&gt;&amp;gt;      |                              |&lt;br/&gt;&amp;gt;      |       &amp;lt;interactive-tx&amp;gt;       |&lt;br/&gt;&amp;gt;      |&amp;lt;----------------------------&amp;gt;|&lt;br/&gt;&amp;gt;      |                              |&lt;br/&gt;&amp;gt;      |         tx_complete          |&lt;br/&gt;&amp;gt;      |-----------------------------&amp;gt;|&lt;br/&gt;&amp;gt;      |         tx_complete          |&lt;br/&gt;&amp;gt;      |&amp;lt;-----------------------------|&lt;br/&gt;&amp;gt;      |         commit_sig           | Sign the new commitment.&lt;br/&gt;&amp;gt;      |-----------------------------&amp;gt;|&lt;br/&gt;&amp;gt;      |         commit_sig           | Sign the new commitment.&lt;br/&gt;&amp;gt;      |&amp;lt;-----------------------------|&lt;br/&gt;&amp;gt;      |        tx_signatures         |&lt;br/&gt;&amp;gt;      |-----------------------------&amp;gt;|&lt;br/&gt;&amp;gt;      |        tx_signatures         |&lt;br/&gt;&amp;gt;      |&amp;lt;-----------------------------|&lt;br/&gt;&amp;gt;      |                              |&lt;br/&gt;&amp;gt;      |       update_add_htlc        | Alice and Bob use the channel while&lt;br/&gt;&amp;gt; the splice transaction is unconfirmed.&lt;br/&gt;&amp;gt;      |-----------------------------&amp;gt;|&lt;br/&gt;&amp;gt;      |       update_add_htlc        |&lt;br/&gt;&amp;gt;      |-----------------------------&amp;gt;|&lt;br/&gt;&amp;gt;      |         commit_sig           | Sign the old commitment.&lt;br/&gt;&amp;gt;      |-----------------------------&amp;gt;|&lt;br/&gt;&amp;gt;      |         commit_sig           | Sign the new commitment.&lt;br/&gt;&amp;gt;      |-----------------------------&amp;gt;|&lt;br/&gt;&amp;gt;      |       revoke_and_ack         |&lt;br/&gt;&amp;gt;      |&amp;lt;-----------------------------|&lt;br/&gt;&amp;gt;      |         commit_sig           | Sign the old commitment.&lt;br/&gt;&amp;gt;      |&amp;lt;-----------------------------|&lt;br/&gt;&amp;gt;      |         commit_sig           | Sign the new commitment.&lt;br/&gt;&amp;gt;      |&amp;lt;-----------------------------|&lt;br/&gt;&amp;gt;      |       revoke_and_ack         |&lt;br/&gt;&amp;gt;      |-----------------------------&amp;gt;|&lt;br/&gt;&amp;gt;      |                              |&lt;br/&gt;&amp;gt;      |        splice_locked         | The splice transaction confirms.&lt;br/&gt;&amp;gt;      |-----------------------------&amp;gt;|&lt;br/&gt;&amp;gt;      |        splice_locked         |&lt;br/&gt;&amp;gt;      |&amp;lt;-----------------------------|&lt;br/&gt;&amp;gt;      |                              |&lt;br/&gt;&amp;gt;      |       update_add_htlc        | Alice and Bob can use the channel&lt;br/&gt;&amp;gt; and forget the old commitment.&lt;br/&gt;&amp;gt;      |-----------------------------&amp;gt;|&lt;br/&gt;&amp;gt;      |         commit_sig           | Sign the new commitment.&lt;br/&gt;&amp;gt;      |-----------------------------&amp;gt;|&lt;br/&gt;&amp;gt;      |       revoke_and_ack         |&lt;br/&gt;&amp;gt;      |&amp;lt;-----------------------------|&lt;br/&gt;&amp;gt;      |         commit_sig           | Sign the new commitment.&lt;br/&gt;&amp;gt;      |&amp;lt;-----------------------------|&lt;br/&gt;&amp;gt;      |       revoke_and_ack         |&lt;br/&gt;&amp;gt;      |-----------------------------&amp;gt;|&lt;br/&gt;&amp;gt;      |                              |&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; You can find many more details and sample flows in [2].&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; We require nodes to store data about the funding transaction as soon as&lt;br/&gt;&amp;gt; they send their `commitment_signed` message. This lets us handle every&lt;br/&gt;&amp;gt; disconnection scenario safely, allowing us to either resume the signing&lt;br/&gt;&amp;gt; steps on reconnection or forget the funding attempt. This is important&lt;br/&gt;&amp;gt; because if peers disagree on the set of active commitments, this will&lt;br/&gt;&amp;gt; lead to a force-close. In order to achieve that, we only need to add&lt;br/&gt;&amp;gt; the `next_funding_txid` to the `channel_reestablish` message, and fill&lt;br/&gt;&amp;gt; it when we&amp;#39;re missing signatures from our peer. Again, you can find more&lt;br/&gt;&amp;gt; details and sample flows in [2].&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Finally, after trying various approaches, we believe that the funding&lt;br/&gt;&amp;gt; amounts that peer exchange in `splice_init` and `splice_ack` should be&lt;br/&gt;&amp;gt; relative amounts based on each peer&amp;#39;s current channel balance.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If Alice sends `funding_amount = 200_000 sats`, it means she will be&lt;br/&gt;&amp;gt; adding 200 000 sats to the channel&amp;#39;s capacity (splice-in).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If she sends `funding_amount = -50_000 sats`, it means she will be&lt;br/&gt;&amp;gt; removing 50 000 sats from the channel&amp;#39;s capacity (splice-out).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This makes it easier to compute the new channel balances (otherwise we&lt;br/&gt;&amp;gt; have to deal with millisatoshi to satoshi truncation) and better matches&lt;br/&gt;&amp;gt; the UX that node operators are expecting, which means there is less need&lt;br/&gt;&amp;gt; to glue code between the RPC exposed to the node operator and the actual&lt;br/&gt;&amp;gt; underlying protocol.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; We&amp;#39;ve also discovered that implementing 0-conf splicing is tricky: you&lt;br/&gt;&amp;gt; need to be very careful about scenarios where your peer force-closes&lt;br/&gt;&amp;gt; using an *inactive* commitment that ends up double-spending what you&lt;br/&gt;&amp;gt; think is the only *active* commitment but is unconfirmed. We&amp;#39;d be happy&lt;br/&gt;&amp;gt; to discuss that in more details with other implementers to reduce the&lt;br/&gt;&amp;gt; risk of introducing new vulnerabilities when shipping that feature.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; Bastien&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [1] &lt;a href=&#34;https://github.com/lightning/bolts/pull/863&#34;&gt;https://github.com/lightning/bolts/pull/863&lt;/a&gt;&lt;br/&gt;&amp;gt; [2] &lt;a href=&#34;https://gist.github.com/t-bast/1ac31f4e27734a10c5b9847d06db8d86&#34;&gt;https://gist.github.com/t-bast/1ac31f4e27734a10c5b9847d06db8d86&lt;/a&gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230403/ef027b9b/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230403/ef027b9b/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:13:01Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsf6xpq6yk8g4a3a5vkczvzyj349uyhqdah8ej898pjmgjdf8jjcpqzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zhjsvdl</id>
    
      <title type="html">📅 Original date posted:2023-03-21 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsf6xpq6yk8g4a3a5vkczvzyj349uyhqdah8ej898pjmgjdf8jjcpqzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zhjsvdl" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsdpxdeypqw0upxul3mce085xvztzakkzar2wxra0cqdkmskqe66sqgunx0x&#39;&gt;nevent1q…nx0x&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-03-21&lt;br/&gt;🗒️ Summary of this message: Bitcoin developer Antoine Riard received a cease and desist letter from law firm Jackson Lewis, claiming improper communications with Chaincode Labs employees. Riard is confused about the letter&amp;#39;s authenticity and unclear on the allegations, and is considering seeking advice from the Bitcoin Legal Defense Fund, which is run by Chaincode Labs.&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi all,&lt;br/&gt;&lt;br/&gt;Last Tuesday 14th March, I did receive a letter from the law firm so-called&lt;br/&gt;Jackson Lewis saying they represent Chaincode Labs about the subject of&lt;br/&gt;&amp;#34;improper communications&amp;#34;. Being a long-time Bitcoin developer and knowing&lt;br/&gt;well of Chaincode Labs, I&amp;#39;ve been and I&amp;#39;m still very confused about this&lt;br/&gt;letter&amp;#39;s authenticity.&lt;br/&gt;&lt;br/&gt;The letter is available here under MIT license:&lt;br/&gt;&lt;a href=&#34;https://github.com/ariard/chaincode-improper-communications&#34;&gt;https://github.com/ariard/chaincode-improper-communications&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;The sentences inside are quite unclear to me, especially not being an&lt;br/&gt;English native. They say that I have to halt &amp;#34;all improper and&lt;br/&gt;inappropriate communications with certain Chaincode employees&amp;#34;. In the&lt;br/&gt;past, I did find bugs and other issues in Bitcoin Core Github PRs of some&lt;br/&gt;Chaincode folks, so I don&amp;#39;t know if saying the code might be broken under&lt;br/&gt;&amp;#34;inappropriate communications&amp;#34;. They add &amp;#34;You agreed to do so&amp;#34; without&lt;br/&gt;presenting old-school paperwork signatures or cryptographic ones or OTS&lt;br/&gt;proofs of archived content, so it&amp;#39;s a bit hard to know what to answer on.&lt;br/&gt;Beyond that, they say I would have sent &amp;#34;unsolicited emails&amp;#34; to Chaincode&lt;br/&gt;employees in February 2023. For sure, I&amp;#39;ve sent mails on the usual mailing&lt;br/&gt;lists to which a lot of folks are contributing to. And some of those mails&lt;br/&gt;were pointing to bitcoin technical shortcomings that might piss off people,&lt;br/&gt;as always.&lt;br/&gt;&lt;br/&gt;Then, they say my &amp;#34;conduct was improper &amp;#39;&amp;#39; without pointing to a precise&lt;br/&gt;FOSS code of conduct. The thing is we don&amp;#39;t have a code of conduct in&lt;br/&gt;Bitcoin Core as there are a lot of legal uncertainties (from the recent&lt;br/&gt;inquiry of Chaincode Labs itself iirc). The restraint on communications&lt;br/&gt;tells nothing if it&amp;#39;s scoping the confidential report of security flaws to&lt;br/&gt;selected parties (among them potentially Chaincode folks), in order to&lt;br/&gt;mitigate upcoming jeopardy of Bitcoin funds. Finally, the &amp;#34;any and all&lt;br/&gt;legal actions&amp;#34; doesn&amp;#39;t say if those actions can target open-source&lt;br/&gt;communities and projects I might be involved with (like we&amp;#39;re seeing Tari&lt;br/&gt;Labs doing &amp;#34;legal actions&amp;#34; against LL and therefore impacting the wider&lt;br/&gt;non-LL Taro community).&lt;br/&gt;&lt;br/&gt;There are 2 more troubling issues. One, the title of the letter &amp;#34;Chaincode&lt;br/&gt;Labs - Cease &amp;amp; Desist Letter to Antione Riard&amp;#34;. I really received it like&lt;br/&gt;this and checked the typo multiple times. I think my name is Antoine Riard,&lt;br/&gt;I&amp;#39;ve to verify but I think so. So I don&amp;#39;t know if the letter is legally&lt;br/&gt;valid. Second, the lawyer issuing the letter sounds to be one specialist in&lt;br/&gt;labor law, not really cryptocurrencies and FOSS software.&lt;br/&gt;&lt;br/&gt;In the lack of sound legal advice on my side, I would say the default would&lt;br/&gt;be to reach out to the Bitcoin Legal Defense Fund, which from my&lt;br/&gt;understanding sounds to have a mission to provide guidance to developers&lt;br/&gt;receiving legal intimidations in the pursuit of their open-source&lt;br/&gt;activities. The thing is the Bitcoin Legal Defense Fund is run by Chaincode&lt;br/&gt;Labs among others, so I wouldn&amp;#39;t know if I could ask them for advice on an&lt;br/&gt;issue at first sight involving them. Sounds a weird catch 22.&lt;br/&gt;&lt;br/&gt;By advance my apologies to Chaincode Labs if I&amp;#39;m sharing a forgery or&lt;br/&gt;non-authenticated document assigned to their organization. I believe in the&lt;br/&gt;cases involving Tulip Trading Lawsuit there has been doubt on the quality&lt;br/&gt;of the document produced, so a fool sending forgeries to developers to&lt;br/&gt;throw confusion among the community is not to exclude. In anycase, I&lt;br/&gt;believe it&amp;#39;s better to seek community feedback on what to do about this&lt;br/&gt;letter (and as such ccing all the lists!).&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Antoine&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230321/664f3420/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230321/664f3420/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:12:54Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsq2snqk08tnnj54k8l0huz45hhda9lwch4yh3qtgnkqtnmzzgwwyqzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zp2e87t</id>
    
      <title type="html">📅 Original date posted:2023-03-06 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsq2snqk08tnnj54k8l0huz45hhda9lwch4yh3qtgnkqtnmzzgwwyqzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zp2e87t" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsgc3hk2j00hzeskke0dt3ujy6thzqv8jsr02p25ekcsjumkmxm2hs0hyhf3&#39;&gt;nevent1q…yhf3&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-03-06&lt;br/&gt;🗒️ Summary of this message: The local reputation channel involves forwarding requests from one party to another based on reputation and available outbound liquidity/slots. However, there are concerns about endorsement decision criteria, reputation slashing in case of HTLC failure, and exploitable reputation asymmetries.&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi all,&lt;br/&gt;&lt;br/&gt;My understanding of the local reputation channel is the following, when Bob&lt;br/&gt;receives a HTLC forwarding request from Alice to Caroll:&lt;br/&gt;- if Alice has reputation of 1 and Alice endorses the transaction, Bob&lt;br/&gt;forwards and endorses the HTLC to Caroll&lt;br/&gt;- else if the HTLC amount is under the available outbound liquidity quota&lt;br/&gt;assigned to Alice and available outbound slots assigned to Alice, Bob&lt;br/&gt;forwards the HTLC to Caroll and reduce available outbound liquidity/slots&lt;br/&gt;assigned to Alice&lt;br/&gt;- else the HTLC is rejected&lt;br/&gt;&lt;br/&gt;This is unclear on which criterias the endorsement decision is made (e.g&lt;br/&gt;CLTV expiry delta, odds of settlement, ongoing congestion of outbound&lt;br/&gt;channels ?). Additionally, this is unclear how the available&lt;br/&gt;liquidity/slots on a given outbound channel are initially distributed&lt;br/&gt;between all the inbound channels (e.g proportional to the capacity) and how&lt;br/&gt;they&amp;#39;re balanced once the inbound channels start to accumulate reputation.&lt;br/&gt;&lt;br/&gt;I don&amp;#39;t know if this local reputation scheme precises how reputation is&lt;br/&gt;slashed in case of HTLC failure, and if any &amp;#34;grace&amp;#34; amount/rate is granted&lt;br/&gt;to the inbound channel counterparty, e.g Alice.&lt;br/&gt;&lt;br/&gt;Independently of those considerations, I think this local reputation scheme&lt;br/&gt;might suffer from exploitable reputation asymmetries by a jamming adversary.&lt;br/&gt;Let&amp;#39;s say you have the topology:&lt;br/&gt;&lt;br/&gt;Alice - Bob - Caroll - Dave&lt;br/&gt;&lt;br/&gt;Alice accumulated a reputation of 1 towards Bob and same for Bob towards&lt;br/&gt;Caroll. As `fee_base_msat` Bob picked up 1000 msat and Caroll picked up&lt;br/&gt;2000 msat. If Alice forwards a HTLC to Bob and it is endorsed by him before&lt;br/&gt;relay to Caroll, Alice can now inflict a 50 sat damage to Caroll, while&lt;br/&gt;only encumbering the lower-priced reputational cost towards Bob.&lt;br/&gt;&lt;br/&gt;This concern could hold in case of asymmetries arising from the dynamic&lt;br/&gt;adjustment of routing fees during an evaluated period of time. E.g both Bob&lt;br/&gt;and Caroll requires routing fees of 1000 msat. Alice builds up a reputation&lt;br/&gt;of 1 towards Bob during this period N. At period N&#43;1, Caroll bumps her&lt;br/&gt;routing fees to 2000 msat. From now on, Alice can exploit this asymmetry.&lt;br/&gt;&lt;br/&gt;While I think this deficiency could be fixed by ensuring a proportionality&lt;br/&gt;of the reputation acquisition cost between the inbound channels and the&lt;br/&gt;cost requested by a counterparty on an outbound channel, I believe this&lt;br/&gt;would come with the downside that any update in reputation cost should be&lt;br/&gt;recursively applied to the downstream links (i.e Bob on Alice channel,&lt;br/&gt;Alice on neighbouring inbound channels, etc).&lt;br/&gt;&lt;br/&gt;Apart of this reputation asymmetry concern, I think the local reputation&lt;br/&gt;scheme could suffer from spontaneous jamming by &amp;#34;honest&amp;#34; long-term held&lt;br/&gt;packets (e.g CLTV delta=2 weeks), where even if Alice is not scored to 1 by&lt;br/&gt;Bob, she always settles her long-term held packets. However, those packets&lt;br/&gt;are yielding less routing fees to Bob than let&amp;#39;s say 14 HTLC packets of&lt;br/&gt;CLTV delta = 1 day.&lt;br/&gt;&lt;br/&gt;Finally, the dynamic reduction of the available outbound liquidity/slots in&lt;br/&gt;the occurrence of reputation=0 counterparty&amp;#39;s HTLC being only known at the&lt;br/&gt;link-level could break the expectations of the HTLC senders scoring&lt;br/&gt;algorithms. E.g, being connected to Alice might have probed through another&lt;br/&gt;path the available liquidity on the link Bob-Caroll. This Eve&amp;#39;s probe is&lt;br/&gt;falsified by any reduction done by Caroll towards Bob, and therefore Eve&amp;#39;s&lt;br/&gt;payment reliability is likely to be downgraded.&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;Le jeu. 16 févr. 2023 à 21:29, Clara Shikhelman &amp;lt;clara.shikhelman at gmail.com&amp;gt;&lt;br/&gt;a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi List,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; We’re writing to seek early feedback on a draft for a neighbour reputation&lt;br/&gt;&amp;gt; setting recommendation as a jamming mitigation. The main idea is that&lt;br/&gt;&amp;gt; allowing full access to liquidity and slots in a channel can result in&lt;br/&gt;&amp;gt; jamming. To prevent this, we allow full access only to neighbours that&lt;br/&gt;&amp;gt; forward HTLC that resolve quickly and generate more profit than the damage&lt;br/&gt;&amp;gt; they can potentially create.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The full suggested jamming mitigation solution includes upfront fees&lt;br/&gt;&amp;gt; together with reputation, see [1] for details.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In the previous episodes:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; As presented here [1], we suggest a two part jamming mitigation strategy.&lt;br/&gt;&amp;gt; Reputation-based forwarding is aimed to solve “slow jamming”, where the&lt;br/&gt;&amp;gt; jamming transaction takes a long time to resolve.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The main idea is that each node gives a binary reputation to its&lt;br/&gt;&amp;gt; neighbour. Each channel has a quota of liquidity and slots (say 50% of the&lt;br/&gt;&amp;gt; channel size and 50% of the slots in the channel) dedicated to transactions&lt;br/&gt;&amp;gt; coming from neighbours with reputation 0, or for transactions coming from&lt;br/&gt;&amp;gt; neighbours with reputation 1 that were not endorsed by the neighbour.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; For example, when Alice asks Bob to forward to Charlie then:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If (Alice has reputation 1 with Bob) and (Alice endorses transaction):&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Forward and endorse&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Else:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If (amount &amp;lt; available liquidity quota) and (available slots in quota&amp;gt;0):&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Forward HTLC without endorsing&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Reduce available liquidity and slots&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Else:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Reject&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Reputation:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The question we discuss here is how does Alice gain “good” reputation&lt;br/&gt;&amp;gt; (i.e., a score of 1). Alice starts at 0, and she gains and keeps her good&lt;br/&gt;&amp;gt; reputation of 1 by continuously paying more fees to Bob than the damage she&lt;br/&gt;&amp;gt; can inflict.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The 3 main parameters for reputation that each node operator picks are S,L&lt;br/&gt;&amp;gt; and M. Our recommendations are as follows:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;    -&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;    S should be chosen as the maximum time an HTLC can be unresolved in&lt;br/&gt;&amp;gt;    any of Bob’s channels.&lt;br/&gt;&amp;gt;    -&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;    M is the revenue generated by Bob’s node in the time S, representing&lt;br/&gt;&amp;gt;    the damage Alice could inflict.&lt;br/&gt;&amp;gt;    -&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;    L is the time in which Alice should generate M revenue for Bob for her&lt;br/&gt;&amp;gt;    to have a good reputation of 1. We suggest L=10S.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Alice has reputation 1 if, in the last L seconds, she has forwarded&lt;br/&gt;&amp;gt; payments that generated M satoshi in fees.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; As an example:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;    -&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;    Bob has a maximum CLTV delta of 2 weeks [2]&lt;br/&gt;&amp;gt;    -&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;    Over the last 2 weeks, he has earned 0.5 BTC in routing fees&lt;br/&gt;&amp;gt;    -&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;    Alice will be considered to have good reputation if she has forwarded&lt;br/&gt;&amp;gt;    0.5 BTC of routing revenue to Bob over the last 20 weeks&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Formally:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Let t be the current time, and let S and L be constants.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; M is calculated to be the revenue of Bob in time [t-S,t]. The revenue of&lt;br/&gt;&amp;gt; Bob is the sum of fees from transactions forwarded by any neighbour besides&lt;br/&gt;&amp;gt; Alice &#43; any payments received by Bob. Note that Bob can choose to also take&lt;br/&gt;&amp;gt; into account utility gained from sending payments or anything of value to&lt;br/&gt;&amp;gt; the node operator.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Alice has reputation 1 if in the time [t-L,t] she has forwarded HTLCs&lt;br/&gt;&amp;gt; that paid M in normalized fees.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; We normalize fees by resolution time to reward payments that resolve&lt;br/&gt;&amp;gt; quickly and discount slow resolving payments. Here we assume 10 seconds is&lt;br/&gt;&amp;gt; the “normal” resolution time, this number can be bikesheded, and we round&lt;br/&gt;&amp;gt; up to avoid penalizing transactions resolved quicker than the “normal”.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The fee from a single transaction is normalized by the time it took for&lt;br/&gt;&amp;gt; the HTLC to resolve, counted in slots of 10 seconds. That is:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Normalized_fee = (fee)/[ceiling(time_to_resolve/10s)]&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Some notes&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;    1.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;    The reputation management happens locally, that is, the only protocol&lt;br/&gt;&amp;gt;    change needed is the ability to signal endorsement as a TLV in&lt;br/&gt;&amp;gt;    UpdateAddHTLC. The various parameters can be selected for various risk&lt;br/&gt;&amp;gt;    preferences.&lt;br/&gt;&amp;gt;    2.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;    We currently suggest a binary reputation for simplicity. Having&lt;br/&gt;&amp;gt;    several buckets could be interesting to study, yet we don’t think that the&lt;br/&gt;&amp;gt;    complexity and the possible privacy issues are worth the potential benefits.&lt;br/&gt;&amp;gt;    3.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;    For most use cases, having reputation 0 is more than enough. If we&lt;br/&gt;&amp;gt;    send and receive transactions at a low rate, we usually don’t need the full&lt;br/&gt;&amp;gt;    liquidity and slots available in a channel. Reputation mostly comes into&lt;br/&gt;&amp;gt;    play only when a channel is under attack, and then not all transaction are&lt;br/&gt;&amp;gt;    allowed to go through.&lt;br/&gt;&amp;gt;    4.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;    Following this thread [3]: it is important to note that we are only&lt;br/&gt;&amp;gt;    giving reputation to our direct neighbours. An advantage of this is that we&lt;br/&gt;&amp;gt;    have repeated interactions with them. In practice, this is also the only&lt;br/&gt;&amp;gt;    clean data we have to use when deciding whether to forward an HTLC or not.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Best,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Carla and Clara&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [1]&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-November/003740.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-November/003740.html&lt;/a&gt;&lt;br/&gt;&amp;gt; [2]&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/lightningnetwork/lnd/blob/de94a4ea5e81799330a72dfde111817b38565d99/htlcswitch/link.go#L51&#34;&gt;https://github.com/lightningnetwork/lnd/blob/de94a4ea5e81799330a72dfde111817b38565d99/htlcswitch/link.go#L51&lt;/a&gt;&lt;br/&gt;&amp;gt; [3]&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2023-February/003842.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2023-February/003842.html&lt;/a&gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230306/d19448db/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230306/d19448db/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:12:51Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqs0ymkmzxhnmvunmk6mgztl57n7f5d9ltenvzej6x4456pg0jq2e6qzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zquck2k</id>
    
      <title type="html">📅 Original date posted:2023-03-01 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqs0ymkmzxhnmvunmk6mgztl57n7f5d9ltenvzej6x4456pg0jq2e6qzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zquck2k" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqszg5c23uq66hrs4ke9v3ye3szzzh7jk3lkrf8a6w4ppcxkn7cvgzgfu7npr&#39;&gt;nevent1q…7npr&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-03-01&lt;br/&gt;🗒️ Summary of this message: The use of onion messages (OMs) for payment probing in Lightning Network could be an alternative to HTLC probing. Routing hops could announce their liquidity balances with a new set of gossip messages, committing to a liquidity balance and duration, which could be guaranteed transparently from the rest of the network thanks to parallel channels. Any deviation from the gossip message could be penalized by sender&amp;#39;s scoring algorithms.&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Val,&lt;br/&gt;&lt;br/&gt;Thanks for the proposal here. About using OM for payment probing, I think&lt;br/&gt;there could be an alternative of the routing hops themselves announcing&lt;br/&gt;their liquidity balances with an extension or new set of gossip messages.&lt;br/&gt;&lt;br/&gt;Gossips messages could commit to a liquidity balance and duration&lt;br/&gt;(e.g &#43;1000 blocks from tip), rather relying on sender-side probing, which&lt;br/&gt;might be less and less accurate with higher rate of network liquidity&lt;br/&gt;congestion. Additionally, a routing hop could commit to &amp;#34;private&amp;#34; gossip&lt;br/&gt;sent back to HTLC senders during HTLC successful settlement. Those&lt;br/&gt;&amp;#34;private&amp;#34; gossip might announce &amp;#34;differentiated services&amp;#34; of channel&lt;br/&gt;liquidity levels. I believe this can be guaranteed transparently from the&lt;br/&gt;rest of the network thanks to parallel channels.&lt;br/&gt;&lt;br/&gt;Any deviation from the gossip message could be penalized by sender&amp;#39;s&lt;br/&gt;scoring algorithms as the liquidity SLA parameters have been announced&lt;br/&gt;explicitly by the routing hops. This is just an intuition on how public&lt;br/&gt;channel liquidity discovery could be worked out, and I don&amp;#39;t know which of&lt;br/&gt;the alternatives would be more efficient in terms of&lt;br/&gt;bandwidth/convergence delays.&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;Le lun. 27 févr. 2023 à 21:32, vwallace via Lightning-dev &amp;lt;&lt;br/&gt;lightning-dev at lists.linuxfoundation.org&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi list!&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I wanted to bring up the idea of using onion messages for payment probing,&lt;br/&gt;&amp;gt; which was briefly touched&lt;br/&gt;&amp;gt; on at the 2022 LN summit. Tadge Dryja has also brought up a similar idea.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I recommend reading the gist instead since it has the relevant diagrams&lt;br/&gt;&amp;gt; in-line:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://gist.github.com/valentinewallace/ebe1741f0438c2360eda0f80f0e075c9&#34;&gt;https://gist.github.com/valentinewallace/ebe1741f0438c2360eda0f80f0e075c9&lt;/a&gt;&lt;br/&gt;&amp;gt; but the scheme is also&lt;br/&gt;&amp;gt; posted below for convenience.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ## Introduction&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; For context, in today’s lightning, payment reliability tends to heavily&lt;br/&gt;&amp;gt; depend on having sufficient&lt;br/&gt;&amp;gt; payment volume to determine current liquidity balances of channels, which&lt;br/&gt;&amp;gt; is how most big nodes can&lt;br/&gt;&amp;gt; tell whether a given channel has enough liquidity to forward a given&lt;br/&gt;&amp;gt; amount. If a node is using HTLC&lt;br/&gt;&amp;gt; probing to achieve this payment volume, they use a regular&lt;br/&gt;&amp;gt; `update_add_htlc` message with a bogus&lt;br/&gt;&amp;gt; payment hash, where the error returned informs the sender of whether the&lt;br/&gt;&amp;gt; payment reached the final&lt;br/&gt;&amp;gt; recipient. Note that there is a tradeoff between always routing through&lt;br/&gt;&amp;gt; nodes that are known to&lt;br/&gt;&amp;gt; rebalance their channels vs leaning on probing smaller nodes and “risking”&lt;br/&gt;&amp;gt; payments through them&lt;br/&gt;&amp;gt; based on what’s learned.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Today’s HTLC payment probing can work well, but risks channel liquidity&lt;br/&gt;&amp;gt; being locked up if a peer&lt;br/&gt;&amp;gt; along the route goes offline. On the upside, for just-in-time probes, it&lt;br/&gt;&amp;gt; works to loosely “reserve”&lt;br/&gt;&amp;gt; the channel liquidity along the route for the actual payment.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Onion messages (OMs) present a convenient way to probe without risking&lt;br/&gt;&amp;gt; locked liquidity along the&lt;br/&gt;&amp;gt; route.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ## Design Rationale&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A naive approach could be to send onion message probes directly to&lt;br/&gt;&amp;gt; individual nodes along the&lt;br/&gt;&amp;gt; desired route, including those to which you don’t have a direct channel.&lt;br/&gt;&amp;gt; However, this scheme is&lt;br/&gt;&amp;gt; problematic because it would enable monitoring the payment flows of&lt;br/&gt;&amp;gt; arbitrary nodes across the&lt;br/&gt;&amp;gt; network without having to have a channel path to them. This would be a&lt;br/&gt;&amp;gt; significant degradation of&lt;br/&gt;&amp;gt; privacy because, for comparison, in HTLC probing it is quite difficult to&lt;br/&gt;&amp;gt; probe the balances of&lt;br/&gt;&amp;gt; far-off nodes. And if you can’t probe a node using HTLCs, you can’t send&lt;br/&gt;&amp;gt; over it anyway, so there’s&lt;br/&gt;&amp;gt; not a lot of benefit (and significant privacy downside).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Therefore, it is probably best to design a scheme that probes along&lt;br/&gt;&amp;gt; channel paths, like HTLC&lt;br/&gt;&amp;gt; probing. This adds more complexity to the case where an intermediate node&lt;br/&gt;&amp;gt; cannot forward the desired&lt;br/&gt;&amp;gt; amount due to the stateless nature of OMs, discussed further down.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ## Scheme&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Let’s go through the happy path, where Alice is probing Alice &amp;gt; Bob &amp;gt;&lt;br/&gt;&amp;gt; Carol &amp;gt; Dave for a 100k msat&lt;br/&gt;&amp;gt; payment.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; She’ll construct an onion message for Bob, the first hop, as such:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://imgur.com/BZg8yt8&#34;&gt;https://imgur.com/BZg8yt8&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Bob receives this OM, sees that he’s able to forward 110k msats to his&lt;br/&gt;&amp;gt; next-hop Carol, and forwards&lt;br/&gt;&amp;gt; Carol’s onion packet to her. Carol sees she can forward 105k msats to&lt;br/&gt;&amp;gt; Dave, and forwards his onion&lt;br/&gt;&amp;gt; packet. Finally, Dave receives his onion packet, sees he can receive 100k&lt;br/&gt;&amp;gt; msats from Carol, and uses&lt;br/&gt;&amp;gt; the provided reply path to send a simple probe success onion message back&lt;br/&gt;&amp;gt; to Alice:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ```&lt;br/&gt;&amp;gt; onion_message_probe_result {&lt;br/&gt;&amp;gt;     data_tlv {&lt;br/&gt;&amp;gt;         type: 4242,&lt;br/&gt;&amp;gt;         probe_id: [u8; 32],&lt;br/&gt;&amp;gt;         can_forward_desired_amt: true,&lt;br/&gt;&amp;gt;     }&lt;br/&gt;&amp;gt;    .. regular OM TLVs&lt;br/&gt;&amp;gt; }&lt;br/&gt;&amp;gt; ```&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Note that Dave will use this same onion message if he can’t receive; he’ll&lt;br/&gt;&amp;gt; just set&lt;br/&gt;&amp;gt; `can_forward_desired_amt` to false.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; As an example of the sad path for an intermediate node, if Carol can’t&lt;br/&gt;&amp;gt; forward 105k msats to Dave,&lt;br/&gt;&amp;gt; she’ll fail the probe back to Bob by sending this onion message:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://imgur.com/a/hqlzw4I&#34;&gt;https://imgur.com/a/hqlzw4I&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This step justifies why we need to encode a failure onion for each&lt;br/&gt;&amp;gt; intermediate hop of a probe. If&lt;br/&gt;&amp;gt; we hadn’t done that, and Carol responded to Bob with an empty “failed”&lt;br/&gt;&amp;gt; message, Bob would have no&lt;br/&gt;&amp;gt; idea which peer to fail the probe back to, because OMs are stateless.&lt;br/&gt;&amp;gt; Instead, Bob unwraps his error&lt;br/&gt;&amp;gt; onion and sees that he needs to fail back to Alice with her provided error&lt;br/&gt;&amp;gt; onion. Alice receives the&lt;br/&gt;&amp;gt; failure onion and can see that Carol was not able to forward the desired&lt;br/&gt;&amp;gt; amount corresponding to the&lt;br/&gt;&amp;gt; probe id, thus completing the probe.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ## Outro&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; While there is nothing stopping nodes from lying about their ability to&lt;br/&gt;&amp;gt; forward, they may be&lt;br/&gt;&amp;gt; negatively scored if they do so. Further, adopting a protocol like this&lt;br/&gt;&amp;gt; could help routing nodes&lt;br/&gt;&amp;gt; attract more forwarding traffic, which is a nice incentive.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I view this feature as a low priority enhancement, given there are a lot&lt;br/&gt;&amp;gt; more pressing issues in LN,&lt;br/&gt;&amp;gt; but open to feedback. Mostly, I thought it could be useful to spark ideas&lt;br/&gt;&amp;gt; and highlight the&lt;br/&gt;&amp;gt; flexibility of OMs.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; Val&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230301/756791ad/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230301/756791ad/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:12:47Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqst447eqzt37p82hj2wy5l4c0mcu6kcsmza2ns525g5mlnx3ggzm8czypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zqgaf0k</id>
    
      <title type="html">📅 Original date posted:2023-02-14 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqst447eqzt37p82hj2wy5l4c0mcu6kcsmza2ns525g5mlnx3ggzm8czypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zqgaf0k" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsftsdkfjr66ssaj7he7kf56grqqw82haaryx7y08ukzmqr5msfxmcjprx8t&#39;&gt;nevent1q…rx8t&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-02-14&lt;br/&gt;🗒️ Summary of this message: The Lightning Network may require routing nodes to operate flawlessly or face penalties, potentially impacting future routing revenue. Gradual implementation of strict penalties may be necessary for routing nodes to adapt.&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Joost,&lt;br/&gt;&lt;br/&gt;&amp;gt; For a long time I&amp;#39;ve held the expectation that eventually payers on the&lt;br/&gt;lightning network will become very strict about node performance. That they&lt;br/&gt;will &amp;gt; require a routing node to operate flawlessly or else apply a hefty&lt;br/&gt;penalty such as completely avoiding the node for an extended period of time&lt;br/&gt;- multiple &amp;gt; weeks. The consequence of this is that routing nodes would&lt;br/&gt;need to manage their liquidity meticulously because every failure&lt;br/&gt;potentially has a large&lt;br/&gt;&amp;gt; impact on future routing revenue.&lt;br/&gt;&lt;br/&gt;I think the performance question depends on the type of payment flows&lt;br/&gt;considered. If you&amp;#39;re an&lt;br/&gt;end-user sending a payment to your local Starbucks for coffee, here fast&lt;br/&gt;payment sounds the end-goal.&lt;br/&gt;If you&amp;#39;re doing remittance payment, cheap fees might be favored, and in&lt;br/&gt;function of those flows you&amp;#39;re&lt;br/&gt;probably not going to select the same &amp;#34;performant&amp;#34; routing nodes. I think&lt;br/&gt;adding latency as a criteria for&lt;br/&gt;pathfinding construction has already been mentioned in the past for LDK [0].&lt;br/&gt;&lt;br/&gt;&amp;gt; I think movement in this direction is important to guarantee&lt;br/&gt;competitiveness with centralised payment systems and their (at least&lt;br/&gt;theoretical) ability to&lt;br/&gt;&amp;gt; process a payment in the blink of an eye. A lightning wallet trying&lt;br/&gt;multiple paths to find one that works doesn&amp;#39;t help with this.&lt;br/&gt;&lt;br/&gt;Or there is the direction to build forward-error-correction code on top of&lt;br/&gt;MPP, like in traditional&lt;br/&gt;networking [1]. The rough idea, you send more payment shards than the&lt;br/&gt;requested sum, and then&lt;br/&gt;you reveal the payment secrets to the receiver after an onion interactivity&lt;br/&gt;round to finalize payment.&lt;br/&gt;&lt;br/&gt;&amp;gt; A common argument against strict penalisation is that it would lead to&lt;br/&gt;less efficient use of capital. Routing nodes would need to maintain pools of&lt;br/&gt;&amp;gt; liquidity to guarantee successes all the time. My opinion on this is that&lt;br/&gt;lightning is already enormously capital efficient at scale and that it is&lt;br/&gt;worth&lt;br/&gt;&amp;gt; sacrificing a slight part of that efficiency to also achieve the lowest&lt;br/&gt;possible latency.&lt;br/&gt;&lt;br/&gt;At the end of the day, we add more signal channels between HTLC senders and&lt;br/&gt;the routing&lt;br/&gt;nodes offering capital liquidity, if the signal mechanisms are efficient, I&lt;br/&gt;think they should lead&lt;br/&gt;to better allocation of the capital. So yes, I think more liquidity might&lt;br/&gt;be used by routing nodes&lt;br/&gt;to serve finely tailored HTLC requests by senders, however this liquidity&lt;br/&gt;should be rewarded&lt;br/&gt;by higher routing fees.&lt;br/&gt;&lt;br/&gt;&amp;gt; This brings me to the actual subject of this post. Assuming strict&lt;br/&gt;penalisation is good, it may still not be ideal to flip the switch from one&lt;br/&gt;day to the other. &amp;gt; Routing nodes may not offer the required level of&lt;br/&gt;service yet, causing senders to end up with no nodes to choose from.&lt;br/&gt;&lt;br/&gt;&amp;gt; One option is to gradually increase the strength of the penalties, so&lt;br/&gt;that routing nodes are given time to adapt to the new standards. This does&lt;br/&gt;require &amp;gt; everyone to move along and leaves no space for cheap routing&lt;br/&gt;nodes with less leeway in terms of liquidity.&lt;br/&gt;&lt;br/&gt;I think if we have lessons to learn on policy rules design and deployment&lt;br/&gt;on the base-layer&lt;br/&gt;(the full-rbf saga), it&amp;#39;s to be careful in the initial set of rules, and&lt;br/&gt;how we ensure smooth&lt;br/&gt;upgradeability, from one version to another. Otherwise the re-deployment&lt;br/&gt;cost towards&lt;br/&gt;the new version might incentive the old routing node to stay on the&lt;br/&gt;non-optimal versions,&lt;br/&gt;and as we have historical buckets in routing algorithms, or preference for&lt;br/&gt;older channels,&lt;br/&gt;this might lead the end-user to pay higher fees, than they could access to.&lt;br/&gt;&lt;br/&gt;&amp;gt; Therefore I am proposing another way to go about it: extend the&lt;br/&gt;`channel_update` field `channel_flags` with a new bit that the sender can&lt;br/&gt;use to signal &amp;gt; `highly_available`.&lt;br/&gt;&lt;br/&gt;&amp;gt; It&amp;#39;s then up to payers to decide how to interpret this flag. One way&lt;br/&gt;could be to prefer `highly_available` channels during pathfinding. But if&lt;br/&gt;the routing&lt;br/&gt;&amp;gt; node then returns a failure, a much stronger than normal penalty will be&lt;br/&gt;applied. For routing nodes this creates an opportunity to attract more&lt;br/&gt;traffic by &amp;gt; marking some channels as `highly_available`, but it also comes&lt;br/&gt;with the responsibility to deliver.&lt;br/&gt;&lt;br/&gt;This is where the open question lies to me - &amp;#34;highly available&amp;#34; can be&lt;br/&gt;defined with multiple&lt;br/&gt;senses, like fault-tolerance, latency processing, equilibrated liquidity.&lt;br/&gt;And a routing node might&lt;br/&gt;not be able to optimize its architecture for the same end-goal (e.g more&lt;br/&gt;watchtower on remote&lt;br/&gt;host probably increases the latency processing).&lt;br/&gt;&lt;br/&gt;&amp;gt; Without shadow channels, it is impossible to guarantee liquidity up to&lt;br/&gt;the channel capacity. It might make sense for senders to only assume high&lt;br/&gt;&amp;gt; availability for amounts up to `htlc_maximum_msat`.&lt;br/&gt;&lt;br/&gt;As a note, I think &amp;#34;senders assumption&amp;#34; should be well-documented,&lt;br/&gt;otherwise there will be&lt;br/&gt;performance discrepancies between node implementations or even versions.&lt;br/&gt;E.g, an upgraded&lt;br/&gt;sender penalizing a node for the lack of shadow/parallel channels&lt;br/&gt;fulfilling HTLC amounts up to&lt;br/&gt;`htlc_maximum_msat`.&lt;br/&gt;&lt;br/&gt;&amp;gt; A variation on this scheme that requires no extension of `channel_update`&lt;br/&gt;is to signal availability implicitly through routing fees. So the more&lt;br/&gt;expensive &amp;gt; a channel is, the stronger the penalty that is applied on&lt;br/&gt;failure will be. It seems less ideal though, because it&lt;br/&gt;could disincentivize cheap but reliable&lt;br/&gt;&amp;gt; channels on high traffic links.&lt;br/&gt;&lt;br/&gt;&amp;gt; The effort required to implement some form of a `highly_available` flag&lt;br/&gt;seem limited and it may help to get payment success rates up. Interested to&lt;br/&gt;&amp;gt; hear your thoughts.&lt;br/&gt;&lt;br/&gt;I think signal availability should be explicit rather than implicit. Even&lt;br/&gt;if it&amp;#39;s coming with more&lt;br/&gt;gossip bandwidth data consumed. I would say for bandwidth performance&lt;br/&gt;management, relying&lt;br/&gt;on new gossip messages, where they can be filtered in function of the level&lt;br/&gt;of services required&lt;br/&gt;is interesting.&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;[0] &lt;a href=&#34;https://github.com/lightningdevkit/rust-lightning/issues/1647&#34;&gt;https://github.com/lightningdevkit/rust-lightning/issues/1647&lt;/a&gt;&lt;br/&gt;[1] &lt;a href=&#34;https://www.rfc-editor.org/rfc/rfc6363.html&#34;&gt;https://www.rfc-editor.org/rfc/rfc6363.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Le lun. 13 févr. 2023 à 11:46, Joost Jager &amp;lt;joost.jager at gmail.com&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; For a long time I&amp;#39;ve held the expectation that eventually payers on the&lt;br/&gt;&amp;gt; lightning network will become very strict about node performance. That they&lt;br/&gt;&amp;gt; will require a routing node to operate flawlessly or else apply a hefty&lt;br/&gt;&amp;gt; penalty such as completely avoiding the node for an extended period of time&lt;br/&gt;&amp;gt; - multiple weeks. The consequence of this is that routing nodes would need&lt;br/&gt;&amp;gt; to manage their liquidity meticulously because every failure potentially&lt;br/&gt;&amp;gt; has a large impact on future routing revenue.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I think movement in this direction is important to guarantee&lt;br/&gt;&amp;gt; competitiveness with centralised payment systems and their (at least&lt;br/&gt;&amp;gt; theoretical) ability to process a payment in the blink of an eye. A&lt;br/&gt;&amp;gt; lightning wallet trying multiple paths to find one that works doesn&amp;#39;t help&lt;br/&gt;&amp;gt; with this.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A common argument against strict penalisation is that it would lead to&lt;br/&gt;&amp;gt; less efficient use of capital. Routing nodes would need to maintain pools&lt;br/&gt;&amp;gt; of liquidity to guarantee successes all the time. My opinion on this is&lt;br/&gt;&amp;gt; that lightning is already enormously capital efficient at scale and that it&lt;br/&gt;&amp;gt; is worth sacrificing a slight part of that efficiency to also achieve the&lt;br/&gt;&amp;gt; lowest possible latency.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This brings me to the actual subject of this post. Assuming strict&lt;br/&gt;&amp;gt; penalisation is good, it may still not be ideal to flip the switch from one&lt;br/&gt;&amp;gt; day to the other. Routing nodes may not offer the required level of service&lt;br/&gt;&amp;gt; yet, causing senders to end up with no nodes to choose from.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; One option is to gradually increase the strength of the penalties, so that&lt;br/&gt;&amp;gt; routing nodes are given time to adapt to the new standards. This does&lt;br/&gt;&amp;gt; require everyone to move along and leaves no space for cheap routing nodes&lt;br/&gt;&amp;gt; with less leeway in terms of liquidity.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Therefore I am proposing another way to go about it: extend the&lt;br/&gt;&amp;gt; `channel_update` field `channel_flags` with a new bit that the sender can&lt;br/&gt;&amp;gt; use to signal `highly_available`.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It&amp;#39;s then up to payers to decide how to interpret this flag. One way could&lt;br/&gt;&amp;gt; be to prefer `highly_available` channels during pathfinding. But if the&lt;br/&gt;&amp;gt; routing node then returns a failure, a much stronger than normal penalty&lt;br/&gt;&amp;gt; will be applied. For routing nodes this creates an opportunity to attract&lt;br/&gt;&amp;gt; more traffic by marking some channels as `highly_available`, but it also&lt;br/&gt;&amp;gt; comes with the responsibility to deliver.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Without shadow channels, it is impossible to guarantee liquidity up to the&lt;br/&gt;&amp;gt; channel capacity. It might make sense for senders to only assume high&lt;br/&gt;&amp;gt; availability for amounts up to `htlc_maximum_msat`.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A variation on this scheme that requires no extension of `channel_update`&lt;br/&gt;&amp;gt; is to signal availability implicitly through routing fees. So the more&lt;br/&gt;&amp;gt; expensive a channel is, the stronger the penalty that is applied on failure&lt;br/&gt;&amp;gt; will be. It seems less ideal though, because it could disincentivize cheap&lt;br/&gt;&amp;gt; but reliable channels on high traffic links.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The effort required to implement some form of a `highly_available` flag&lt;br/&gt;&amp;gt; seem limited and it may help to get payment success rates up. Interested to&lt;br/&gt;&amp;gt; hear your thoughts.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Joost&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230214/893867dd/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230214/893867dd/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:12:42Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsftsdkfjr66ssaj7he7kf56grqqw82haaryx7y08ukzmqr5msfxmczypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zgxq49y</id>
    
      <title type="html">📅 Original date posted:2023-02-17 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsftsdkfjr66ssaj7he7kf56grqqw82haaryx7y08ukzmqr5msfxmczypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zgxq49y" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs9svuvwtr48sjhwlalah0phaqynqrtehyfmq8t3ef5p5kcy8cwz7q3hmrxu&#39;&gt;nevent1q…mrxu&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-02-17&lt;br/&gt;🗒️ Summary of this message: The discussion is about the development and design of protocols, and the need for neutral approaches to ensure decentralization.&lt;br/&gt;📝 Original message:&lt;br/&gt;As long as protocol development and design is done neutrally, I&amp;#39;m all fine!&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Le ven. 17 févr. 2023 à 10:48, Joost Jager &amp;lt;joost.jager at gmail.com&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Right, that was my above point about fetching scoring data - there&amp;#39;s three&lt;br/&gt;&amp;gt;&amp;gt; relevant &amp;#34;buckets&amp;#34; of&lt;br/&gt;&amp;gt;&amp;gt; nodes, I think - (a) large nodes sending lots of payments, like the&lt;br/&gt;&amp;gt;&amp;gt; above, (b) &amp;#34;client nodes&amp;#34; that&lt;br/&gt;&amp;gt;&amp;gt; just connect to an LSP or two, (c) nodes that route some but don&amp;#39;t send a&lt;br/&gt;&amp;gt;&amp;gt; lot of payments (but do&lt;br/&gt;&amp;gt;&amp;gt; send *some* payments), and may have lots or not very many channels.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; (a) I think we&amp;#39;re getting there, and we don&amp;#39;t need to add anything extra&lt;br/&gt;&amp;gt;&amp;gt; for this use-case beyond&lt;br/&gt;&amp;gt;&amp;gt; the network maturing and improving our scoring algorithms.&lt;br/&gt;&amp;gt;&amp;gt; (b) I think is trivially solved by downloading the data from a node in&lt;br/&gt;&amp;gt;&amp;gt; category (a), presumably the&lt;br/&gt;&amp;gt;&amp;gt; LSP(s) in question (see other branch of this thread)&lt;br/&gt;&amp;gt;&amp;gt; (c) is trickier, but I think the same solution of just fetching&lt;br/&gt;&amp;gt;&amp;gt; semi-trusted data here more than&lt;br/&gt;&amp;gt;&amp;gt; sufficies. For most routing nodes that don&amp;#39;t send a lot of payments we&amp;#39;re&lt;br/&gt;&amp;gt;&amp;gt; talking about a very small&lt;br/&gt;&amp;gt;&amp;gt; amount of payments, so trusting a third-party for scoring data seems&lt;br/&gt;&amp;gt;&amp;gt; reasonable.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I see that in your view all nodes will either be large nodes themselves,&lt;br/&gt;&amp;gt; or be downloading scoring data from large nodes. I&amp;#39;d argue that that is&lt;br/&gt;&amp;gt; more of a move towards centralisation than the `ha` flag is. The flag at&lt;br/&gt;&amp;gt; least allows small nodes to build up their view of the network in an&lt;br/&gt;&amp;gt; efficient and independently manner.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Joost&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230217/36b81f39/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230217/36b81f39/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:12:42Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqs2sz3npxcq5etuyerqgseflkrnrnwzqudwajff0zf4qu74hkgcy0czypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24z8zj4xe</id>
    
      <title type="html">📅 Original date posted:2023-02-16 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqs2sz3npxcq5etuyerqgseflkrnrnwzqudwajff0zf4qu74hkgcy0czypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24z8zj4xe" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsfvm5pvqcmjdlvk0mxj0l4thpnquscsj5z46jxqv0zv2jq897ewggcz8k0e&#39;&gt;nevent1q…8k0e&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-02-16&lt;br/&gt;🗒️ Summary of this message: Matt Corallo and Joost Jager discuss the challenges of maintaining outbound liquidity in highly available lightning channels, and the need for reliable scoring data.&lt;br/&gt;📝 Original message:&lt;br/&gt;Yeah definitely looking forward to talk more about highly available&lt;br/&gt;lightning channels. During next LN channel jamming meetup! .&lt;br/&gt;&lt;br/&gt;Le jeu. 16 févr. 2023 à 00:43, Matt Corallo &amp;lt;lf-lists at mattcorallo.com&amp;gt; a&lt;br/&gt;écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On 2/14/23 11:36 PM, Joost Jager wrote:&lt;br/&gt;&amp;gt; &amp;gt;     But how do you decide to set it without a credit relationship? Do I&lt;br/&gt;&amp;gt; measure my channel and set the&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;     bit because the channel is &amp;#34;usually&amp;#34; (at what threshold?) saturating&lt;br/&gt;&amp;gt; in the inbound direction? What&lt;br/&gt;&amp;gt; &amp;gt;     happens if this changes for an hour and I get unlucky? Did I just&lt;br/&gt;&amp;gt; screw myself?&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; As a node setting the flag, you&amp;#39;ll have to make sure you open new&lt;br/&gt;&amp;gt; channels, rebalance or swap-in in&lt;br/&gt;&amp;gt; &amp;gt; time to maintain outbound liquidity. That&amp;#39;s part of the game of running&lt;br/&gt;&amp;gt; an HA channel.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Define &amp;#34;in time&amp;#34; in a way that results in senders not punishing you for&lt;br/&gt;&amp;gt; not meeting your &amp;#34;HA&lt;br/&gt;&amp;gt; guarantees&amp;#34; due to a large flow. I don&amp;#39;t buy that this results in anything&lt;br/&gt;&amp;gt; other than pressure to&lt;br/&gt;&amp;gt; add credit.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;      &amp;gt; How can you be sure about this? This isn&amp;#39;t publicly visible data.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;     Sure it is! &lt;a href=&#34;https://river.com/learn/files/river-lightning-report.pdf&#34;&gt;https://river.com/learn/files/river-lightning-report.pdf&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt;     &amp;lt;&lt;a href=&#34;https://river.com/learn/files/river-lightning-report.pdf&amp;gt&#34;&gt;https://river.com/learn/files/river-lightning-report.pdf&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Some operators publish data, but are the experiences of one of the most&lt;br/&gt;&amp;gt; well connected (custodial)&lt;br/&gt;&amp;gt; &amp;gt; nodes representative for the network as a whole when evaluating payment&lt;br/&gt;&amp;gt; success rates? In the end&lt;br/&gt;&amp;gt; &amp;gt; you can&amp;#39;t know what&amp;#39;s happening on the lightning network.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Right, that was my above point about fetching scoring data - there&amp;#39;s three&lt;br/&gt;&amp;gt; relevant &amp;#34;buckets&amp;#34; of&lt;br/&gt;&amp;gt; nodes, I think - (a) large nodes sending lots of payments, like the above,&lt;br/&gt;&amp;gt; (b) &amp;#34;client nodes&amp;#34; that&lt;br/&gt;&amp;gt; just connect to an LSP or two, (c) nodes that route some but don&amp;#39;t send a&lt;br/&gt;&amp;gt; lot of payments (but do&lt;br/&gt;&amp;gt; send *some* payments), and may have lots or not very many channels.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; (a) I think we&amp;#39;re getting there, and we don&amp;#39;t need to add anything extra&lt;br/&gt;&amp;gt; for this use-case beyond&lt;br/&gt;&amp;gt; the network maturing and improving our scoring algorithms.&lt;br/&gt;&amp;gt; (b) I think is trivially solved by downloading the data from a node in&lt;br/&gt;&amp;gt; category (a), presumably the&lt;br/&gt;&amp;gt; LSP(s) in question (see other branch of this thread)&lt;br/&gt;&amp;gt; (c) is trickier, but I think the same solution of just fetching&lt;br/&gt;&amp;gt; semi-trusted data here more than&lt;br/&gt;&amp;gt; sufficies. For most routing nodes that don&amp;#39;t send a lot of payments we&amp;#39;re&lt;br/&gt;&amp;gt; talking about a very small&lt;br/&gt;&amp;gt; amount of payments, so trusting a third-party for scoring data seems&lt;br/&gt;&amp;gt; reasonable.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Once we do that, everyone gets a similar experience as the River report :).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Matt&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230217/a4c356bf/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230217/a4c356bf/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:12:41Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsy9wjy8kg3xdx7ra28732ht23zyh035c7k8m6rhrr77l9vyk4k9sszypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zljhjkq</id>
    
      <title type="html">📅 Original date posted:2023-01-31 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsy9wjy8kg3xdx7ra28732ht23zyh035c7k8m6rhrr77l9vyk4k9sszypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zljhjkq" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsqkusea9c4dhehgx38huvku0qsdyjcdqkkyjvalpa35dm3040ns3qv3qjnu&#39;&gt;nevent1q…qjnu&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-01-31&lt;br/&gt;🗒️ Summary of this message: The Lightning Network faces challenges with upfront fees, including the risk of theft and adding up along the route, but potential solutions are being explored.&lt;br/&gt;📝 Original message:&lt;br/&gt;(Reply 2/2)&lt;br/&gt;&lt;br/&gt;&amp;gt;  * Whether we should look into a more complicated approach that&lt;br/&gt;&lt;br/&gt;&amp;gt;    includes a &amp;#34;proof of forward&amp;#34; secret in the next node&amp;#39;s onion which&lt;br/&gt;&lt;br/&gt;&amp;gt;    must be supplied to claim the upfront fee.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;One of the hard things with a &amp;#34;proof of forward&amp;#34; is a hop colluding with&lt;br/&gt;the next counterparty in way non-provable to the HTLC sender. I don&amp;#39;t think&lt;br/&gt;more reliable onion errors will save the mechanism, as you might always&lt;br/&gt;masquerade your routing node offliness (sure -- it might be penalized by&lt;br/&gt;routing algorithms still probably a period of grace exploitable)&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;  * Whether Bob _would_ steal the upfront fee by dropping the payment,&lt;br/&gt;&lt;br/&gt;&amp;gt;    as it&amp;#39;ll impact nodes&amp;#39; desire to route through them in future.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;And if you have &amp;#34;floating&amp;#34; upfront fees to adjust to routing node&lt;br/&gt;opportunity cost and the routing algorithms historical buckets are not&lt;br/&gt;correcting the variations, a &amp;#34;upfront fee&amp;#34; adversary might be able to steal&lt;br/&gt;the amount, in a proportion not corrected by the penalty.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;  * Is there a way to deliver upfront fees to nodes along the route&lt;br/&gt;&lt;br/&gt;&amp;gt;    *without* them adding up along the route (other than the naive&lt;br/&gt;&lt;br/&gt;&amp;gt;    version of sending each hop a payment, which comes with its own&lt;br/&gt;&lt;br/&gt;&amp;gt;    problems)? Seems not, but bright ideas are wanted and welcome!&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;I think the latest update of the Staking Credentials could answer such&lt;br/&gt;description&lt;br/&gt;of &amp;#34;delivering the upfront fees to nodes along the route *without* them&lt;br/&gt;adding up along the route&amp;#34; as the credential issuance is separated from its&lt;br/&gt;redemption.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On a few other ideas, &amp;#34;magically&amp;#34; teleporting the fee payment to the&lt;br/&gt;routing hops, it has been browsed in the past [2].&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;  * That nodes will decide where they fall in the trade-off of setting&lt;br/&gt;&lt;br/&gt;&amp;gt;    upfront fees to cover their opportunity cost for high routing fees&lt;br/&gt;&lt;br/&gt;&amp;gt;    and market pressure to keep these fees low for the sake of&lt;br/&gt;&lt;br/&gt;&amp;gt;    remaining competitive.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;They will probably need to do real-time monitoring of the congestion rates&lt;br/&gt;and outcome results of their HTLC forwarding to adjust in consequence their&lt;br/&gt;routing fees.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;   * A taproot tree for all HTLCs where each leaf has a subset of HTLCs,&lt;br/&gt;&lt;br/&gt;&amp;gt;     and fees could be incorporated here (summary note: apparently some&lt;br/&gt;&lt;br/&gt;&amp;gt;     work has been done here, but I couldn&amp;#39;t find the link).&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;The idea of summing up the taproot tree for all HTLCs is discussed here&lt;br/&gt;with past references [3]. I don&amp;#39;t know if it&amp;#39;s really a viable direction,&lt;br/&gt;as aggregating the claim of HTLCs of different values in the same witness&lt;br/&gt;claims might open the door to transaction-relay games.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;   * If we&amp;#39;re confident that a more complicated solution will solve many&lt;br/&gt;&lt;br/&gt;&amp;gt;     problems, then we should pursue them, otherwise a simple solution&lt;br/&gt;&lt;br/&gt;&amp;gt;     is possibly a _good enough_ first step.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;If the &amp;#34;proof of forward&amp;#34; can be solved by &amp;#34;magic&amp;#34; covenant is still an open&lt;br/&gt;issue. I don&amp;#39;t know if it&amp;#39;s a viable solution as it&amp;#39;s more a hard synchronicity&lt;br/&gt;issue between chain of contracts. However from exploring issue we might&lt;br/&gt;learn interesting design considerations for contracting protocols (at the&lt;br/&gt;very least some semi-formal proof it&amp;#39;s not possible)&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;  * Should our first attempt at solving this issue be for a future&lt;br/&gt;&lt;br/&gt;&amp;gt;    steady state where nodes have significant traffic and nodes face&lt;br/&gt;&lt;br/&gt;&amp;gt;    real opportunity cost (in the form of lost revenue) if they are&lt;br/&gt;&lt;br/&gt;&amp;gt;    targeted by a jamming attack?&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Deferring the most economically-efficient solution we can come from, we might&lt;br/&gt;run into a bunch of incentives-misallignment between generation of nodes&lt;br/&gt;operators and Lightning use-cases. Maybe same as we have seen with lack of&lt;br/&gt;transaction replacement, first-seen RBF, opt-in RBF, mempoolfullrbf, I&lt;br/&gt;believe.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On the other-side, the deployment of a simple solution would enable us to&lt;br/&gt;start to build a consistent model of how the economics of channel&lt;br/&gt;congestion, that we can &amp;#34;transpose&amp;#34; for more advanced solutions (ideally --&lt;br/&gt;all other things being equal).&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;  * While circuit breaker isn&amp;#39;t necessarily *the* solution to solving&lt;br/&gt;&lt;br/&gt;&amp;gt;    jamming on LN, it provides us with some data points and a&lt;br/&gt;&lt;br/&gt;&amp;gt;    practical way for individual operators to address spamming of&lt;br/&gt;&lt;br/&gt;&amp;gt;    their nodes.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;As mentioned above, it sounds like the congestion monitoring and HTLCs&lt;br/&gt;resolution tracking is going to be a standard task among LN&lt;br/&gt;implementations, and that you&amp;#39;ll would probably need a piece of&lt;br/&gt;infrastructure like circuit breaker for all implementations.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; Since our last discussion an architecture document was added to the&lt;br/&gt;&lt;br/&gt;&amp;gt; proposal [6], details in the mailing list post [7]. The main goal is&lt;br/&gt;&lt;br/&gt;&amp;gt; to try to dissociate the people paying the fees from those gaining the&lt;br/&gt;&lt;br/&gt;&amp;gt; benefits from the credentials, so that credentials can be paid by a&lt;br/&gt;&lt;br/&gt;&amp;gt; LSP (for example).&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;I think there is a missing footnote, I believe the mail thread might have&lt;br/&gt;been this one:&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2023-January/003822.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2023-January/003822.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Beyond delegation as mentioned, there are few other design goals targeted:&lt;br/&gt;&lt;br/&gt;- strong economic-efficiency due to credentials accumulation&lt;br/&gt;&lt;br/&gt;- fungibility of their credentials between their issuance and redemption&lt;br/&gt;&lt;br/&gt;- dynamic-management of liquidity risks&lt;br/&gt;&lt;br/&gt;- contract-agnostic (e.g can cover dual-opening)&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Probably, we&amp;#39;ll have the credential issuance flow and extension gossip more&lt;br/&gt;speced out before next meetings.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; 4. Reputation discussions in LSP Specification&lt;br/&gt;&lt;br/&gt;&amp;gt; Some attendees have been working on a reputation system for the LSP&lt;br/&gt;&lt;br/&gt;&amp;gt; specification group [8]. This system is intended to provide standard&lt;br/&gt;&lt;br/&gt;&amp;gt; metrics about what makes a node good/bad to connect to in the context&lt;br/&gt;&lt;br/&gt;&amp;gt; of a decentralized marketplace. While this work looks at the problem&lt;br/&gt;&lt;br/&gt;&amp;gt; from a different perspective, there&amp;#39;s a possibility to consolidate&lt;br/&gt;&lt;br/&gt;&amp;gt; the efforts. It seems particularly useful in the anti-jamming case&lt;br/&gt;&lt;br/&gt;&amp;gt; where a node has newly connected to you, and needs a &amp;#34;start state&amp;#34;&lt;br/&gt;&lt;br/&gt;&amp;gt; reputation score. The idea of defining what qualifies as good&lt;br/&gt;&lt;br/&gt;&amp;gt; behavior in the Lightning Network is useful across the board. The&lt;br/&gt;&lt;br/&gt;&amp;gt; LSP specification group also has bi-weekly calls, and welcomes&lt;br/&gt;&lt;br/&gt;&amp;gt; additional participants!&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Effectively, I think distributed market infrastructure design could benefit&lt;br/&gt;from the lessons of the Lightning Network. It could be fruitful for the LSP&lt;br/&gt;specification group to have its own mailing list at some point in the&lt;br/&gt;future.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; There&amp;#39;s a lot to discuss - brave readers who made it all the way to&lt;br/&gt;&lt;br/&gt;&amp;gt; the bottom of this email will notice a fair number of question marks&lt;br/&gt;&lt;br/&gt;&amp;gt; scattered about - and we&amp;#39;re going to continue to break the problem&lt;br/&gt;&lt;br/&gt;&amp;gt; down into smaller parts to discuss in the hope of making progress.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Beyond archiving well the problem space, there is also an effort of&lt;br/&gt;documenting well any protocol design decisions to preserve future&lt;br/&gt;evolvability and achieve interoperabilitybetween implementations.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; Any change to the Lightning Network that aims to address channel&lt;br/&gt;&lt;br/&gt;&amp;gt; jamming attacks will be a significant (but necessary) change to the&lt;br/&gt;&lt;br/&gt;&amp;gt; protocol&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;For sure, this is a significant change to the protocol, beyond that we&lt;br/&gt;should be careful to not downgrade the throughput or operations of the&lt;br/&gt;base-layer. If the original Stakes Certificates would have been&lt;br/&gt;implemented, it would have constituted a mempool congestion risk, where the&lt;br/&gt;node operators under jamming would have forced attackers to pay for fresh&lt;br/&gt;UTXOs. If we have to envision such cross-layer mitigation design in the&lt;br/&gt;future, I think we might have to do cross-layer consensus building.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;[2] &lt;a href=&#34;https://jamming-dev.github.io/book/4-design_space.html&#34;&gt;https://jamming-dev.github.io/book/4-design_space.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;[3] &lt;a href=&#34;https://github.com/ariard/bitcoin-contracting-primitives-wg/issues/26&#34;&gt;https://github.com/ariard/bitcoin-contracting-primitives-wg/issues/26&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;[4]&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-November/002884.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-November/002884.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Le lun. 30 janv. 2023 à 15:25, Carla Kirk-Cohen &amp;lt;kirkcohenc at gmail.com&amp;gt; a&lt;br/&gt;écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi list,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Monday last week we resumed our fortnightly channel jamming&lt;br/&gt;&amp;gt; mitigation calls for 2023.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Details for the next call:&lt;br/&gt;&amp;gt; * Monday 02/06 @ 18:00 UTC&lt;br/&gt;&amp;gt; * &lt;a href=&#34;https://meet.jit.si/UnjammingLN&#34;&gt;https://meet.jit.si/UnjammingLN&lt;/a&gt;&lt;br/&gt;&amp;gt; * Agenda: &lt;a href=&#34;https://github.com/ClaraShk/LNJamming/issues/2&#34;&gt;https://github.com/ClaraShk/LNJamming/issues/2&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # Meeting Summary&lt;br/&gt;&amp;gt; This email attempts to summarize the discussion, but is of course&lt;br/&gt;&amp;gt; subject to my errors and opinions so the full transcript is available&lt;br/&gt;&amp;gt; at [1]. It is (imperfectly) AI generated, so please reach out to myself&lt;br/&gt;&amp;gt; or Clara if you&amp;#39;d like clarification for a specific section.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1. Upgrade Mechanisms&lt;br/&gt;&amp;gt; The first topic of discussion was around how we would go about&lt;br/&gt;&amp;gt; upgrading the network to support an anti-jamming mitigation. Most&lt;br/&gt;&amp;gt; solutions share the following characteristics:&lt;br/&gt;&amp;gt;   * They will likely require a network wide upgrade: when a sender&lt;br/&gt;&amp;gt;     makes a payment, the full path will need to understand the new&lt;br/&gt;&amp;gt;     feature bit for it to be used.&lt;br/&gt;&amp;gt;   * Sending nodes are unlikely to be incentivised to upgrade to&lt;br/&gt;&amp;gt;     support a channel jamming mitigation, as jamming mitigations incur&lt;br/&gt;&amp;gt;     additional cost (be it in the form of upfront fees, tokens or some&lt;br/&gt;&amp;gt;     other mechanism).&lt;br/&gt;&amp;gt;   * Routing nodes have no way of knowing whether a payment comes from&lt;br/&gt;&amp;gt;     a node that is not upgraded, or simply doesn&amp;#39;t want to pay the&lt;br/&gt;&amp;gt;     additional cost introduced by a jamming mitigation.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It was generally agreed that the network is still in an early enough&lt;br/&gt;&amp;gt; stage that it is fair for relaying nodes to initially upgrade but not&lt;br/&gt;&amp;gt; enforce the feature, and later look at forwarding traffic to determine&lt;br/&gt;&amp;gt; whether it is appropriate to require the feature. This will require&lt;br/&gt;&amp;gt; sending nodes to opt-in to the new feature before the network can&lt;br/&gt;&amp;gt; widely enforce it, as no rational routing node will require a feature&lt;br/&gt;&amp;gt; which would reduce its ability to serve un-upgraded traffic (unless&lt;br/&gt;&amp;gt; under attack, which is not the case at present).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A note was also made that wallets tend to upgrade less frequently, in&lt;br/&gt;&amp;gt; part because some providers run forked versions of LN implementations,&lt;br/&gt;&amp;gt; so this horizon may be quite long. It was emphasized that this type of&lt;br/&gt;&amp;gt; network upgrade would require input from wallets, designers and&lt;br/&gt;&amp;gt; application developers anyway, so hopefully by the time we look to&lt;br/&gt;&amp;gt; deploy a change there is rough consensus among the Lightning community&lt;br/&gt;&amp;gt; already.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 2. Upfront Fees&lt;br/&gt;&amp;gt; Next, we discussed the draft proposal for upfront fees [2] that&lt;br/&gt;&amp;gt; implements the first of a two-part jamming mitigation described in [3].&lt;br/&gt;&amp;gt; As it stands, the PR describes the simplest possible way to introduce&lt;br/&gt;&amp;gt; upfront fees to the protocol:&lt;br/&gt;&amp;gt;   * Upfront fees are expressed as a ppm of a channel&amp;#39;s success-case&lt;br/&gt;&amp;gt;     fees, and charged on the outgoing link of a route.&lt;br/&gt;&amp;gt;   * Nodes can advertise custom upfront fee rates if desired, but to&lt;br/&gt;&amp;gt;     save gossip bandwidth we assume a network-wide default of 1%.&lt;br/&gt;&amp;gt;   * Upfront fees accumulate along the route (as htlc payment amounts&lt;br/&gt;&amp;gt;     do), and are simply pushed to the `to_remote` balance on&lt;br/&gt;&amp;gt;     `update_add_htlc`.&lt;br/&gt;&amp;gt;   * Final hop nodes advertise an upfront fee policy in bolt 11 invoices&lt;br/&gt;&amp;gt;     (or bolt 12 blinded routes) which is sufficiently padded to&lt;br/&gt;&amp;gt;     obfuscate their location in the route.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The interaction between upfront fees and possible future protocol&lt;br/&gt;&amp;gt; changes such as inbound fees and negative fees was briefly discussed,&lt;br/&gt;&amp;gt; specifically the case where a node sets low (or negative) fees to&lt;br/&gt;&amp;gt; attract traffic then fails payments to accumulate upfront fees. As is,&lt;br/&gt;&amp;gt; all implementations’ algorithms optimize for factors other than fees -&lt;br/&gt;&amp;gt; specifically avoiding a node once it&amp;#39;s produced failures - and we&lt;br/&gt;&amp;gt; suspect that careful sender-side behavior will mitigate this risk.&lt;br/&gt;&amp;gt; However, it was also acknowledged that a node that attempts this attack&lt;br/&gt;&amp;gt; may be able to fool multiple individual senders and still be able to&lt;br/&gt;&amp;gt; accumulate some fees.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; We then discussed the shortcomings of the &amp;#34;simplest possible&amp;#34; upfront&lt;br/&gt;&amp;gt; fees in [2], specifically focused on the following scenario where&lt;br/&gt;&amp;gt; nodes receive 1% of their success-case fees as an upfront payment:&lt;br/&gt;&amp;gt;   * Alice is sending a payment to Dave, who is a popular sink node in&lt;br/&gt;&amp;gt;     the network.&lt;br/&gt;&amp;gt;   * Bob -&amp;gt; Carol has low/default routing policy: 1000 msat success&lt;br/&gt;&amp;gt;     case / 10 msat upfront fee&lt;br/&gt;&amp;gt;   * Carol -&amp;gt; Dave has high fees: 400,000 msat success case / 4000 msat&lt;br/&gt;&amp;gt;     upfront fee&lt;br/&gt;&amp;gt;   * Dave advertises no success case fee (is recipient) / 100 msat of&lt;br/&gt;&amp;gt;     upfront fee chosen for his invoice.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Alice ------ Bob ------ Carol ------ Dave&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Since we need to source all of these funds from the sender (Alice), the&lt;br/&gt;&amp;gt; forwarding of funds is as follows:&lt;br/&gt;&amp;gt;   * Alice pushes 4110 msat to Bob.&lt;br/&gt;&amp;gt;   * Bob _should_ push 4100 msat to Carol, claiming his 10 msat upfront&lt;br/&gt;&amp;gt;     fee.&lt;br/&gt;&amp;gt;   * Carol _should_ push 100 msat to Dave, claiming her 4000 msat&lt;br/&gt;&amp;gt;     upfront fee.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; However, Bob has no real incentive to forward the HTLC to Carol and&lt;br/&gt;&amp;gt; push her the 4100 msat because that value is more than the fees he&amp;#39;ll&lt;br/&gt;&amp;gt; earn from successfully forwarding and settling the HTLC (10 msat&lt;br/&gt;&amp;gt; upfront fees &#43; 1000 msat success case fees). It&amp;#39;s worth noting that&lt;br/&gt;&amp;gt; this type of fee differential already exists in the network today - I&lt;br/&gt;&amp;gt; got these example numbers by looking at the fee rates of the Loop&lt;br/&gt;&amp;gt; node&amp;#39;s peers [4].&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; There were a few points discussed around this issue:&lt;br/&gt;&amp;gt;   * Whether we should look into a more complicated approach that&lt;br/&gt;&amp;gt;     includes a &amp;#34;proof of forward&amp;#34; secret in the next node&amp;#39;s onion which&lt;br/&gt;&amp;gt;     must be supplied to claim the upfront fee.&lt;br/&gt;&amp;gt;   * Discussion about whether these order of magnitude fee differences&lt;br/&gt;&amp;gt;     will exist in an efficient market (differing opinions).&lt;br/&gt;&amp;gt;   * Whether Bob _would_ steal the upfront fee by dropping the payment,&lt;br/&gt;&amp;gt;     as it&amp;#39;ll impact nodes&amp;#39; desire to route through them in future.&lt;br/&gt;&amp;gt;   * Is there a way to deliver upfront fees to nodes along the route&lt;br/&gt;&amp;gt;     *without* them adding up along the route (other than the naive&lt;br/&gt;&amp;gt;     version of sending each hop a payment, which comes with its own&lt;br/&gt;&amp;gt;     problems)? Seems not, but bright ideas are wanted and welcome!&lt;br/&gt;&amp;gt;   * That nodes will decide where they fall in the trade-off of setting&lt;br/&gt;&amp;gt;     upfront fees to cover their opportunity cost for high routing fees&lt;br/&gt;&amp;gt;     and market pressure to keep these fees low for the sake of&lt;br/&gt;&amp;gt;     remaining competitive.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A few people mentioned the desire to keep an upfront fee solution as&lt;br/&gt;&amp;gt; simple as possible, but generally it seemed that a solution where the&lt;br/&gt;&amp;gt; accumulated upfront fees at any point along a route exceed any single&lt;br/&gt;&amp;gt; hop&amp;#39;s expected success case fees is unacceptable because incentives&lt;br/&gt;&amp;gt; are misaligned (even if we can properly attribute errors with [5]).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; We touched briefly on a few &amp;#34;proof of forwarding&amp;#34; solutions for&lt;br/&gt;&amp;gt; upfront fees:&lt;br/&gt;&amp;gt;   * Using a locking mechanism that relies on a secret that is provided&lt;br/&gt;&amp;gt;     by the next node&amp;#39;s onion.&lt;br/&gt;&amp;gt;   * A taproot tree for all HTLCs where each leaf has a subset of HTLCs,&lt;br/&gt;&amp;gt;     and fees could be incorporated here (summary note: apparently some&lt;br/&gt;&amp;gt;     work has been done here, but I couldn&amp;#39;t find the link).&lt;br/&gt;&amp;gt;   * If we&amp;#39;re confident that a more complicated solution will solve many&lt;br/&gt;&amp;gt;     problems, then we should pursue them, otherwise a simple solution&lt;br/&gt;&amp;gt;     is possibly a _good enough_ first step.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; There was some discussion about how we want to go about addressing&lt;br/&gt;&amp;gt; spamming in the network:&lt;br/&gt;&amp;gt;   * Is it good enough to deploy something today that just charges a&lt;br/&gt;&amp;gt;     simple, capped upfront fee (eg 1 sat per hop) that solves jamming&lt;br/&gt;&amp;gt;     for the current state of the network and allows us to learn&lt;br/&gt;&amp;gt;     something then iterate?&lt;br/&gt;&amp;gt;   * Should our first attempt at solving this issue be for a future&lt;br/&gt;&amp;gt;     steady state where nodes have significant traffic and nodes face&lt;br/&gt;&amp;gt;     real opportunity cost (in the form of lost revenue) if they are&lt;br/&gt;&amp;gt;     targeted by a jamming attack?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 3. Circuit Breaker Update&lt;br/&gt;&amp;gt;   * Circuit breaker has a UI now, and some issues are being opened in&lt;br/&gt;&amp;gt;     the repo so people have at minimum gone through the effort to spin&lt;br/&gt;&amp;gt;     it up.&lt;br/&gt;&amp;gt;   * It&amp;#39;s still pretty manual, but it does provide node operators with&lt;br/&gt;&amp;gt;     information about the payment failures on their nodes (not easily&lt;br/&gt;&amp;gt;     surfaced in many LN UIs).&lt;br/&gt;&amp;gt;   * Hoping to get insights into stuck HTLCs and spam HTLCs so that we&lt;br/&gt;&amp;gt;     can learn from real life experience.&lt;br/&gt;&amp;gt;   * Circuit breaker is generally pushing in the same direction as the&lt;br/&gt;&amp;gt;     reputation scheme in [3], just a more manual one. We could&lt;br/&gt;&amp;gt;     possibly use it to visualize the endorsement system in [3] before&lt;br/&gt;&amp;gt;     enforcing it.&lt;br/&gt;&amp;gt;   * While circuit breaker isn&amp;#39;t necessarily *the* solution to solving&lt;br/&gt;&amp;gt;     jamming on LN, it provides us with some data points and a&lt;br/&gt;&amp;gt;     practical way for individual operators to address spamming of&lt;br/&gt;&amp;gt;     their nodes.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 3. Tokens Update&lt;br/&gt;&amp;gt; Since our last discussion an architecture document was added to the&lt;br/&gt;&amp;gt; proposal [6], details in the mailing list post [7]. The main goal is&lt;br/&gt;&amp;gt; to try to dissociate the people paying the fees from those gaining the&lt;br/&gt;&amp;gt; benefits from the credentials, so that credentials can be paid by a&lt;br/&gt;&amp;gt; LSP (for example).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 4. Reputation discussions in LSP Specification&lt;br/&gt;&amp;gt; Some attendees have been working on a reputation system for the LSP&lt;br/&gt;&amp;gt; specification group [8]. This system is intended to provide standard&lt;br/&gt;&amp;gt; metrics about what makes a node good/bad to connect to in the context&lt;br/&gt;&amp;gt; of a decentralized marketplace. While this work looks at the problem&lt;br/&gt;&amp;gt; from a different perspective, there&amp;#39;s a possibility to consolidate&lt;br/&gt;&amp;gt; the efforts. It seems particularly useful in the anti-jamming case&lt;br/&gt;&amp;gt; where a node has newly connected to you, and needs a &amp;#34;start state&amp;#34;&lt;br/&gt;&amp;gt; reputation score. The idea of defining what qualifies as good&lt;br/&gt;&amp;gt; behavior in the Lightning Network is useful across the board. The&lt;br/&gt;&amp;gt; LSP specification group also has bi-weekly calls, and welcomes&lt;br/&gt;&amp;gt; additional participants!&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 5. Call Cadence&lt;br/&gt;&amp;gt; Attendees agreed to continue with calls every two weeks. General&lt;br/&gt;&amp;gt; consensus was that we would aim for a 30 minute meeting with the&lt;br/&gt;&amp;gt; option to extend to an hour if discussion warrants it.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # What&amp;#39;s next&lt;br/&gt;&amp;gt; Thanks to everyone who attended last week&amp;#39;s meeting, we hope to see&lt;br/&gt;&amp;gt; more folks in the next one!&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; There&amp;#39;s a lot to discuss - brave readers who made it all the way to&lt;br/&gt;&amp;gt; the bottom of this email will notice a fair number of question marks&lt;br/&gt;&amp;gt; scattered about - and we&amp;#39;re going to continue to break the problem&lt;br/&gt;&amp;gt; down into smaller parts to discuss in the hope of making progress.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Any change to the Lightning Network that aims to address channel&lt;br/&gt;&amp;gt; jamming attacks will be a significant (but necessary) change to the&lt;br/&gt;&amp;gt; protocol, and it&amp;#39;s going to need input from many different&lt;br/&gt;&amp;gt; stakeholders. Please reach out here or in private&lt;br/&gt;&amp;gt; (carla at chaincode.com / clara at chaincode.com) if you have any questions&lt;br/&gt;&amp;gt; / concerns / comments!&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers until next time,&lt;br/&gt;&amp;gt; Carla and Clara&lt;br/&gt;&amp;gt; (Yes, our names are confusing. No, you won&amp;#39;t get used to it)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [1]&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/ClaraShk/LNJamming/blob/main/meeting-transcripts/23-01-23-transcript.md&#34;&gt;https://github.com/ClaraShk/LNJamming/blob/main/meeting-transcripts/23-01-23-transcript.md&lt;/a&gt;&lt;br/&gt;&amp;gt; [2] &lt;a href=&#34;https://github.com/lightning/bolts/pull/1052&#34;&gt;https://github.com/lightning/bolts/pull/1052&lt;/a&gt;&lt;br/&gt;&amp;gt; [3] &lt;a href=&#34;https://eprint.iacr.org/2022/1454.pdf&#34;&gt;https://eprint.iacr.org/2022/1454.pdf&lt;/a&gt;&lt;br/&gt;&amp;gt; [4]&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://mempool.space/lightning/node/021c97a90a411ff2b10dc2a8e32de2f29d2fa49d41bfbb52bd416e460db0747d0d&#34;&gt;https://mempool.space/lightning/node/021c97a90a411ff2b10dc2a8e32de2f29d2fa49d41bfbb52bd416e460db0747d0d&lt;/a&gt;&lt;br/&gt;&amp;gt; [5] &lt;a href=&#34;https://github.com/lightning/bolts/pull/1044&#34;&gt;https://github.com/lightning/bolts/pull/1044&lt;/a&gt;&lt;br/&gt;&amp;gt; [6] &lt;a href=&#34;https://github.com/lightning/bolts/pull/1043&#34;&gt;https://github.com/lightning/bolts/pull/1043&lt;/a&gt;&lt;br/&gt;&amp;gt; [8] &lt;a href=&#34;https://github.com/BitcoinAndLightningLayerSpecs/lsp/issues/12&#34;&gt;https://github.com/BitcoinAndLightningLayerSpecs/lsp/issues/12&lt;/a&gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230131/e171e031/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230131/e171e031/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:12:35Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsqkusea9c4dhehgx38huvku0qsdyjcdqkkyjvalpa35dm3040ns3qzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24z64mpqc</id>
    
      <title type="html">📅 Original date posted:2023-01-31 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsqkusea9c4dhehgx38huvku0qsdyjcdqkkyjvalpa35dm3040ns3qzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24z64mpqc" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs98wkqglrpvw4vamsmv3cuuum3xau8af9w4mmrx69gmssmrswggfqpshv0u&#39;&gt;nevent1q…hv0u&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-01-31&lt;br/&gt;🗒️ Summary of this message: Upgrading Lightning network for channel jamming mitigation may require network-wide cooperation, and incentivizing nodes to upgrade may be challenging. Privacy concerns also arise.&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Clara,&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;(Reply 1/2 - Apparently there is a limit of 80KB on Lightning mailing post)&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;  * They will likely require a network wide upgrade: when a sender&lt;br/&gt;&lt;br/&gt;&amp;gt;    makes a payment, the full path will need to understand the new&lt;br/&gt;&lt;br/&gt;&amp;gt;    feature bit for it to be used.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;I believe the upgradeability dimension is different both for circuit breaker&lt;br/&gt;and staking credentials -- Circuit breaker is a point-level deployment and&lt;br/&gt;can be rolled out without cooperation of the channel peers. Staking&lt;br/&gt;credentials is end-to-end and just requires cooperation between endpoints&lt;br/&gt;(HTLC senders and routing hops, not even all on the payment paths).&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;And I think upfront fees is a link-level one, probably the one requesting the&lt;br/&gt;most cooperation between the community of developers/node operators.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Point-to-point/end-to-end deployment already provides benefits with&lt;br/&gt;&amp;#34;half-state&amp;#34;&lt;br/&gt;deployment, I think. However, you might have &amp;#34;holistic&amp;#34; beneficial effects&lt;br/&gt;of link-level solutions (in terms of economic engineering not in terms of&lt;br/&gt;software compatibility), I don&amp;#39;t know.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;  * Sending nodes are unlikely to be incentivised to upgrade to&lt;br/&gt;&lt;br/&gt;&amp;gt;    support a channel jamming mitigation, as jamming mitigations incur&lt;br/&gt;&lt;br/&gt;&amp;gt;    additional cost (be it in the form of upfront fees, tokens or some&lt;br/&gt;&lt;br/&gt;&amp;gt;    other mechanism).&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;As with any &amp;#34;unpatched&amp;#34; security risks we&amp;#39;re encumbering on Lightning&lt;br/&gt;(pinnings, time-dilation, etc), beyond clearly describing the attack in&lt;br/&gt;reference documents and proof-of-concept of the attack against&lt;br/&gt;implementations, the next step to keep raising awareness is a live demo as&lt;br/&gt;much near as one can from really mainet conditions. While we were patching&lt;br/&gt;CVE-2021-41591 and friends, I&amp;#39;ve been testing the solidity of the fixes on&lt;br/&gt;the Eclair-side in a &amp;#34;black-box&amp;#34; manner. Always worth it, you learn on the&lt;br/&gt;attack bounds.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;We could do the same with jamming attacks, as there is a wide-range of&lt;br/&gt;scenarios&lt;br/&gt;to consider (network-wide/merchant/routing hops) and few optimizations&lt;br/&gt;tricks like looping. Just have to be super careful with any demo exploits&lt;br/&gt;toolchain, there is always a question of ethics here.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;  * Routing nodes have no way of knowing whether a payment comes from&lt;br/&gt;&lt;br/&gt;&amp;gt;    a node that is not upgraded, or simply doesn&amp;#39;t want to pay the&lt;br/&gt;&lt;br/&gt;&amp;gt;    additional cost introduced by a jamming mitigation.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;I think a routing node able to know if the payment sender has upgraded could&lt;br/&gt;constitute a version/implementation fingerprint and a downgrade in HTLC traffic&lt;br/&gt;privacy, ideally a routing node should not be able to link payeer/payee.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;If a sender does not want to pay the jamming mitigation cost, it might be a&lt;br/&gt;flaw in the incentive-compatibility benefit of a mitigation.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;(And in terms of evaluating the&lt;br/&gt;incentives-compatibility/economic-efficiency of any solution, we&amp;#39;re going&lt;br/&gt;to run quickly in hard questions of economic methodology, a bit beyond the&lt;br/&gt;software engineering realm).&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; It was generally agreed that the network is still in an early enough&lt;br/&gt;&lt;br/&gt;&amp;gt; stage that it is fair for relaying nodes to initially upgrade but not&lt;br/&gt;&lt;br/&gt;&amp;gt; enforce the feature, and later look at forwarding traffic to determine&lt;br/&gt;&lt;br/&gt;&amp;gt; whether it is appropriate to require the feature.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;If we look at the recent history of mempool policy upgrades on the&lt;br/&gt;Bitcoin Core-side,&lt;br/&gt;I think it&amp;#39;s best practice to be more conservative in terms of &amp;#34;smooth&lt;br/&gt;feature&amp;#34; deployment, even feature-gated beyond some node operator setting. At&lt;br/&gt;time of feature enforcement, some node operators might claim an established&lt;br/&gt;claim on other flows of HTLC traffic, and there would be a question of&lt;br/&gt;backward-compatibility arising.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Independently, there is the fact on how discrepancies in feature activation&lt;br/&gt;could be exploited (privacy-wise or economically-wise). Same issue we have&lt;br/&gt;on the Bitcoin Core-side, when we update the mempool policy, and old nodes&lt;br/&gt;might not see new types of outputs (e.g Taproot spends being non-standard&lt;br/&gt;before the activation iirc).&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; This will require sending nodes to opt-in to the new feature before the&lt;br/&gt;network can&lt;br/&gt;&lt;br/&gt;&amp;gt; widely enforce it, as no rational routing node will require a feature&lt;br/&gt;&lt;br/&gt;&amp;gt; which would reduce its ability to serve un-upgraded traffic (unless&lt;br/&gt;&lt;br/&gt;&amp;gt; under attack, which is not the case at present).&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;I think the corollary holds -- A rational routing node will not require a&lt;br/&gt;feature which would reduce its ability to serve upgraded traffic.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Note, I think the &amp;#34;rational&amp;#34; routing node could be better defined,&lt;br/&gt;otherwise I think we&amp;#39;ll run quickly in the same bottlenecked discussions&lt;br/&gt;about &amp;#34;policy rules&amp;#34; compatible with miners incentives, as we&amp;#39;re seeing on&lt;br/&gt;the Core-side. So far, I don&amp;#39;t think we have a consistent model of miners&lt;br/&gt;incentives.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; A note was also made that wallets tend to upgrade less frequently, in&lt;br/&gt;&lt;br/&gt;&amp;gt; part because some providers run forked versions of LN implementations,&lt;br/&gt;&lt;br/&gt;&amp;gt; so this horizon may be quite long. It was emphasized that this type of&lt;br/&gt;&lt;br/&gt;&amp;gt; network upgrade would require input from wallets, designers and&lt;br/&gt;&lt;br/&gt;&amp;gt; application developers anyway, so hopefully by the time we look to&lt;br/&gt;&lt;br/&gt;&amp;gt; deploy a change there is rough consensus among the Lightning community&lt;br/&gt;&lt;br/&gt;&amp;gt; already.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Yeah, we have the same issues with transaction-relay/mempool policy or even the&lt;br/&gt;non-really specified addr-relay strategy of Bitcoin Core, when there is&lt;br/&gt;&lt;br/&gt;an upgrade there. It sounds to me there are no well-maintained public and open&lt;br/&gt;communication channels where protocol developers can reach out to&lt;br/&gt;wallet softwares&lt;br/&gt;vendors for protocol upgrades feedback (and vice-versa). I don&amp;#39;t know if&lt;br/&gt;it&amp;#39;s one goal of the LSP spec effort. If you&amp;#39;re building a wallet, you&amp;#39;re&lt;br/&gt;probably going to assemble and maintain components from the two layers.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;  * Nodes can advertise custom upfront fee rates if desired, but to&lt;br/&gt;&lt;br/&gt;&amp;gt;    save gossip bandwidth we assume a network-wide default of 1%.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;I think you will have an additional issue here. The routing convergence delay&lt;br/&gt;network-wide might be a bottleneck in how much fee rate variances you have&lt;br/&gt;flexibility as a routing node operator. Routing convergence delays have&lt;br/&gt;been studied in the past at 2,500 seconds for the worst-audience, I don&amp;#39;t&lt;br/&gt;think it&amp;#39;s going to hold with network graph growth.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;  * Upfront fees accumulate along the route (as htlc payment amounts&lt;br/&gt;&lt;br/&gt;&amp;gt;    do), and are simply pushed to the `to_remote` balance on&lt;br/&gt;&lt;br/&gt;&amp;gt;    `update_add_htlc`.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;I wonder if there is a concern of an &amp;#34;upfront fee&amp;#34; extraction issue at the&lt;br/&gt;channel-level. You have Alice and you have Bob, Bob circular loop to&lt;br/&gt;accumulate max `upfront_fee` on his `to_remote` balance on Alice&amp;#39;s commitment&lt;br/&gt;transaction. Then provoke a force-close by Alice to have her paying the&lt;br/&gt;on-chain fees in the post-anchor output model.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;There can be an interesting &amp;#34;upfront fees&amp;#34; siphoning issue here.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; The interaction between upfront fees and possible future protocol&lt;br/&gt;&lt;br/&gt;&amp;gt; changes such as inbound fees and negative fees was briefly discussed,&lt;br/&gt;&lt;br/&gt;&amp;gt; specifically the case where a node sets low (or negative) fees to&lt;br/&gt;&lt;br/&gt;&amp;gt; attract traffic then fails payments to accumulate upfront fees. As is,&lt;br/&gt;&lt;br/&gt;&amp;gt; all implementations’ algorithms optimize for factors other than fees -&lt;br/&gt;&lt;br/&gt;&amp;gt; specifically avoiding a node once it&amp;#39;s produced failures - and we&lt;br/&gt;&lt;br/&gt;&amp;gt; suspect that careful sender-side behavior will mitigate this risk.&lt;br/&gt;&lt;br/&gt;&amp;gt; However, it was also acknowledged that a node that attempts this attack&lt;br/&gt;&lt;br/&gt;&amp;gt; may be able to fool multiple individual senders and still be able to&lt;br/&gt;&lt;br/&gt;&amp;gt; accumulate some fees.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Correcting upfront fees abuses sounds simple as long as you assume the scoring&lt;br/&gt;is done by the endpoint. When you start to have gossip and routing scoring&lt;br/&gt;delegation, you might be hijacked by an &amp;#34;accumulating fees&amp;#34; adversary. E.g,&lt;br/&gt;one could sybil the rapid-gossip-sync servers, if their deployment becomes&lt;br/&gt;ubiquitous [1]. Same issue with Electrum servers lack of incentives&lt;br/&gt;alignment.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; However, Bob has no real incentive to forward the HTLC to Carol and&lt;br/&gt;&lt;br/&gt;&amp;gt; push her the 4100 msat because that value is more than the fees he&amp;#39;ll&lt;br/&gt;&lt;br/&gt;&amp;gt; earn from successfully forwarding and settling the HTLC (10 msat&lt;br/&gt;&lt;br/&gt;&amp;gt; upfront fees &#43; 1000 msat success case fees). It&amp;#39;s worth noting that&lt;br/&gt;&lt;br/&gt;&amp;gt; this type of fee differential already exists in the network today - I&lt;br/&gt;&lt;br/&gt;&amp;gt; got these example numbers by looking at the fee rates of the Loop&lt;br/&gt;&lt;br/&gt;&amp;gt; node&amp;#39;s peers [4].&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Yes, &amp;#34;fee differential&amp;#34; issues have been discussed affecting upfront fees and&lt;br/&gt;all the hold fees variants in the past. I&amp;#39;m not sure they&amp;#39;re acceptable fee&lt;br/&gt;risks, if you can exploit them by setting correctly the channel&lt;br/&gt;topologies around&lt;br/&gt;a victim routing hop.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;End of 1/2.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;[0]&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-May/003594.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-May/003594.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;[1]  &lt;a href=&#34;https://github.com/lightningdevkit/rapid-gossip-sync-server&#34;&gt;https://github.com/lightningdevkit/rapid-gossip-sync-server&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Le lun. 30 janv. 2023 à 15:25, Carla Kirk-Cohen &amp;lt;kirkcohenc at gmail.com&amp;gt; a&lt;br/&gt;écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi list,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Monday last week we resumed our fortnightly channel jamming&lt;br/&gt;&amp;gt; mitigation calls for 2023.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Details for the next call:&lt;br/&gt;&amp;gt; * Monday 02/06 @ 18:00 UTC&lt;br/&gt;&amp;gt; * &lt;a href=&#34;https://meet.jit.si/UnjammingLN&#34;&gt;https://meet.jit.si/UnjammingLN&lt;/a&gt;&lt;br/&gt;&amp;gt; * Agenda: &lt;a href=&#34;https://github.com/ClaraShk/LNJamming/issues/2&#34;&gt;https://github.com/ClaraShk/LNJamming/issues/2&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # Meeting Summary&lt;br/&gt;&amp;gt; This email attempts to summarize the discussion, but is of course&lt;br/&gt;&amp;gt; subject to my errors and opinions so the full transcript is available&lt;br/&gt;&amp;gt; at [1]. It is (imperfectly) AI generated, so please reach out to myself&lt;br/&gt;&amp;gt; or Clara if you&amp;#39;d like clarification for a specific section.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1. Upgrade Mechanisms&lt;br/&gt;&amp;gt; The first topic of discussion was around how we would go about&lt;br/&gt;&amp;gt; upgrading the network to support an anti-jamming mitigation. Most&lt;br/&gt;&amp;gt; solutions share the following characteristics:&lt;br/&gt;&amp;gt;   * They will likely require a network wide upgrade: when a sender&lt;br/&gt;&amp;gt;     makes a payment, the full path will need to understand the new&lt;br/&gt;&amp;gt;     feature bit for it to be used.&lt;br/&gt;&amp;gt;   * Sending nodes are unlikely to be incentivised to upgrade to&lt;br/&gt;&amp;gt;     support a channel jamming mitigation, as jamming mitigations incur&lt;br/&gt;&amp;gt;     additional cost (be it in the form of upfront fees, tokens or some&lt;br/&gt;&amp;gt;     other mechanism).&lt;br/&gt;&amp;gt;   * Routing nodes have no way of knowing whether a payment comes from&lt;br/&gt;&amp;gt;     a node that is not upgraded, or simply doesn&amp;#39;t want to pay the&lt;br/&gt;&amp;gt;     additional cost introduced by a jamming mitigation.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It was generally agreed that the network is still in an early enough&lt;br/&gt;&amp;gt; stage that it is fair for relaying nodes to initially upgrade but not&lt;br/&gt;&amp;gt; enforce the feature, and later look at forwarding traffic to determine&lt;br/&gt;&amp;gt; whether it is appropriate to require the feature. This will require&lt;br/&gt;&amp;gt; sending nodes to opt-in to the new feature before the network can&lt;br/&gt;&amp;gt; widely enforce it, as no rational routing node will require a feature&lt;br/&gt;&amp;gt; which would reduce its ability to serve un-upgraded traffic (unless&lt;br/&gt;&amp;gt; under attack, which is not the case at present).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A note was also made that wallets tend to upgrade less frequently, in&lt;br/&gt;&amp;gt; part because some providers run forked versions of LN implementations,&lt;br/&gt;&amp;gt; so this horizon may be quite long. It was emphasized that this type of&lt;br/&gt;&amp;gt; network upgrade would require input from wallets, designers and&lt;br/&gt;&amp;gt; application developers anyway, so hopefully by the time we look to&lt;br/&gt;&amp;gt; deploy a change there is rough consensus among the Lightning community&lt;br/&gt;&amp;gt; already.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 2. Upfront Fees&lt;br/&gt;&amp;gt; Next, we discussed the draft proposal for upfront fees [2] that&lt;br/&gt;&amp;gt; implements the first of a two-part jamming mitigation described in [3].&lt;br/&gt;&amp;gt; As it stands, the PR describes the simplest possible way to introduce&lt;br/&gt;&amp;gt; upfront fees to the protocol:&lt;br/&gt;&amp;gt;   * Upfront fees are expressed as a ppm of a channel&amp;#39;s success-case&lt;br/&gt;&amp;gt;     fees, and charged on the outgoing link of a route.&lt;br/&gt;&amp;gt;   * Nodes can advertise custom upfront fee rates if desired, but to&lt;br/&gt;&amp;gt;     save gossip bandwidth we assume a network-wide default of 1%.&lt;br/&gt;&amp;gt;   * Upfront fees accumulate along the route (as htlc payment amounts&lt;br/&gt;&amp;gt;     do), and are simply pushed to the `to_remote` balance on&lt;br/&gt;&amp;gt;     `update_add_htlc`.&lt;br/&gt;&amp;gt;   * Final hop nodes advertise an upfront fee policy in bolt 11 invoices&lt;br/&gt;&amp;gt;     (or bolt 12 blinded routes) which is sufficiently padded to&lt;br/&gt;&amp;gt;     obfuscate their location in the route.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The interaction between upfront fees and possible future protocol&lt;br/&gt;&amp;gt; changes such as inbound fees and negative fees was briefly discussed,&lt;br/&gt;&amp;gt; specifically the case where a node sets low (or negative) fees to&lt;br/&gt;&amp;gt; attract traffic then fails payments to accumulate upfront fees. As is,&lt;br/&gt;&amp;gt; all implementations’ algorithms optimize for factors other than fees -&lt;br/&gt;&amp;gt; specifically avoiding a node once it&amp;#39;s produced failures - and we&lt;br/&gt;&amp;gt; suspect that careful sender-side behavior will mitigate this risk.&lt;br/&gt;&amp;gt; However, it was also acknowledged that a node that attempts this attack&lt;br/&gt;&amp;gt; may be able to fool multiple individual senders and still be able to&lt;br/&gt;&amp;gt; accumulate some fees.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; We then discussed the shortcomings of the &amp;#34;simplest possible&amp;#34; upfront&lt;br/&gt;&amp;gt; fees in [2], specifically focused on the following scenario where&lt;br/&gt;&amp;gt; nodes receive 1% of their success-case fees as an upfront payment:&lt;br/&gt;&amp;gt;   * Alice is sending a payment to Dave, who is a popular sink node in&lt;br/&gt;&amp;gt;     the network.&lt;br/&gt;&amp;gt;   * Bob -&amp;gt; Carol has low/default routing policy: 1000 msat success&lt;br/&gt;&amp;gt;     case / 10 msat upfront fee&lt;br/&gt;&amp;gt;   * Carol -&amp;gt; Dave has high fees: 400,000 msat success case / 4000 msat&lt;br/&gt;&amp;gt;     upfront fee&lt;br/&gt;&amp;gt;   * Dave advertises no success case fee (is recipient) / 100 msat of&lt;br/&gt;&amp;gt;     upfront fee chosen for his invoice.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Alice ------ Bob ------ Carol ------ Dave&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Since we need to source all of these funds from the sender (Alice), the&lt;br/&gt;&amp;gt; forwarding of funds is as follows:&lt;br/&gt;&amp;gt;   * Alice pushes 4110 msat to Bob.&lt;br/&gt;&amp;gt;   * Bob _should_ push 4100 msat to Carol, claiming his 10 msat upfront&lt;br/&gt;&amp;gt;     fee.&lt;br/&gt;&amp;gt;   * Carol _should_ push 100 msat to Dave, claiming her 4000 msat&lt;br/&gt;&amp;gt;     upfront fee.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; However, Bob has no real incentive to forward the HTLC to Carol and&lt;br/&gt;&amp;gt; push her the 4100 msat because that value is more than the fees he&amp;#39;ll&lt;br/&gt;&amp;gt; earn from successfully forwarding and settling the HTLC (10 msat&lt;br/&gt;&amp;gt; upfront fees &#43; 1000 msat success case fees). It&amp;#39;s worth noting that&lt;br/&gt;&amp;gt; this type of fee differential already exists in the network today - I&lt;br/&gt;&amp;gt; got these example numbers by looking at the fee rates of the Loop&lt;br/&gt;&amp;gt; node&amp;#39;s peers [4].&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; There were a few points discussed around this issue:&lt;br/&gt;&amp;gt;   * Whether we should look into a more complicated approach that&lt;br/&gt;&amp;gt;     includes a &amp;#34;proof of forward&amp;#34; secret in the next node&amp;#39;s onion which&lt;br/&gt;&amp;gt;     must be supplied to claim the upfront fee.&lt;br/&gt;&amp;gt;   * Discussion about whether these order of magnitude fee differences&lt;br/&gt;&amp;gt;     will exist in an efficient market (differing opinions).&lt;br/&gt;&amp;gt;   * Whether Bob _would_ steal the upfront fee by dropping the payment,&lt;br/&gt;&amp;gt;     as it&amp;#39;ll impact nodes&amp;#39; desire to route through them in future.&lt;br/&gt;&amp;gt;   * Is there a way to deliver upfront fees to nodes along the route&lt;br/&gt;&amp;gt;     *without* them adding up along the route (other than the naive&lt;br/&gt;&amp;gt;     version of sending each hop a payment, which comes with its own&lt;br/&gt;&amp;gt;     problems)? Seems not, but bright ideas are wanted and welcome!&lt;br/&gt;&amp;gt;   * That nodes will decide where they fall in the trade-off of setting&lt;br/&gt;&amp;gt;     upfront fees to cover their opportunity cost for high routing fees&lt;br/&gt;&amp;gt;     and market pressure to keep these fees low for the sake of&lt;br/&gt;&amp;gt;     remaining competitive.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A few people mentioned the desire to keep an upfront fee solution as&lt;br/&gt;&amp;gt; simple as possible, but generally it seemed that a solution where the&lt;br/&gt;&amp;gt; accumulated upfront fees at any point along a route exceed any single&lt;br/&gt;&amp;gt; hop&amp;#39;s expected success case fees is unacceptable because incentives&lt;br/&gt;&amp;gt; are misaligned (even if we can properly attribute errors with [5]).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; We touched briefly on a few &amp;#34;proof of forwarding&amp;#34; solutions for&lt;br/&gt;&amp;gt; upfront fees:&lt;br/&gt;&amp;gt;   * Using a locking mechanism that relies on a secret that is provided&lt;br/&gt;&amp;gt;     by the next node&amp;#39;s onion.&lt;br/&gt;&amp;gt;   * A taproot tree for all HTLCs where each leaf has a subset of HTLCs,&lt;br/&gt;&amp;gt;     and fees could be incorporated here (summary note: apparently some&lt;br/&gt;&amp;gt;     work has been done here, but I couldn&amp;#39;t find the link).&lt;br/&gt;&amp;gt;   * If we&amp;#39;re confident that a more complicated solution will solve many&lt;br/&gt;&amp;gt;     problems, then we should pursue them, otherwise a simple solution&lt;br/&gt;&amp;gt;     is possibly a _good enough_ first step.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; There was some discussion about how we want to go about addressing&lt;br/&gt;&amp;gt; spamming in the network:&lt;br/&gt;&amp;gt;   * Is it good enough to deploy something today that just charges a&lt;br/&gt;&amp;gt;     simple, capped upfront fee (eg 1 sat per hop) that solves jamming&lt;br/&gt;&amp;gt;     for the current state of the network and allows us to learn&lt;br/&gt;&amp;gt;     something then iterate?&lt;br/&gt;&amp;gt;   * Should our first attempt at solving this issue be for a future&lt;br/&gt;&amp;gt;     steady state where nodes have significant traffic and nodes face&lt;br/&gt;&amp;gt;     real opportunity cost (in the form of lost revenue) if they are&lt;br/&gt;&amp;gt;     targeted by a jamming attack?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 3. Circuit Breaker Update&lt;br/&gt;&amp;gt;   * Circuit breaker has a UI now, and some issues are being opened in&lt;br/&gt;&amp;gt;     the repo so people have at minimum gone through the effort to spin&lt;br/&gt;&amp;gt;     it up.&lt;br/&gt;&amp;gt;   * It&amp;#39;s still pretty manual, but it does provide node operators with&lt;br/&gt;&amp;gt;     information about the payment failures on their nodes (not easily&lt;br/&gt;&amp;gt;     surfaced in many LN UIs).&lt;br/&gt;&amp;gt;   * Hoping to get insights into stuck HTLCs and spam HTLCs so that we&lt;br/&gt;&amp;gt;     can learn from real life experience.&lt;br/&gt;&amp;gt;   * Circuit breaker is generally pushing in the same direction as the&lt;br/&gt;&amp;gt;     reputation scheme in [3], just a more manual one. We could&lt;br/&gt;&amp;gt;     possibly use it to visualize the endorsement system in [3] before&lt;br/&gt;&amp;gt;     enforcing it.&lt;br/&gt;&amp;gt;   * While circuit breaker isn&amp;#39;t necessarily *the* solution to solving&lt;br/&gt;&amp;gt;     jamming on LN, it provides us with some data points and a&lt;br/&gt;&amp;gt;     practical way for individual operators to address spamming of&lt;br/&gt;&amp;gt;     their nodes.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 3. Tokens Update&lt;br/&gt;&amp;gt; Since our last discussion an architecture document was added to the&lt;br/&gt;&amp;gt; proposal [6], details in the mailing list post [7]. The main goal is&lt;br/&gt;&amp;gt; to try to dissociate the people paying the fees from those gaining the&lt;br/&gt;&amp;gt; benefits from the credentials, so that credentials can be paid by a&lt;br/&gt;&amp;gt; LSP (for example).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 4. Reputation discussions in LSP Specification&lt;br/&gt;&amp;gt; Some attendees have been working on a reputation system for the LSP&lt;br/&gt;&amp;gt; specification group [8]. This system is intended to provide standard&lt;br/&gt;&amp;gt; metrics about what makes a node good/bad to connect to in the context&lt;br/&gt;&amp;gt; of a decentralized marketplace. While this work looks at the problem&lt;br/&gt;&amp;gt; from a different perspective, there&amp;#39;s a possibility to consolidate&lt;br/&gt;&amp;gt; the efforts. It seems particularly useful in the anti-jamming case&lt;br/&gt;&amp;gt; where a node has newly connected to you, and needs a &amp;#34;start state&amp;#34;&lt;br/&gt;&amp;gt; reputation score. The idea of defining what qualifies as good&lt;br/&gt;&amp;gt; behavior in the Lightning Network is useful across the board. The&lt;br/&gt;&amp;gt; LSP specification group also has bi-weekly calls, and welcomes&lt;br/&gt;&amp;gt; additional participants!&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 5. Call Cadence&lt;br/&gt;&amp;gt; Attendees agreed to continue with calls every two weeks. General&lt;br/&gt;&amp;gt; consensus was that we would aim for a 30 minute meeting with the&lt;br/&gt;&amp;gt; option to extend to an hour if discussion warrants it.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # What&amp;#39;s next&lt;br/&gt;&amp;gt; Thanks to everyone who attended last week&amp;#39;s meeting, we hope to see&lt;br/&gt;&amp;gt; more folks in the next one!&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; There&amp;#39;s a lot to discuss - brave readers who made it all the way to&lt;br/&gt;&amp;gt; the bottom of this email will notice a fair number of question marks&lt;br/&gt;&amp;gt; scattered about - and we&amp;#39;re going to continue to break the problem&lt;br/&gt;&amp;gt; down into smaller parts to discuss in the hope of making progress.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Any change to the Lightning Network that aims to address channel&lt;br/&gt;&amp;gt; jamming attacks will be a significant (but necessary) change to the&lt;br/&gt;&amp;gt; protocol, and it&amp;#39;s going to need input from many different&lt;br/&gt;&amp;gt; stakeholders. Please reach out here or in private&lt;br/&gt;&amp;gt; (carla at chaincode.com / clara at chaincode.com) if you have any questions&lt;br/&gt;&amp;gt; / concerns / comments!&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers until next time,&lt;br/&gt;&amp;gt; Carla and Clara&lt;br/&gt;&amp;gt; (Yes, our names are confusing. No, you won&amp;#39;t get used to it)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [1]&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/ClaraShk/LNJamming/blob/main/meeting-transcripts/23-01-23-transcript.md&#34;&gt;https://github.com/ClaraShk/LNJamming/blob/main/meeting-transcripts/23-01-23-transcript.md&lt;/a&gt;&lt;br/&gt;&amp;gt; [2] &lt;a href=&#34;https://github.com/lightning/bolts/pull/1052&#34;&gt;https://github.com/lightning/bolts/pull/1052&lt;/a&gt;&lt;br/&gt;&amp;gt; [3] &lt;a href=&#34;https://eprint.iacr.org/2022/1454.pdf&#34;&gt;https://eprint.iacr.org/2022/1454.pdf&lt;/a&gt;&lt;br/&gt;&amp;gt; [4]&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://mempool.space/lightning/node/021c97a90a411ff2b10dc2a8e32de2f29d2fa49d41bfbb52bd416e460db0747d0d&#34;&gt;https://mempool.space/lightning/node/021c97a90a411ff2b10dc2a8e32de2f29d2fa49d41bfbb52bd416e460db0747d0d&lt;/a&gt;&lt;br/&gt;&amp;gt; [5] &lt;a href=&#34;https://github.com/lightning/bolts/pull/1044&#34;&gt;https://github.com/lightning/bolts/pull/1044&lt;/a&gt;&lt;br/&gt;&amp;gt; [6] &lt;a href=&#34;https://github.com/lightning/bolts/pull/1043&#34;&gt;https://github.com/lightning/bolts/pull/1043&lt;/a&gt;&lt;br/&gt;&amp;gt; [8] &lt;a href=&#34;https://github.com/BitcoinAndLightningLayerSpecs/lsp/issues/12&#34;&gt;https://github.com/BitcoinAndLightningLayerSpecs/lsp/issues/12&lt;/a&gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230131/bbef78be/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230131/bbef78be/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:12:35Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqs98wkqglrpvw4vamsmv3cuuum3xau8af9w4mmrx69gmssmrswggfqzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zx9pxju</id>
    
      <title type="html">📅 Original date posted:2023-01-31 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqs98wkqglrpvw4vamsmv3cuuum3xau8af9w4mmrx69gmssmrswggfqzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zx9pxju" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs96nxzjpesm4zwjysm3ffk7n8v6lsphch58yk6h77ct5sm0hjgx3qsnv83l&#39;&gt;nevent1q…v83l&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-01-31&lt;br/&gt;🗒️ Summary of this message: Upgrading the Lightning Network to mitigate channel jamming may require a network-wide upgrade, but sending nodes may not be incentivized to upgrade. Routing nodes may not know if a payment comes from an un-upgraded node.&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Clara,&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;  * They will likely require a network wide upgrade: when a sender&lt;br/&gt;&lt;br/&gt;&amp;gt;    makes a payment, the full path will need to understand the new&lt;br/&gt;&lt;br/&gt;&amp;gt;    feature bit for it to be used.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;I believe the upgradeability dimension is different both for circuit breaker&lt;br/&gt;and staking credentials -- Circuit breaker is a point-level deployment and&lt;br/&gt;can be rolled out without cooperation of the channel peers. Staking&lt;br/&gt;credentials is end-to-end and just requires cooperation between endpoints&lt;br/&gt;(HTLC senders and routing hops, not even all on the payment paths).&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;And I think upfront fees is a link-level one, probably the one requesting the&lt;br/&gt;most cooperation between the community of developers/node operators.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Point-to-point/end-to-end deployment already provides benefits with&lt;br/&gt;&amp;#34;half-state&amp;#34;&lt;br/&gt;deployment, I think. However, you might have &amp;#34;holistic&amp;#34; beneficial effects&lt;br/&gt;of link-level solutions (in terms of economic engineering not in terms of&lt;br/&gt;software compatibility), I don&amp;#39;t know.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;  * Sending nodes are unlikely to be incentivised to upgrade to&lt;br/&gt;&lt;br/&gt;&amp;gt;    support a channel jamming mitigation, as jamming mitigations incur&lt;br/&gt;&lt;br/&gt;&amp;gt;    additional cost (be it in the form of upfront fees, tokens or some&lt;br/&gt;&lt;br/&gt;&amp;gt;    other mechanism).&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;As with any &amp;#34;unpatched&amp;#34; security risks we&amp;#39;re encumbering on Lightning&lt;br/&gt;(pinnings, time-dilation, etc), beyond clearly describing the attack in&lt;br/&gt;reference documents and proof-of-concept of the attack against&lt;br/&gt;implementations, the next step to keep raising awareness is a live demo as&lt;br/&gt;much near as one can from really mainet conditions. While we were patching&lt;br/&gt;CVE-2021-41591 and friends, I&amp;#39;ve been testing the solidity of the fixes on&lt;br/&gt;the Eclair-side in a &amp;#34;black-box&amp;#34; manner. Always worth it, you learn on the&lt;br/&gt;attack bounds.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;We could do the same with jamming attacks, as there is a wide-range of&lt;br/&gt;scenarios&lt;br/&gt;to consider (network-wide/merchant/routing hops) and few optimizations&lt;br/&gt;tricks like looping. Just have to be super careful with any demo exploits&lt;br/&gt;toolchain, there is always a question of ethics here.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;  * Routing nodes have no way of knowing whether a payment comes from&lt;br/&gt;&lt;br/&gt;&amp;gt;    a node that is not upgraded, or simply doesn&amp;#39;t want to pay the&lt;br/&gt;&lt;br/&gt;&amp;gt;    additional cost introduced by a jamming mitigation.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;I think a routing node able to know if the payment sender has upgraded could&lt;br/&gt;constitute a version/implementation fingerprint and a downgrade in HTLC traffic&lt;br/&gt;privacy, ideally a routing node should not be able to link payeer/payee.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;If a sender does not want to pay the jamming mitigation cost, it might be a&lt;br/&gt;flaw in the incentive-compatibility benefit of a mitigation.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;(And in terms of evaluating the&lt;br/&gt;incentives-compatibility/economic-efficiency of any solution, we&amp;#39;re going&lt;br/&gt;to run quickly in hard questions of economic methodology, a bit beyond the&lt;br/&gt;software engineering realm).&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; It was generally agreed that the network is still in an early enough&lt;br/&gt;&lt;br/&gt;&amp;gt; stage that it is fair for relaying nodes to initially upgrade but not&lt;br/&gt;&lt;br/&gt;&amp;gt; enforce the feature, and later look at forwarding traffic to determine&lt;br/&gt;&lt;br/&gt;&amp;gt; whether it is appropriate to require the feature.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;If we look at the recent history of mempool policy upgrades on the&lt;br/&gt;Bitcoin Core-side,&lt;br/&gt;I think it&amp;#39;s best practice to be more conservative in terms of &amp;#34;smooth&lt;br/&gt;feature&amp;#34; deployment, even feature-gated beyond some node operator setting. At&lt;br/&gt;time of feature enforcement, some node operators might claim an established&lt;br/&gt;claim on other flows of HTLC traffic, and there would be a question of&lt;br/&gt;backward-compatibility arising.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Independently, there is the fact on how discrepancies in feature activation&lt;br/&gt;could be exploited (privacy-wise or economically-wise). Same issue we have&lt;br/&gt;on the Bitcoin Core-side, when we update the mempool policy, and old nodes&lt;br/&gt;might not see new types of outputs (e.g Taproot spends being non-standard&lt;br/&gt;before the activation iirc).&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; This will require sending nodes to opt-in to the new feature before the&lt;br/&gt;network can&lt;br/&gt;&lt;br/&gt;&amp;gt; widely enforce it, as no rational routing node will require a feature&lt;br/&gt;&lt;br/&gt;&amp;gt; which would reduce its ability to serve un-upgraded traffic (unless&lt;br/&gt;&lt;br/&gt;&amp;gt; under attack, which is not the case at present).&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;I think the corollary holds -- A rational routing node will not require a&lt;br/&gt;feature which would reduce its ability to serve upgraded traffic.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Note, I think the &amp;#34;rational&amp;#34; routing node could be better defined,&lt;br/&gt;otherwise I think we&amp;#39;ll run quickly in the same bottlenecked discussions&lt;br/&gt;about &amp;#34;policy rules&amp;#34; compatible with miners incentives, as we&amp;#39;re seeing on&lt;br/&gt;the Core-side. So far, I don&amp;#39;t think we have a consistent model of miners&lt;br/&gt;incentives.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; A note was also made that wallets tend to upgrade less frequently, in&lt;br/&gt;&lt;br/&gt;&amp;gt; part because some providers run forked versions of LN implementations,&lt;br/&gt;&lt;br/&gt;&amp;gt; so this horizon may be quite long. It was emphasized that this type of&lt;br/&gt;&lt;br/&gt;&amp;gt; network upgrade would require input from wallets, designers and&lt;br/&gt;&lt;br/&gt;&amp;gt; application developers anyway, so hopefully by the time we look to&lt;br/&gt;&lt;br/&gt;&amp;gt; deploy a change there is rough consensus among the Lightning community&lt;br/&gt;&lt;br/&gt;&amp;gt; already.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Yeah, we have the same issues with transaction-relay/mempool policy or even the&lt;br/&gt;non-really specified addr-relay strategy of Bitcoin Core, when there is&lt;br/&gt;&lt;br/&gt;an upgrade there. It sounds to me there are no well-maintained public and open&lt;br/&gt;communication channels where protocol developers can reach out to&lt;br/&gt;wallet softwares&lt;br/&gt;vendors for protocol upgrades feedback (and vice-versa). I don&amp;#39;t know if&lt;br/&gt;it&amp;#39;s one goal of the LSP spec effort. If you&amp;#39;re building a wallet, you&amp;#39;re&lt;br/&gt;probably going to assemble and maintain components from the two layers.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;  * Nodes can advertise custom upfront fee rates if desired, but to&lt;br/&gt;&lt;br/&gt;&amp;gt;    save gossip bandwidth we assume a network-wide default of 1%.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;I think you will have an additional issue here. The routing convergence delay&lt;br/&gt;network-wide might be a bottleneck in how much fee rate variances you have&lt;br/&gt;flexibility as a routing node operator. Routing convergence delays have&lt;br/&gt;been studied in the past at 2,500 seconds for the worst-audience, I don&amp;#39;t&lt;br/&gt;think it&amp;#39;s going to hold with network graph growth.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;  * Upfront fees accumulate along the route (as htlc payment amounts&lt;br/&gt;&lt;br/&gt;&amp;gt;    do), and are simply pushed to the `to_remote` balance on&lt;br/&gt;&lt;br/&gt;&amp;gt;    `update_add_htlc`.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;I wonder if there is a concern of an &amp;#34;upfront fee&amp;#34; extraction issue at the&lt;br/&gt;channel-level. You have Alice and you have Bob, Bob circular loop to&lt;br/&gt;accumulate max `upfront_fee` on his `to_remote` balance on Alice&amp;#39;s commitment&lt;br/&gt;transaction. Then provoke a force-close by Alice to have her paying the&lt;br/&gt;on-chain fees in the post-anchor output model.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;There can be an interesting &amp;#34;upfront fees&amp;#34; siphoning issue here.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; The interaction between upfront fees and possible future protocol&lt;br/&gt;&lt;br/&gt;&amp;gt; changes such as inbound fees and negative fees was briefly discussed,&lt;br/&gt;&lt;br/&gt;&amp;gt; specifically the case where a node sets low (or negative) fees to&lt;br/&gt;&lt;br/&gt;&amp;gt; attract traffic then fails payments to accumulate upfront fees. As is,&lt;br/&gt;&lt;br/&gt;&amp;gt; all implementations’ algorithms optimize for factors other than fees -&lt;br/&gt;&lt;br/&gt;&amp;gt; specifically avoiding a node once it&amp;#39;s produced failures - and we&lt;br/&gt;&lt;br/&gt;&amp;gt; suspect that careful sender-side behavior will mitigate this risk.&lt;br/&gt;&lt;br/&gt;&amp;gt; However, it was also acknowledged that a node that attempts this attack&lt;br/&gt;&lt;br/&gt;&amp;gt; may be able to fool multiple individual senders and still be able to&lt;br/&gt;&lt;br/&gt;&amp;gt; accumulate some fees.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Correcting upfront fees abuses sounds simple as long as you assume the scoring&lt;br/&gt;is done by the endpoint. When you start to have gossip and routing scoring&lt;br/&gt;delegation, you might be hijacked by an &amp;#34;accumulating fees&amp;#34; adversary. E.g,&lt;br/&gt;one could sybil the rapid-gossip-sync servers, if their deployment becomes&lt;br/&gt;ubiquitous [1]. Same issue with Electrum servers lack of incentives&lt;br/&gt;alignment.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; However, Bob has no real incentive to forward the HTLC to Carol and&lt;br/&gt;&lt;br/&gt;&amp;gt; push her the 4100 msat because that value is more than the fees he&amp;#39;ll&lt;br/&gt;&lt;br/&gt;&amp;gt; earn from successfully forwarding and settling the HTLC (10 msat&lt;br/&gt;&lt;br/&gt;&amp;gt; upfront fees &#43; 1000 msat success case fees). It&amp;#39;s worth noting that&lt;br/&gt;&lt;br/&gt;&amp;gt; this type of fee differential already exists in the network today - I&lt;br/&gt;&lt;br/&gt;&amp;gt; got these example numbers by looking at the fee rates of the Loop&lt;br/&gt;&lt;br/&gt;&amp;gt; node&amp;#39;s peers [4].&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Yes, &amp;#34;fee differential&amp;#34; issues have been discussed affecting upfront fees and&lt;br/&gt;all the hold fees variants in the past. I&amp;#39;m not sure they&amp;#39;re acceptable fee&lt;br/&gt;risks, if you can exploit them by setting correctly the channel&lt;br/&gt;topologies around&lt;br/&gt;a victim routing hop.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;  * Whether we should look into a more complicated approach that&lt;br/&gt;&lt;br/&gt;&amp;gt;    includes a &amp;#34;proof of forward&amp;#34; secret in the next node&amp;#39;s onion which&lt;br/&gt;&lt;br/&gt;&amp;gt;    must be supplied to claim the upfront fee.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;One of the hard things with a &amp;#34;proof of forward&amp;#34; is a hop colluding with&lt;br/&gt;the next counterparty in way non-provable to the HTLC sender. I don&amp;#39;t think&lt;br/&gt;more reliable onion errors will save the mechanism, as you might always&lt;br/&gt;masquerade your routing node offliness (sure -- it might be penalized by&lt;br/&gt;routing algorithms still probably a period of grace exploitable)&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;  * Whether Bob _would_ steal the upfront fee by dropping the payment,&lt;br/&gt;&lt;br/&gt;&amp;gt;    as it&amp;#39;ll impact nodes&amp;#39; desire to route through them in future.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;And if you have &amp;#34;floating&amp;#34; upfront fees to adjust to routing node&lt;br/&gt;opportunity cost and the routing algorithms historical buckets are not&lt;br/&gt;correcting the variations, a &amp;#34;upfront fee&amp;#34; adversary might be able to steal&lt;br/&gt;the amount, in a proportion not corrected by the penalty.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;  * Is there a way to deliver upfront fees to nodes along the route&lt;br/&gt;&lt;br/&gt;&amp;gt;    *without* them adding up along the route (other than the naive&lt;br/&gt;&lt;br/&gt;&amp;gt;    version of sending each hop a payment, which comes with its own&lt;br/&gt;&lt;br/&gt;&amp;gt;    problems)? Seems not, but bright ideas are wanted and welcome!&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;I think the latest update of the Staking Credentials could answer such&lt;br/&gt;description&lt;br/&gt;of &amp;#34;delivering the upfront fees to nodes along the route *without* them&lt;br/&gt;adding up along the route&amp;#34; as the credential issuance is separated from its&lt;br/&gt;redemption.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On a few other ideas, &amp;#34;magically&amp;#34; teleporting the fee payment to the&lt;br/&gt;routing hops, it has been browsed in the past [2].&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;  * That nodes will decide where they fall in the trade-off of setting&lt;br/&gt;&lt;br/&gt;&amp;gt;    upfront fees to cover their opportunity cost for high routing fees&lt;br/&gt;&lt;br/&gt;&amp;gt;    and market pressure to keep these fees low for the sake of&lt;br/&gt;&lt;br/&gt;&amp;gt;    remaining competitive.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;They will probably need to do real-time monitoring of the congestion rates&lt;br/&gt;and outcome results of their HTLC forwarding to adjust in consequence their&lt;br/&gt;routing fees.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;   * A taproot tree for all HTLCs where each leaf has a subset of HTLCs,&lt;br/&gt;&lt;br/&gt;&amp;gt;     and fees could be incorporated here (summary note: apparently some&lt;br/&gt;&lt;br/&gt;&amp;gt;     work has been done here, but I couldn&amp;#39;t find the link).&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;The idea of summing up the taproot tree for all HTLCs is discussed here&lt;br/&gt;with past references [3]. I don&amp;#39;t know if it&amp;#39;s really a viable direction,&lt;br/&gt;as aggregating the claim of HTLCs of different values in the same witness&lt;br/&gt;claims might open the door to transaction-relay games.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;   * If we&amp;#39;re confident that a more complicated solution will solve many&lt;br/&gt;&lt;br/&gt;&amp;gt;     problems, then we should pursue them, otherwise a simple solution&lt;br/&gt;&lt;br/&gt;&amp;gt;     is possibly a _good enough_ first step.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;If the &amp;#34;proof of forward&amp;#34; can be solved by &amp;#34;magic&amp;#34; covenant is still an open&lt;br/&gt;issue. I don&amp;#39;t know if it&amp;#39;s a viable solution as it&amp;#39;s more a hard synchronicity&lt;br/&gt;issue between chain of contracts. However from exploring issue we might&lt;br/&gt;learn interesting design considerations for contracting protocols (at the&lt;br/&gt;very least some semi-formal proof it&amp;#39;s not possible)&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;  * Should our first attempt at solving this issue be for a future&lt;br/&gt;&lt;br/&gt;&amp;gt;    steady state where nodes have significant traffic and nodes face&lt;br/&gt;&lt;br/&gt;&amp;gt;    real opportunity cost (in the form of lost revenue) if they are&lt;br/&gt;&lt;br/&gt;&amp;gt;    targeted by a jamming attack?&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Deferring the most economically-efficient solution we can come from, we might&lt;br/&gt;run into a bunch of incentives-misallignment between generation of nodes&lt;br/&gt;operators and Lightning use-cases. Maybe same as we have seen with lack of&lt;br/&gt;transaction replacement, first-seen RBF, opt-in RBF, mempoolfullrbf, I&lt;br/&gt;believe.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On the other-side, the deployment of a simple solution would enable us to&lt;br/&gt;start to build a consistent model of how the economics of channel&lt;br/&gt;congestion, that we can &amp;#34;transpose&amp;#34; for more advanced solutions (ideally --&lt;br/&gt;all other things being equal).&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;  * While circuit breaker isn&amp;#39;t necessarily *the* solution to solving&lt;br/&gt;&lt;br/&gt;&amp;gt;    jamming on LN, it provides us with some data points and a&lt;br/&gt;&lt;br/&gt;&amp;gt;    practical way for individual operators to address spamming of&lt;br/&gt;&lt;br/&gt;&amp;gt;    their nodes.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;As mentioned above, it sounds like the congestion monitoring and HTLCs&lt;br/&gt;resolution tracking is going to be a standard task among LN&lt;br/&gt;implementations, and that you&amp;#39;ll would probably need a piece of&lt;br/&gt;infrastructure like circuit breaker for all implementations.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; Since our last discussion an architecture document was added to the&lt;br/&gt;&lt;br/&gt;&amp;gt; proposal [6], details in the mailing list post [7]. The main goal is&lt;br/&gt;&lt;br/&gt;&amp;gt; to try to dissociate the people paying the fees from those gaining the&lt;br/&gt;&lt;br/&gt;&amp;gt; benefits from the credentials, so that credentials can be paid by a&lt;br/&gt;&lt;br/&gt;&amp;gt; LSP (for example).&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;I think there is a missing footnote, I believe the mail thread might have&lt;br/&gt;been this one:&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2023-January/003822.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2023-January/003822.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Beyond delegation as mentioned, there are few other design goals targeted:&lt;br/&gt;&lt;br/&gt;- strong economic-efficiency due to credentials accumulation&lt;br/&gt;&lt;br/&gt;- fungibility of their credentials between their issuance and redemption&lt;br/&gt;&lt;br/&gt;- dynamic-management of liquidity risks&lt;br/&gt;&lt;br/&gt;- contract-agnostic (e.g can cover dual-opening)&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Probably, we&amp;#39;ll have the credential issuance flow and extension gossip more&lt;br/&gt;speced out before next meetings.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; 4. Reputation discussions in LSP Specification&lt;br/&gt;&lt;br/&gt;&amp;gt; Some attendees have been working on a reputation system for the LSP&lt;br/&gt;&lt;br/&gt;&amp;gt; specification group [8]. This system is intended to provide standard&lt;br/&gt;&lt;br/&gt;&amp;gt; metrics about what makes a node good/bad to connect to in the context&lt;br/&gt;&lt;br/&gt;&amp;gt; of a decentralized marketplace. While this work looks at the problem&lt;br/&gt;&lt;br/&gt;&amp;gt; from a different perspective, there&amp;#39;s a possibility to consolidate&lt;br/&gt;&lt;br/&gt;&amp;gt; the efforts. It seems particularly useful in the anti-jamming case&lt;br/&gt;&lt;br/&gt;&amp;gt; where a node has newly connected to you, and needs a &amp;#34;start state&amp;#34;&lt;br/&gt;&lt;br/&gt;&amp;gt; reputation score. The idea of defining what qualifies as good&lt;br/&gt;&lt;br/&gt;&amp;gt; behavior in the Lightning Network is useful across the board. The&lt;br/&gt;&lt;br/&gt;&amp;gt; LSP specification group also has bi-weekly calls, and welcomes&lt;br/&gt;&lt;br/&gt;&amp;gt; additional participants!&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Effectively, I think distributed market infrastructure design could benefit&lt;br/&gt;from the lessons of the Lightning Network. It could be fruitful for the LSP&lt;br/&gt;specification group to have its own mailing list at some point in the&lt;br/&gt;future.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; There&amp;#39;s a lot to discuss - brave readers who made it all the way to&lt;br/&gt;&lt;br/&gt;&amp;gt; the bottom of this email will notice a fair number of question marks&lt;br/&gt;&lt;br/&gt;&amp;gt; scattered about - and we&amp;#39;re going to continue to break the problem&lt;br/&gt;&lt;br/&gt;&amp;gt; down into smaller parts to discuss in the hope of making progress.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Beyond archiving well the problem space, there is also an effort of&lt;br/&gt;documenting well any protocol design decisions to preserve future&lt;br/&gt;evolvability and achieve interoperability between implementations.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; Any change to the Lightning Network that aims to address channel&lt;br/&gt;&lt;br/&gt;&amp;gt; jamming attacks will be a significant (but necessary) change to the&lt;br/&gt;&lt;br/&gt;&amp;gt; protocol&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;For sure, this is a significant change to the protocol, beyond that we&lt;br/&gt;should be careful to not downgrade the throughput or operations of the&lt;br/&gt;base-layer. If the original Stakes Certificates would have been&lt;br/&gt;implemented, it would have constituted a mempool congestion risk, where the&lt;br/&gt;node operators under jamming would have forced attackers to pay for fresh&lt;br/&gt;UTXOs. If we have to envision such cross-layer mitigation design in the&lt;br/&gt;future, I think we might have to do cross-layer consensus building.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;[0]&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-May/003594.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-May/003594.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;[1] &lt;a href=&#34;https://github.com/lightningdevkit/rapid-gossip-sync-server&#34;&gt;https://github.com/lightningdevkit/rapid-gossip-sync-server&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;[2] &lt;a href=&#34;https://jamming-dev.github.io/book/4-design_space.html&#34;&gt;https://jamming-dev.github.io/book/4-design_space.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;[3] &lt;a href=&#34;https://github.com/ariard/bitcoin-contracting-primitives-wg/issues/26&#34;&gt;https://github.com/ariard/bitcoin-contracting-primitives-wg/issues/26&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;[4]&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-November/002884.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-November/002884.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Le lun. 30 janv. 2023 à 15:25, Carla Kirk-Cohen &amp;lt;kirkcohenc at gmail.com&amp;gt; a&lt;br/&gt;écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi list,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Monday last week we resumed our fortnightly channel jamming&lt;br/&gt;&amp;gt; mitigation calls for 2023.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Details for the next call:&lt;br/&gt;&amp;gt; * Monday 02/06 @ 18:00 UTC&lt;br/&gt;&amp;gt; * &lt;a href=&#34;https://meet.jit.si/UnjammingLN&#34;&gt;https://meet.jit.si/UnjammingLN&lt;/a&gt;&lt;br/&gt;&amp;gt; * Agenda: &lt;a href=&#34;https://github.com/ClaraShk/LNJamming/issues/2&#34;&gt;https://github.com/ClaraShk/LNJamming/issues/2&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # Meeting Summary&lt;br/&gt;&amp;gt; This email attempts to summarize the discussion, but is of course&lt;br/&gt;&amp;gt; subject to my errors and opinions so the full transcript is available&lt;br/&gt;&amp;gt; at [1]. It is (imperfectly) AI generated, so please reach out to myself&lt;br/&gt;&amp;gt; or Clara if you&amp;#39;d like clarification for a specific section.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1. Upgrade Mechanisms&lt;br/&gt;&amp;gt; The first topic of discussion was around how we would go about&lt;br/&gt;&amp;gt; upgrading the network to support an anti-jamming mitigation. Most&lt;br/&gt;&amp;gt; solutions share the following characteristics:&lt;br/&gt;&amp;gt;   * They will likely require a network wide upgrade: when a sender&lt;br/&gt;&amp;gt;     makes a payment, the full path will need to understand the new&lt;br/&gt;&amp;gt;     feature bit for it to be used.&lt;br/&gt;&amp;gt;   * Sending nodes are unlikely to be incentivised to upgrade to&lt;br/&gt;&amp;gt;     support a channel jamming mitigation, as jamming mitigations incur&lt;br/&gt;&amp;gt;     additional cost (be it in the form of upfront fees, tokens or some&lt;br/&gt;&amp;gt;     other mechanism).&lt;br/&gt;&amp;gt;   * Routing nodes have no way of knowing whether a payment comes from&lt;br/&gt;&amp;gt;     a node that is not upgraded, or simply doesn&amp;#39;t want to pay the&lt;br/&gt;&amp;gt;     additional cost introduced by a jamming mitigation.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It was generally agreed that the network is still in an early enough&lt;br/&gt;&amp;gt; stage that it is fair for relaying nodes to initially upgrade but not&lt;br/&gt;&amp;gt; enforce the feature, and later look at forwarding traffic to determine&lt;br/&gt;&amp;gt; whether it is appropriate to require the feature. This will require&lt;br/&gt;&amp;gt; sending nodes to opt-in to the new feature before the network can&lt;br/&gt;&amp;gt; widely enforce it, as no rational routing node will require a feature&lt;br/&gt;&amp;gt; which would reduce its ability to serve un-upgraded traffic (unless&lt;br/&gt;&amp;gt; under attack, which is not the case at present).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A note was also made that wallets tend to upgrade less frequently, in&lt;br/&gt;&amp;gt; part because some providers run forked versions of LN implementations,&lt;br/&gt;&amp;gt; so this horizon may be quite long. It was emphasized that this type of&lt;br/&gt;&amp;gt; network upgrade would require input from wallets, designers and&lt;br/&gt;&amp;gt; application developers anyway, so hopefully by the time we look to&lt;br/&gt;&amp;gt; deploy a change there is rough consensus among the Lightning community&lt;br/&gt;&amp;gt; already.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 2. Upfront Fees&lt;br/&gt;&amp;gt; Next, we discussed the draft proposal for upfront fees [2] that&lt;br/&gt;&amp;gt; implements the first of a two-part jamming mitigation described in [3].&lt;br/&gt;&amp;gt; As it stands, the PR describes the simplest possible way to introduce&lt;br/&gt;&amp;gt; upfront fees to the protocol:&lt;br/&gt;&amp;gt;   * Upfront fees are expressed as a ppm of a channel&amp;#39;s success-case&lt;br/&gt;&amp;gt;     fees, and charged on the outgoing link of a route.&lt;br/&gt;&amp;gt;   * Nodes can advertise custom upfront fee rates if desired, but to&lt;br/&gt;&amp;gt;     save gossip bandwidth we assume a network-wide default of 1%.&lt;br/&gt;&amp;gt;   * Upfront fees accumulate along the route (as htlc payment amounts&lt;br/&gt;&amp;gt;     do), and are simply pushed to the `to_remote` balance on&lt;br/&gt;&amp;gt;     `update_add_htlc`.&lt;br/&gt;&amp;gt;   * Final hop nodes advertise an upfront fee policy in bolt 11 invoices&lt;br/&gt;&amp;gt;     (or bolt 12 blinded routes) which is sufficiently padded to&lt;br/&gt;&amp;gt;     obfuscate their location in the route.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The interaction between upfront fees and possible future protocol&lt;br/&gt;&amp;gt; changes such as inbound fees and negative fees was briefly discussed,&lt;br/&gt;&amp;gt; specifically the case where a node sets low (or negative) fees to&lt;br/&gt;&amp;gt; attract traffic then fails payments to accumulate upfront fees. As is,&lt;br/&gt;&amp;gt; all implementations’ algorithms optimize for factors other than fees -&lt;br/&gt;&amp;gt; specifically avoiding a node once it&amp;#39;s produced failures - and we&lt;br/&gt;&amp;gt; suspect that careful sender-side behavior will mitigate this risk.&lt;br/&gt;&amp;gt; However, it was also acknowledged that a node that attempts this attack&lt;br/&gt;&amp;gt; may be able to fool multiple individual senders and still be able to&lt;br/&gt;&amp;gt; accumulate some fees.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; We then discussed the shortcomings of the &amp;#34;simplest possible&amp;#34; upfront&lt;br/&gt;&amp;gt; fees in [2], specifically focused on the following scenario where&lt;br/&gt;&amp;gt; nodes receive 1% of their success-case fees as an upfront payment:&lt;br/&gt;&amp;gt;   * Alice is sending a payment to Dave, who is a popular sink node in&lt;br/&gt;&amp;gt;     the network.&lt;br/&gt;&amp;gt;   * Bob -&amp;gt; Carol has low/default routing policy: 1000 msat success&lt;br/&gt;&amp;gt;     case / 10 msat upfront fee&lt;br/&gt;&amp;gt;   * Carol -&amp;gt; Dave has high fees: 400,000 msat success case / 4000 msat&lt;br/&gt;&amp;gt;     upfront fee&lt;br/&gt;&amp;gt;   * Dave advertises no success case fee (is recipient) / 100 msat of&lt;br/&gt;&amp;gt;     upfront fee chosen for his invoice.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Alice ------ Bob ------ Carol ------ Dave&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Since we need to source all of these funds from the sender (Alice), the&lt;br/&gt;&amp;gt; forwarding of funds is as follows:&lt;br/&gt;&amp;gt;   * Alice pushes 4110 msat to Bob.&lt;br/&gt;&amp;gt;   * Bob _should_ push 4100 msat to Carol, claiming his 10 msat upfront&lt;br/&gt;&amp;gt;     fee.&lt;br/&gt;&amp;gt;   * Carol _should_ push 100 msat to Dave, claiming her 4000 msat&lt;br/&gt;&amp;gt;     upfront fee.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; However, Bob has no real incentive to forward the HTLC to Carol and&lt;br/&gt;&amp;gt; push her the 4100 msat because that value is more than the fees he&amp;#39;ll&lt;br/&gt;&amp;gt; earn from successfully forwarding and settling the HTLC (10 msat&lt;br/&gt;&amp;gt; upfront fees &#43; 1000 msat success case fees). It&amp;#39;s worth noting that&lt;br/&gt;&amp;gt; this type of fee differential already exists in the network today - I&lt;br/&gt;&amp;gt; got these example numbers by looking at the fee rates of the Loop&lt;br/&gt;&amp;gt; node&amp;#39;s peers [4].&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; There were a few points discussed around this issue:&lt;br/&gt;&amp;gt;   * Whether we should look into a more complicated approach that&lt;br/&gt;&amp;gt;     includes a &amp;#34;proof of forward&amp;#34; secret in the next node&amp;#39;s onion which&lt;br/&gt;&amp;gt;     must be supplied to claim the upfront fee.&lt;br/&gt;&amp;gt;   * Discussion about whether these order of magnitude fee differences&lt;br/&gt;&amp;gt;     will exist in an efficient market (differing opinions).&lt;br/&gt;&amp;gt;   * Whether Bob _would_ steal the upfront fee by dropping the payment,&lt;br/&gt;&amp;gt;     as it&amp;#39;ll impact nodes&amp;#39; desire to route through them in future.&lt;br/&gt;&amp;gt;   * Is there a way to deliver upfront fees to nodes along the route&lt;br/&gt;&amp;gt;     *without* them adding up along the route (other than the naive&lt;br/&gt;&amp;gt;     version of sending each hop a payment, which comes with its own&lt;br/&gt;&amp;gt;     problems)? Seems not, but bright ideas are wanted and welcome!&lt;br/&gt;&amp;gt;   * That nodes will decide where they fall in the trade-off of setting&lt;br/&gt;&amp;gt;     upfront fees to cover their opportunity cost for high routing fees&lt;br/&gt;&amp;gt;     and market pressure to keep these fees low for the sake of&lt;br/&gt;&amp;gt;     remaining competitive.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A few people mentioned the desire to keep an upfront fee solution as&lt;br/&gt;&amp;gt; simple as possible, but generally it seemed that a solution where the&lt;br/&gt;&amp;gt; accumulated upfront fees at any point along a route exceed any single&lt;br/&gt;&amp;gt; hop&amp;#39;s expected success case fees is unacceptable because incentives&lt;br/&gt;&amp;gt; are misaligned (even if we can properly attribute errors with [5]).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; We touched briefly on a few &amp;#34;proof of forwarding&amp;#34; solutions for&lt;br/&gt;&amp;gt; upfront fees:&lt;br/&gt;&amp;gt;   * Using a locking mechanism that relies on a secret that is provided&lt;br/&gt;&amp;gt;     by the next node&amp;#39;s onion.&lt;br/&gt;&amp;gt;   * A taproot tree for all HTLCs where each leaf has a subset of HTLCs,&lt;br/&gt;&amp;gt;     and fees could be incorporated here (summary note: apparently some&lt;br/&gt;&amp;gt;     work has been done here, but I couldn&amp;#39;t find the link).&lt;br/&gt;&amp;gt;   * If we&amp;#39;re confident that a more complicated solution will solve many&lt;br/&gt;&amp;gt;     problems, then we should pursue them, otherwise a simple solution&lt;br/&gt;&amp;gt;     is possibly a _good enough_ first step.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; There was some discussion about how we want to go about addressing&lt;br/&gt;&amp;gt; spamming in the network:&lt;br/&gt;&amp;gt;   * Is it good enough to deploy something today that just charges a&lt;br/&gt;&amp;gt;     simple, capped upfront fee (eg 1 sat per hop) that solves jamming&lt;br/&gt;&amp;gt;     for the current state of the network and allows us to learn&lt;br/&gt;&amp;gt;     something then iterate?&lt;br/&gt;&amp;gt;   * Should our first attempt at solving this issue be for a future&lt;br/&gt;&amp;gt;     steady state where nodes have significant traffic and nodes face&lt;br/&gt;&amp;gt;     real opportunity cost (in the form of lost revenue) if they are&lt;br/&gt;&amp;gt;     targeted by a jamming attack?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 3. Circuit Breaker Update&lt;br/&gt;&amp;gt;   * Circuit breaker has a UI now, and some issues are being opened in&lt;br/&gt;&amp;gt;     the repo so people have at minimum gone through the effort to spin&lt;br/&gt;&amp;gt;     it up.&lt;br/&gt;&amp;gt;   * It&amp;#39;s still pretty manual, but it does provide node operators with&lt;br/&gt;&amp;gt;     information about the payment failures on their nodes (not easily&lt;br/&gt;&amp;gt;     surfaced in many LN UIs).&lt;br/&gt;&amp;gt;   * Hoping to get insights into stuck HTLCs and spam HTLCs so that we&lt;br/&gt;&amp;gt;     can learn from real life experience.&lt;br/&gt;&amp;gt;   * Circuit breaker is generally pushing in the same direction as the&lt;br/&gt;&amp;gt;     reputation scheme in [3], just a more manual one. We could&lt;br/&gt;&amp;gt;     possibly use it to visualize the endorsement system in [3] before&lt;br/&gt;&amp;gt;     enforcing it.&lt;br/&gt;&amp;gt;   * While circuit breaker isn&amp;#39;t necessarily *the* solution to solving&lt;br/&gt;&amp;gt;     jamming on LN, it provides us with some data points and a&lt;br/&gt;&amp;gt;     practical way for individual operators to address spamming of&lt;br/&gt;&amp;gt;     their nodes.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 3. Tokens Update&lt;br/&gt;&amp;gt; Since our last discussion an architecture document was added to the&lt;br/&gt;&amp;gt; proposal [6], details in the mailing list post [7]. The main goal is&lt;br/&gt;&amp;gt; to try to dissociate the people paying the fees from those gaining the&lt;br/&gt;&amp;gt; benefits from the credentials, so that credentials can be paid by a&lt;br/&gt;&amp;gt; LSP (for example).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 4. Reputation discussions in LSP Specification&lt;br/&gt;&amp;gt; Some attendees have been working on a reputation system for the LSP&lt;br/&gt;&amp;gt; specification group [8]. This system is intended to provide standard&lt;br/&gt;&amp;gt; metrics about what makes a node good/bad to connect to in the context&lt;br/&gt;&amp;gt; of a decentralized marketplace. While this work looks at the problem&lt;br/&gt;&amp;gt; from a different perspective, there&amp;#39;s a possibility to consolidate&lt;br/&gt;&amp;gt; the efforts. It seems particularly useful in the anti-jamming case&lt;br/&gt;&amp;gt; where a node has newly connected to you, and needs a &amp;#34;start state&amp;#34;&lt;br/&gt;&amp;gt; reputation score. The idea of defining what qualifies as good&lt;br/&gt;&amp;gt; behavior in the Lightning Network is useful across the board. The&lt;br/&gt;&amp;gt; LSP specification group also has bi-weekly calls, and welcomes&lt;br/&gt;&amp;gt; additional participants!&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 5. Call Cadence&lt;br/&gt;&amp;gt; Attendees agreed to continue with calls every two weeks. General&lt;br/&gt;&amp;gt; consensus was that we would aim for a 30 minute meeting with the&lt;br/&gt;&amp;gt; option to extend to an hour if discussion warrants it.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # What&amp;#39;s next&lt;br/&gt;&amp;gt; Thanks to everyone who attended last week&amp;#39;s meeting, we hope to see&lt;br/&gt;&amp;gt; more folks in the next one!&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; There&amp;#39;s a lot to discuss - brave readers who made it all the way to&lt;br/&gt;&amp;gt; the bottom of this email will notice a fair number of question marks&lt;br/&gt;&amp;gt; scattered about - and we&amp;#39;re going to continue to break the problem&lt;br/&gt;&amp;gt; down into smaller parts to discuss in the hope of making progress.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Any change to the Lightning Network that aims to address channel&lt;br/&gt;&amp;gt; jamming attacks will be a significant (but necessary) change to the&lt;br/&gt;&amp;gt; protocol, and it&amp;#39;s going to need input from many different&lt;br/&gt;&amp;gt; stakeholders. Please reach out here or in private&lt;br/&gt;&amp;gt; (carla at chaincode.com / clara at chaincode.com) if you have any questions&lt;br/&gt;&amp;gt; / concerns / comments!&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers until next time,&lt;br/&gt;&amp;gt; Carla and Clara&lt;br/&gt;&amp;gt; (Yes, our names are confusing. No, you won&amp;#39;t get used to it)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [1]&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/ClaraShk/LNJamming/blob/main/meeting-transcripts/23-01-23-transcript.md&#34;&gt;https://github.com/ClaraShk/LNJamming/blob/main/meeting-transcripts/23-01-23-transcript.md&lt;/a&gt;&lt;br/&gt;&amp;gt; [2] &lt;a href=&#34;https://github.com/lightning/bolts/pull/1052&#34;&gt;https://github.com/lightning/bolts/pull/1052&lt;/a&gt;&lt;br/&gt;&amp;gt; [3] &lt;a href=&#34;https://eprint.iacr.org/2022/1454.pdf&#34;&gt;https://eprint.iacr.org/2022/1454.pdf&lt;/a&gt;&lt;br/&gt;&amp;gt; [4]&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://mempool.space/lightning/node/021c97a90a411ff2b10dc2a8e32de2f29d2fa49d41bfbb52bd416e460db0747d0d&#34;&gt;https://mempool.space/lightning/node/021c97a90a411ff2b10dc2a8e32de2f29d2fa49d41bfbb52bd416e460db0747d0d&lt;/a&gt;&lt;br/&gt;&amp;gt; [5] &lt;a href=&#34;https://github.com/lightning/bolts/pull/1044&#34;&gt;https://github.com/lightning/bolts/pull/1044&lt;/a&gt;&lt;br/&gt;&amp;gt; [6] &lt;a href=&#34;https://github.com/lightning/bolts/pull/1043&#34;&gt;https://github.com/lightning/bolts/pull/1043&lt;/a&gt;&lt;br/&gt;&amp;gt; [8] &lt;a href=&#34;https://github.com/BitcoinAndLightningLayerSpecs/lsp/issues/12&#34;&gt;https://github.com/BitcoinAndLightningLayerSpecs/lsp/issues/12&lt;/a&gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230131/eaa2019f/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230131/eaa2019f/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:12:34Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsgtskfnue4kgv89drheyh8vrqmffenze4va6n028cz7eq8ghcknrszypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zhvxtzn</id>
    
      <title type="html">📅 Original date posted:2023-01-23 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsgtskfnue4kgv89drheyh8vrqmffenze4va6n028cz7eq8ghcknrszypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zhvxtzn" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsyq8dawdwdt64957mtv5qtwkxn0kmmvnu5tdupjtre85uhv3wg2us5whrmf&#39;&gt;nevent1q…hrmf&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-01-23&lt;br/&gt;🗒️ Summary of this message: A security audit of the Validating Lightning Signer (VLS) has revealed critical vulnerabilities and attack vectors, including fee siphoning and dust inflate attacks. The VLS team has been informed and committed to addressing the issues.&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi all,&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Since starting to hack on LDK, I’ve been interested in running some&lt;br/&gt;components of a Lightning node in a dedicated hardware environment, in the&lt;br/&gt;image of what is done by the smart card industry. We have been doing a&lt;br/&gt;bunch of refactoring in that sense early on to isolate our signing&lt;br/&gt;operations [0].&lt;br/&gt;&lt;br/&gt;Building on top of this generic signing interface, the Validating Lightning&lt;br/&gt;Signer has been growing into a mature Lightning signer during the past&lt;br/&gt;years, performing a comprehensive set of policy checks to ensure the keys&lt;br/&gt;are not misused [1]. The module development is advanced enough to be&lt;br/&gt;functional with both deployment of LDK and CLN nodes (waiting internal&lt;br/&gt;refactoring by other implementations for eventual support).&lt;br/&gt;&lt;br/&gt;During the past months, in cooperation with the VLS project team, I’ve done&lt;br/&gt;a third-party security audit of VLS core mechanisms, evaluating its state&lt;br/&gt;of readiness for production by the community of Lightning node operators.&lt;br/&gt;&lt;br/&gt;The critical vulnerabilities and attacks vectors found are the following:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;- The legacy `option_anchor_outputs` is accepted by the Signer, there is no&lt;br/&gt;protection against channel opening downgrades to unsafe channel type. This&lt;br/&gt;opens the way to the known fee siphoning attack capturing almost all&lt;br/&gt;channel value in function of capacity [2].&lt;br/&gt;&lt;br/&gt;- The Signer does not enforce an upper bound on the sum of trimmed HTLC as&lt;br/&gt;miner fees. This opens the way to the known dust inflate attack capturing a&lt;br/&gt;minority of channel value if the adversary has low-hashrate capabilities&lt;br/&gt;[3].&lt;br/&gt;&lt;br/&gt;- There is a lack of a `policy-cltv-delta-reasonable` rule for routing&lt;br/&gt;hops. There is no enforcement of a reasonable `cltv_expiry_delta` between&lt;br/&gt;inbound HTLC and outbound HTLC, where reasonable is defined according to&lt;br/&gt;the BOLT2’s `cltv_expiry_delta` selection recommendations [4]. This opens&lt;br/&gt;the way to HTLC-double-spend attack where up to&lt;br/&gt;`max_htlc_value_in_flight_msat` of channel value can be captured.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;- There is a lack of verification of `nLocktime` field soundness of the&lt;br/&gt;HTLC-timeout at counterparty signature reception. This opens the way to&lt;br/&gt;HTLC value freezing or double-spend in function of the deployment&lt;br/&gt;&lt;br/&gt;- There is a lack of rejection of non-Segwit input for the funding&lt;br/&gt;transaction. This opens the way to known freezing of full channel value by&lt;br/&gt;the counterparty [5].&lt;br/&gt;&lt;br/&gt;- The Signer is suffering from high-exposure to a fee-siphoning attack by&lt;br/&gt;an adversary with minimal hashrate capabilities (i.e 1 block without time&lt;br/&gt;boundary). Both funding/commitment transactions weights and feerate can be&lt;br/&gt;inflated to increase the absolute fee signed.&lt;br/&gt;&lt;br/&gt;Beyond that, there are still missing not-implemented critical policy rules&lt;br/&gt;and the invoices and payments flows are still hardened with a consistent&lt;br/&gt;security model. Those issues were known by the project.&lt;br/&gt;&lt;br/&gt;The issues have been communicated to the VLS team ahead of the report&lt;br/&gt;publication and they’re committed to address them.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;The full audit report can be found here:&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://github.com/ariard/validating-lightning-signer/blob/main/VLS-audit-v0.2.pdf&#34;&gt;https://github.com/ariard/validating-lightning-signer/blob/main/VLS-audit-v0.2.pdf&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;In the future, as the LN ecosystem matures, extended policies are expected&lt;br/&gt;to be introduced covering the variety of LN use-cases: merchant, mobile,&lt;br/&gt;routing nodes, LSP, where the policy set of rules could bind to the&lt;br/&gt;application logic. E.g as BOLT12 offers to introduce a richer semantic on&lt;br/&gt;payment protocol, the request structure could be enforced by the VLS [6].&lt;br/&gt;Moreover, other data flows could be submitted to VLS to detect anomalies,&lt;br/&gt;such as the historical mempools data in a compressed way.&lt;br/&gt;&lt;br/&gt;Beyond Lightning node security, the VLS architecture could be generalized&lt;br/&gt;to other Bitcoin contracting protocols (e.g vaults), where spending&lt;br/&gt;policies are also leveraged to introduce fine-grained control of custodied&lt;br/&gt;Bitcoin funds between cold and warm wallets.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;[0] &lt;a href=&#34;https://github.com/lightningdevkit/rust-lightning/pull/214&#34;&gt;https://github.com/lightningdevkit/rust-lightning/pull/214&lt;/a&gt;&lt;br/&gt;[1] &lt;a href=&#34;https://vls.tech&#34;&gt;https://vls.tech&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;[2]&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-September/002796.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-September/002796.html&lt;/a&gt;&lt;br/&gt;[3]&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-May/002714.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-May/002714.html&lt;/a&gt;&lt;br/&gt;&amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-May/002714.html&amp;gt&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-May/002714.html&amp;gt&lt;/a&gt;;&lt;br/&gt;&lt;br/&gt;[4]&lt;br/&gt;&lt;a href=&#34;https://github.com/lightning/bolts/blob/master/02-peer-protocol.md#cltv_expiry_delta-selection&#34;&gt;https://github.com/lightning/bolts/blob/master/02-peer-protocol.md#cltv_expiry_delta-selection&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;[5]&lt;br/&gt;&lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki#user-content-Trustfree_unconfirmed_transaction_dependency_chain&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki#user-content-Trustfree_unconfirmed_transaction_dependency_chain&lt;/a&gt;&lt;br/&gt;[6] &lt;a href=&#34;http://bolt12.org&#34;&gt;http://bolt12.org&lt;/a&gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230123/33179656/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230123/33179656/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:12:32Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqspfq7j2673g0p88xyxxu3lwlxvsfsex8neyp8w2a3jq6asw697uqczypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zjw5wrl</id>
    
      <title type="html">📅 Original date posted:2023-01-12 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqspfq7j2673g0p88xyxxu3lwlxvsfsex8neyp8w2a3jq6asw697uqczypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zjw5wrl" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs8a5zt7fcpx5u892rk0h8qvkpzfl0vq62csvkjm77fdf6ekk3hxfgq6pg0m&#39;&gt;nevent1q…pg0m&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-01-12&lt;br/&gt;🗒️ Summary of this message: Lightning Network developers are documenting a protocol architecture for mitigating channel jamming with Staking Credentials, enabling deployment within a reputation or monetary strategy. The architecture separates the credentials issuance phase from the redemption phase and abstracts participants to answer multiple types of Lightning deployment. The credentials redemption mechanism covers diverse Lightning channel counterparty risks, with a primary focus on HTLC jamming. The module is designed to be uncoupled from LDK architecture specifics and generic to minimize interdependencies with independent advances in channel types/transaction-relay policy.&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi LN devs,&lt;br/&gt;&lt;br/&gt;Following the November proposal of mitigating channel jamming with&lt;br/&gt;Reputation Credentials, started to document the protocol architecture.&lt;br/&gt;After feedback on the naming protocol itself, I switched to Staking&lt;br/&gt;Credentials. In fact the proposed architecture enables mitigations&lt;br/&gt;deployment both within a reputation strategy or a monetary strategy in&lt;br/&gt;function of the base collateral considered (proof-of-utxo ownership or&lt;br/&gt;on-chain/off-chain payments).&lt;br/&gt;&lt;br/&gt;The main advance is the clear separation of the credentials issuance phase&lt;br/&gt;from the redemption phase. Participants in the architecture have been&lt;br/&gt;abstracted to answer multiple types of Lightning deployment: credentials&lt;br/&gt;issuance and redemption fully-sourced on the client-side, issuance&lt;br/&gt;delegation where the credentials mining is delegated to a LSP, redemption&lt;br/&gt;delegation where the credentials are attached on the fly to a HTLC by a hop&lt;br/&gt;supporting trampoline. Abstraction has been done also on the routing-hop&lt;br/&gt;side, where the credentials issuer can be dissociated from the routing hop&lt;br/&gt;against which it can be redeemed (to allow &amp;#34;phantom node&amp;#34; style of&lt;br/&gt;deployment [0]).&lt;br/&gt;&lt;br/&gt;The credentials redemption mechanism itself has been abstracted to cover&lt;br/&gt;diverse Lightning channel counterparty risks, with a primary focus on HTLC&lt;br/&gt;jamming. Beyond, the redemption flow could be easily deployed to solve the&lt;br/&gt;risk asymmetries brought by the signature release flow in the context of&lt;br/&gt;dual-funding/splicing.&lt;br/&gt;&lt;br/&gt;Architecture document is available here:&lt;br/&gt;&lt;a href=&#34;https://github.com/ariard/lightning-rfc/blob/2022-11-reputation-credentials/60-staking-credentials-archi.md&#34;&gt;https://github.com/ariard/lightning-rfc/blob/2022-11-reputation-credentials/60-staking-credentials-archi.md&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Credential issuance phase, redemption phase, onion communication channels&lt;br/&gt;as credential transport protocol, credentials data format, cryptographic&lt;br/&gt;primitives used for unlinking and recommendations for risk-management&lt;br/&gt;strategy (among others) should land in their own documents with time.&lt;br/&gt;&lt;br/&gt;Next focus on advancing the work-in-progress implementation:&lt;br/&gt;&lt;a href=&#34;https://github.com/ariard/lightning-risk-engine&#34;&gt;https://github.com/ariard/lightning-risk-engine&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Module is designed to be uncoupled from LDK architecture specifics and&lt;br/&gt;generic to minimize interdependencies with independent advances in channel&lt;br/&gt;types/transaction-relay policy.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;[0] &lt;a href=&#34;https://lightningdevkit.org/blog/introducing-phantom-node-payments/&#34;&gt;https://lightningdevkit.org/blog/introducing-phantom-node-payments/&lt;/a&gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230112/7ab3d050/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230112/7ab3d050/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:12:30Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqs08ysurauglqdc256sj0n2xt79zy2lv4dlu8mnfwc6av2268jq0aqzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zsjcyud</id>
    
      <title type="html">📅 Original date posted:2023-01-05 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqs08ysurauglqdc256sj0n2xt79zy2lv4dlu8mnfwc6av2268jq0aqzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zsjcyud" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsx0pyyuqj6h2js8uny8rl9vh0sc2ec22aqecw4lt8wy57qn36qy0sggqlln&#39;&gt;nevent1q…qlln&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-01-05&lt;br/&gt;🗒️ Summary of this message: The article discusses the use of Chia&amp;#39;s scripting capabilities in multi-party setups and breaking symmetry to prevent cheating in unilateral channel closures.&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi AJ,&lt;br/&gt;&lt;br/&gt;&amp;gt; Chia uses different terminology to bitcoin; &amp;#34;puzzle&amp;#34; is just what we call&lt;br/&gt;&amp;gt; &amp;#34;scriptPubKey&amp;#34; in bitcoin, more or less. Since its scripting capabilities&lt;br/&gt;&amp;gt; are pretty powerful, you can rig up a TLUV/OP_EVICT like mechanism, but&lt;br/&gt;&amp;gt; for a two-party setup, in practice I think that mostly just means you&lt;br/&gt;&amp;gt; can encode the logic directly as script, and when updating the state you&lt;br/&gt;&amp;gt; then only need to exchange CHECKSIGFROMSTACK-like signatures along the&lt;br/&gt;&amp;gt; lines of &amp;#34;state N implies outputs of A,B,C,... -- Alice&amp;#34;, rather than&lt;br/&gt;&amp;gt; signing multiple transactions.&lt;br/&gt;&lt;br/&gt;In the multi-party setup, encoding more of the unrolling logic directly as&lt;br/&gt;script could be a witness space gain, I guess. To express a channel&lt;br/&gt;factory/payment pool withdrawal, at the minimum I think you need an&lt;br/&gt;amount/exit scriptPubKey committed by the signature. Or maybe the output&lt;br/&gt;value could be a spent input amount distribution among a set of signers, if&lt;br/&gt;you would like some non-interactive pre-funded scheme.&lt;br/&gt;&lt;br/&gt;&amp;gt; If you have fully symmetric transactions, then you could have the&lt;br/&gt;&amp;gt; situation where Alice broadcasts update K, then attacks Bob and when&lt;br/&gt;&amp;gt; he attempts to post update N, she instead does a pinning attack by&lt;br/&gt;&amp;gt; broadcasting update K&#43;1 (spending update K), which then forces Bob to&lt;br/&gt;&amp;gt; generate a new version update N, which she then blocks with update K&#43;2,&lt;br/&gt;&amp;gt; etc. An attack like that is presumably pretty difficult to pull off in&lt;br/&gt;&amp;gt; practice, but it makes it pretty hard to reason about many of the limits.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A simple advantage to breaking the symmetry is that if A does a unilateral&lt;br/&gt;&amp;gt; close, then B can immediately confirm that closure releasing all funds&lt;br/&gt;&amp;gt; for both parties. Without breaking the symmetry, you can&amp;#39;t distinguish&lt;br/&gt;&amp;gt; that case from B attempting to confirm his own unilateral close, which&lt;br/&gt;&amp;gt; would allow B to cheat.&lt;br/&gt;&lt;br/&gt;Yes, IIUC the proposed flow is UA.n -&amp;gt; CB.n -&amp;gt; money, and in this&lt;br/&gt;optimistic case, there is only one CLTV delay to respect the spend of the&lt;br/&gt;UA. In terms of timevalue cost to redeem all the funds, I think this is&lt;br/&gt;making the cost equivalent for all the parties. With today&amp;#39;s LN-penalty,&lt;br/&gt;the broadcaster balance is encumbered by the CSV delay, not the&lt;br/&gt;counterparty one.&lt;br/&gt;&lt;br/&gt;(Note on the gist, the UA state description includes a Pa or tapscript &amp;#34;IF&lt;br/&gt;CODESEP n OP_CLTV DROP ENDIF 1 CHECKSIG&amp;#34; as spendable paths and the CA.n&lt;br/&gt;state description nSequence = 0, so I&amp;#39;m not sure how the update/justice&lt;br/&gt;delay is enforced)&lt;br/&gt;&lt;br/&gt;&amp;gt; Yes, you can unilaterally close the channel with state N-1; but even&lt;br/&gt;&amp;gt; then they might respond by bumping to state N anyway. If that happens,&lt;br/&gt;&amp;gt; then the funds can remain locked up until the timeout, as you can no&lt;br/&gt;&amp;gt; longer time the htlc out off-chain.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Still, if it&amp;#39;s one hung per htlc for the channel&amp;#39;s entire lifetime&lt;br/&gt;&amp;gt; (because you close it &amp;#34;immediately&amp;#34; when it happens), that&amp;#39;s probably&lt;br/&gt;&amp;gt; not going to cause problems frequently...&lt;br/&gt;&lt;br/&gt;I think here the issue can be corrected by selecting conservatively your&lt;br/&gt;implementation channel breakout timers, you should go to chain with the&lt;br/&gt;state N-1 with X buffer of block and ensure your CLTV delta are always&lt;br/&gt;bigger than X, where X=delay * 2. That way even if your counterparty is&lt;br/&gt;broadcasting state N at X-1, your htlc-timeout should be safe, I guess.&lt;br/&gt;&lt;br/&gt;&amp;gt; If Alice is dishonest, and posts a very old state (n-x), then Bob could&lt;br/&gt;&amp;gt; post up to x watchtower txs (WB.(n-x&#43;1) .. WB.n) causing Alice to be&lt;br/&gt;&amp;gt; unable to access her funds for up to (x&#43;1)*to_self_delay blocks. But&lt;br/&gt;&amp;gt; that&amp;#39;s just a reason for her to not be dishonest in the first place.&lt;br/&gt;&lt;br/&gt;So I think there still is the case of Bob broadcasting a very old state and&lt;br/&gt;Alice&amp;#39;s watchtowers colluding to prevent Alice&amp;#39;s honest funds access,&lt;br/&gt;potentially preventing the HTLC-timeout, IIUC. I don&amp;#39;t know if we&amp;#39;re not&lt;br/&gt;introducing some changes in the trust assumptions towards watchtowers where&lt;br/&gt;with vanilla eltoo a single compromised watchtower can be corrected by the&lt;br/&gt;honest channel holder or another watchtower, iirc.&lt;br/&gt;&lt;br/&gt;&amp;gt; No -- the RB.n transactions immediately release A&amp;#39;s funds after applying&lt;br/&gt;&amp;gt; the penalty, so if the watchtower colludes with A and has an old RB.y&lt;br/&gt;&amp;gt; transaction, Alice can steal funds by posting UA.x and RB.y, provided that&lt;br/&gt;&amp;gt; her balance now is sufficiently less than her balance then (ie bal.n &amp;lt;&lt;br/&gt;&amp;gt; bal.y - penalty).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In this model, Bob shouldn&amp;#39;t be signing RB.n or CB.n txs until Alice&lt;br/&gt;&amp;gt; has already started a unilateral close and posted UA.n/UA.k.&lt;br/&gt;&lt;br/&gt;So the penalty transactions should not be delegated to untrusted&lt;br/&gt;watchtowers. In case of RB.n signing key compromise, the whole channel&lt;br/&gt;funds might be lost.&lt;br/&gt;&lt;br/&gt;&amp;gt; Doesn&amp;#39;t generalise to redundant untrusted watchtowers though, but&lt;br/&gt;&amp;gt; presumably nothing does. (You could use the same utxo across multiple&lt;br/&gt;&amp;gt; watchtowers, but a rogue watchtower could just post an old WA.k tx and&lt;br/&gt;&amp;gt; claim your funds, preventing some honest watchtower from helping)&lt;br/&gt;&lt;br/&gt;So you could have a channel balance between the watchtower and yourself,&lt;br/&gt;where the tower balance is the payment for the WA.n broadcast, and there is&lt;br/&gt;an assumption the balance is cooperatively updated to adjust for on-chain&lt;br/&gt;fees. For sure, I&amp;#39;m not sure either how it would generalize to an untrusted&lt;br/&gt;watchtower, where interactions might be even bounded to avoid leak of the&lt;br/&gt;client identity.&lt;br/&gt;&lt;br/&gt;Still, I think eltoo channels would simplify the implementation of&lt;br/&gt;distributed towers by Lightning implementation, notably handling concurrent&lt;br/&gt;broadcast w.r.t chain asynchronicity issues, and hopefully removing the&lt;br/&gt;concern of commitment transaction key duplication by tower [0].&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;[0] &lt;a href=&#34;https://github.com/lightningdevkit/rust-lightning/pull/679&#34;&gt;https://github.com/lightningdevkit/rust-lightning/pull/679&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Le ven. 9 déc. 2022 à 01:55, Anthony Towns &amp;lt;aj at erisian.com.au&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; On Thu, Dec 08, 2022 at 02:14:06PM -0500, Antoine Riard wrote:&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;  - 2022-10-21, eltoo/chia:&lt;br/&gt;&amp;gt; &amp;gt; &lt;a href=&#34;https://twitter.com/bramcohen/status/1583122833932099585&#34;&gt;https://twitter.com/bramcohen/status/1583122833932099585&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt; On the eltoo/chia variant, from my (quick) understanding, the main&lt;br/&gt;&amp;gt; &amp;gt; innovation aimed for is&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I&amp;#39;d say the main innovation aimed for is just doing something like&lt;br/&gt;&amp;gt; lightning over the top of chia (rather than bitcoin, liquid, ethereum&lt;br/&gt;&amp;gt; etc), and making it simple enough to be easily implemented.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; the limitation of the publication of eltoo states&lt;br/&gt;&amp;gt; &amp;gt; more than once by a counterparty, by introducing a cryptographic puzzle,&lt;br/&gt;&amp;gt; &amp;gt; where the witness can be produced once and only once ? I would say you&lt;br/&gt;&amp;gt; &amp;gt; might need the inheritance of the updated scriptpubkey across the chain&lt;br/&gt;&amp;gt; of&lt;br/&gt;&amp;gt; &amp;gt; eltoo states, with a TLUV-like mechanism.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Chia uses different terminology to bitcoin; &amp;#34;puzzle&amp;#34; is just what we call&lt;br/&gt;&amp;gt; &amp;#34;scriptPubKey&amp;#34; in bitcoin, more or less. Since its scripting capabilities&lt;br/&gt;&amp;gt; are pretty powerful, you can rig up a TLUV/OP_EVICT like mechanism, but&lt;br/&gt;&amp;gt; for a two-party setup, in practice I think that mostly just means you&lt;br/&gt;&amp;gt; can encode the logic directly as script, and when updating the state you&lt;br/&gt;&amp;gt; then only need to exchange CHECKSIGFROMSTACK-like signatures along the&lt;br/&gt;&amp;gt; lines of &amp;#34;state N implies outputs of A,B,C,... -- Alice&amp;#34;, rather than&lt;br/&gt;&amp;gt; signing multiple transactions.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; The basic idea is &amp;#34;if it&amp;#39;s a two party channel with just Alice and Bob,&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; then if Alice starts a unilateral close, then she&amp;#39;s already had her&lt;br/&gt;&amp;gt; say,&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; so it&amp;#39;s only Bob&amp;#39;s opinion that matters from now on, and he should be&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; able to act immediately&amp;#34;, and once it&amp;#39;s only Bob&amp;#39;s opinion that&lt;br/&gt;&amp;gt; matters,&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; you can simplify a bunch of things.&lt;br/&gt;&amp;gt; &amp;gt; From my understanding, assuming Eltoo paper terminology, Alice can&lt;br/&gt;&amp;gt; publish&lt;br/&gt;&amp;gt; &amp;gt; an update K transaction, and then after Bob can publish an update&lt;br/&gt;&amp;gt; &amp;gt; transaction K&amp;lt;N or Alice can publish the settlement transaction N, or Bob&lt;br/&gt;&amp;gt; &amp;gt; can publish an update transaction N. The main advantage of this&lt;br/&gt;&amp;gt; &amp;gt; construction I can see is a strict bound on the shared_delay encumbered&lt;br/&gt;&amp;gt; in&lt;br/&gt;&amp;gt; &amp;gt; the on-chain publication of the channel ?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If you have fully symmetric transactions, then you could have the&lt;br/&gt;&amp;gt; situation where Alice broadcasts update K, then attacks Bob and when&lt;br/&gt;&amp;gt; he attempts to post update N, she instead does a pinning attack by&lt;br/&gt;&amp;gt; broadcasting update K&#43;1 (spending update K), which then forces Bob to&lt;br/&gt;&amp;gt; generate a new version update N, which she then blocks with update K&#43;2,&lt;br/&gt;&amp;gt; etc. An attack like that is presumably pretty difficult to pull off in&lt;br/&gt;&amp;gt; practice, but it makes it pretty hard to reason about many of the limits.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A simple advantage to breaking the symmetry is that if A does a unilateral&lt;br/&gt;&amp;gt; close, then B can immediately confirm that closure releasing all funds&lt;br/&gt;&amp;gt; for both parties. Without breaking the symmetry, you can&amp;#39;t distinguish&lt;br/&gt;&amp;gt; that case from B attempting to confirm his own unilateral close, which&lt;br/&gt;&amp;gt; would allow B to cheat.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; fast forwards: we might want to allow our channel partner&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; to immediately rely on a new state we propose without needing a&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; round-trip delay -- this potentially makes forwarding payments much&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; faster (though with some risk of locking the funds up, if you do a&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; fast forward to someone who&amp;#39;s gone offline)&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; IIRC, there has already been a &amp;#34;fast-forward&amp;#34; protocol upgrade proposal&lt;br/&gt;&amp;gt; &amp;gt; based on update-turn in the LN-penalty paradigm [0]. I think reducing the&lt;br/&gt;&amp;gt; &amp;gt; latency of HTLC propagation across payment paths would constitute a UX&lt;br/&gt;&amp;gt; &amp;gt; improvement, especially a link-level update mechanism upgrade deployment&lt;br/&gt;&amp;gt; &amp;gt; might be incentivized by routing algorithms starting to penalize routing&lt;br/&gt;&amp;gt; &amp;gt; hops HTLC relay latency. What is unclear is the additional risk of&lt;br/&gt;&amp;gt; locking&lt;br/&gt;&amp;gt; &amp;gt; the funds up. If you don&amp;#39;t receive acknowledgement the fast forward state&lt;br/&gt;&amp;gt; &amp;gt; has been received, you should still be able to exit with the state N-1 ?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Yes, you can unilaterally close the channel with state N-1; but even&lt;br/&gt;&amp;gt; then they might respond by bumping to state N anyway. If that happens,&lt;br/&gt;&amp;gt; then the funds can remain locked up until the timeout, as you can no&lt;br/&gt;&amp;gt; longer time the htlc out off-chain.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Still, if it&amp;#39;s one hung per htlc for the channel&amp;#39;s entire lifetime&lt;br/&gt;&amp;gt; (because you close it &amp;#34;immediately&amp;#34; when it happens), that&amp;#39;s probably&lt;br/&gt;&amp;gt; not going to cause problems frequently...&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; doubled delays: once we publish the latest state we can, we want to&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; be able to claim the funds immediately after to_self_delay expires;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; however if our counterparty has signatures for a newer state than we&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; do (which will happen if it was fast forwarded), they could post that&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; state shortly before to_self_delay expires, potentially increasing&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; the total delay to 2*to_self_delay.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; While the 2*to_self_delay sounds the maximum time delay in the state&lt;br/&gt;&amp;gt; &amp;gt; publication scenario where the cheating counterparty publishes a old&lt;br/&gt;&amp;gt; state&lt;br/&gt;&amp;gt; &amp;gt; then the honest counterparty publishes the latest one, there could be the&lt;br/&gt;&amp;gt; &amp;gt; case where the cheating counterparty broadcast chain of old states, up to&lt;br/&gt;&amp;gt; &amp;gt; mempool&amp;#39;s `limitancestorcount`. However, this chain of eltoo transactions&lt;br/&gt;&amp;gt; &amp;gt; could be replaced by the honest party paying a higher-feerate (assuming&lt;br/&gt;&amp;gt; &amp;gt; something like nversion=3).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; With the asymmetric transactions proposed here, you&amp;#39;d need to have your&lt;br/&gt;&amp;gt; watchtowers collude with the attacker for this to happen.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I think you could prevent chains from building up in the mempool by&lt;br/&gt;&amp;gt; requiring a relative timelock of perhaps 2 or 3 blocks for a WA.n/WB.n&lt;br/&gt;&amp;gt; tx to be valid (giving you time to post RA.n/RB.n in the meantime).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; * WA.n, WB.n : watchtower update to state n&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;   - this is for an untrusted watchtower to correct attempted cheating&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     by Bob on behalf of Alice (or vice-versa). Spends UB.k or WA.k&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     (or UA.k/WB.k) respectively, provided k &amp;lt; n.&lt;br/&gt;&amp;gt; &amp;gt; I wonder if the introduction of watchtower specific transactions doesn&amp;#39;t&lt;br/&gt;&amp;gt; &amp;gt; break the 2*to_self_delay assumption&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The to_self_delay applies to whoever initiated the unilateral close,&lt;br/&gt;&amp;gt; and provided they actually posted the most recent state, no watchtower&lt;br/&gt;&amp;gt; tx is a valid spend. ie, if Alice is honest and n is the latest state,&lt;br/&gt;&amp;gt; then the only possible spends of UA.n are SA.n (after a delay) or CB.n,&lt;br/&gt;&amp;gt; and as soon as either of those are on chain, she gets access to her funds.&lt;br/&gt;&amp;gt; No version of WB.k or RB.k (or WA.k, CA.k, RA.k) are valid if k&amp;lt;=n and&lt;br/&gt;&amp;gt; UA.n is confirmed.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If Alice is dishonest, and posts a very old state (n-x), then Bob could&lt;br/&gt;&amp;gt; post up to x watchtower txs (WB.(n-x&#43;1) .. WB.n) causing Alice to be&lt;br/&gt;&amp;gt; unable to access her funds for up to (x&#43;1)*to_self_delay blocks. But&lt;br/&gt;&amp;gt; that&amp;#39;s just a reason for her to not be dishonest in the first place.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; (iiuc it&amp;#39;s a design goal of current&lt;br/&gt;&amp;gt; &amp;gt; protocol) and what is the design rationale. Beyond that, there is a&lt;br/&gt;&amp;gt; concern&lt;br/&gt;&amp;gt; &amp;gt; with watchtower-specific transactions, it might leak your towers topology&lt;br/&gt;&amp;gt; &amp;gt; (i.e the number of them and the distribution in the p2p network) to an&lt;br/&gt;&amp;gt; &amp;gt; adversary.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If you have a watchtower and it takes action, I don&amp;#39;t think you can&lt;br/&gt;&amp;gt; expect to retain privacy over the fact that you have a watchtower,&lt;br/&gt;&amp;gt; and how effective it is against an attacker with extensive monitoring&lt;br/&gt;&amp;gt; of the p2p network...&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; * SA.n, SB.n : slowly claim funds according to state n&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;   - this is for Alice to claim her funds if Bob is completely offline&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     (or vice-versa). Spends UA.n, UB.n, WA.n or WB.n with relative&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     timelock of to_self_delay.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; If I&amp;#39;m following correctly the description, this is logically equivalent&lt;br/&gt;&amp;gt; to&lt;br/&gt;&amp;gt; &amp;gt; the sweep of a `to_local`/`to_remote` output on a commitment transaction&lt;br/&gt;&amp;gt; &amp;gt; though instead the waiting delay is eltoo shared_delay. There is no&lt;br/&gt;&amp;gt; &amp;gt; to_self_delay, at the punishment seems only to happen on the&lt;br/&gt;&amp;gt; update-level,&lt;br/&gt;&amp;gt; &amp;gt; or maybe one should be also able to punish slow fund exit, and another&lt;br/&gt;&amp;gt; &amp;gt; relative locktime should exist on the S* transactions.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I&amp;#39;m just using &amp;#34;to_self_delay&amp;#34; as the X in &amp;#34;if you attempt to cheat,&lt;br/&gt;&amp;gt; I&amp;#39;ll definitely notice and take action within X blocks&amp;#34;. If you post&lt;br/&gt;&amp;gt; UA.n then post SA.n after X blocks (due to SA.n&amp;#39;s relative time lock)&lt;br/&gt;&amp;gt; then you&amp;#39;ve already proven you didn&amp;#39;t cheat, because that was enough&lt;br/&gt;&amp;gt; time for B to notice and take action.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; * Alice and Bob&amp;#39;s watchtower collude, but Bob has many watchtowers:&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     F -&amp;gt; UA.k1 -&amp;gt; WB.k2 -&amp;gt; WB.n -&amp;gt; (to_self_delay) -&amp;gt; SA.n -&amp;gt; money&lt;br/&gt;&amp;gt; &amp;gt; Could the punishment transactions R* be also delegated to watchtowers,&lt;br/&gt;&amp;gt; &amp;gt; assuming they have been pre-signed to lockdown the exit scriptpubkeys ?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; No -- the RB.n transactions immediately release A&amp;#39;s funds after applying&lt;br/&gt;&amp;gt; the penalty, so if the watchtower colludes with A and has an old RB.y&lt;br/&gt;&amp;gt; transaction, Alice can steal funds by posting UA.x and RB.y, provided that&lt;br/&gt;&amp;gt; her balance now is sufficiently less than her balance then (ie bal.n &amp;lt;&lt;br/&gt;&amp;gt; bal.y - penalty).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In this model, Bob shouldn&amp;#39;t be signing RB.n or CB.n txs until Alice&lt;br/&gt;&amp;gt; has already started a unilateral close and posted UA.n/UA.k.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; In order to allow fast-forwards, when Alice proposes a new state,&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; she needs to send her partial signatures to allow Bob to unilaterally&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; accept the new state, ie sigs for: UB.n, CB.n, SB.n, RB.n. But she&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; also needs to be able to claim the funds if Bob proposes the new state&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; and broadcasts UB.n, she needs to be able broadcast CA.n. This can be&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; achieved with an adaptor signature approach (spelt out a bit more fully&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; in the gist) or a CTV-like approach, provided that UB.n reveals the&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; state needed to calculate the the CTV commitment (see &amp;#34;EXPR_SETTLE&amp;#34; in&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/instagibbs/bolts/blob/29fe6d36cbad4101d5ec76c2b19c83c1494ac2fc/XX-eltoo-transactions.md&#34;&gt;https://github.com/instagibbs/bolts/blob/29fe6d36cbad4101d5ec76c2b19c83c1494ac2fc/XX-eltoo-transactions.md&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt; ).&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; If you would like to have fast forward of chain of transactions, I wonder&lt;br/&gt;&amp;gt; &amp;gt; if there could be also the &amp;#34;sig-in-the-script&amp;#34; trick, where UB.n&lt;br/&gt;&amp;gt; &amp;gt; scriptpubkey (or one of its tapscripts) contains the signature for CB.n,&lt;br/&gt;&amp;gt; &amp;gt; SB.n, RB.n. Though you might have an issue of re-generating the&lt;br/&gt;&amp;gt; &amp;gt; witnessscript in case of state loss.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Broadcasting UB.n will only reveal signatures by B; so that would only&lt;br/&gt;&amp;gt; potentially help with CA.n or RA.n; and if UB.n is on-chain, then RA.n&lt;br/&gt;&amp;gt; isn&amp;#39;t valid (since it would require &amp;#34;n &amp;lt; n&amp;#34;).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The EXPR_SETTLE stuff in the github link describes how to do the trick&lt;br/&gt;&amp;gt; via a CTV-ish approach (including an APO signature in a tapscript in the&lt;br/&gt;&amp;gt; scriptPubKey of UA.n here; and including data in the annex so that you&lt;br/&gt;&amp;gt; can recalculate thinks if an old UA.n is broadcast after you&amp;#39;ve&lt;br/&gt;&amp;gt; forgotten n&amp;#39;s state details).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; * how to pay watchtowers -- when a watchtower broadcasts a W&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;   transaction, it needs to add fees, and it&amp;#39;s not clear (to me) how it&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;   could fairly and reliably ensure it&amp;#39;s compensated for those costs,&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;   particularly if multiple W transactions are broadcast for a single&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;   unilateral close attempt, due to one or more watchtowers colluding&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;   with an attacker, or simply having out of date information.&lt;br/&gt;&amp;gt; &amp;gt; I wonder if paying a watchtower, or getting paid as a watchtower isn&amp;#39;t  a&lt;br/&gt;&amp;gt; &amp;gt; &amp;#34;counterparty risk&amp;#34; similar to what is happening with jamming due to&lt;br/&gt;&amp;gt; &amp;gt; non-covered HTLC forward risk.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Actually, perhaps you could &amp;#34;yo dawg&amp;#34; it: if you give the watchtower a&lt;br/&gt;&amp;gt; pre-signed transaction WA.n:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;     input 1: UA.k/WA.k (ANYPREVOUTANYSCRIPT, SINGLE)&lt;br/&gt;&amp;gt;     input 2: my funds (SINGLE, ALL)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;     output 1: WA.n&lt;br/&gt;&amp;gt;     output 2: new lightning channel between me and watchtower&lt;br/&gt;&amp;gt;     output 3: ephemeral OP_TRUE output&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; then you could have the &amp;#34;new lightning channel&amp;#34; be setup with an initial&lt;br/&gt;&amp;gt; capacity of &amp;#34;my funds&amp;#34;, and off-chain update the state of that channel so&lt;br/&gt;&amp;gt; that the watchtower&amp;#39;s balance is how much you&amp;#39;re willing to contribute in&lt;br/&gt;&amp;gt; fees if the watchtower does its job. If you set things up so that you&amp;#39;re&lt;br/&gt;&amp;gt; always able to claim a penalty via WA.n-&amp;gt;RA.n if the watchtower acts,&lt;br/&gt;&amp;gt; then you can give up to that penalty to the watchtower and still end up&lt;br/&gt;&amp;gt; making a profit.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Doesn&amp;#39;t generalise to redundant untrusted watchtowers though, but&lt;br/&gt;&amp;gt; presumably nothing does. (You could use the same utxo across multiple&lt;br/&gt;&amp;gt; watchtowers, but a rogue watchtower could just post an old WA.k tx and&lt;br/&gt;&amp;gt; claim your funds, preventing some honest watchtower from helping)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; (Yo dawg, I heard you liked closing lightning channels, so we put a&lt;br/&gt;&amp;gt; lightning channel in your watchtower, so you can close a channel while&lt;br/&gt;&amp;gt; you&amp;#39;re closing a channel. Alternatively: &amp;#34;when god closes one channel,&lt;br/&gt;&amp;gt; he opens another&amp;#34;)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; aj&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230105/a6627adb/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230105/a6627adb/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:12:27Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqs0lqhgye34sqz3ufqpz7yxnqdkw3rj3fswqqd3hnmu4qg698eqh0gzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zlfwp6n</id>
    
      <title type="html">📅 Original date posted:2023-06-06 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqs0lqhgye34sqz3ufqpz7yxnqdkw3rj3fswqqd3hnmu4qg698eqh0gzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zlfwp6n" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs996g0pjlqadv5mvez97rqz4ds2lpnzvc2l8wj50rf87xq8pdylncq88kca&#39;&gt;nevent1q…8kca&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-06-06&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Bastien,&lt;br/&gt;&lt;br/&gt;&amp;gt; This can be fixed by using a &amp;#34;soft lock&amp;#34; when selecting utxos for a non&lt;br/&gt;&amp;gt; 0-conf funding attempt. 0-conf funding attempts must ignore soft locked&lt;br/&gt;&amp;gt; utxos while non 0-conf funding attempts can (should) reuse soft locked&lt;br/&gt;&amp;gt; utxos.&lt;br/&gt;&lt;br/&gt;If my understanding of the &amp;#34;soft lock&amp;#34; strategy is correct - Only locking&lt;br/&gt;UTXO when it&amp;#39;s a non 0-conf funding attempt - I think you&amp;#39;re still exposed&lt;br/&gt;to liquidity griefing with dual-funding or splicing.&lt;br/&gt;&lt;br/&gt;The vector of griefing you&amp;#39;re mentioning is the lack of signature release&lt;br/&gt;for a shared input by your counterparty. However, in the context of&lt;br/&gt;dual-funding where the counterparty can add any output with&lt;br/&gt;`tx_add_output`, the transaction can be pinned in the mempool in a very&lt;br/&gt;sneaky way e.g abuse of replacement rule 3.&lt;br/&gt;&lt;br/&gt;This latter pinning vector is advantageous to the malicious counterparty as&lt;br/&gt;I think you can batch your pinning against unrelated dual-funding, only&lt;br/&gt;linked in the mempool by a malicious pinning CPFP.&lt;br/&gt;&lt;br/&gt;It is left as an exercise to the reader to find other vectors of pinnings&lt;br/&gt;that can be played out in the dual-funding flow.&lt;br/&gt;&lt;br/&gt;In terms of (quick) solution to prevent liquidity griefing related to&lt;br/&gt;mempool vectors, the (honest) counterparty can enforce that any contributed&lt;br/&gt;outputs must be encumbered by a 1 CSV, unless being a 2-of-2 funding.&lt;br/&gt;Still, this mitigation can be limited as I think the initial commitment&lt;br/&gt;transaction must have anchor outputs on each-side, for each party to&lt;br/&gt;recover its contributed UTXOs in any case.&lt;br/&gt;&lt;br/&gt;&amp;gt; Then we immediately send `channel_ready` as well and start using that&lt;br/&gt;&amp;gt; channel (because we know we won&amp;#39;t double spend ourselves). This is nice&lt;br/&gt;&amp;gt; because it lets us use 0-conf in a way where only one side of the&lt;br/&gt;&amp;gt; channel needs to trust the other side (instead of both sides trusting&lt;br/&gt;&amp;gt; each other).&lt;br/&gt;&lt;br/&gt;&amp;gt;From the 0-conf initiator viewpoint (the one contributing the UTXO(s)), it&lt;br/&gt;can still be valuable to disable inbound payments, or requires a longer&lt;br/&gt;`cltv_expiry_delta` than usual, in case of mempool fee spikes delaying the&lt;br/&gt;0-conf chain confirmation.&lt;br/&gt;&lt;br/&gt;Beyond, it sounds liquidity griefing provoked by a lack of signature&lt;br/&gt;release or mempool funny games will always be there ? Even for the second&lt;br/&gt;with package relay/nVersion deployment, there is still the duration between&lt;br/&gt;the pinning happening among network mempools and your replacement broadcast&lt;br/&gt;kickstarts.&lt;br/&gt;&lt;br/&gt;As a more long-term solution, we might reuse solutions worked out to&lt;br/&gt;mitigate channel jamming, as the abstract problem is the same, namely your&lt;br/&gt;counterparty can lock up scarce resources without (on-chain/off-chain&lt;br/&gt;whatever) fees paid.&lt;br/&gt;&lt;br/&gt;E.g the Staking Credentials framework could be deployed by dual-funding&lt;br/&gt;market-makers beyond routing hops [0]. The dual-funding initiator should&lt;br/&gt;pay to the maker a fee scale up on the amount of UTXOs contributed, and&lt;br/&gt;some worst-case liquidity griefing scenario. A privacy-preserving&lt;br/&gt;credential can be introduced between the payment of the fee and the redeem&lt;br/&gt;of the service to unlink dual-funding initiators (if the maker has enough&lt;br/&gt;volume to constitute a reasonable anonymity set).&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;[0]&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2023-May/003964.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2023-May/003964.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Le sam. 6 mai 2023 à 04:15, Bastien TEINTURIER &amp;lt;bastien at acinq.fr&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Good morning list,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; One of the challenges created by the introduction of dual funded&lt;br/&gt;&amp;gt; transactions [1] in lightning is how to protect against liquidity&lt;br/&gt;&amp;gt; griefing attacks from malicious peers [2].&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Let&amp;#39;s start by reviewing this liquidity griefing issue. The dual funding&lt;br/&gt;&amp;gt; protocol starts by exchanging data about the utxos each peer adds to the&lt;br/&gt;&amp;gt; shared transaction, then exchange signatures and broadcast the resulting&lt;br/&gt;&amp;gt; transaction. If peers lock their utxos as soon as they&amp;#39;ve decided to add&lt;br/&gt;&amp;gt; them to the shared transaction, the remote node may go silent. If that&lt;br/&gt;&amp;gt; happens, the honest node has some liquidity that is locked and unusable.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This cannot easily be fixed by simply unlocking utxos *after* detecting&lt;br/&gt;&amp;gt; that the remote node is fishy, because the remote node would still have&lt;br/&gt;&amp;gt; succeeded at locking your liquidity for a (small) duration, and could&lt;br/&gt;&amp;gt; start other instances of that attack with different node_ids.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; An elegant solution to this issue is to never lock utxos used in dual&lt;br/&gt;&amp;gt; funded transactions. If a remote node goes silent in the middle of an&lt;br/&gt;&amp;gt; instance of the protocol, your utxos will automatically be re-used in&lt;br/&gt;&amp;gt; another instance of the protocol. The only drawback with that approach&lt;br/&gt;&amp;gt; is that when you have multiple concurrent instances of dual funding with&lt;br/&gt;&amp;gt; honest peers, some of them may fail because they are double-spent by one&lt;br/&gt;&amp;gt; of the concurrent instances. This is acceptable, since the protocol&lt;br/&gt;&amp;gt; should complete fairly quickly when peers are honest, and at worst, it&lt;br/&gt;&amp;gt; can simply be restarted when failure is detected.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; But that solution falls short when using 0-conf, because accidentally&lt;br/&gt;&amp;gt; double-spending a 0-conf channel (because of concurrent instances) can&lt;br/&gt;&amp;gt; result in loss of funds for one of the peers (if payments were made on&lt;br/&gt;&amp;gt; that channel before detecting the double-spend). It seems like using&lt;br/&gt;&amp;gt; 0-conf forces us to lock utxos to avoid this issue, which means that&lt;br/&gt;&amp;gt; nodes offering 0-conf services expose themselves to liquidity griefing.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Another related issue is that nodes that want to offer 0-conf channels&lt;br/&gt;&amp;gt; must ensure that the utxos they use for 0-conf are isolated from the&lt;br/&gt;&amp;gt; utxos they use for non 0-conf, otherwise it is not possible to properly&lt;br/&gt;&amp;gt; lock utxos, because of the following race scenario:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; - utxoA is selected for a non 0-conf funding attempt and not locked&lt;br/&gt;&amp;gt;   (to protect against liquidity griefing)&lt;br/&gt;&amp;gt; - utxoA is also selected for a 0-conf funding attempt (because it is&lt;br/&gt;&amp;gt;   found unlocked in the wallet) and then locked&lt;br/&gt;&amp;gt; - the funding transaction for the 0-conf channel is successfully&lt;br/&gt;&amp;gt;   published first and that channel is instantly used for payments&lt;br/&gt;&amp;gt; - the funding transaction for the non 0-conf channel is then published&lt;br/&gt;&amp;gt;   and confirms, accidentally double-spending the 0-conf channel&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This can be fixed by using a &amp;#34;soft lock&amp;#34; when selecting utxos for a non&lt;br/&gt;&amp;gt; 0-conf funding attempt. 0-conf funding attempts must ignore soft locked&lt;br/&gt;&amp;gt; utxos while non 0-conf funding attempts can (should) reuse soft locked&lt;br/&gt;&amp;gt; utxos.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In eclair, we are currently doing &amp;#34;opportunistic&amp;#34; 0-conf:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; - if we receive `channel_ready` immediately (which means that our peer&lt;br/&gt;&amp;gt;   trusts us to use 0-conf)&lt;br/&gt;&amp;gt; - and we&amp;#39;re the only contributor to the funding transaction (our peer&lt;br/&gt;&amp;gt;   doesn&amp;#39;t have any input that they could use to double-spend)&lt;br/&gt;&amp;gt; - and the transaction hasn&amp;#39;t been RBF-ed yet&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Then we immediately send `channel_ready` as well and start using that&lt;br/&gt;&amp;gt; channel (because we know we won&amp;#39;t double spend ourselves). This is nice&lt;br/&gt;&amp;gt; because it lets us use 0-conf in a way where only one side of the&lt;br/&gt;&amp;gt; channel needs to trust the other side (instead of both sides trusting&lt;br/&gt;&amp;gt; each other).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Unfortunately, we cannot do that anymore when mixing 0-conf and non&lt;br/&gt;&amp;gt; 0-conf funding attempts, because the utxos may be soft locked,&lt;br/&gt;&amp;gt; preventing us from &amp;#34;upgrading&amp;#34; to 0-conf.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; You have successfully reached the end of this quite technical post,&lt;br/&gt;&amp;gt; congrats! My goal with this post is to gather ideas on how we could&lt;br/&gt;&amp;gt; improve that situation and offer good enough protections against&lt;br/&gt;&amp;gt; liquidity griefing for nodes offering 0-conf services. Please share&lt;br/&gt;&amp;gt; your ideas! And yes, I know, 0-conf is a massive implementation pain&lt;br/&gt;&amp;gt; point that we would all like to remove from our codebases, but hey,&lt;br/&gt;&amp;gt; users like it ¯\_(ツ)_/¯&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; Bastien&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [1] &lt;a href=&#34;https://github.com/lightning/bolts/pull/851&#34;&gt;https://github.com/lightning/bolts/pull/851&lt;/a&gt;&lt;br/&gt;&amp;gt; [2] &lt;a href=&#34;https://github.com/lightning/bolts/pull/851#discussion_r997537630&#34;&gt;https://github.com/lightning/bolts/pull/851#discussion_r997537630&lt;/a&gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230607/50378bc7/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230607/50378bc7/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:08:58Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsr8k986yfftaq363rl5p5nap0qc628jkmskqaqzcj4ln9733z384qzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zh9h3ud</id>
    
      <title type="html">📅 Original date posted:2023-05-24 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsr8k986yfftaq363rl5p5nap0qc628jkmskqaqzcj4ln9733z384qzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zh9h3ud" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs836wz4hck5ee6ytrqmjeve7n4zfpl05ml83t26lh4ta2xm405ercwj2tux&#39;&gt;nevent1q…2tux&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-05-24&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi list,&lt;br/&gt;&lt;br/&gt;As it has been discussed before, a solution to mitigate jamming&lt;br/&gt;attacks over the Lightning Network consists in the introduction of&lt;br/&gt;credentials that must be acquired by HTLC senders to lock each hop&lt;br/&gt;liquidity along the forwarding path. Those credentials can be&lt;br/&gt;privacy-preserving to mask the identity of the HTLC senders towards&lt;br/&gt;the routing hops. They serve as a monetary hedge in case of default of&lt;br/&gt;the HTLC sender on the payment of the routing fees.&lt;br/&gt;&lt;br/&gt;As additional advantages, this credentials framework, dubbed &amp;#34;Staking&lt;br/&gt;Credentials&amp;#34;, can be deployed to mitigate other liquidity timevalue&lt;br/&gt;DoS in the Lightning landscape, e.g collaborative transaction&lt;br/&gt;construction or even beyond as an enhanced paywall to access Nostr&lt;br/&gt;relay services [0].&lt;br/&gt;&lt;br/&gt;This post gives an overview of the framework by detailing the key&lt;br/&gt;concepts, laying out the protocol phases, showing concrete examples&lt;br/&gt;and presenting the upsides and downsides of this mitigation approach&lt;br/&gt;for jamming.&lt;br/&gt;&lt;br/&gt;## Protocol Abstractions&lt;br/&gt;&lt;br/&gt;The protocol relies on basic mechanisms of the Lightning Network such&lt;br/&gt;as the onion messages, blinded paths where the sender doesn&amp;#39;t know who&lt;br/&gt;is the recipient and gossips, an information dissemination protocol&lt;br/&gt;not relying on third-party.&lt;br/&gt;&lt;br/&gt;Beyond, new abstractions are introduced:&lt;br/&gt;- credentials: unique keys establishing attributes of the bearer,&lt;br/&gt;those keys can be blinded [1].&lt;br/&gt;- scarce assets: e.g a Bitcoin transaction, a Lightning payment,&lt;br/&gt;chaumian ecash, UTXO ownership proofs.&lt;br/&gt;- Requester/Issuer entities: the Requester requires from the Issuer&lt;br/&gt;authentication of credentials in exchange for submitting scarce&lt;br/&gt;assets.&lt;br/&gt;- Client/Provider entities: the Client requires from the Provider a&lt;br/&gt;service in exchange of submitting a credential.&lt;br/&gt;&lt;br/&gt;## Protocol Phases&lt;br/&gt;&lt;br/&gt;The first phase of the protocol is the discovery by a user of the&lt;br/&gt;`credentials_policy` and `service_policy` gossips originating&lt;br/&gt;respectively from Issuers and Providers. By reading the&lt;br/&gt;`service_policy`, a user can discover the list of credentials Issuer a&lt;br/&gt;target service Provider is relying on.&lt;br/&gt;&lt;br/&gt;The user in the role of the Requester starts by committing a scarce&lt;br/&gt;asset as announced by the Issuer&amp;#39;s `credentials_policy`. E.g the&lt;br/&gt;Requester sends a Bitcoin on-chain to a destination scriptPubkey&lt;br/&gt;previously announced by the gossip mechanism. The user attaches the&lt;br/&gt;scarce asset proof with a set of blinded credentials, finds an onion&lt;br/&gt;path to the Issuer and sends the whole inside an onion message.&lt;br/&gt;&lt;br/&gt;When the Issuer receives the scarce asset proofs and the set of&lt;br/&gt;credentials, the proof is first verified e.g the on-chain payment must&lt;br/&gt;be confirmed to a destination scriptPubkey controlled by the Issuer.&lt;br/&gt;If the proof is correct and the scarce asset cost matches the quantity&lt;br/&gt;of credentials as announced by `credentials_policy`, the blinded&lt;br/&gt;credentials are countersigned by the Issuer and the signatures replied&lt;br/&gt;back to the Requester by using a blinded path.&lt;br/&gt;&lt;br/&gt;The Requester receives the Issuer signature and should verify they&amp;#39;re&lt;br/&gt;correct under the announced issuance public key in&lt;br/&gt;`credentials_policy`. If they are valid, the credentials can be&lt;br/&gt;unblinded and consumed for the satisfaction of a service or correct&lt;br/&gt;the transactional asymmetries of a Bitcoin financial contract (e.g the&lt;br/&gt;signature release for a dual-funding transaction).&lt;br/&gt;&lt;br/&gt;Alternatively, the credentials usage can be delegated to another user&lt;br/&gt;under the warning than for the second-user, there is no guarantee the&lt;br/&gt;credential transfer is not double-spend.&lt;br/&gt;&lt;br/&gt;The user in the role of the Client forwards the unblinded credentials&lt;br/&gt;and the corresponding Issuer signatures to a target service Provider.&lt;br/&gt;The service request can be protocol-specific and linked with the&lt;br/&gt;credentials submission with a simple pair of identifiers (e.g a&lt;br/&gt;32-byte random value). At reception by the Provider, the signatures on&lt;br/&gt;the unblinded credentials must be verified against the corresponding&lt;br/&gt;Issuance public key. The quantity of credentials must be equal to the&lt;br/&gt;service units requested as announced by `service_policy`.&lt;br/&gt;&lt;br/&gt;If those checks are correct, the Provider is satisfying the Client&lt;br/&gt;service request, and additionally can provide back authentication&lt;br/&gt;signatures for a new set of blinded credentials (optionally attached&lt;br/&gt;in the service request issued by the Client).&lt;br/&gt;&lt;br/&gt;## Example: Lightning jamming&lt;br/&gt;&lt;br/&gt;Alice, the routing hop, cumulates in this deployment both the role of&lt;br/&gt;Issuer and Provider. As an Issuer, she announces how much Lightning&lt;br/&gt;satoshis she wishes to be paid to countersign a quantity of N&lt;br/&gt;credentials in `credentials_policy`. As a Provider, she announces how&lt;br/&gt;much credentials she wishes to allow a lockup of her 10_000 sats&lt;br/&gt;Lightning channels for 100 blocks in `service_policy`.&lt;br/&gt;&lt;br/&gt;Bob the HTLC sender discovers Alice&amp;#39;s `credentials_policy`, sends a&lt;br/&gt;Lightning payment to Alice and then collects a quantity of N signed&lt;br/&gt;blinded credentials during a issuance dance with Alice. After this,&lt;br/&gt;Bob can build a payment path going through Alice, where her hop&amp;#39;s&lt;br/&gt;onion `payload` includes an identifier Z. Bob transfers the signed&lt;br/&gt;unblinded credentials with the same identifier Z through onion routing&lt;br/&gt;to Alice node.&lt;br/&gt;&lt;br/&gt;Alice node verifies the credentials with respect to her&lt;br/&gt;`service_policy` for the forwarding of HTLC. If this is correct, the&lt;br/&gt;HTLC is forward over her 10_000 sats Lightning channel. If the HTLC&lt;br/&gt;settlement is successful, a new quantity of blinded credentials is&lt;br/&gt;countersigned by Alice to reward Bob for the efficient usage of her&lt;br/&gt;liquidity.&lt;br/&gt;&lt;br/&gt;## Protocol Upsides&lt;br/&gt;&lt;br/&gt;The credentials allows a service Provider to establish a dynamic&lt;br/&gt;risk-management policy, where the submission of credentials is&lt;br/&gt;disabled during the &amp;#34;peaceful&amp;#34; state and where credentials must bind&lt;br/&gt;to 100% of the timevalue of the liquidity service in case of &amp;#34;war&amp;#34;&lt;br/&gt;state. E.g for jamming, the cost of the credentials can match 100% of&lt;br/&gt;the routing fees announced in `channel_update.&lt;br/&gt;&lt;br/&gt;The blinding of the credentials should preserve the privacy of the&lt;br/&gt;HTLC senders, therefore preventing deanonymization of the payments, or&lt;br/&gt;selective censorship of the HTLC forward by a specific HTLC sender.&lt;br/&gt;&lt;br/&gt;The credentials enable an emergent discount effect, where in case of&lt;br/&gt;&amp;#34;honest&amp;#34; behavior of the Client in the usage of the service, they can&lt;br/&gt;be rewarded by fresh credentials, therefore reducing the operational&lt;br/&gt;cost of their future service usage.&lt;br/&gt;&lt;br/&gt;The credentials framework should be generic enough to adapt to&lt;br/&gt;multiple Bitcoin flows beyond HTLC forwarding, and the Lightning&lt;br/&gt;jamming issue. Other flows of interest can be to cover the asymmetries&lt;br/&gt;in collaborative transaction construction, e.g the order of the&lt;br/&gt;release of the contributed UTXOs signatures. Qualitative credentials&lt;br/&gt;could be deployed enabling bounded routing fees or SLA of liquidity&lt;br/&gt;during periods of Lightning network congestion.&lt;br/&gt;&lt;br/&gt;There is a Rust implementation in early progress, with a short-term&lt;br/&gt;goal to have the full Staking Credential flow working in its&lt;br/&gt;non-blinded version for a 1-hop payment path.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;[0] &lt;a href=&#34;https://github.com/civkit/staking-credentials-spec&#34;&gt;https://github.com/civkit/staking-credentials-spec&lt;/a&gt;&lt;br/&gt;[1] &lt;a href=&#34;https://sceweb.sce.uhcl.edu/yang/teaching/csci5234WebSecurityFall2011/Chaum-blind-signatures.PDF&#34;&gt;https://sceweb.sce.uhcl.edu/yang/teaching/csci5234WebSecurityFall2011/Chaum-blind-signatures.PDF&lt;/a&gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230524/35f6e341/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230524/35f6e341/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:08:55Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsv5fjs6lptl8dn9k6036f0dmmdvv0fprn7ngjhy22amp55andrz8czypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zqyxq5q</id>
    
      <title type="html">📅 Original date posted:2023-05-31 📝 Original message: &amp;gt; ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsv5fjs6lptl8dn9k6036f0dmmdvv0fprn7ngjhy22amp55andrz8czypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zqyxq5q" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsdzy78dt88y0tpn994dd7mrgn925zkc2rf5kl763vsxjtwr0zewwcymxw88&#39;&gt;nevent1q…xw88&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-05-31&lt;br/&gt;📝 Original message:&lt;br/&gt;&amp;gt; I think it&amp;#39;s important to differentiate between fees a node charges and&lt;br/&gt;&amp;gt; *reputation_revenue*. Reputation is determined as a function of the latter.&lt;br/&gt;&amp;gt; If Caroll has a very high *reputation_revenue* and Bob has a very low one,&lt;br/&gt;&amp;gt; then Bob probably won&amp;#39;t have a high reputation with Caroll, as the amount&lt;br/&gt;&amp;gt; of fees he forwards to Caroll is smaller than the damage he can create.&lt;br/&gt;&amp;gt; That is, if Caroll is a huge node and Bob is a raspberry pi, then Bob will&lt;br/&gt;&amp;gt; never have a good reputation with Caroll. If they have similar&lt;br/&gt;&amp;gt; *reputation_revenue*, then getting a good reputation with Bob is as&lt;br/&gt;&amp;gt; difficult as getting a good reputation with Caroll.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In your example (if I got it correctly) Bob&amp;#39;s *reputation_revenue* = 1,000,&lt;br/&gt;&amp;gt; *reputation_window*=100 and *routing_window*=10. Could you explain what are&lt;br/&gt;&amp;gt; Caroll&amp;#39;s parameters are in your example? The *fee_base_msat* does not&lt;br/&gt;&amp;gt; indicate Carolls *reputation_revenue* (unless Alice is the only one&lt;br/&gt;&amp;gt; transacting on the Bob-Caroll channel, and then she is the one paying for&lt;br/&gt;&amp;gt; Bob&amp;#39;s reputation).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; That being said, we use *reputation_revenue *to estimate the damage an&lt;br/&gt;&amp;gt; attacker can create. If there is a chain of nodes that have high reputation&lt;br/&gt;&amp;gt; with each other, and they are jammed, they would be compensated for the&lt;br/&gt;&amp;gt; revenue lost during the attack. If Bob finds that having a high reputation&lt;br/&gt;&amp;gt; with Caroll is crucial and 1,000 sats will not compensate him for loosing&lt;br/&gt;&amp;gt; it, then he should either never endorse anything on that channel, or at&lt;br/&gt;&amp;gt; least put a higher bar than *reputation_revenue*.&lt;br/&gt;&lt;br/&gt;I think the distinction you&amp;#39;re proposing between routing fees and&lt;br/&gt;reputation revenue matters in the HTLC endorsement model. For the&lt;br/&gt;example I&amp;#39;m using let&amp;#39;s say Caroll and Bob share the same exact&lt;br/&gt;parameters, *reputation_revenue* = 1,000, *routing_window*=100 and&lt;br/&gt;*routing_window*=10, where the reputation revenue of Bob towards&lt;br/&gt;Caroll is made from multiple incoming links.&lt;br/&gt;&lt;br/&gt;For each HTLC forwarding request issued from Alice, Bob has to make&lt;br/&gt;the decision between refusing Alice HTLC forward over the Caroll&lt;br/&gt;incoming link, and lose an opportunity of fee income, or accept the&lt;br/&gt;HTLC and suffers from a damage if Alice reveals a posteriori as a&lt;br/&gt;jamming attacker.&lt;br/&gt;&lt;br/&gt;This is unclear to me how the compensation mechanism works in the&lt;br/&gt;chain of nodes that have high reputation with each other, and I still&lt;br/&gt;think the HTLC endorsement mitigation suffers from the classic issues&lt;br/&gt;of reputation systems (i.e whitewashing).&lt;br/&gt;&lt;br/&gt;&amp;gt; Not sure what you mean by that.&lt;br/&gt;&lt;br/&gt;I think there is a coupling effec introduced between the historical&lt;br/&gt;liquidity buckets of routing scoring algorithms and the introduction&lt;br/&gt;of endorsment scheme with adjustement of the channel liquidity and&lt;br/&gt;slots in function of local topology reputation.&lt;br/&gt;&lt;br/&gt;See the LDK scoring engine comments here :&lt;br/&gt;&lt;a href=&#34;https://github.com/lightningdevkit/rust-lightning/blob/eec5ec6b50720144fc23503c3ee9c1c8850517ac/lightning/src/routing/scoring.rs#L336&#34;&gt;https://github.com/lightningdevkit/rust-lightning/blob/eec5ec6b50720144fc23503c3ee9c1c8850517ac/lightning/src/routing/scoring.rs#L336&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Le mer. 17 mai 2023 à 21:49, Clara Shikhelman &amp;lt;clara.shikhelman at gmail.com&amp;gt;&lt;br/&gt;a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; The lack of transitivity of the reputation acquisition cost (e.g based on&lt;br/&gt;&amp;gt;&amp;gt; historical fees earned from forwards originating from the peer) between the&lt;br/&gt;&amp;gt;&amp;gt; hops of the payment path still raises a vulnerability issue for the&lt;br/&gt;&amp;gt;&amp;gt; endorsement scheme, I think.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Namely, let&amp;#39;s say you have Alice, Bob and Caroll where endorsement has&lt;br/&gt;&amp;gt;&amp;gt; been obtained by Alice on the Bob incoming link by paying fees for an&lt;br/&gt;&amp;gt;&amp;gt; amount of 1000 sats for the last 100 blocks. Caroll offers a far higher&lt;br/&gt;&amp;gt;&amp;gt; pricing on her incoming link from Bob, 10000 sats as `fee_base_msat` on her&lt;br/&gt;&amp;gt;&amp;gt; endorsed slots. It sounds to me there is nothing preventing Alice from&lt;br/&gt;&amp;gt;&amp;gt; sacrificing her earned reputation to inflict a loss of routing fees damage&lt;br/&gt;&amp;gt;&amp;gt; on Caroll incoming link ?&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I think it&amp;#39;s important to differentiate between fees a node charges and&lt;br/&gt;&amp;gt; *reputation_revenue*. Reputation is determined as a function of the&lt;br/&gt;&amp;gt; latter. If Caroll has a very high *reputation_revenue* and Bob has a very&lt;br/&gt;&amp;gt; low one, then Bob probably won&amp;#39;t have a high reputation with Caroll, as the&lt;br/&gt;&amp;gt; amount of fees he forwards to Caroll is smaller than the damage he can&lt;br/&gt;&amp;gt; create. That is, if Caroll is a huge node and Bob is a raspberry pi, then&lt;br/&gt;&amp;gt; Bob will never have a good reputation with Caroll. If they have similar&lt;br/&gt;&amp;gt; *reputation_revenue*, then getting a good reputation with Bob is as&lt;br/&gt;&amp;gt; difficult as getting a good reputation with Caroll.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In your example (if I got it correctly) Bob&amp;#39;s *reputation_revenue* =&lt;br/&gt;&amp;gt; 1,000, *reputation_window*=100 and *routing_window*=10. Could you explain&lt;br/&gt;&amp;gt; what are Caroll&amp;#39;s parameters are in your example? The *fee_base_msat*&lt;br/&gt;&amp;gt; does not indicate Carolls *reputation_revenue* (unless Alice is the only&lt;br/&gt;&amp;gt; one transacting on the Bob-Caroll channel, and then she is the one paying&lt;br/&gt;&amp;gt; for Bob&amp;#39;s reputation).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; That being said, we use *reputation_revenue *to estimate the damage an&lt;br/&gt;&amp;gt; attacker can create. If there is a chain of nodes that have high reputation&lt;br/&gt;&amp;gt; with each other, and they are jammed, they would be compensated for the&lt;br/&gt;&amp;gt; revenue lost during the attack. If Bob finds that having a high reputation&lt;br/&gt;&amp;gt; with Caroll is crucial and 1,000 sats will not compensate him for loosing&lt;br/&gt;&amp;gt; it, then he should either never endorse anything on that channel, or at&lt;br/&gt;&amp;gt; least put a higher bar than *reputation_revenue*.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; There is an independent new observation on the effect of dynamic&lt;br/&gt;&amp;gt;&amp;gt; reputation windows on payment reliability, as those windows are not&lt;br/&gt;&amp;gt;&amp;gt; announced to the rest of the network, sudden changes in the links&lt;br/&gt;&amp;gt;&amp;gt; throughput based on HTLC resolution might break the historical liquidity&lt;br/&gt;&amp;gt;&amp;gt; buckets of routing scoring algorithms (at least in the way we&amp;#39;re doing it&lt;br/&gt;&amp;gt;&amp;gt; for LDK), I think ?&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Not sure what you mean by that.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Best,&lt;br/&gt;&amp;gt; Clara&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230531/5017e472/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230531/5017e472/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:08:50Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsr3j3llukj7ty9etg9mprmsu98fz5zklkvcpnemass56y36lgcfnqzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zkq06rs</id>
    
      <title type="html">📅 Original date posted:2023-05-17 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsr3j3llukj7ty9etg9mprmsu98fz5zklkvcpnemass56y36lgcfnqzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zkq06rs" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqswy872jcfn50nxmlrgwt8yjgkpmuf5er7kjkqx2aqrycq48qec4tc6h5s0m&#39;&gt;nevent1q…5s0m&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-05-17&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi all,&lt;br/&gt;&lt;br/&gt;&amp;gt; That is, one cannot gain reputation during low fee times and use it when&lt;br/&gt;fees are high.&lt;br/&gt;&lt;br/&gt;&amp;gt; Good reputation is also a function of the general environment, and so if&lt;br/&gt;there is a fee spike, reputation will change. It is true that nodes can go&lt;br/&gt;rogue, but this is why we aim &amp;gt; for the price of a good reputation to be&lt;br/&gt;similar to the amount of damage they can create.&lt;br/&gt;&lt;br/&gt;The lack of transitivity of the reputation acquisition cost (e.g based on&lt;br/&gt;historical fees earned from forwards originating from the peer) between the&lt;br/&gt;hops of the payment path still raises a vulnerability issue for the&lt;br/&gt;endorsement scheme, I think.&lt;br/&gt;&lt;br/&gt;Namely, let&amp;#39;s say you have Alice, Bob and Caroll where endorsement has been&lt;br/&gt;obtained by Alice on the Bob incoming link by paying fees for an amount of&lt;br/&gt;1000 sats for the last 100 blocks. Caroll offers a far higher pricing on&lt;br/&gt;her incoming link from Bob, 10000 sats as `fee_base_msat` on her endorsed&lt;br/&gt;slots. It sounds to me there is nothing preventing Alice from sacrificing&lt;br/&gt;her earned reputation to inflict a loss of routing fees damage on Caroll&lt;br/&gt;incoming link ?&lt;br/&gt;&lt;br/&gt;Generally, I think the endorsement scheme assumes some synchronicity in the&lt;br/&gt;setting of routing fees by the hops. In practice, it&amp;#39;s expected there will&lt;br/&gt;be variations based on their own pricing of liquidity, their accumulated&lt;br/&gt;data sets (e.g historical view of LN gossips) and downstream link topology.&lt;br/&gt;And this is the same between building a mitigation on concepts like&lt;br/&gt;&amp;#34;peace/war&amp;#34; time, sophisticated attackers might be able to mask their&lt;br/&gt;traffic as some spontaneous congestion.&lt;br/&gt;&lt;br/&gt;There is an independent new observation on the effect of dynamic reputation&lt;br/&gt;windows on payment reliability, as those windows are not announced to the&lt;br/&gt;rest of the network, sudden changes in the links throughput based on HTLC&lt;br/&gt;resolution might break the historical liquidity buckets of routing scoring&lt;br/&gt;algorithms (at least in the way we&amp;#39;re doing it for LDK), I think ?&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Le mer. 10 mai 2023 à 16:59, Clara Shikhelman &amp;lt;clara.shikhelman at gmail.com&amp;gt;&lt;br/&gt;a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi Christian,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Thanks for your comments! We will discuss this further in the upcoming&lt;br/&gt;&amp;gt; call on the 15th, would be great to see you there!&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; this is an intrinsic issue with reputation systems, and the main&lt;br/&gt;&amp;gt;&amp;gt; reason I&amp;#39;m sceptical w.r.t. their usefulness in lightning.&lt;br/&gt;&amp;gt;&amp;gt; Fundamentally any reputation system bases their expectations for the&lt;br/&gt;&amp;gt;&amp;gt; future on experiences they made in the past, and they are thus always&lt;br/&gt;&amp;gt;&amp;gt; susceptible to sudden behavioral changes (going rogue from a prior&lt;br/&gt;&amp;gt;&amp;gt; clean record) and whitewashing attacks (switching identity, abusing&lt;br/&gt;&amp;gt;&amp;gt; any builtin bootstrapping method for new users to gain a good or&lt;br/&gt;&amp;gt;&amp;gt; neutral reputation before turning rogue repeatedly).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In the Lightning Network, fees are a native way to put a price on having a&lt;br/&gt;&amp;gt; good reputation (see details here [0]). In the design that we suggest, the&lt;br/&gt;&amp;gt; reputation gained today cannot be used in the distant future, and funds&lt;br/&gt;&amp;gt; need to be invested continuously to keep a good reputation. Good reputation&lt;br/&gt;&amp;gt; is also a function of the general environment, and so if there is a fee&lt;br/&gt;&amp;gt; spike, reputation will change. It is true that nodes can go rogue, but this&lt;br/&gt;&amp;gt; is why we aim for the price of a good reputation to be similar to the&lt;br/&gt;&amp;gt; amount of damage they can create.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; This gets compounded as soon as we start gossiping about reputations,&lt;br/&gt;&amp;gt;&amp;gt; since now our decisions are no longer based just on information we can&lt;br/&gt;&amp;gt;&amp;gt; witness ourselves, or at least verify its correctness, and as such an&lt;br/&gt;&amp;gt;&amp;gt; attacker can most likely &amp;#34;earn&amp;#34; a positive reputation in some other&lt;br/&gt;&amp;gt;&amp;gt; part of the world, and then turn around and attack the nodes that&lt;br/&gt;&amp;gt;&amp;gt; trusted the reputation shared from those other parts.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Notice that we are not gossiping about our peer&amp;#39;s reputation. The only&lt;br/&gt;&amp;gt; thing that a node communicates to its neighbor is whether they see an HTLC&lt;br/&gt;&amp;gt; as endorsed or just neutral, that is, should this HTLC be granted access to&lt;br/&gt;&amp;gt; all of the resources or just the restricted part.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I&amp;#39;d be very interested in how many repeat interactions nodes get from&lt;br/&gt;&amp;gt;&amp;gt; individual senders, since that also tells us how much use we can get&lt;br/&gt;&amp;gt;&amp;gt; out of local-only reputation based systems, and I wouldn&amp;#39;t be&lt;br/&gt;&amp;gt;&amp;gt; surprised if, for large routing nodes, we have sufficient data for&lt;br/&gt;&amp;gt;&amp;gt; them to make an informed decision, while the edges may be more&lt;br/&gt;&amp;gt;&amp;gt; vulnerable, but they&amp;#39;d also be used by way fewer senders, and the&lt;br/&gt;&amp;gt;&amp;gt; impact of an attack would also be proportionally smaller.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This is something we hope to learn once we&amp;#39;ll start collecting data from&lt;br/&gt;&amp;gt; our brave volunteers :)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; Clara&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230517/9cd075a3/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230517/9cd075a3/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:08:49Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqs8gkunpa5hzfasq40y8p0vycjm5fpk99rgqcfewkrfz96jsmed88czypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24z7kt29u</id>
    
      <title type="html">📅 Original date posted:2023-05-06 📝 Original message: Hi *, ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqs8gkunpa5hzfasq40y8p0vycjm5fpk99rgqcfewkrfz96jsmed88czypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24z7kt29u" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsr4x82pfthdukn5u65ng6ytqml4pt0sps939ezpw30jevs380zspsgjap7f&#39;&gt;nevent1q…ap7f&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-05-06&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi *,&lt;br/&gt;&lt;br/&gt;&amp;gt; Our suggestion is to start simple with a binary endorsement field. As&lt;br/&gt;&amp;gt; we learn more, we will be better equipped to understand whether a&lt;br/&gt;&amp;gt; more expressive value is required.&lt;br/&gt;&lt;br/&gt;I think the HTLC endorsement scheme as proposed is still suffering from a&lt;br/&gt;vulnerability as local reputation can be built up during periods of low&lt;br/&gt;routing fees, endorsement gained and then abused during periods of high&lt;br/&gt;routing fees. Therefore, it sounds to me this scheme should aim for some&lt;br/&gt;reputational transitivity between incoming traffic and outgoing traffic.&lt;br/&gt;Namely, the acquisition cost of the local reputation should be equal to the&lt;br/&gt;max timevalue damage that one can inflict on a routing node channel&lt;br/&gt;accessible from its local counterparty granting this high-level of&lt;br/&gt;reputation.&lt;br/&gt;&lt;br/&gt;I don&amp;#39;t know if this can be fixed by ensuring permanent link-level &amp;#34;gossip&amp;#34;&lt;br/&gt;where counterparties along a payment path expose their reputation&lt;br/&gt;heuristics to guarantee this transitivity, or it&amp;#39;s a fundamental issue with&lt;br/&gt;a point-to-point approach like HTLC endorsement.&lt;br/&gt;&lt;br/&gt;Opened an issue on the repository to converge on a threat model:&lt;br/&gt;&lt;a href=&#34;https://github.com/ClaraShk/LNJamming/pull/13&#34;&gt;https://github.com/ClaraShk/LNJamming/pull/13&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;I still think building data gathering infrastructure for Lightning is&lt;br/&gt;valuable as ultimately any jamming mitigation will have to adapt its&lt;br/&gt;upfront fees or reputation acquisition cost in function of HTLC traffic and&lt;br/&gt;market forces.&lt;br/&gt;&lt;br/&gt;Looking forward to giving an update on Staking Credentials [0], an&lt;br/&gt;end-to-end approach to mitigate channel jamming.&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;[0]&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-November/003754.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-November/003754.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Le dim. 30 avr. 2023 à 03:57, Carla Kirk-Cohen &amp;lt;kirkcohenc at gmail.com&amp;gt; a&lt;br/&gt;écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi list,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Some updates on channel jamming!&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # Next Call&lt;br/&gt;&amp;gt; - Monday 01 May @ 15:00 UTC&lt;br/&gt;&amp;gt; - &lt;a href=&#34;https://meet.jit.si/UnjammingLN&#34;&gt;https://meet.jit.si/UnjammingLN&lt;/a&gt;&lt;br/&gt;&amp;gt; - Agenda: &lt;a href=&#34;https://github.com/ClaraShk/LNJamming/issues/12&#34;&gt;https://github.com/ClaraShk/LNJamming/issues/12&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # Data Gathering&lt;br/&gt;&amp;gt; During these weekly calls, we&amp;#39;ve come to agreement that we would like&lt;br/&gt;&amp;gt; to gather data about the use of HTLC endorsement and local reputation&lt;br/&gt;&amp;gt; tracking for jamming mitigation. A reminder of the full scheme is&lt;br/&gt;&amp;gt; included at the end of this email, and covered more verbosely in [1].&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; We have a few goals in mind:&lt;br/&gt;&amp;gt; - Observe the effect of endorsement in the steady state with&lt;br/&gt;&amp;gt;   logging-only implementation.&lt;br/&gt;&amp;gt; - Gather real-world data for use in future simulation work.&lt;br/&gt;&amp;gt; - Experiment with different algorithms for tracking local reputation.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The minimal changes required to add HTLC endorsement are outlined in [2].&lt;br/&gt;&amp;gt; Our suggestion is to start simple with a binary endorsement field. As&lt;br/&gt;&amp;gt; we learn more, we will be better equipped to understand whether a&lt;br/&gt;&amp;gt; more expressive value is required.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; With this infrastructure in place, we can start to experiment with&lt;br/&gt;&amp;gt; various local reputation schemes and data gathering, possibly even&lt;br/&gt;&amp;gt; externally to LN implementations in projects like circuitbreaker [3].&lt;br/&gt;&amp;gt; We&amp;#39;d be interested to hear whether there&amp;#39;s any appetite to deploy using&lt;br/&gt;&amp;gt; an experimental TLV value?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # Reputation Scheme&lt;br/&gt;&amp;gt; - Each node locally tracks the reputation of its direct neighbors.&lt;br/&gt;&amp;gt; - Each node allocates, per its risk tolerance:&lt;br/&gt;&amp;gt;   - A number of slots reserved for endorsed HTLCs from high reputation&lt;br/&gt;&amp;gt;     peers.&lt;br/&gt;&amp;gt;   - A portion of liquidity reserved for endorsed HTLCs from high&lt;br/&gt;&amp;gt;     reputation peers.&lt;br/&gt;&amp;gt; - Forwarding of HTLCs:&lt;br/&gt;&amp;gt;   - If a HTLC is endorsed by a high reputation peer, it is forwarded&lt;br/&gt;&amp;gt;     as usual with endorsed = 1.&lt;br/&gt;&amp;gt;   - Otherwise, it is forwarded with endorsed = 0 if there are slots and&lt;br/&gt;&amp;gt;     liquidity available for unknown HTLCs.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Endorsement and reputation are proposed as the first step in a two part&lt;br/&gt;&amp;gt; scheme for mitigating channel jamming:&lt;br/&gt;&amp;gt; - Reputation for slow jams which are easily detected as misbehavior.&lt;br/&gt;&amp;gt; - Unconditional fees for quick jams that are difficult to detect, as&lt;br/&gt;&amp;gt;   they can always fall under a target threshold.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Looking forward to discussing further in the upcoming call!&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Best,&lt;br/&gt;&amp;gt; Carla and Clara&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [1] &lt;a href=&#34;https://gist.github.com/carlaKC/be820bb638624253f3ae7b39dbd0e343&#34;&gt;https://gist.github.com/carlaKC/be820bb638624253f3ae7b39dbd0e343&lt;/a&gt;&lt;br/&gt;&amp;gt; [2] &lt;a href=&#34;https://github.com/lightning/bolts/pull/1071&#34;&gt;https://github.com/lightning/bolts/pull/1071&lt;/a&gt;&lt;br/&gt;&amp;gt; [3] &lt;a href=&#34;https://github.com/lightningequipment/circuitbreaker&#34;&gt;https://github.com/lightningequipment/circuitbreaker&lt;/a&gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230506/40daccce/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230506/40daccce/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:08:47Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsw0fz6gt5gt2jmq60yvtnj9u83pfr6568zszj2lp5cnwrjtgl4d4gzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24z4qvsvx</id>
    
      <title type="html">📅 Original date posted:2023-05-10 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsw0fz6gt5gt2jmq60yvtnj9u83pfr6568zszj2lp5cnwrjtgl4d4gzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24z4qvsvx" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsgzns6y4llsw7lt45q4xmpvlgaeujqu64ptqfcyvs9wylf9phn8fquckw8z&#39;&gt;nevent1q…kw8z&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-05-10&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Tony,&lt;br/&gt;&lt;br/&gt;&amp;gt; Is there a better place to have public communication? Unfortunately since&lt;br/&gt;one off topic email was sent here, it&amp;#39;s been a ghost town. It appears that&lt;br/&gt;there&amp;#39;s many emails being held and only one moderator that checks them once&lt;br/&gt;a week.&lt;br/&gt;&lt;br/&gt;As I think you&amp;#39;re referring to my post of March 21th and as the author of&lt;br/&gt;this post, I&amp;#39;ll politely refuse the qualification of &amp;#34;off-topic&amp;#34;. I had and&lt;br/&gt;I still have the concerns of &amp;#34;frivolous legal claims&amp;#34; being used between&lt;br/&gt;bitcoin developers/organizations provoking a distortion of the neutrality&lt;br/&gt;of the development and a chilling effect of the technical discussions (i.e&lt;br/&gt;code we compile and spec we implement). For those reasons, it was my legal&lt;br/&gt;right and moral duty to inform the community of what is happening between&lt;br/&gt;Chaincode and myself. And here I&amp;#39;m following the recommendation of one of&lt;br/&gt;the moderators of the Lightning mailing list himself &amp;#34;If this worries you&lt;br/&gt;too, let&amp;#39;s make sure we keep each other honest, OK?&amp;#34; [0].&lt;br/&gt;&lt;br/&gt;When you think a group of people with open-source responsibilities are in a&lt;br/&gt;situation of conflict of interests or &amp;#34;moral hazards&amp;#34;, or even the&lt;br/&gt;appearance of them, you have the right to expose the wrongdoing, including&lt;br/&gt;the _proportional_ revelation of private elements. People have done the&lt;br/&gt;&amp;#34;free choice&amp;#34; to conduct a career in open-source, for some even declaring&lt;br/&gt;in some context to maintain integrity and accept their actions to be&lt;br/&gt;submitted to external accountability [1]. While the exposure of private&lt;br/&gt;elements of public personalities might break common courtesy, it&amp;#39;s a&lt;br/&gt;morally valid practice if you&amp;#39;re familiar with the public institutions of&lt;br/&gt;US and Europe, and I think this practice has found validity in the history&lt;br/&gt;of open-source commons or IETF&amp;#39;s protocol development [1].&lt;br/&gt;&lt;br/&gt;Beyond, the Bitcoin and Lightning development communication channels&lt;br/&gt;constitute a public forum, where by nature the participants are exchanging&lt;br/&gt;ideas and defending competing interests. In consequence, the participants&amp;#39;&lt;br/&gt;rights and capabilities to contribute and speak their minds in those&lt;br/&gt;communication channels should be protected. Those communication channels&lt;br/&gt;are not your usual corporate workplace, and in case of conflicting&lt;br/&gt;principles, the maintainers of those communication channels should ensure a&lt;br/&gt;balance of rights and a proportionality in any restraining measure.&lt;br/&gt;&lt;br/&gt;And this new post is not to exonerate myself of any legal responsibility&lt;br/&gt;for personal matters that could be recognized as the outcome of a judicial&lt;br/&gt;process, respective of both rights of the accusation and rights of the&lt;br/&gt;defense. Rather to enlighten the Bitcoin community that the formal&lt;br/&gt;separation between private matters and open-source responsibilities, and&lt;br/&gt;the adequate check-and-balances to guarantee this separation is somehow&lt;br/&gt;what are the underlying stakes for this feud between Chaincode and myself,&lt;br/&gt;from my perspective. I can say missing an open-source engineering meeting&lt;br/&gt;or being revoked a few Github permissions matters far less than the clear&lt;br/&gt;affirmation and respect of the freedom of expression, the presumption of&lt;br/&gt;innocence and due process in the Bitcoin common space, all proportions&lt;br/&gt;conserved.&lt;br/&gt;&lt;br/&gt;I don&amp;#39;t blame any party involved in this issue, nor assign &amp;#34;bad&lt;br/&gt;intentions&amp;#39;&amp;#39;. One position is really a function of your life experiences,&lt;br/&gt;knowledge of the legal and cultural framework and access to the factual&lt;br/&gt;elements. As all human conflicts it is not binary rather &amp;#34;grey&amp;#34;. People can&lt;br/&gt;be top executives at a billion-dollar company, having successful ventures&lt;br/&gt;with hundreds of folks under management, or have a lot of responsibilities&lt;br/&gt;for their relative young age, and still disagree on the set of legal and&lt;br/&gt;moral principles to apply in the present case.&lt;br/&gt;&lt;br/&gt;Finally, thanks to the Bitcoin friends who have reached out to call for&lt;br/&gt;level-headedness and cool-mindness in the public discussion of this complex&lt;br/&gt;topic. Like I said to them, in the lack of more suspected wrongdoing from&lt;br/&gt;the other side, I won&amp;#39;t communicate further on this subject on the Bitcoin&lt;br/&gt;and Lightning technical channels. However I still firmly believe the&lt;br/&gt;discussion on the principles, abstract in the maximum from its private&lt;br/&gt;elements, should still be pursued on other channels. Independently, there&lt;br/&gt;is a legal channel opened between Chaincode and myself and good progress is&lt;br/&gt;made to find a serene and long-standing resolution to this issue.&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;[0]&lt;br/&gt;&lt;a href=&#34;https://rusty-lightning.medium.com/the-corrosion-of-ethics-in-cryptocurrencies-f7ba77e9dfc3&#34;&gt;https://rusty-lightning.medium.com/the-corrosion-of-ethics-in-cryptocurrencies-f7ba77e9dfc3&lt;/a&gt;&lt;br/&gt;[1]&lt;br/&gt;&lt;a href=&#34;https://github.com/btrustteam/board-book/blob/main/vision/genesis_principles.md&#34;&gt;https://github.com/btrustteam/board-book/blob/main/vision/genesis_principles.md&lt;/a&gt;&lt;br/&gt;[2]&lt;br/&gt;&lt;a href=&#34;https://www.ietf.org/about/administration/policies-procedures/conflict-interest/&#34;&gt;https://www.ietf.org/about/administration/policies-procedures/conflict-interest/&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Le lun. 8 mai 2023 à 21:26, Tony Giorgio via Lightning-dev &amp;lt;&lt;br/&gt;lightning-dev at lists.linuxfoundation.org&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Is there a better place to have public communication? Unfortunately since&lt;br/&gt;&amp;gt; one off topic email was sent here, it&amp;#39;s been a ghost town. It appears that&lt;br/&gt;&amp;gt; there&amp;#39;s many emails being held and only one moderator that checks them once&lt;br/&gt;&amp;gt; a week.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Would hate to see this list die but wondering if there&amp;#39;s a better place&lt;br/&gt;&amp;gt; for discussions?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Tony&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; -------- Original Message --------&lt;br/&gt;&amp;gt; On Apr 29, 2023, 9:57 PM, niftynei &amp;lt; niftynei at gmail.com&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Hi all,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; When I joined the lightning community a few years ago, I was relatively&lt;br/&gt;&amp;gt; new to open source software and specification work. Rusty really impressed&lt;br/&gt;&amp;gt; on me on the importance of holding conversations, as much as possible in&lt;br/&gt;&amp;gt; public.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Practically speaking, this encompasses IRC, this mailing list, and github&lt;br/&gt;&amp;gt; issues/PRs.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The reason for this is twofold.  It helps document the range of options&lt;br/&gt;&amp;gt; considered for technical decisions and it provides an interface point for&lt;br/&gt;&amp;gt; new participants to contribute to the discussion.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Given some recent mails that were posted to this list, now seems like a&lt;br/&gt;&amp;gt; good time to reiterate the importance and preference of public&lt;br/&gt;&amp;gt; communication whenever possible, especially for specification or technical&lt;br/&gt;&amp;gt; discussions.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ~ nifty&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230510/1f0f9268/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230510/1f0f9268/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:08:38Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsdug8f62etygjhehvy4qzpk0kf2shru3c0t7kqap09npawl4uhrjgzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zg5c0tx</id>
    
      <title type="html">📅 Original date posted:2023-04-03 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsdug8f62etygjhehvy4qzpk0kf2shru3c0t7kqap09npawl4uhrjgzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zg5c0tx" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsx7s9xvgqpn2jyk87ywmrgp9ctcektsx5h6lxvsf2nwcwy36vn92cyq3n5m&#39;&gt;nevent1q…3n5m&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-04-03&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Bastien,&lt;br/&gt;&lt;br/&gt;Thanks for the update on the state of splicing.&lt;br/&gt;&lt;br/&gt;&amp;gt; We&amp;#39;ve also discovered that implementing 0-conf splicing is tricky: you&lt;br/&gt;&amp;gt; need to be very careful about scenarios where your peer force-closes&lt;br/&gt;&amp;gt; using an *inactive* commitment that ends up double-spending what you&lt;br/&gt;&amp;gt; think is the only *active* commitment but is unconfirmed. We&amp;#39;d be happy&lt;br/&gt;&amp;gt; to discuss that in more details with other implementers to reduce the&lt;br/&gt;&amp;gt; risk of introducing new vulnerabilities when shipping that feature.&lt;br/&gt;&lt;br/&gt;I think halting 0-conf splicing is pretty easy for a counterparty by&lt;br/&gt;abusing Bitcoin Core mempool replacement rule #5 on the maximum number of&lt;br/&gt;original transactions replaced.&lt;br/&gt;&lt;br/&gt;Let&amp;#39;s say you have Alice with 10% of the channel capacity as a balance in&lt;br/&gt;the &amp;#34;inactive&amp;#34; commitment and the 90% remaining in favor of Bob. Bob has&lt;br/&gt;initiated a splice out of 70% of the channel capacity. On the interactive&lt;br/&gt;transaction, Alice adds 4 unrelated confirmed inputs and then broadcasts 4&lt;br/&gt;chains of 25 unconfirmed transactions from those inputs.&lt;br/&gt;&lt;br/&gt;When Bob broadcasts the splice-out, it should be rejected by the network&lt;br/&gt;mempools on the grounds of RBF rule #5, whatever the absolute fee and&lt;br/&gt;feerate. So the &amp;#34;0-conf&amp;#34; splicing might be maintained under risk of&lt;br/&gt;double-spend by your counterparty for a while.&lt;br/&gt;&lt;br/&gt;It sounds like Bob&amp;#39;s splice out funds should be segregated until the&lt;br/&gt;corresponding &amp;#34;active commitment&amp;#34; is confirmed, i.e no use to fund another&lt;br/&gt;channel,&lt;br/&gt;with inbound/outbound HTLC flows.&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;Le lun. 3 avr. 2023 à 00:25, Bastien TEINTURIER &amp;lt;bastien at acinq.fr&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Good morning list,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; As some of you may know, we&amp;#39;ve been hard at work experimenting with&lt;br/&gt;&amp;gt; splicing [1]. Splicing is a complex feature with a large design space.&lt;br/&gt;&amp;gt; It was interesting to iterate on two separate implementations (eclair&lt;br/&gt;&amp;gt; and cln) and discover the pain points, edge cases and things that could&lt;br/&gt;&amp;gt; be improved in the protocol specification.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; After a few months trying out different approaches, we&amp;#39;d like to share&lt;br/&gt;&amp;gt; changes that we believe make the splicing protocol simpler and more&lt;br/&gt;&amp;gt; robust.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; We call &amp;#34;active commitments&amp;#34; the set of valid commitment transactions to&lt;br/&gt;&amp;gt; which updates must be applied. While one (or more) splices are ongoing,&lt;br/&gt;&amp;gt; there is more than one active commitment. When signing updates, we send&lt;br/&gt;&amp;gt; one `commitment_signed` message per active commitment. We send those&lt;br/&gt;&amp;gt; messages in the order in which the corresponding funding transactions&lt;br/&gt;&amp;gt; have been created, which lets the receiver implicitly match every&lt;br/&gt;&amp;gt; `commitment_signed` to their respective funding transaction.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Once we&amp;#39;ve negotiated a new splice and reached the signing steps of the&lt;br/&gt;&amp;gt; interactive-tx protocol, we send a single `commitment_signed` for that&lt;br/&gt;&amp;gt; new commitment. We don&amp;#39;t revoke the previous commitment(s), as this adds&lt;br/&gt;&amp;gt; an unnecessary step. Conceptually, we&amp;#39;re simply adding a new commitment&lt;br/&gt;&amp;gt; to our active commitments set.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A sample flow will look like this:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;    Alice                           Bob&lt;br/&gt;&amp;gt;      |             stfu             |&lt;br/&gt;&amp;gt;      |-----------------------------&amp;gt;|&lt;br/&gt;&amp;gt;      |             stfu             |&lt;br/&gt;&amp;gt;      |&amp;lt;-----------------------------|&lt;br/&gt;&amp;gt;      |          splice_init         |&lt;br/&gt;&amp;gt;      |-----------------------------&amp;gt;|&lt;br/&gt;&amp;gt;      |          splice_ack          |&lt;br/&gt;&amp;gt;      |&amp;lt;-----------------------------|&lt;br/&gt;&amp;gt;      |                              |&lt;br/&gt;&amp;gt;      |       &amp;lt;interactive-tx&amp;gt;       |&lt;br/&gt;&amp;gt;      |&amp;lt;----------------------------&amp;gt;|&lt;br/&gt;&amp;gt;      |                              |&lt;br/&gt;&amp;gt;      |         tx_complete          |&lt;br/&gt;&amp;gt;      |-----------------------------&amp;gt;|&lt;br/&gt;&amp;gt;      |         tx_complete          |&lt;br/&gt;&amp;gt;      |&amp;lt;-----------------------------|&lt;br/&gt;&amp;gt;      |         commit_sig           | Sign the new commitment.&lt;br/&gt;&amp;gt;      |-----------------------------&amp;gt;|&lt;br/&gt;&amp;gt;      |         commit_sig           | Sign the new commitment.&lt;br/&gt;&amp;gt;      |&amp;lt;-----------------------------|&lt;br/&gt;&amp;gt;      |        tx_signatures         |&lt;br/&gt;&amp;gt;      |-----------------------------&amp;gt;|&lt;br/&gt;&amp;gt;      |        tx_signatures         |&lt;br/&gt;&amp;gt;      |&amp;lt;-----------------------------|&lt;br/&gt;&amp;gt;      |                              |&lt;br/&gt;&amp;gt;      |       update_add_htlc        | Alice and Bob use the channel while&lt;br/&gt;&amp;gt; the splice transaction is unconfirmed.&lt;br/&gt;&amp;gt;      |-----------------------------&amp;gt;|&lt;br/&gt;&amp;gt;      |       update_add_htlc        |&lt;br/&gt;&amp;gt;      |-----------------------------&amp;gt;|&lt;br/&gt;&amp;gt;      |         commit_sig           | Sign the old commitment.&lt;br/&gt;&amp;gt;      |-----------------------------&amp;gt;|&lt;br/&gt;&amp;gt;      |         commit_sig           | Sign the new commitment.&lt;br/&gt;&amp;gt;      |-----------------------------&amp;gt;|&lt;br/&gt;&amp;gt;      |       revoke_and_ack         |&lt;br/&gt;&amp;gt;      |&amp;lt;-----------------------------|&lt;br/&gt;&amp;gt;      |         commit_sig           | Sign the old commitment.&lt;br/&gt;&amp;gt;      |&amp;lt;-----------------------------|&lt;br/&gt;&amp;gt;      |         commit_sig           | Sign the new commitment.&lt;br/&gt;&amp;gt;      |&amp;lt;-----------------------------|&lt;br/&gt;&amp;gt;      |       revoke_and_ack         |&lt;br/&gt;&amp;gt;      |-----------------------------&amp;gt;|&lt;br/&gt;&amp;gt;      |                              |&lt;br/&gt;&amp;gt;      |        splice_locked         | The splice transaction confirms.&lt;br/&gt;&amp;gt;      |-----------------------------&amp;gt;|&lt;br/&gt;&amp;gt;      |        splice_locked         |&lt;br/&gt;&amp;gt;      |&amp;lt;-----------------------------|&lt;br/&gt;&amp;gt;      |                              |&lt;br/&gt;&amp;gt;      |       update_add_htlc        | Alice and Bob can use the channel&lt;br/&gt;&amp;gt; and forget the old commitment.&lt;br/&gt;&amp;gt;      |-----------------------------&amp;gt;|&lt;br/&gt;&amp;gt;      |         commit_sig           | Sign the new commitment.&lt;br/&gt;&amp;gt;      |-----------------------------&amp;gt;|&lt;br/&gt;&amp;gt;      |       revoke_and_ack         |&lt;br/&gt;&amp;gt;      |&amp;lt;-----------------------------|&lt;br/&gt;&amp;gt;      |         commit_sig           | Sign the new commitment.&lt;br/&gt;&amp;gt;      |&amp;lt;-----------------------------|&lt;br/&gt;&amp;gt;      |       revoke_and_ack         |&lt;br/&gt;&amp;gt;      |-----------------------------&amp;gt;|&lt;br/&gt;&amp;gt;      |                              |&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; You can find many more details and sample flows in [2].&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; We require nodes to store data about the funding transaction as soon as&lt;br/&gt;&amp;gt; they send their `commitment_signed` message. This lets us handle every&lt;br/&gt;&amp;gt; disconnection scenario safely, allowing us to either resume the signing&lt;br/&gt;&amp;gt; steps on reconnection or forget the funding attempt. This is important&lt;br/&gt;&amp;gt; because if peers disagree on the set of active commitments, this will&lt;br/&gt;&amp;gt; lead to a force-close. In order to achieve that, we only need to add&lt;br/&gt;&amp;gt; the `next_funding_txid` to the `channel_reestablish` message, and fill&lt;br/&gt;&amp;gt; it when we&amp;#39;re missing signatures from our peer. Again, you can find more&lt;br/&gt;&amp;gt; details and sample flows in [2].&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Finally, after trying various approaches, we believe that the funding&lt;br/&gt;&amp;gt; amounts that peer exchange in `splice_init` and `splice_ack` should be&lt;br/&gt;&amp;gt; relative amounts based on each peer&amp;#39;s current channel balance.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If Alice sends `funding_amount = 200_000 sats`, it means she will be&lt;br/&gt;&amp;gt; adding 200 000 sats to the channel&amp;#39;s capacity (splice-in).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If she sends `funding_amount = -50_000 sats`, it means she will be&lt;br/&gt;&amp;gt; removing 50 000 sats from the channel&amp;#39;s capacity (splice-out).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This makes it easier to compute the new channel balances (otherwise we&lt;br/&gt;&amp;gt; have to deal with millisatoshi to satoshi truncation) and better matches&lt;br/&gt;&amp;gt; the UX that node operators are expecting, which means there is less need&lt;br/&gt;&amp;gt; to glue code between the RPC exposed to the node operator and the actual&lt;br/&gt;&amp;gt; underlying protocol.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; We&amp;#39;ve also discovered that implementing 0-conf splicing is tricky: you&lt;br/&gt;&amp;gt; need to be very careful about scenarios where your peer force-closes&lt;br/&gt;&amp;gt; using an *inactive* commitment that ends up double-spending what you&lt;br/&gt;&amp;gt; think is the only *active* commitment but is unconfirmed. We&amp;#39;d be happy&lt;br/&gt;&amp;gt; to discuss that in more details with other implementers to reduce the&lt;br/&gt;&amp;gt; risk of introducing new vulnerabilities when shipping that feature.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; Bastien&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [1] &lt;a href=&#34;https://github.com/lightning/bolts/pull/863&#34;&gt;https://github.com/lightning/bolts/pull/863&lt;/a&gt;&lt;br/&gt;&amp;gt; [2] &lt;a href=&#34;https://gist.github.com/t-bast/1ac31f4e27734a10c5b9847d06db8d86&#34;&gt;https://gist.github.com/t-bast/1ac31f4e27734a10c5b9847d06db8d86&lt;/a&gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230403/ef027b9b/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230403/ef027b9b/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:08:29Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsycvq0nruqetx0atzdhph2e3cznx2xfdprxfgns3ylh4ayalvpp8czypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24znrtujy</id>
    
      <title type="html">📅 Original date posted:2023-03-21 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsycvq0nruqetx0atzdhph2e3cznx2xfdprxfgns3ylh4ayalvpp8czypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24znrtujy" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqspkdj26ddgmrh08a5muxuzzsstps59e5yzmfxwa78rp6v8w9snz5gu7g3x7&#39;&gt;nevent1q…g3x7&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-03-21&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi all,&lt;br/&gt;&lt;br/&gt;Last Tuesday 14th March, I did receive a letter from the law firm so-called&lt;br/&gt;Jackson Lewis saying they represent Chaincode Labs about the subject of&lt;br/&gt;&amp;#34;improper communications&amp;#34;. Being a long-time Bitcoin developer and knowing&lt;br/&gt;well of Chaincode Labs, I&amp;#39;ve been and I&amp;#39;m still very confused about this&lt;br/&gt;letter&amp;#39;s authenticity.&lt;br/&gt;&lt;br/&gt;The letter is available here under MIT license:&lt;br/&gt;&lt;a href=&#34;https://github.com/ariard/chaincode-improper-communications&#34;&gt;https://github.com/ariard/chaincode-improper-communications&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;The sentences inside are quite unclear to me, especially not being an&lt;br/&gt;English native. They say that I have to halt &amp;#34;all improper and&lt;br/&gt;inappropriate communications with certain Chaincode employees&amp;#34;. In the&lt;br/&gt;past, I did find bugs and other issues in Bitcoin Core Github PRs of some&lt;br/&gt;Chaincode folks, so I don&amp;#39;t know if saying the code might be broken under&lt;br/&gt;&amp;#34;inappropriate communications&amp;#34;. They add &amp;#34;You agreed to do so&amp;#34; without&lt;br/&gt;presenting old-school paperwork signatures or cryptographic ones or OTS&lt;br/&gt;proofs of archived content, so it&amp;#39;s a bit hard to know what to answer on.&lt;br/&gt;Beyond that, they say I would have sent &amp;#34;unsolicited emails&amp;#34; to Chaincode&lt;br/&gt;employees in February 2023. For sure, I&amp;#39;ve sent mails on the usual mailing&lt;br/&gt;lists to which a lot of folks are contributing to. And some of those mails&lt;br/&gt;were pointing to bitcoin technical shortcomings that might piss off people,&lt;br/&gt;as always.&lt;br/&gt;&lt;br/&gt;Then, they say my &amp;#34;conduct was improper &amp;#39;&amp;#39; without pointing to a precise&lt;br/&gt;FOSS code of conduct. The thing is we don&amp;#39;t have a code of conduct in&lt;br/&gt;Bitcoin Core as there are a lot of legal uncertainties (from the recent&lt;br/&gt;inquiry of Chaincode Labs itself iirc). The restraint on communications&lt;br/&gt;tells nothing if it&amp;#39;s scoping the confidential report of security flaws to&lt;br/&gt;selected parties (among them potentially Chaincode folks), in order to&lt;br/&gt;mitigate upcoming jeopardy of Bitcoin funds. Finally, the &amp;#34;any and all&lt;br/&gt;legal actions&amp;#34; doesn&amp;#39;t say if those actions can target open-source&lt;br/&gt;communities and projects I might be involved with (like we&amp;#39;re seeing Tari&lt;br/&gt;Labs doing &amp;#34;legal actions&amp;#34; against LL and therefore impacting the wider&lt;br/&gt;non-LL Taro community).&lt;br/&gt;&lt;br/&gt;There are 2 more troubling issues. One, the title of the letter &amp;#34;Chaincode&lt;br/&gt;Labs - Cease &amp;amp; Desist Letter to Antione Riard&amp;#34;. I really received it like&lt;br/&gt;this and checked the typo multiple times. I think my name is Antoine Riard,&lt;br/&gt;I&amp;#39;ve to verify but I think so. So I don&amp;#39;t know if the letter is legally&lt;br/&gt;valid. Second, the lawyer issuing the letter sounds to be one specialist in&lt;br/&gt;labor law, not really cryptocurrencies and FOSS software.&lt;br/&gt;&lt;br/&gt;In the lack of sound legal advice on my side, I would say the default would&lt;br/&gt;be to reach out to the Bitcoin Legal Defense Fund, which from my&lt;br/&gt;understanding sounds to have a mission to provide guidance to developers&lt;br/&gt;receiving legal intimidations in the pursuit of their open-source&lt;br/&gt;activities. The thing is the Bitcoin Legal Defense Fund is run by Chaincode&lt;br/&gt;Labs among others, so I wouldn&amp;#39;t know if I could ask them for advice on an&lt;br/&gt;issue at first sight involving them. Sounds a weird catch 22.&lt;br/&gt;&lt;br/&gt;By advance my apologies to Chaincode Labs if I&amp;#39;m sharing a forgery or&lt;br/&gt;non-authenticated document assigned to their organization. I believe in the&lt;br/&gt;cases involving Tulip Trading Lawsuit there has been doubt on the quality&lt;br/&gt;of the document produced, so a fool sending forgeries to developers to&lt;br/&gt;throw confusion among the community is not to exclude. In anycase, I&lt;br/&gt;believe it&amp;#39;s better to seek community feedback on what to do about this&lt;br/&gt;letter (and as such ccing all the lists!).&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Antoine&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230321/664f3420/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230321/664f3420/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:08:21Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqszy45m0nwkuy0uf3rhy3p3n7v674m9kpd74pgldwejjkgjxrzqfzqzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zqwe07q</id>
    
      <title type="html">📅 Original date posted:2023-03-06 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqszy45m0nwkuy0uf3rhy3p3n7v674m9kpd74pgldwejjkgjxrzqfzqzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zqwe07q" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsyjhp3hkntp2fk8xr2ddufpmjq3475amfuy4ccllxgej3myrvgyvgfsggky&#39;&gt;nevent1q…ggky&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-03-06&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi all,&lt;br/&gt;&lt;br/&gt;My understanding of the local reputation channel is the following, when Bob&lt;br/&gt;receives a HTLC forwarding request from Alice to Caroll:&lt;br/&gt;- if Alice has reputation of 1 and Alice endorses the transaction, Bob&lt;br/&gt;forwards and endorses the HTLC to Caroll&lt;br/&gt;- else if the HTLC amount is under the available outbound liquidity quota&lt;br/&gt;assigned to Alice and available outbound slots assigned to Alice, Bob&lt;br/&gt;forwards the HTLC to Caroll and reduce available outbound liquidity/slots&lt;br/&gt;assigned to Alice&lt;br/&gt;- else the HTLC is rejected&lt;br/&gt;&lt;br/&gt;This is unclear on which criterias the endorsement decision is made (e.g&lt;br/&gt;CLTV expiry delta, odds of settlement, ongoing congestion of outbound&lt;br/&gt;channels ?). Additionally, this is unclear how the available&lt;br/&gt;liquidity/slots on a given outbound channel are initially distributed&lt;br/&gt;between all the inbound channels (e.g proportional to the capacity) and how&lt;br/&gt;they&amp;#39;re balanced once the inbound channels start to accumulate reputation.&lt;br/&gt;&lt;br/&gt;I don&amp;#39;t know if this local reputation scheme precises how reputation is&lt;br/&gt;slashed in case of HTLC failure, and if any &amp;#34;grace&amp;#34; amount/rate is granted&lt;br/&gt;to the inbound channel counterparty, e.g Alice.&lt;br/&gt;&lt;br/&gt;Independently of those considerations, I think this local reputation scheme&lt;br/&gt;might suffer from exploitable reputation asymmetries by a jamming adversary.&lt;br/&gt;Let&amp;#39;s say you have the topology:&lt;br/&gt;&lt;br/&gt;Alice - Bob - Caroll - Dave&lt;br/&gt;&lt;br/&gt;Alice accumulated a reputation of 1 towards Bob and same for Bob towards&lt;br/&gt;Caroll. As `fee_base_msat` Bob picked up 1000 msat and Caroll picked up&lt;br/&gt;2000 msat. If Alice forwards a HTLC to Bob and it is endorsed by him before&lt;br/&gt;relay to Caroll, Alice can now inflict a 50 sat damage to Caroll, while&lt;br/&gt;only encumbering the lower-priced reputational cost towards Bob.&lt;br/&gt;&lt;br/&gt;This concern could hold in case of asymmetries arising from the dynamic&lt;br/&gt;adjustment of routing fees during an evaluated period of time. E.g both Bob&lt;br/&gt;and Caroll requires routing fees of 1000 msat. Alice builds up a reputation&lt;br/&gt;of 1 towards Bob during this period N. At period N&#43;1, Caroll bumps her&lt;br/&gt;routing fees to 2000 msat. From now on, Alice can exploit this asymmetry.&lt;br/&gt;&lt;br/&gt;While I think this deficiency could be fixed by ensuring a proportionality&lt;br/&gt;of the reputation acquisition cost between the inbound channels and the&lt;br/&gt;cost requested by a counterparty on an outbound channel, I believe this&lt;br/&gt;would come with the downside that any update in reputation cost should be&lt;br/&gt;recursively applied to the downstream links (i.e Bob on Alice channel,&lt;br/&gt;Alice on neighbouring inbound channels, etc).&lt;br/&gt;&lt;br/&gt;Apart of this reputation asymmetry concern, I think the local reputation&lt;br/&gt;scheme could suffer from spontaneous jamming by &amp;#34;honest&amp;#34; long-term held&lt;br/&gt;packets (e.g CLTV delta=2 weeks), where even if Alice is not scored to 1 by&lt;br/&gt;Bob, she always settles her long-term held packets. However, those packets&lt;br/&gt;are yielding less routing fees to Bob than let&amp;#39;s say 14 HTLC packets of&lt;br/&gt;CLTV delta = 1 day.&lt;br/&gt;&lt;br/&gt;Finally, the dynamic reduction of the available outbound liquidity/slots in&lt;br/&gt;the occurrence of reputation=0 counterparty&amp;#39;s HTLC being only known at the&lt;br/&gt;link-level could break the expectations of the HTLC senders scoring&lt;br/&gt;algorithms. E.g, being connected to Alice might have probed through another&lt;br/&gt;path the available liquidity on the link Bob-Caroll. This Eve&amp;#39;s probe is&lt;br/&gt;falsified by any reduction done by Caroll towards Bob, and therefore Eve&amp;#39;s&lt;br/&gt;payment reliability is likely to be downgraded.&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;Le jeu. 16 févr. 2023 à 21:29, Clara Shikhelman &amp;lt;clara.shikhelman at gmail.com&amp;gt;&lt;br/&gt;a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi List,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; We’re writing to seek early feedback on a draft for a neighbour reputation&lt;br/&gt;&amp;gt; setting recommendation as a jamming mitigation. The main idea is that&lt;br/&gt;&amp;gt; allowing full access to liquidity and slots in a channel can result in&lt;br/&gt;&amp;gt; jamming. To prevent this, we allow full access only to neighbours that&lt;br/&gt;&amp;gt; forward HTLC that resolve quickly and generate more profit than the damage&lt;br/&gt;&amp;gt; they can potentially create.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The full suggested jamming mitigation solution includes upfront fees&lt;br/&gt;&amp;gt; together with reputation, see [1] for details.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In the previous episodes:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; As presented here [1], we suggest a two part jamming mitigation strategy.&lt;br/&gt;&amp;gt; Reputation-based forwarding is aimed to solve “slow jamming”, where the&lt;br/&gt;&amp;gt; jamming transaction takes a long time to resolve.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The main idea is that each node gives a binary reputation to its&lt;br/&gt;&amp;gt; neighbour. Each channel has a quota of liquidity and slots (say 50% of the&lt;br/&gt;&amp;gt; channel size and 50% of the slots in the channel) dedicated to transactions&lt;br/&gt;&amp;gt; coming from neighbours with reputation 0, or for transactions coming from&lt;br/&gt;&amp;gt; neighbours with reputation 1 that were not endorsed by the neighbour.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; For example, when Alice asks Bob to forward to Charlie then:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If (Alice has reputation 1 with Bob) and (Alice endorses transaction):&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Forward and endorse&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Else:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If (amount &amp;lt; available liquidity quota) and (available slots in quota&amp;gt;0):&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Forward HTLC without endorsing&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Reduce available liquidity and slots&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Else:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Reject&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Reputation:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The question we discuss here is how does Alice gain “good” reputation&lt;br/&gt;&amp;gt; (i.e., a score of 1). Alice starts at 0, and she gains and keeps her good&lt;br/&gt;&amp;gt; reputation of 1 by continuously paying more fees to Bob than the damage she&lt;br/&gt;&amp;gt; can inflict.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The 3 main parameters for reputation that each node operator picks are S,L&lt;br/&gt;&amp;gt; and M. Our recommendations are as follows:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;    -&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;    S should be chosen as the maximum time an HTLC can be unresolved in&lt;br/&gt;&amp;gt;    any of Bob’s channels.&lt;br/&gt;&amp;gt;    -&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;    M is the revenue generated by Bob’s node in the time S, representing&lt;br/&gt;&amp;gt;    the damage Alice could inflict.&lt;br/&gt;&amp;gt;    -&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;    L is the time in which Alice should generate M revenue for Bob for her&lt;br/&gt;&amp;gt;    to have a good reputation of 1. We suggest L=10S.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Alice has reputation 1 if, in the last L seconds, she has forwarded&lt;br/&gt;&amp;gt; payments that generated M satoshi in fees.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; As an example:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;    -&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;    Bob has a maximum CLTV delta of 2 weeks [2]&lt;br/&gt;&amp;gt;    -&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;    Over the last 2 weeks, he has earned 0.5 BTC in routing fees&lt;br/&gt;&amp;gt;    -&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;    Alice will be considered to have good reputation if she has forwarded&lt;br/&gt;&amp;gt;    0.5 BTC of routing revenue to Bob over the last 20 weeks&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Formally:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Let t be the current time, and let S and L be constants.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; M is calculated to be the revenue of Bob in time [t-S,t]. The revenue of&lt;br/&gt;&amp;gt; Bob is the sum of fees from transactions forwarded by any neighbour besides&lt;br/&gt;&amp;gt; Alice &#43; any payments received by Bob. Note that Bob can choose to also take&lt;br/&gt;&amp;gt; into account utility gained from sending payments or anything of value to&lt;br/&gt;&amp;gt; the node operator.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Alice has reputation 1 if in the time [t-L,t] she has forwarded HTLCs&lt;br/&gt;&amp;gt; that paid M in normalized fees.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; We normalize fees by resolution time to reward payments that resolve&lt;br/&gt;&amp;gt; quickly and discount slow resolving payments. Here we assume 10 seconds is&lt;br/&gt;&amp;gt; the “normal” resolution time, this number can be bikesheded, and we round&lt;br/&gt;&amp;gt; up to avoid penalizing transactions resolved quicker than the “normal”.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The fee from a single transaction is normalized by the time it took for&lt;br/&gt;&amp;gt; the HTLC to resolve, counted in slots of 10 seconds. That is:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Normalized_fee = (fee)/[ceiling(time_to_resolve/10s)]&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Some notes&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;    1.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;    The reputation management happens locally, that is, the only protocol&lt;br/&gt;&amp;gt;    change needed is the ability to signal endorsement as a TLV in&lt;br/&gt;&amp;gt;    UpdateAddHTLC. The various parameters can be selected for various risk&lt;br/&gt;&amp;gt;    preferences.&lt;br/&gt;&amp;gt;    2.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;    We currently suggest a binary reputation for simplicity. Having&lt;br/&gt;&amp;gt;    several buckets could be interesting to study, yet we don’t think that the&lt;br/&gt;&amp;gt;    complexity and the possible privacy issues are worth the potential benefits.&lt;br/&gt;&amp;gt;    3.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;    For most use cases, having reputation 0 is more than enough. If we&lt;br/&gt;&amp;gt;    send and receive transactions at a low rate, we usually don’t need the full&lt;br/&gt;&amp;gt;    liquidity and slots available in a channel. Reputation mostly comes into&lt;br/&gt;&amp;gt;    play only when a channel is under attack, and then not all transaction are&lt;br/&gt;&amp;gt;    allowed to go through.&lt;br/&gt;&amp;gt;    4.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;    Following this thread [3]: it is important to note that we are only&lt;br/&gt;&amp;gt;    giving reputation to our direct neighbours. An advantage of this is that we&lt;br/&gt;&amp;gt;    have repeated interactions with them. In practice, this is also the only&lt;br/&gt;&amp;gt;    clean data we have to use when deciding whether to forward an HTLC or not.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Best,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Carla and Clara&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [1]&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-November/003740.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-November/003740.html&lt;/a&gt;&lt;br/&gt;&amp;gt; [2]&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/lightningnetwork/lnd/blob/de94a4ea5e81799330a72dfde111817b38565d99/htlcswitch/link.go#L51&#34;&gt;https://github.com/lightningnetwork/lnd/blob/de94a4ea5e81799330a72dfde111817b38565d99/htlcswitch/link.go#L51&lt;/a&gt;&lt;br/&gt;&amp;gt; [3]&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2023-February/003842.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2023-February/003842.html&lt;/a&gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230306/d19448db/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230306/d19448db/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:08:18Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsfk9kkt523qk85l5tcwauq2m2gxtvr7keet9nzfx38cakz2xh5l3szypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24z6hwlt3</id>
    
      <title type="html">📅 Original date posted:2023-03-01 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsfk9kkt523qk85l5tcwauq2m2gxtvr7keet9nzfx38cakz2xh5l3szypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24z6hwlt3" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsp69u4en27kgtkdk3mqhzj2drl546966etx6q0hjphrc6n2ar6w2scezjwl&#39;&gt;nevent1q…zjwl&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-03-01&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Val,&lt;br/&gt;&lt;br/&gt;Thanks for the proposal here. About using OM for payment probing, I think&lt;br/&gt;there could be an alternative of the routing hops themselves announcing&lt;br/&gt;their liquidity balances with an extension or new set of gossip messages.&lt;br/&gt;&lt;br/&gt;Gossips messages could commit to a liquidity balance and duration&lt;br/&gt;(e.g &#43;1000 blocks from tip), rather relying on sender-side probing, which&lt;br/&gt;might be less and less accurate with higher rate of network liquidity&lt;br/&gt;congestion. Additionally, a routing hop could commit to &amp;#34;private&amp;#34; gossip&lt;br/&gt;sent back to HTLC senders during HTLC successful settlement. Those&lt;br/&gt;&amp;#34;private&amp;#34; gossip might announce &amp;#34;differentiated services&amp;#34; of channel&lt;br/&gt;liquidity levels. I believe this can be guaranteed transparently from the&lt;br/&gt;rest of the network thanks to parallel channels.&lt;br/&gt;&lt;br/&gt;Any deviation from the gossip message could be penalized by sender&amp;#39;s&lt;br/&gt;scoring algorithms as the liquidity SLA parameters have been announced&lt;br/&gt;explicitly by the routing hops. This is just an intuition on how public&lt;br/&gt;channel liquidity discovery could be worked out, and I don&amp;#39;t know which of&lt;br/&gt;the alternatives would be more efficient in terms of&lt;br/&gt;bandwidth/convergence delays.&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;Le lun. 27 févr. 2023 à 21:32, vwallace via Lightning-dev &amp;lt;&lt;br/&gt;lightning-dev at lists.linuxfoundation.org&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi list!&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I wanted to bring up the idea of using onion messages for payment probing,&lt;br/&gt;&amp;gt; which was briefly touched&lt;br/&gt;&amp;gt; on at the 2022 LN summit. Tadge Dryja has also brought up a similar idea.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I recommend reading the gist instead since it has the relevant diagrams&lt;br/&gt;&amp;gt; in-line:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://gist.github.com/valentinewallace/ebe1741f0438c2360eda0f80f0e075c9&#34;&gt;https://gist.github.com/valentinewallace/ebe1741f0438c2360eda0f80f0e075c9&lt;/a&gt;&lt;br/&gt;&amp;gt; but the scheme is also&lt;br/&gt;&amp;gt; posted below for convenience.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ## Introduction&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; For context, in today’s lightning, payment reliability tends to heavily&lt;br/&gt;&amp;gt; depend on having sufficient&lt;br/&gt;&amp;gt; payment volume to determine current liquidity balances of channels, which&lt;br/&gt;&amp;gt; is how most big nodes can&lt;br/&gt;&amp;gt; tell whether a given channel has enough liquidity to forward a given&lt;br/&gt;&amp;gt; amount. If a node is using HTLC&lt;br/&gt;&amp;gt; probing to achieve this payment volume, they use a regular&lt;br/&gt;&amp;gt; `update_add_htlc` message with a bogus&lt;br/&gt;&amp;gt; payment hash, where the error returned informs the sender of whether the&lt;br/&gt;&amp;gt; payment reached the final&lt;br/&gt;&amp;gt; recipient. Note that there is a tradeoff between always routing through&lt;br/&gt;&amp;gt; nodes that are known to&lt;br/&gt;&amp;gt; rebalance their channels vs leaning on probing smaller nodes and “risking”&lt;br/&gt;&amp;gt; payments through them&lt;br/&gt;&amp;gt; based on what’s learned.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Today’s HTLC payment probing can work well, but risks channel liquidity&lt;br/&gt;&amp;gt; being locked up if a peer&lt;br/&gt;&amp;gt; along the route goes offline. On the upside, for just-in-time probes, it&lt;br/&gt;&amp;gt; works to loosely “reserve”&lt;br/&gt;&amp;gt; the channel liquidity along the route for the actual payment.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Onion messages (OMs) present a convenient way to probe without risking&lt;br/&gt;&amp;gt; locked liquidity along the&lt;br/&gt;&amp;gt; route.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ## Design Rationale&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A naive approach could be to send onion message probes directly to&lt;br/&gt;&amp;gt; individual nodes along the&lt;br/&gt;&amp;gt; desired route, including those to which you don’t have a direct channel.&lt;br/&gt;&amp;gt; However, this scheme is&lt;br/&gt;&amp;gt; problematic because it would enable monitoring the payment flows of&lt;br/&gt;&amp;gt; arbitrary nodes across the&lt;br/&gt;&amp;gt; network without having to have a channel path to them. This would be a&lt;br/&gt;&amp;gt; significant degradation of&lt;br/&gt;&amp;gt; privacy because, for comparison, in HTLC probing it is quite difficult to&lt;br/&gt;&amp;gt; probe the balances of&lt;br/&gt;&amp;gt; far-off nodes. And if you can’t probe a node using HTLCs, you can’t send&lt;br/&gt;&amp;gt; over it anyway, so there’s&lt;br/&gt;&amp;gt; not a lot of benefit (and significant privacy downside).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Therefore, it is probably best to design a scheme that probes along&lt;br/&gt;&amp;gt; channel paths, like HTLC&lt;br/&gt;&amp;gt; probing. This adds more complexity to the case where an intermediate node&lt;br/&gt;&amp;gt; cannot forward the desired&lt;br/&gt;&amp;gt; amount due to the stateless nature of OMs, discussed further down.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ## Scheme&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Let’s go through the happy path, where Alice is probing Alice &amp;gt; Bob &amp;gt;&lt;br/&gt;&amp;gt; Carol &amp;gt; Dave for a 100k msat&lt;br/&gt;&amp;gt; payment.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; She’ll construct an onion message for Bob, the first hop, as such:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://imgur.com/BZg8yt8&#34;&gt;https://imgur.com/BZg8yt8&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Bob receives this OM, sees that he’s able to forward 110k msats to his&lt;br/&gt;&amp;gt; next-hop Carol, and forwards&lt;br/&gt;&amp;gt; Carol’s onion packet to her. Carol sees she can forward 105k msats to&lt;br/&gt;&amp;gt; Dave, and forwards his onion&lt;br/&gt;&amp;gt; packet. Finally, Dave receives his onion packet, sees he can receive 100k&lt;br/&gt;&amp;gt; msats from Carol, and uses&lt;br/&gt;&amp;gt; the provided reply path to send a simple probe success onion message back&lt;br/&gt;&amp;gt; to Alice:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ```&lt;br/&gt;&amp;gt; onion_message_probe_result {&lt;br/&gt;&amp;gt;     data_tlv {&lt;br/&gt;&amp;gt;         type: 4242,&lt;br/&gt;&amp;gt;         probe_id: [u8; 32],&lt;br/&gt;&amp;gt;         can_forward_desired_amt: true,&lt;br/&gt;&amp;gt;     }&lt;br/&gt;&amp;gt;    .. regular OM TLVs&lt;br/&gt;&amp;gt; }&lt;br/&gt;&amp;gt; ```&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Note that Dave will use this same onion message if he can’t receive; he’ll&lt;br/&gt;&amp;gt; just set&lt;br/&gt;&amp;gt; `can_forward_desired_amt` to false.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; As an example of the sad path for an intermediate node, if Carol can’t&lt;br/&gt;&amp;gt; forward 105k msats to Dave,&lt;br/&gt;&amp;gt; she’ll fail the probe back to Bob by sending this onion message:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://imgur.com/a/hqlzw4I&#34;&gt;https://imgur.com/a/hqlzw4I&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This step justifies why we need to encode a failure onion for each&lt;br/&gt;&amp;gt; intermediate hop of a probe. If&lt;br/&gt;&amp;gt; we hadn’t done that, and Carol responded to Bob with an empty “failed”&lt;br/&gt;&amp;gt; message, Bob would have no&lt;br/&gt;&amp;gt; idea which peer to fail the probe back to, because OMs are stateless.&lt;br/&gt;&amp;gt; Instead, Bob unwraps his error&lt;br/&gt;&amp;gt; onion and sees that he needs to fail back to Alice with her provided error&lt;br/&gt;&amp;gt; onion. Alice receives the&lt;br/&gt;&amp;gt; failure onion and can see that Carol was not able to forward the desired&lt;br/&gt;&amp;gt; amount corresponding to the&lt;br/&gt;&amp;gt; probe id, thus completing the probe.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ## Outro&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; While there is nothing stopping nodes from lying about their ability to&lt;br/&gt;&amp;gt; forward, they may be&lt;br/&gt;&amp;gt; negatively scored if they do so. Further, adopting a protocol like this&lt;br/&gt;&amp;gt; could help routing nodes&lt;br/&gt;&amp;gt; attract more forwarding traffic, which is a nice incentive.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I view this feature as a low priority enhancement, given there are a lot&lt;br/&gt;&amp;gt; more pressing issues in LN,&lt;br/&gt;&amp;gt; but open to feedback. Mostly, I thought it could be useful to spark ideas&lt;br/&gt;&amp;gt; and highlight the&lt;br/&gt;&amp;gt; flexibility of OMs.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; Val&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230301/756791ad/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230301/756791ad/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:08:14Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqspd2k6ddneds7ehy3fr4fys84a8kt0y0kpc97xlu5wz0l5kz34mgczypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24z7qme58</id>
    
      <title type="html">📅 Original date posted:2023-02-14 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqspd2k6ddneds7ehy3fr4fys84a8kt0y0kpc97xlu5wz0l5kz34mgczypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24z7qme58" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsdyzkqcjh04m5x84fzgsxzvasgarv792ch829avvk48yznlek8f7g7uz934&#39;&gt;nevent1q…z934&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-02-14&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Joost,&lt;br/&gt;&lt;br/&gt;&amp;gt; For a long time I&amp;#39;ve held the expectation that eventually payers on the&lt;br/&gt;lightning network will become very strict about node performance. That they&lt;br/&gt;will &amp;gt; require a routing node to operate flawlessly or else apply a hefty&lt;br/&gt;penalty such as completely avoiding the node for an extended period of time&lt;br/&gt;- multiple &amp;gt; weeks. The consequence of this is that routing nodes would&lt;br/&gt;need to manage their liquidity meticulously because every failure&lt;br/&gt;potentially has a large&lt;br/&gt;&amp;gt; impact on future routing revenue.&lt;br/&gt;&lt;br/&gt;I think the performance question depends on the type of payment flows&lt;br/&gt;considered. If you&amp;#39;re an&lt;br/&gt;end-user sending a payment to your local Starbucks for coffee, here fast&lt;br/&gt;payment sounds the end-goal.&lt;br/&gt;If you&amp;#39;re doing remittance payment, cheap fees might be favored, and in&lt;br/&gt;function of those flows you&amp;#39;re&lt;br/&gt;probably not going to select the same &amp;#34;performant&amp;#34; routing nodes. I think&lt;br/&gt;adding latency as a criteria for&lt;br/&gt;pathfinding construction has already been mentioned in the past for LDK [0].&lt;br/&gt;&lt;br/&gt;&amp;gt; I think movement in this direction is important to guarantee&lt;br/&gt;competitiveness with centralised payment systems and their (at least&lt;br/&gt;theoretical) ability to&lt;br/&gt;&amp;gt; process a payment in the blink of an eye. A lightning wallet trying&lt;br/&gt;multiple paths to find one that works doesn&amp;#39;t help with this.&lt;br/&gt;&lt;br/&gt;Or there is the direction to build forward-error-correction code on top of&lt;br/&gt;MPP, like in traditional&lt;br/&gt;networking [1]. The rough idea, you send more payment shards than the&lt;br/&gt;requested sum, and then&lt;br/&gt;you reveal the payment secrets to the receiver after an onion interactivity&lt;br/&gt;round to finalize payment.&lt;br/&gt;&lt;br/&gt;&amp;gt; A common argument against strict penalisation is that it would lead to&lt;br/&gt;less efficient use of capital. Routing nodes would need to maintain pools of&lt;br/&gt;&amp;gt; liquidity to guarantee successes all the time. My opinion on this is that&lt;br/&gt;lightning is already enormously capital efficient at scale and that it is&lt;br/&gt;worth&lt;br/&gt;&amp;gt; sacrificing a slight part of that efficiency to also achieve the lowest&lt;br/&gt;possible latency.&lt;br/&gt;&lt;br/&gt;At the end of the day, we add more signal channels between HTLC senders and&lt;br/&gt;the routing&lt;br/&gt;nodes offering capital liquidity, if the signal mechanisms are efficient, I&lt;br/&gt;think they should lead&lt;br/&gt;to better allocation of the capital. So yes, I think more liquidity might&lt;br/&gt;be used by routing nodes&lt;br/&gt;to serve finely tailored HTLC requests by senders, however this liquidity&lt;br/&gt;should be rewarded&lt;br/&gt;by higher routing fees.&lt;br/&gt;&lt;br/&gt;&amp;gt; This brings me to the actual subject of this post. Assuming strict&lt;br/&gt;penalisation is good, it may still not be ideal to flip the switch from one&lt;br/&gt;day to the other. &amp;gt; Routing nodes may not offer the required level of&lt;br/&gt;service yet, causing senders to end up with no nodes to choose from.&lt;br/&gt;&lt;br/&gt;&amp;gt; One option is to gradually increase the strength of the penalties, so&lt;br/&gt;that routing nodes are given time to adapt to the new standards. This does&lt;br/&gt;require &amp;gt; everyone to move along and leaves no space for cheap routing&lt;br/&gt;nodes with less leeway in terms of liquidity.&lt;br/&gt;&lt;br/&gt;I think if we have lessons to learn on policy rules design and deployment&lt;br/&gt;on the base-layer&lt;br/&gt;(the full-rbf saga), it&amp;#39;s to be careful in the initial set of rules, and&lt;br/&gt;how we ensure smooth&lt;br/&gt;upgradeability, from one version to another. Otherwise the re-deployment&lt;br/&gt;cost towards&lt;br/&gt;the new version might incentive the old routing node to stay on the&lt;br/&gt;non-optimal versions,&lt;br/&gt;and as we have historical buckets in routing algorithms, or preference for&lt;br/&gt;older channels,&lt;br/&gt;this might lead the end-user to pay higher fees, than they could access to.&lt;br/&gt;&lt;br/&gt;&amp;gt; Therefore I am proposing another way to go about it: extend the&lt;br/&gt;`channel_update` field `channel_flags` with a new bit that the sender can&lt;br/&gt;use to signal &amp;gt; `highly_available`.&lt;br/&gt;&lt;br/&gt;&amp;gt; It&amp;#39;s then up to payers to decide how to interpret this flag. One way&lt;br/&gt;could be to prefer `highly_available` channels during pathfinding. But if&lt;br/&gt;the routing&lt;br/&gt;&amp;gt; node then returns a failure, a much stronger than normal penalty will be&lt;br/&gt;applied. For routing nodes this creates an opportunity to attract more&lt;br/&gt;traffic by &amp;gt; marking some channels as `highly_available`, but it also comes&lt;br/&gt;with the responsibility to deliver.&lt;br/&gt;&lt;br/&gt;This is where the open question lies to me - &amp;#34;highly available&amp;#34; can be&lt;br/&gt;defined with multiple&lt;br/&gt;senses, like fault-tolerance, latency processing, equilibrated liquidity.&lt;br/&gt;And a routing node might&lt;br/&gt;not be able to optimize its architecture for the same end-goal (e.g more&lt;br/&gt;watchtower on remote&lt;br/&gt;host probably increases the latency processing).&lt;br/&gt;&lt;br/&gt;&amp;gt; Without shadow channels, it is impossible to guarantee liquidity up to&lt;br/&gt;the channel capacity. It might make sense for senders to only assume high&lt;br/&gt;&amp;gt; availability for amounts up to `htlc_maximum_msat`.&lt;br/&gt;&lt;br/&gt;As a note, I think &amp;#34;senders assumption&amp;#34; should be well-documented,&lt;br/&gt;otherwise there will be&lt;br/&gt;performance discrepancies between node implementations or even versions.&lt;br/&gt;E.g, an upgraded&lt;br/&gt;sender penalizing a node for the lack of shadow/parallel channels&lt;br/&gt;fulfilling HTLC amounts up to&lt;br/&gt;`htlc_maximum_msat`.&lt;br/&gt;&lt;br/&gt;&amp;gt; A variation on this scheme that requires no extension of `channel_update`&lt;br/&gt;is to signal availability implicitly through routing fees. So the more&lt;br/&gt;expensive &amp;gt; a channel is, the stronger the penalty that is applied on&lt;br/&gt;failure will be. It seems less ideal though, because it&lt;br/&gt;could disincentivize cheap but reliable&lt;br/&gt;&amp;gt; channels on high traffic links.&lt;br/&gt;&lt;br/&gt;&amp;gt; The effort required to implement some form of a `highly_available` flag&lt;br/&gt;seem limited and it may help to get payment success rates up. Interested to&lt;br/&gt;&amp;gt; hear your thoughts.&lt;br/&gt;&lt;br/&gt;I think signal availability should be explicit rather than implicit. Even&lt;br/&gt;if it&amp;#39;s coming with more&lt;br/&gt;gossip bandwidth data consumed. I would say for bandwidth performance&lt;br/&gt;management, relying&lt;br/&gt;on new gossip messages, where they can be filtered in function of the level&lt;br/&gt;of services required&lt;br/&gt;is interesting.&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;[0] &lt;a href=&#34;https://github.com/lightningdevkit/rust-lightning/issues/1647&#34;&gt;https://github.com/lightningdevkit/rust-lightning/issues/1647&lt;/a&gt;&lt;br/&gt;[1] &lt;a href=&#34;https://www.rfc-editor.org/rfc/rfc6363.html&#34;&gt;https://www.rfc-editor.org/rfc/rfc6363.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Le lun. 13 févr. 2023 à 11:46, Joost Jager &amp;lt;joost.jager at gmail.com&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; For a long time I&amp;#39;ve held the expectation that eventually payers on the&lt;br/&gt;&amp;gt; lightning network will become very strict about node performance. That they&lt;br/&gt;&amp;gt; will require a routing node to operate flawlessly or else apply a hefty&lt;br/&gt;&amp;gt; penalty such as completely avoiding the node for an extended period of time&lt;br/&gt;&amp;gt; - multiple weeks. The consequence of this is that routing nodes would need&lt;br/&gt;&amp;gt; to manage their liquidity meticulously because every failure potentially&lt;br/&gt;&amp;gt; has a large impact on future routing revenue.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I think movement in this direction is important to guarantee&lt;br/&gt;&amp;gt; competitiveness with centralised payment systems and their (at least&lt;br/&gt;&amp;gt; theoretical) ability to process a payment in the blink of an eye. A&lt;br/&gt;&amp;gt; lightning wallet trying multiple paths to find one that works doesn&amp;#39;t help&lt;br/&gt;&amp;gt; with this.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A common argument against strict penalisation is that it would lead to&lt;br/&gt;&amp;gt; less efficient use of capital. Routing nodes would need to maintain pools&lt;br/&gt;&amp;gt; of liquidity to guarantee successes all the time. My opinion on this is&lt;br/&gt;&amp;gt; that lightning is already enormously capital efficient at scale and that it&lt;br/&gt;&amp;gt; is worth sacrificing a slight part of that efficiency to also achieve the&lt;br/&gt;&amp;gt; lowest possible latency.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This brings me to the actual subject of this post. Assuming strict&lt;br/&gt;&amp;gt; penalisation is good, it may still not be ideal to flip the switch from one&lt;br/&gt;&amp;gt; day to the other. Routing nodes may not offer the required level of service&lt;br/&gt;&amp;gt; yet, causing senders to end up with no nodes to choose from.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; One option is to gradually increase the strength of the penalties, so that&lt;br/&gt;&amp;gt; routing nodes are given time to adapt to the new standards. This does&lt;br/&gt;&amp;gt; require everyone to move along and leaves no space for cheap routing nodes&lt;br/&gt;&amp;gt; with less leeway in terms of liquidity.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Therefore I am proposing another way to go about it: extend the&lt;br/&gt;&amp;gt; `channel_update` field `channel_flags` with a new bit that the sender can&lt;br/&gt;&amp;gt; use to signal `highly_available`.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It&amp;#39;s then up to payers to decide how to interpret this flag. One way could&lt;br/&gt;&amp;gt; be to prefer `highly_available` channels during pathfinding. But if the&lt;br/&gt;&amp;gt; routing node then returns a failure, a much stronger than normal penalty&lt;br/&gt;&amp;gt; will be applied. For routing nodes this creates an opportunity to attract&lt;br/&gt;&amp;gt; more traffic by marking some channels as `highly_available`, but it also&lt;br/&gt;&amp;gt; comes with the responsibility to deliver.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Without shadow channels, it is impossible to guarantee liquidity up to the&lt;br/&gt;&amp;gt; channel capacity. It might make sense for senders to only assume high&lt;br/&gt;&amp;gt; availability for amounts up to `htlc_maximum_msat`.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A variation on this scheme that requires no extension of `channel_update`&lt;br/&gt;&amp;gt; is to signal availability implicitly through routing fees. So the more&lt;br/&gt;&amp;gt; expensive a channel is, the stronger the penalty that is applied on failure&lt;br/&gt;&amp;gt; will be. It seems less ideal though, because it could disincentivize cheap&lt;br/&gt;&amp;gt; but reliable channels on high traffic links.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The effort required to implement some form of a `highly_available` flag&lt;br/&gt;&amp;gt; seem limited and it may help to get payment success rates up. Interested to&lt;br/&gt;&amp;gt; hear your thoughts.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Joost&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230214/893867dd/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230214/893867dd/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:08:08Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsdyzkqcjh04m5x84fzgsxzvasgarv792ch829avvk48yznlek8f7gzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zcrlp68</id>
    
      <title type="html">📅 Original date posted:2023-02-17 📝 Original message: As ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsdyzkqcjh04m5x84fzgsxzvasgarv792ch829avvk48yznlek8f7gzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zcrlp68" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsvdhanfelf0cc5k5nww2kmdz4tqs88gctl9aetgs6vkwgdmrtlsus5047t4&#39;&gt;nevent1q…47t4&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-02-17&lt;br/&gt;📝 Original message:&lt;br/&gt;As long as protocol development and design is done neutrally, I&amp;#39;m all fine!&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Le ven. 17 févr. 2023 à 10:48, Joost Jager &amp;lt;joost.jager at gmail.com&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Right, that was my above point about fetching scoring data - there&amp;#39;s three&lt;br/&gt;&amp;gt;&amp;gt; relevant &amp;#34;buckets&amp;#34; of&lt;br/&gt;&amp;gt;&amp;gt; nodes, I think - (a) large nodes sending lots of payments, like the&lt;br/&gt;&amp;gt;&amp;gt; above, (b) &amp;#34;client nodes&amp;#34; that&lt;br/&gt;&amp;gt;&amp;gt; just connect to an LSP or two, (c) nodes that route some but don&amp;#39;t send a&lt;br/&gt;&amp;gt;&amp;gt; lot of payments (but do&lt;br/&gt;&amp;gt;&amp;gt; send *some* payments), and may have lots or not very many channels.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; (a) I think we&amp;#39;re getting there, and we don&amp;#39;t need to add anything extra&lt;br/&gt;&amp;gt;&amp;gt; for this use-case beyond&lt;br/&gt;&amp;gt;&amp;gt; the network maturing and improving our scoring algorithms.&lt;br/&gt;&amp;gt;&amp;gt; (b) I think is trivially solved by downloading the data from a node in&lt;br/&gt;&amp;gt;&amp;gt; category (a), presumably the&lt;br/&gt;&amp;gt;&amp;gt; LSP(s) in question (see other branch of this thread)&lt;br/&gt;&amp;gt;&amp;gt; (c) is trickier, but I think the same solution of just fetching&lt;br/&gt;&amp;gt;&amp;gt; semi-trusted data here more than&lt;br/&gt;&amp;gt;&amp;gt; sufficies. For most routing nodes that don&amp;#39;t send a lot of payments we&amp;#39;re&lt;br/&gt;&amp;gt;&amp;gt; talking about a very small&lt;br/&gt;&amp;gt;&amp;gt; amount of payments, so trusting a third-party for scoring data seems&lt;br/&gt;&amp;gt;&amp;gt; reasonable.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I see that in your view all nodes will either be large nodes themselves,&lt;br/&gt;&amp;gt; or be downloading scoring data from large nodes. I&amp;#39;d argue that that is&lt;br/&gt;&amp;gt; more of a move towards centralisation than the `ha` flag is. The flag at&lt;br/&gt;&amp;gt; least allows small nodes to build up their view of the network in an&lt;br/&gt;&amp;gt; efficient and independently manner.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Joost&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230217/36b81f39/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230217/36b81f39/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:08:07Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqs8u82uphjc4hy6te9ncmzjhzhsv998mdgyqr0w29l6mhm8nv8flaszypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zv6r0kk</id>
    
      <title type="html">📅 Original date posted:2023-02-16 📝 Original message: Yeah ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqs8u82uphjc4hy6te9ncmzjhzhsv998mdgyqr0w29l6mhm8nv8flaszypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zv6r0kk" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs9t6ea4gehcwna4w48hds4ck4utk6mmyycs0qwy0ntnnmku8kvdug9a0uhq&#39;&gt;nevent1q…0uhq&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-02-16&lt;br/&gt;📝 Original message:&lt;br/&gt;Yeah definitely looking forward to talk more about highly available&lt;br/&gt;lightning channels. During next LN channel jamming meetup! .&lt;br/&gt;&lt;br/&gt;Le jeu. 16 févr. 2023 à 00:43, Matt Corallo &amp;lt;lf-lists at mattcorallo.com&amp;gt; a&lt;br/&gt;écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On 2/14/23 11:36 PM, Joost Jager wrote:&lt;br/&gt;&amp;gt; &amp;gt;     But how do you decide to set it without a credit relationship? Do I&lt;br/&gt;&amp;gt; measure my channel and set the&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;     bit because the channel is &amp;#34;usually&amp;#34; (at what threshold?) saturating&lt;br/&gt;&amp;gt; in the inbound direction? What&lt;br/&gt;&amp;gt; &amp;gt;     happens if this changes for an hour and I get unlucky? Did I just&lt;br/&gt;&amp;gt; screw myself?&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; As a node setting the flag, you&amp;#39;ll have to make sure you open new&lt;br/&gt;&amp;gt; channels, rebalance or swap-in in&lt;br/&gt;&amp;gt; &amp;gt; time to maintain outbound liquidity. That&amp;#39;s part of the game of running&lt;br/&gt;&amp;gt; an HA channel.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Define &amp;#34;in time&amp;#34; in a way that results in senders not punishing you for&lt;br/&gt;&amp;gt; not meeting your &amp;#34;HA&lt;br/&gt;&amp;gt; guarantees&amp;#34; due to a large flow. I don&amp;#39;t buy that this results in anything&lt;br/&gt;&amp;gt; other than pressure to&lt;br/&gt;&amp;gt; add credit.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;      &amp;gt; How can you be sure about this? This isn&amp;#39;t publicly visible data.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;     Sure it is! &lt;a href=&#34;https://river.com/learn/files/river-lightning-report.pdf&#34;&gt;https://river.com/learn/files/river-lightning-report.pdf&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt;     &amp;lt;&lt;a href=&#34;https://river.com/learn/files/river-lightning-report.pdf&amp;gt&#34;&gt;https://river.com/learn/files/river-lightning-report.pdf&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Some operators publish data, but are the experiences of one of the most&lt;br/&gt;&amp;gt; well connected (custodial)&lt;br/&gt;&amp;gt; &amp;gt; nodes representative for the network as a whole when evaluating payment&lt;br/&gt;&amp;gt; success rates? In the end&lt;br/&gt;&amp;gt; &amp;gt; you can&amp;#39;t know what&amp;#39;s happening on the lightning network.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Right, that was my above point about fetching scoring data - there&amp;#39;s three&lt;br/&gt;&amp;gt; relevant &amp;#34;buckets&amp;#34; of&lt;br/&gt;&amp;gt; nodes, I think - (a) large nodes sending lots of payments, like the above,&lt;br/&gt;&amp;gt; (b) &amp;#34;client nodes&amp;#34; that&lt;br/&gt;&amp;gt; just connect to an LSP or two, (c) nodes that route some but don&amp;#39;t send a&lt;br/&gt;&amp;gt; lot of payments (but do&lt;br/&gt;&amp;gt; send *some* payments), and may have lots or not very many channels.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; (a) I think we&amp;#39;re getting there, and we don&amp;#39;t need to add anything extra&lt;br/&gt;&amp;gt; for this use-case beyond&lt;br/&gt;&amp;gt; the network maturing and improving our scoring algorithms.&lt;br/&gt;&amp;gt; (b) I think is trivially solved by downloading the data from a node in&lt;br/&gt;&amp;gt; category (a), presumably the&lt;br/&gt;&amp;gt; LSP(s) in question (see other branch of this thread)&lt;br/&gt;&amp;gt; (c) is trickier, but I think the same solution of just fetching&lt;br/&gt;&amp;gt; semi-trusted data here more than&lt;br/&gt;&amp;gt; sufficies. For most routing nodes that don&amp;#39;t send a lot of payments we&amp;#39;re&lt;br/&gt;&amp;gt; talking about a very small&lt;br/&gt;&amp;gt; amount of payments, so trusting a third-party for scoring data seems&lt;br/&gt;&amp;gt; reasonable.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Once we do that, everyone gets a similar experience as the River report :).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Matt&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230217/a4c356bf/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230217/a4c356bf/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:08:07Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqszqrsze3t9235ed9n9wgx4qxhl3lzaq4t2pqf0mp7ctr4fpyhdedgzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zuddyda</id>
    
      <title type="html">📅 Original date posted:2023-01-31 📝 Original message: ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqszqrsze3t9235ed9n9wgx4qxhl3lzaq4t2pqf0mp7ctr4fpyhdedgzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zuddyda" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsdrcv9awlk5whyntqsgttvh9qf6lzr5usjshcq4x6vcn4g9hs5drg39day4&#39;&gt;nevent1q…day4&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-01-31&lt;br/&gt;📝 Original message:&lt;br/&gt;(Reply 2/2)&lt;br/&gt;&lt;br/&gt;&amp;gt;  * Whether we should look into a more complicated approach that&lt;br/&gt;&lt;br/&gt;&amp;gt;    includes a &amp;#34;proof of forward&amp;#34; secret in the next node&amp;#39;s onion which&lt;br/&gt;&lt;br/&gt;&amp;gt;    must be supplied to claim the upfront fee.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;One of the hard things with a &amp;#34;proof of forward&amp;#34; is a hop colluding with&lt;br/&gt;the next counterparty in way non-provable to the HTLC sender. I don&amp;#39;t think&lt;br/&gt;more reliable onion errors will save the mechanism, as you might always&lt;br/&gt;masquerade your routing node offliness (sure -- it might be penalized by&lt;br/&gt;routing algorithms still probably a period of grace exploitable)&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;  * Whether Bob _would_ steal the upfront fee by dropping the payment,&lt;br/&gt;&lt;br/&gt;&amp;gt;    as it&amp;#39;ll impact nodes&amp;#39; desire to route through them in future.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;And if you have &amp;#34;floating&amp;#34; upfront fees to adjust to routing node&lt;br/&gt;opportunity cost and the routing algorithms historical buckets are not&lt;br/&gt;correcting the variations, a &amp;#34;upfront fee&amp;#34; adversary might be able to steal&lt;br/&gt;the amount, in a proportion not corrected by the penalty.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;  * Is there a way to deliver upfront fees to nodes along the route&lt;br/&gt;&lt;br/&gt;&amp;gt;    *without* them adding up along the route (other than the naive&lt;br/&gt;&lt;br/&gt;&amp;gt;    version of sending each hop a payment, which comes with its own&lt;br/&gt;&lt;br/&gt;&amp;gt;    problems)? Seems not, but bright ideas are wanted and welcome!&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;I think the latest update of the Staking Credentials could answer such&lt;br/&gt;description&lt;br/&gt;of &amp;#34;delivering the upfront fees to nodes along the route *without* them&lt;br/&gt;adding up along the route&amp;#34; as the credential issuance is separated from its&lt;br/&gt;redemption.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On a few other ideas, &amp;#34;magically&amp;#34; teleporting the fee payment to the&lt;br/&gt;routing hops, it has been browsed in the past [2].&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;  * That nodes will decide where they fall in the trade-off of setting&lt;br/&gt;&lt;br/&gt;&amp;gt;    upfront fees to cover their opportunity cost for high routing fees&lt;br/&gt;&lt;br/&gt;&amp;gt;    and market pressure to keep these fees low for the sake of&lt;br/&gt;&lt;br/&gt;&amp;gt;    remaining competitive.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;They will probably need to do real-time monitoring of the congestion rates&lt;br/&gt;and outcome results of their HTLC forwarding to adjust in consequence their&lt;br/&gt;routing fees.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;   * A taproot tree for all HTLCs where each leaf has a subset of HTLCs,&lt;br/&gt;&lt;br/&gt;&amp;gt;     and fees could be incorporated here (summary note: apparently some&lt;br/&gt;&lt;br/&gt;&amp;gt;     work has been done here, but I couldn&amp;#39;t find the link).&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;The idea of summing up the taproot tree for all HTLCs is discussed here&lt;br/&gt;with past references [3]. I don&amp;#39;t know if it&amp;#39;s really a viable direction,&lt;br/&gt;as aggregating the claim of HTLCs of different values in the same witness&lt;br/&gt;claims might open the door to transaction-relay games.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;   * If we&amp;#39;re confident that a more complicated solution will solve many&lt;br/&gt;&lt;br/&gt;&amp;gt;     problems, then we should pursue them, otherwise a simple solution&lt;br/&gt;&lt;br/&gt;&amp;gt;     is possibly a _good enough_ first step.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;If the &amp;#34;proof of forward&amp;#34; can be solved by &amp;#34;magic&amp;#34; covenant is still an open&lt;br/&gt;issue. I don&amp;#39;t know if it&amp;#39;s a viable solution as it&amp;#39;s more a hard synchronicity&lt;br/&gt;issue between chain of contracts. However from exploring issue we might&lt;br/&gt;learn interesting design considerations for contracting protocols (at the&lt;br/&gt;very least some semi-formal proof it&amp;#39;s not possible)&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;  * Should our first attempt at solving this issue be for a future&lt;br/&gt;&lt;br/&gt;&amp;gt;    steady state where nodes have significant traffic and nodes face&lt;br/&gt;&lt;br/&gt;&amp;gt;    real opportunity cost (in the form of lost revenue) if they are&lt;br/&gt;&lt;br/&gt;&amp;gt;    targeted by a jamming attack?&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Deferring the most economically-efficient solution we can come from, we might&lt;br/&gt;run into a bunch of incentives-misallignment between generation of nodes&lt;br/&gt;operators and Lightning use-cases. Maybe same as we have seen with lack of&lt;br/&gt;transaction replacement, first-seen RBF, opt-in RBF, mempoolfullrbf, I&lt;br/&gt;believe.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On the other-side, the deployment of a simple solution would enable us to&lt;br/&gt;start to build a consistent model of how the economics of channel&lt;br/&gt;congestion, that we can &amp;#34;transpose&amp;#34; for more advanced solutions (ideally --&lt;br/&gt;all other things being equal).&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;  * While circuit breaker isn&amp;#39;t necessarily *the* solution to solving&lt;br/&gt;&lt;br/&gt;&amp;gt;    jamming on LN, it provides us with some data points and a&lt;br/&gt;&lt;br/&gt;&amp;gt;    practical way for individual operators to address spamming of&lt;br/&gt;&lt;br/&gt;&amp;gt;    their nodes.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;As mentioned above, it sounds like the congestion monitoring and HTLCs&lt;br/&gt;resolution tracking is going to be a standard task among LN&lt;br/&gt;implementations, and that you&amp;#39;ll would probably need a piece of&lt;br/&gt;infrastructure like circuit breaker for all implementations.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; Since our last discussion an architecture document was added to the&lt;br/&gt;&lt;br/&gt;&amp;gt; proposal [6], details in the mailing list post [7]. The main goal is&lt;br/&gt;&lt;br/&gt;&amp;gt; to try to dissociate the people paying the fees from those gaining the&lt;br/&gt;&lt;br/&gt;&amp;gt; benefits from the credentials, so that credentials can be paid by a&lt;br/&gt;&lt;br/&gt;&amp;gt; LSP (for example).&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;I think there is a missing footnote, I believe the mail thread might have&lt;br/&gt;been this one:&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2023-January/003822.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2023-January/003822.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Beyond delegation as mentioned, there are few other design goals targeted:&lt;br/&gt;&lt;br/&gt;- strong economic-efficiency due to credentials accumulation&lt;br/&gt;&lt;br/&gt;- fungibility of their credentials between their issuance and redemption&lt;br/&gt;&lt;br/&gt;- dynamic-management of liquidity risks&lt;br/&gt;&lt;br/&gt;- contract-agnostic (e.g can cover dual-opening)&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Probably, we&amp;#39;ll have the credential issuance flow and extension gossip more&lt;br/&gt;speced out before next meetings.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; 4. Reputation discussions in LSP Specification&lt;br/&gt;&lt;br/&gt;&amp;gt; Some attendees have been working on a reputation system for the LSP&lt;br/&gt;&lt;br/&gt;&amp;gt; specification group [8]. This system is intended to provide standard&lt;br/&gt;&lt;br/&gt;&amp;gt; metrics about what makes a node good/bad to connect to in the context&lt;br/&gt;&lt;br/&gt;&amp;gt; of a decentralized marketplace. While this work looks at the problem&lt;br/&gt;&lt;br/&gt;&amp;gt; from a different perspective, there&amp;#39;s a possibility to consolidate&lt;br/&gt;&lt;br/&gt;&amp;gt; the efforts. It seems particularly useful in the anti-jamming case&lt;br/&gt;&lt;br/&gt;&amp;gt; where a node has newly connected to you, and needs a &amp;#34;start state&amp;#34;&lt;br/&gt;&lt;br/&gt;&amp;gt; reputation score. The idea of defining what qualifies as good&lt;br/&gt;&lt;br/&gt;&amp;gt; behavior in the Lightning Network is useful across the board. The&lt;br/&gt;&lt;br/&gt;&amp;gt; LSP specification group also has bi-weekly calls, and welcomes&lt;br/&gt;&lt;br/&gt;&amp;gt; additional participants!&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Effectively, I think distributed market infrastructure design could benefit&lt;br/&gt;from the lessons of the Lightning Network. It could be fruitful for the LSP&lt;br/&gt;specification group to have its own mailing list at some point in the&lt;br/&gt;future.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; There&amp;#39;s a lot to discuss - brave readers who made it all the way to&lt;br/&gt;&lt;br/&gt;&amp;gt; the bottom of this email will notice a fair number of question marks&lt;br/&gt;&lt;br/&gt;&amp;gt; scattered about - and we&amp;#39;re going to continue to break the problem&lt;br/&gt;&lt;br/&gt;&amp;gt; down into smaller parts to discuss in the hope of making progress.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Beyond archiving well the problem space, there is also an effort of&lt;br/&gt;documenting well any protocol design decisions to preserve future&lt;br/&gt;evolvability and achieve interoperabilitybetween implementations.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; Any change to the Lightning Network that aims to address channel&lt;br/&gt;&lt;br/&gt;&amp;gt; jamming attacks will be a significant (but necessary) change to the&lt;br/&gt;&lt;br/&gt;&amp;gt; protocol&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;For sure, this is a significant change to the protocol, beyond that we&lt;br/&gt;should be careful to not downgrade the throughput or operations of the&lt;br/&gt;base-layer. If the original Stakes Certificates would have been&lt;br/&gt;implemented, it would have constituted a mempool congestion risk, where the&lt;br/&gt;node operators under jamming would have forced attackers to pay for fresh&lt;br/&gt;UTXOs. If we have to envision such cross-layer mitigation design in the&lt;br/&gt;future, I think we might have to do cross-layer consensus building.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;[2] &lt;a href=&#34;https://jamming-dev.github.io/book/4-design_space.html&#34;&gt;https://jamming-dev.github.io/book/4-design_space.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;[3] &lt;a href=&#34;https://github.com/ariard/bitcoin-contracting-primitives-wg/issues/26&#34;&gt;https://github.com/ariard/bitcoin-contracting-primitives-wg/issues/26&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;[4]&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-November/002884.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-November/002884.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Le lun. 30 janv. 2023 à 15:25, Carla Kirk-Cohen &amp;lt;kirkcohenc at gmail.com&amp;gt; a&lt;br/&gt;écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi list,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Monday last week we resumed our fortnightly channel jamming&lt;br/&gt;&amp;gt; mitigation calls for 2023.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Details for the next call:&lt;br/&gt;&amp;gt; * Monday 02/06 @ 18:00 UTC&lt;br/&gt;&amp;gt; * &lt;a href=&#34;https://meet.jit.si/UnjammingLN&#34;&gt;https://meet.jit.si/UnjammingLN&lt;/a&gt;&lt;br/&gt;&amp;gt; * Agenda: &lt;a href=&#34;https://github.com/ClaraShk/LNJamming/issues/2&#34;&gt;https://github.com/ClaraShk/LNJamming/issues/2&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # Meeting Summary&lt;br/&gt;&amp;gt; This email attempts to summarize the discussion, but is of course&lt;br/&gt;&amp;gt; subject to my errors and opinions so the full transcript is available&lt;br/&gt;&amp;gt; at [1]. It is (imperfectly) AI generated, so please reach out to myself&lt;br/&gt;&amp;gt; or Clara if you&amp;#39;d like clarification for a specific section.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1. Upgrade Mechanisms&lt;br/&gt;&amp;gt; The first topic of discussion was around how we would go about&lt;br/&gt;&amp;gt; upgrading the network to support an anti-jamming mitigation. Most&lt;br/&gt;&amp;gt; solutions share the following characteristics:&lt;br/&gt;&amp;gt;   * They will likely require a network wide upgrade: when a sender&lt;br/&gt;&amp;gt;     makes a payment, the full path will need to understand the new&lt;br/&gt;&amp;gt;     feature bit for it to be used.&lt;br/&gt;&amp;gt;   * Sending nodes are unlikely to be incentivised to upgrade to&lt;br/&gt;&amp;gt;     support a channel jamming mitigation, as jamming mitigations incur&lt;br/&gt;&amp;gt;     additional cost (be it in the form of upfront fees, tokens or some&lt;br/&gt;&amp;gt;     other mechanism).&lt;br/&gt;&amp;gt;   * Routing nodes have no way of knowing whether a payment comes from&lt;br/&gt;&amp;gt;     a node that is not upgraded, or simply doesn&amp;#39;t want to pay the&lt;br/&gt;&amp;gt;     additional cost introduced by a jamming mitigation.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It was generally agreed that the network is still in an early enough&lt;br/&gt;&amp;gt; stage that it is fair for relaying nodes to initially upgrade but not&lt;br/&gt;&amp;gt; enforce the feature, and later look at forwarding traffic to determine&lt;br/&gt;&amp;gt; whether it is appropriate to require the feature. This will require&lt;br/&gt;&amp;gt; sending nodes to opt-in to the new feature before the network can&lt;br/&gt;&amp;gt; widely enforce it, as no rational routing node will require a feature&lt;br/&gt;&amp;gt; which would reduce its ability to serve un-upgraded traffic (unless&lt;br/&gt;&amp;gt; under attack, which is not the case at present).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A note was also made that wallets tend to upgrade less frequently, in&lt;br/&gt;&amp;gt; part because some providers run forked versions of LN implementations,&lt;br/&gt;&amp;gt; so this horizon may be quite long. It was emphasized that this type of&lt;br/&gt;&amp;gt; network upgrade would require input from wallets, designers and&lt;br/&gt;&amp;gt; application developers anyway, so hopefully by the time we look to&lt;br/&gt;&amp;gt; deploy a change there is rough consensus among the Lightning community&lt;br/&gt;&amp;gt; already.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 2. Upfront Fees&lt;br/&gt;&amp;gt; Next, we discussed the draft proposal for upfront fees [2] that&lt;br/&gt;&amp;gt; implements the first of a two-part jamming mitigation described in [3].&lt;br/&gt;&amp;gt; As it stands, the PR describes the simplest possible way to introduce&lt;br/&gt;&amp;gt; upfront fees to the protocol:&lt;br/&gt;&amp;gt;   * Upfront fees are expressed as a ppm of a channel&amp;#39;s success-case&lt;br/&gt;&amp;gt;     fees, and charged on the outgoing link of a route.&lt;br/&gt;&amp;gt;   * Nodes can advertise custom upfront fee rates if desired, but to&lt;br/&gt;&amp;gt;     save gossip bandwidth we assume a network-wide default of 1%.&lt;br/&gt;&amp;gt;   * Upfront fees accumulate along the route (as htlc payment amounts&lt;br/&gt;&amp;gt;     do), and are simply pushed to the `to_remote` balance on&lt;br/&gt;&amp;gt;     `update_add_htlc`.&lt;br/&gt;&amp;gt;   * Final hop nodes advertise an upfront fee policy in bolt 11 invoices&lt;br/&gt;&amp;gt;     (or bolt 12 blinded routes) which is sufficiently padded to&lt;br/&gt;&amp;gt;     obfuscate their location in the route.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The interaction between upfront fees and possible future protocol&lt;br/&gt;&amp;gt; changes such as inbound fees and negative fees was briefly discussed,&lt;br/&gt;&amp;gt; specifically the case where a node sets low (or negative) fees to&lt;br/&gt;&amp;gt; attract traffic then fails payments to accumulate upfront fees. As is,&lt;br/&gt;&amp;gt; all implementations’ algorithms optimize for factors other than fees -&lt;br/&gt;&amp;gt; specifically avoiding a node once it&amp;#39;s produced failures - and we&lt;br/&gt;&amp;gt; suspect that careful sender-side behavior will mitigate this risk.&lt;br/&gt;&amp;gt; However, it was also acknowledged that a node that attempts this attack&lt;br/&gt;&amp;gt; may be able to fool multiple individual senders and still be able to&lt;br/&gt;&amp;gt; accumulate some fees.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; We then discussed the shortcomings of the &amp;#34;simplest possible&amp;#34; upfront&lt;br/&gt;&amp;gt; fees in [2], specifically focused on the following scenario where&lt;br/&gt;&amp;gt; nodes receive 1% of their success-case fees as an upfront payment:&lt;br/&gt;&amp;gt;   * Alice is sending a payment to Dave, who is a popular sink node in&lt;br/&gt;&amp;gt;     the network.&lt;br/&gt;&amp;gt;   * Bob -&amp;gt; Carol has low/default routing policy: 1000 msat success&lt;br/&gt;&amp;gt;     case / 10 msat upfront fee&lt;br/&gt;&amp;gt;   * Carol -&amp;gt; Dave has high fees: 400,000 msat success case / 4000 msat&lt;br/&gt;&amp;gt;     upfront fee&lt;br/&gt;&amp;gt;   * Dave advertises no success case fee (is recipient) / 100 msat of&lt;br/&gt;&amp;gt;     upfront fee chosen for his invoice.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Alice ------ Bob ------ Carol ------ Dave&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Since we need to source all of these funds from the sender (Alice), the&lt;br/&gt;&amp;gt; forwarding of funds is as follows:&lt;br/&gt;&amp;gt;   * Alice pushes 4110 msat to Bob.&lt;br/&gt;&amp;gt;   * Bob _should_ push 4100 msat to Carol, claiming his 10 msat upfront&lt;br/&gt;&amp;gt;     fee.&lt;br/&gt;&amp;gt;   * Carol _should_ push 100 msat to Dave, claiming her 4000 msat&lt;br/&gt;&amp;gt;     upfront fee.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; However, Bob has no real incentive to forward the HTLC to Carol and&lt;br/&gt;&amp;gt; push her the 4100 msat because that value is more than the fees he&amp;#39;ll&lt;br/&gt;&amp;gt; earn from successfully forwarding and settling the HTLC (10 msat&lt;br/&gt;&amp;gt; upfront fees &#43; 1000 msat success case fees). It&amp;#39;s worth noting that&lt;br/&gt;&amp;gt; this type of fee differential already exists in the network today - I&lt;br/&gt;&amp;gt; got these example numbers by looking at the fee rates of the Loop&lt;br/&gt;&amp;gt; node&amp;#39;s peers [4].&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; There were a few points discussed around this issue:&lt;br/&gt;&amp;gt;   * Whether we should look into a more complicated approach that&lt;br/&gt;&amp;gt;     includes a &amp;#34;proof of forward&amp;#34; secret in the next node&amp;#39;s onion which&lt;br/&gt;&amp;gt;     must be supplied to claim the upfront fee.&lt;br/&gt;&amp;gt;   * Discussion about whether these order of magnitude fee differences&lt;br/&gt;&amp;gt;     will exist in an efficient market (differing opinions).&lt;br/&gt;&amp;gt;   * Whether Bob _would_ steal the upfront fee by dropping the payment,&lt;br/&gt;&amp;gt;     as it&amp;#39;ll impact nodes&amp;#39; desire to route through them in future.&lt;br/&gt;&amp;gt;   * Is there a way to deliver upfront fees to nodes along the route&lt;br/&gt;&amp;gt;     *without* them adding up along the route (other than the naive&lt;br/&gt;&amp;gt;     version of sending each hop a payment, which comes with its own&lt;br/&gt;&amp;gt;     problems)? Seems not, but bright ideas are wanted and welcome!&lt;br/&gt;&amp;gt;   * That nodes will decide where they fall in the trade-off of setting&lt;br/&gt;&amp;gt;     upfront fees to cover their opportunity cost for high routing fees&lt;br/&gt;&amp;gt;     and market pressure to keep these fees low for the sake of&lt;br/&gt;&amp;gt;     remaining competitive.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A few people mentioned the desire to keep an upfront fee solution as&lt;br/&gt;&amp;gt; simple as possible, but generally it seemed that a solution where the&lt;br/&gt;&amp;gt; accumulated upfront fees at any point along a route exceed any single&lt;br/&gt;&amp;gt; hop&amp;#39;s expected success case fees is unacceptable because incentives&lt;br/&gt;&amp;gt; are misaligned (even if we can properly attribute errors with [5]).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; We touched briefly on a few &amp;#34;proof of forwarding&amp;#34; solutions for&lt;br/&gt;&amp;gt; upfront fees:&lt;br/&gt;&amp;gt;   * Using a locking mechanism that relies on a secret that is provided&lt;br/&gt;&amp;gt;     by the next node&amp;#39;s onion.&lt;br/&gt;&amp;gt;   * A taproot tree for all HTLCs where each leaf has a subset of HTLCs,&lt;br/&gt;&amp;gt;     and fees could be incorporated here (summary note: apparently some&lt;br/&gt;&amp;gt;     work has been done here, but I couldn&amp;#39;t find the link).&lt;br/&gt;&amp;gt;   * If we&amp;#39;re confident that a more complicated solution will solve many&lt;br/&gt;&amp;gt;     problems, then we should pursue them, otherwise a simple solution&lt;br/&gt;&amp;gt;     is possibly a _good enough_ first step.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; There was some discussion about how we want to go about addressing&lt;br/&gt;&amp;gt; spamming in the network:&lt;br/&gt;&amp;gt;   * Is it good enough to deploy something today that just charges a&lt;br/&gt;&amp;gt;     simple, capped upfront fee (eg 1 sat per hop) that solves jamming&lt;br/&gt;&amp;gt;     for the current state of the network and allows us to learn&lt;br/&gt;&amp;gt;     something then iterate?&lt;br/&gt;&amp;gt;   * Should our first attempt at solving this issue be for a future&lt;br/&gt;&amp;gt;     steady state where nodes have significant traffic and nodes face&lt;br/&gt;&amp;gt;     real opportunity cost (in the form of lost revenue) if they are&lt;br/&gt;&amp;gt;     targeted by a jamming attack?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 3. Circuit Breaker Update&lt;br/&gt;&amp;gt;   * Circuit breaker has a UI now, and some issues are being opened in&lt;br/&gt;&amp;gt;     the repo so people have at minimum gone through the effort to spin&lt;br/&gt;&amp;gt;     it up.&lt;br/&gt;&amp;gt;   * It&amp;#39;s still pretty manual, but it does provide node operators with&lt;br/&gt;&amp;gt;     information about the payment failures on their nodes (not easily&lt;br/&gt;&amp;gt;     surfaced in many LN UIs).&lt;br/&gt;&amp;gt;   * Hoping to get insights into stuck HTLCs and spam HTLCs so that we&lt;br/&gt;&amp;gt;     can learn from real life experience.&lt;br/&gt;&amp;gt;   * Circuit breaker is generally pushing in the same direction as the&lt;br/&gt;&amp;gt;     reputation scheme in [3], just a more manual one. We could&lt;br/&gt;&amp;gt;     possibly use it to visualize the endorsement system in [3] before&lt;br/&gt;&amp;gt;     enforcing it.&lt;br/&gt;&amp;gt;   * While circuit breaker isn&amp;#39;t necessarily *the* solution to solving&lt;br/&gt;&amp;gt;     jamming on LN, it provides us with some data points and a&lt;br/&gt;&amp;gt;     practical way for individual operators to address spamming of&lt;br/&gt;&amp;gt;     their nodes.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 3. Tokens Update&lt;br/&gt;&amp;gt; Since our last discussion an architecture document was added to the&lt;br/&gt;&amp;gt; proposal [6], details in the mailing list post [7]. The main goal is&lt;br/&gt;&amp;gt; to try to dissociate the people paying the fees from those gaining the&lt;br/&gt;&amp;gt; benefits from the credentials, so that credentials can be paid by a&lt;br/&gt;&amp;gt; LSP (for example).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 4. Reputation discussions in LSP Specification&lt;br/&gt;&amp;gt; Some attendees have been working on a reputation system for the LSP&lt;br/&gt;&amp;gt; specification group [8]. This system is intended to provide standard&lt;br/&gt;&amp;gt; metrics about what makes a node good/bad to connect to in the context&lt;br/&gt;&amp;gt; of a decentralized marketplace. While this work looks at the problem&lt;br/&gt;&amp;gt; from a different perspective, there&amp;#39;s a possibility to consolidate&lt;br/&gt;&amp;gt; the efforts. It seems particularly useful in the anti-jamming case&lt;br/&gt;&amp;gt; where a node has newly connected to you, and needs a &amp;#34;start state&amp;#34;&lt;br/&gt;&amp;gt; reputation score. The idea of defining what qualifies as good&lt;br/&gt;&amp;gt; behavior in the Lightning Network is useful across the board. The&lt;br/&gt;&amp;gt; LSP specification group also has bi-weekly calls, and welcomes&lt;br/&gt;&amp;gt; additional participants!&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 5. Call Cadence&lt;br/&gt;&amp;gt; Attendees agreed to continue with calls every two weeks. General&lt;br/&gt;&amp;gt; consensus was that we would aim for a 30 minute meeting with the&lt;br/&gt;&amp;gt; option to extend to an hour if discussion warrants it.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # What&amp;#39;s next&lt;br/&gt;&amp;gt; Thanks to everyone who attended last week&amp;#39;s meeting, we hope to see&lt;br/&gt;&amp;gt; more folks in the next one!&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; There&amp;#39;s a lot to discuss - brave readers who made it all the way to&lt;br/&gt;&amp;gt; the bottom of this email will notice a fair number of question marks&lt;br/&gt;&amp;gt; scattered about - and we&amp;#39;re going to continue to break the problem&lt;br/&gt;&amp;gt; down into smaller parts to discuss in the hope of making progress.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Any change to the Lightning Network that aims to address channel&lt;br/&gt;&amp;gt; jamming attacks will be a significant (but necessary) change to the&lt;br/&gt;&amp;gt; protocol, and it&amp;#39;s going to need input from many different&lt;br/&gt;&amp;gt; stakeholders. Please reach out here or in private&lt;br/&gt;&amp;gt; (carla at chaincode.com / clara at chaincode.com) if you have any questions&lt;br/&gt;&amp;gt; / concerns / comments!&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers until next time,&lt;br/&gt;&amp;gt; Carla and Clara&lt;br/&gt;&amp;gt; (Yes, our names are confusing. No, you won&amp;#39;t get used to it)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [1]&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/ClaraShk/LNJamming/blob/main/meeting-transcripts/23-01-23-transcript.md&#34;&gt;https://github.com/ClaraShk/LNJamming/blob/main/meeting-transcripts/23-01-23-transcript.md&lt;/a&gt;&lt;br/&gt;&amp;gt; [2] &lt;a href=&#34;https://github.com/lightning/bolts/pull/1052&#34;&gt;https://github.com/lightning/bolts/pull/1052&lt;/a&gt;&lt;br/&gt;&amp;gt; [3] &lt;a href=&#34;https://eprint.iacr.org/2022/1454.pdf&#34;&gt;https://eprint.iacr.org/2022/1454.pdf&lt;/a&gt;&lt;br/&gt;&amp;gt; [4]&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://mempool.space/lightning/node/021c97a90a411ff2b10dc2a8e32de2f29d2fa49d41bfbb52bd416e460db0747d0d&#34;&gt;https://mempool.space/lightning/node/021c97a90a411ff2b10dc2a8e32de2f29d2fa49d41bfbb52bd416e460db0747d0d&lt;/a&gt;&lt;br/&gt;&amp;gt; [5] &lt;a href=&#34;https://github.com/lightning/bolts/pull/1044&#34;&gt;https://github.com/lightning/bolts/pull/1044&lt;/a&gt;&lt;br/&gt;&amp;gt; [6] &lt;a href=&#34;https://github.com/lightning/bolts/pull/1043&#34;&gt;https://github.com/lightning/bolts/pull/1043&lt;/a&gt;&lt;br/&gt;&amp;gt; [8] &lt;a href=&#34;https://github.com/BitcoinAndLightningLayerSpecs/lsp/issues/12&#34;&gt;https://github.com/BitcoinAndLightningLayerSpecs/lsp/issues/12&lt;/a&gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230131/e171e031/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230131/e171e031/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:08:00Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsdrcv9awlk5whyntqsgttvh9qf6lzr5usjshcq4x6vcn4g9hs5drgzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24z8mkjlk</id>
    
      <title type="html">📅 Original date posted:2023-01-31 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsdrcv9awlk5whyntqsgttvh9qf6lzr5usjshcq4x6vcn4g9hs5drgzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24z8mkjlk" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsw4g3cvxv4rtgwekyl9g6mxa22s06p7w024t03xvk44wr2j492unqrzvu9d&#39;&gt;nevent1q…vu9d&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-01-31&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Clara,&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;(Reply 1/2 - Apparently there is a limit of 80KB on Lightning mailing post)&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;  * They will likely require a network wide upgrade: when a sender&lt;br/&gt;&lt;br/&gt;&amp;gt;    makes a payment, the full path will need to understand the new&lt;br/&gt;&lt;br/&gt;&amp;gt;    feature bit for it to be used.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;I believe the upgradeability dimension is different both for circuit breaker&lt;br/&gt;and staking credentials -- Circuit breaker is a point-level deployment and&lt;br/&gt;can be rolled out without cooperation of the channel peers. Staking&lt;br/&gt;credentials is end-to-end and just requires cooperation between endpoints&lt;br/&gt;(HTLC senders and routing hops, not even all on the payment paths).&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;And I think upfront fees is a link-level one, probably the one requesting the&lt;br/&gt;most cooperation between the community of developers/node operators.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Point-to-point/end-to-end deployment already provides benefits with&lt;br/&gt;&amp;#34;half-state&amp;#34;&lt;br/&gt;deployment, I think. However, you might have &amp;#34;holistic&amp;#34; beneficial effects&lt;br/&gt;of link-level solutions (in terms of economic engineering not in terms of&lt;br/&gt;software compatibility), I don&amp;#39;t know.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;  * Sending nodes are unlikely to be incentivised to upgrade to&lt;br/&gt;&lt;br/&gt;&amp;gt;    support a channel jamming mitigation, as jamming mitigations incur&lt;br/&gt;&lt;br/&gt;&amp;gt;    additional cost (be it in the form of upfront fees, tokens or some&lt;br/&gt;&lt;br/&gt;&amp;gt;    other mechanism).&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;As with any &amp;#34;unpatched&amp;#34; security risks we&amp;#39;re encumbering on Lightning&lt;br/&gt;(pinnings, time-dilation, etc), beyond clearly describing the attack in&lt;br/&gt;reference documents and proof-of-concept of the attack against&lt;br/&gt;implementations, the next step to keep raising awareness is a live demo as&lt;br/&gt;much near as one can from really mainet conditions. While we were patching&lt;br/&gt;CVE-2021-41591 and friends, I&amp;#39;ve been testing the solidity of the fixes on&lt;br/&gt;the Eclair-side in a &amp;#34;black-box&amp;#34; manner. Always worth it, you learn on the&lt;br/&gt;attack bounds.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;We could do the same with jamming attacks, as there is a wide-range of&lt;br/&gt;scenarios&lt;br/&gt;to consider (network-wide/merchant/routing hops) and few optimizations&lt;br/&gt;tricks like looping. Just have to be super careful with any demo exploits&lt;br/&gt;toolchain, there is always a question of ethics here.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;  * Routing nodes have no way of knowing whether a payment comes from&lt;br/&gt;&lt;br/&gt;&amp;gt;    a node that is not upgraded, or simply doesn&amp;#39;t want to pay the&lt;br/&gt;&lt;br/&gt;&amp;gt;    additional cost introduced by a jamming mitigation.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;I think a routing node able to know if the payment sender has upgraded could&lt;br/&gt;constitute a version/implementation fingerprint and a downgrade in HTLC traffic&lt;br/&gt;privacy, ideally a routing node should not be able to link payeer/payee.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;If a sender does not want to pay the jamming mitigation cost, it might be a&lt;br/&gt;flaw in the incentive-compatibility benefit of a mitigation.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;(And in terms of evaluating the&lt;br/&gt;incentives-compatibility/economic-efficiency of any solution, we&amp;#39;re going&lt;br/&gt;to run quickly in hard questions of economic methodology, a bit beyond the&lt;br/&gt;software engineering realm).&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; It was generally agreed that the network is still in an early enough&lt;br/&gt;&lt;br/&gt;&amp;gt; stage that it is fair for relaying nodes to initially upgrade but not&lt;br/&gt;&lt;br/&gt;&amp;gt; enforce the feature, and later look at forwarding traffic to determine&lt;br/&gt;&lt;br/&gt;&amp;gt; whether it is appropriate to require the feature.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;If we look at the recent history of mempool policy upgrades on the&lt;br/&gt;Bitcoin Core-side,&lt;br/&gt;I think it&amp;#39;s best practice to be more conservative in terms of &amp;#34;smooth&lt;br/&gt;feature&amp;#34; deployment, even feature-gated beyond some node operator setting. At&lt;br/&gt;time of feature enforcement, some node operators might claim an established&lt;br/&gt;claim on other flows of HTLC traffic, and there would be a question of&lt;br/&gt;backward-compatibility arising.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Independently, there is the fact on how discrepancies in feature activation&lt;br/&gt;could be exploited (privacy-wise or economically-wise). Same issue we have&lt;br/&gt;on the Bitcoin Core-side, when we update the mempool policy, and old nodes&lt;br/&gt;might not see new types of outputs (e.g Taproot spends being non-standard&lt;br/&gt;before the activation iirc).&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; This will require sending nodes to opt-in to the new feature before the&lt;br/&gt;network can&lt;br/&gt;&lt;br/&gt;&amp;gt; widely enforce it, as no rational routing node will require a feature&lt;br/&gt;&lt;br/&gt;&amp;gt; which would reduce its ability to serve un-upgraded traffic (unless&lt;br/&gt;&lt;br/&gt;&amp;gt; under attack, which is not the case at present).&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;I think the corollary holds -- A rational routing node will not require a&lt;br/&gt;feature which would reduce its ability to serve upgraded traffic.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Note, I think the &amp;#34;rational&amp;#34; routing node could be better defined,&lt;br/&gt;otherwise I think we&amp;#39;ll run quickly in the same bottlenecked discussions&lt;br/&gt;about &amp;#34;policy rules&amp;#34; compatible with miners incentives, as we&amp;#39;re seeing on&lt;br/&gt;the Core-side. So far, I don&amp;#39;t think we have a consistent model of miners&lt;br/&gt;incentives.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; A note was also made that wallets tend to upgrade less frequently, in&lt;br/&gt;&lt;br/&gt;&amp;gt; part because some providers run forked versions of LN implementations,&lt;br/&gt;&lt;br/&gt;&amp;gt; so this horizon may be quite long. It was emphasized that this type of&lt;br/&gt;&lt;br/&gt;&amp;gt; network upgrade would require input from wallets, designers and&lt;br/&gt;&lt;br/&gt;&amp;gt; application developers anyway, so hopefully by the time we look to&lt;br/&gt;&lt;br/&gt;&amp;gt; deploy a change there is rough consensus among the Lightning community&lt;br/&gt;&lt;br/&gt;&amp;gt; already.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Yeah, we have the same issues with transaction-relay/mempool policy or even the&lt;br/&gt;non-really specified addr-relay strategy of Bitcoin Core, when there is&lt;br/&gt;&lt;br/&gt;an upgrade there. It sounds to me there are no well-maintained public and open&lt;br/&gt;communication channels where protocol developers can reach out to&lt;br/&gt;wallet softwares&lt;br/&gt;vendors for protocol upgrades feedback (and vice-versa). I don&amp;#39;t know if&lt;br/&gt;it&amp;#39;s one goal of the LSP spec effort. If you&amp;#39;re building a wallet, you&amp;#39;re&lt;br/&gt;probably going to assemble and maintain components from the two layers.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;  * Nodes can advertise custom upfront fee rates if desired, but to&lt;br/&gt;&lt;br/&gt;&amp;gt;    save gossip bandwidth we assume a network-wide default of 1%.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;I think you will have an additional issue here. The routing convergence delay&lt;br/&gt;network-wide might be a bottleneck in how much fee rate variances you have&lt;br/&gt;flexibility as a routing node operator. Routing convergence delays have&lt;br/&gt;been studied in the past at 2,500 seconds for the worst-audience, I don&amp;#39;t&lt;br/&gt;think it&amp;#39;s going to hold with network graph growth.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;  * Upfront fees accumulate along the route (as htlc payment amounts&lt;br/&gt;&lt;br/&gt;&amp;gt;    do), and are simply pushed to the `to_remote` balance on&lt;br/&gt;&lt;br/&gt;&amp;gt;    `update_add_htlc`.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;I wonder if there is a concern of an &amp;#34;upfront fee&amp;#34; extraction issue at the&lt;br/&gt;channel-level. You have Alice and you have Bob, Bob circular loop to&lt;br/&gt;accumulate max `upfront_fee` on his `to_remote` balance on Alice&amp;#39;s commitment&lt;br/&gt;transaction. Then provoke a force-close by Alice to have her paying the&lt;br/&gt;on-chain fees in the post-anchor output model.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;There can be an interesting &amp;#34;upfront fees&amp;#34; siphoning issue here.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; The interaction between upfront fees and possible future protocol&lt;br/&gt;&lt;br/&gt;&amp;gt; changes such as inbound fees and negative fees was briefly discussed,&lt;br/&gt;&lt;br/&gt;&amp;gt; specifically the case where a node sets low (or negative) fees to&lt;br/&gt;&lt;br/&gt;&amp;gt; attract traffic then fails payments to accumulate upfront fees. As is,&lt;br/&gt;&lt;br/&gt;&amp;gt; all implementations’ algorithms optimize for factors other than fees -&lt;br/&gt;&lt;br/&gt;&amp;gt; specifically avoiding a node once it&amp;#39;s produced failures - and we&lt;br/&gt;&lt;br/&gt;&amp;gt; suspect that careful sender-side behavior will mitigate this risk.&lt;br/&gt;&lt;br/&gt;&amp;gt; However, it was also acknowledged that a node that attempts this attack&lt;br/&gt;&lt;br/&gt;&amp;gt; may be able to fool multiple individual senders and still be able to&lt;br/&gt;&lt;br/&gt;&amp;gt; accumulate some fees.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Correcting upfront fees abuses sounds simple as long as you assume the scoring&lt;br/&gt;is done by the endpoint. When you start to have gossip and routing scoring&lt;br/&gt;delegation, you might be hijacked by an &amp;#34;accumulating fees&amp;#34; adversary. E.g,&lt;br/&gt;one could sybil the rapid-gossip-sync servers, if their deployment becomes&lt;br/&gt;ubiquitous [1]. Same issue with Electrum servers lack of incentives&lt;br/&gt;alignment.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; However, Bob has no real incentive to forward the HTLC to Carol and&lt;br/&gt;&lt;br/&gt;&amp;gt; push her the 4100 msat because that value is more than the fees he&amp;#39;ll&lt;br/&gt;&lt;br/&gt;&amp;gt; earn from successfully forwarding and settling the HTLC (10 msat&lt;br/&gt;&lt;br/&gt;&amp;gt; upfront fees &#43; 1000 msat success case fees). It&amp;#39;s worth noting that&lt;br/&gt;&lt;br/&gt;&amp;gt; this type of fee differential already exists in the network today - I&lt;br/&gt;&lt;br/&gt;&amp;gt; got these example numbers by looking at the fee rates of the Loop&lt;br/&gt;&lt;br/&gt;&amp;gt; node&amp;#39;s peers [4].&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Yes, &amp;#34;fee differential&amp;#34; issues have been discussed affecting upfront fees and&lt;br/&gt;all the hold fees variants in the past. I&amp;#39;m not sure they&amp;#39;re acceptable fee&lt;br/&gt;risks, if you can exploit them by setting correctly the channel&lt;br/&gt;topologies around&lt;br/&gt;a victim routing hop.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;End of 1/2.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;[0]&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-May/003594.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-May/003594.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;[1]  &lt;a href=&#34;https://github.com/lightningdevkit/rapid-gossip-sync-server&#34;&gt;https://github.com/lightningdevkit/rapid-gossip-sync-server&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Le lun. 30 janv. 2023 à 15:25, Carla Kirk-Cohen &amp;lt;kirkcohenc at gmail.com&amp;gt; a&lt;br/&gt;écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi list,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Monday last week we resumed our fortnightly channel jamming&lt;br/&gt;&amp;gt; mitigation calls for 2023.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Details for the next call:&lt;br/&gt;&amp;gt; * Monday 02/06 @ 18:00 UTC&lt;br/&gt;&amp;gt; * &lt;a href=&#34;https://meet.jit.si/UnjammingLN&#34;&gt;https://meet.jit.si/UnjammingLN&lt;/a&gt;&lt;br/&gt;&amp;gt; * Agenda: &lt;a href=&#34;https://github.com/ClaraShk/LNJamming/issues/2&#34;&gt;https://github.com/ClaraShk/LNJamming/issues/2&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # Meeting Summary&lt;br/&gt;&amp;gt; This email attempts to summarize the discussion, but is of course&lt;br/&gt;&amp;gt; subject to my errors and opinions so the full transcript is available&lt;br/&gt;&amp;gt; at [1]. It is (imperfectly) AI generated, so please reach out to myself&lt;br/&gt;&amp;gt; or Clara if you&amp;#39;d like clarification for a specific section.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1. Upgrade Mechanisms&lt;br/&gt;&amp;gt; The first topic of discussion was around how we would go about&lt;br/&gt;&amp;gt; upgrading the network to support an anti-jamming mitigation. Most&lt;br/&gt;&amp;gt; solutions share the following characteristics:&lt;br/&gt;&amp;gt;   * They will likely require a network wide upgrade: when a sender&lt;br/&gt;&amp;gt;     makes a payment, the full path will need to understand the new&lt;br/&gt;&amp;gt;     feature bit for it to be used.&lt;br/&gt;&amp;gt;   * Sending nodes are unlikely to be incentivised to upgrade to&lt;br/&gt;&amp;gt;     support a channel jamming mitigation, as jamming mitigations incur&lt;br/&gt;&amp;gt;     additional cost (be it in the form of upfront fees, tokens or some&lt;br/&gt;&amp;gt;     other mechanism).&lt;br/&gt;&amp;gt;   * Routing nodes have no way of knowing whether a payment comes from&lt;br/&gt;&amp;gt;     a node that is not upgraded, or simply doesn&amp;#39;t want to pay the&lt;br/&gt;&amp;gt;     additional cost introduced by a jamming mitigation.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It was generally agreed that the network is still in an early enough&lt;br/&gt;&amp;gt; stage that it is fair for relaying nodes to initially upgrade but not&lt;br/&gt;&amp;gt; enforce the feature, and later look at forwarding traffic to determine&lt;br/&gt;&amp;gt; whether it is appropriate to require the feature. This will require&lt;br/&gt;&amp;gt; sending nodes to opt-in to the new feature before the network can&lt;br/&gt;&amp;gt; widely enforce it, as no rational routing node will require a feature&lt;br/&gt;&amp;gt; which would reduce its ability to serve un-upgraded traffic (unless&lt;br/&gt;&amp;gt; under attack, which is not the case at present).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A note was also made that wallets tend to upgrade less frequently, in&lt;br/&gt;&amp;gt; part because some providers run forked versions of LN implementations,&lt;br/&gt;&amp;gt; so this horizon may be quite long. It was emphasized that this type of&lt;br/&gt;&amp;gt; network upgrade would require input from wallets, designers and&lt;br/&gt;&amp;gt; application developers anyway, so hopefully by the time we look to&lt;br/&gt;&amp;gt; deploy a change there is rough consensus among the Lightning community&lt;br/&gt;&amp;gt; already.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 2. Upfront Fees&lt;br/&gt;&amp;gt; Next, we discussed the draft proposal for upfront fees [2] that&lt;br/&gt;&amp;gt; implements the first of a two-part jamming mitigation described in [3].&lt;br/&gt;&amp;gt; As it stands, the PR describes the simplest possible way to introduce&lt;br/&gt;&amp;gt; upfront fees to the protocol:&lt;br/&gt;&amp;gt;   * Upfront fees are expressed as a ppm of a channel&amp;#39;s success-case&lt;br/&gt;&amp;gt;     fees, and charged on the outgoing link of a route.&lt;br/&gt;&amp;gt;   * Nodes can advertise custom upfront fee rates if desired, but to&lt;br/&gt;&amp;gt;     save gossip bandwidth we assume a network-wide default of 1%.&lt;br/&gt;&amp;gt;   * Upfront fees accumulate along the route (as htlc payment amounts&lt;br/&gt;&amp;gt;     do), and are simply pushed to the `to_remote` balance on&lt;br/&gt;&amp;gt;     `update_add_htlc`.&lt;br/&gt;&amp;gt;   * Final hop nodes advertise an upfront fee policy in bolt 11 invoices&lt;br/&gt;&amp;gt;     (or bolt 12 blinded routes) which is sufficiently padded to&lt;br/&gt;&amp;gt;     obfuscate their location in the route.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The interaction between upfront fees and possible future protocol&lt;br/&gt;&amp;gt; changes such as inbound fees and negative fees was briefly discussed,&lt;br/&gt;&amp;gt; specifically the case where a node sets low (or negative) fees to&lt;br/&gt;&amp;gt; attract traffic then fails payments to accumulate upfront fees. As is,&lt;br/&gt;&amp;gt; all implementations’ algorithms optimize for factors other than fees -&lt;br/&gt;&amp;gt; specifically avoiding a node once it&amp;#39;s produced failures - and we&lt;br/&gt;&amp;gt; suspect that careful sender-side behavior will mitigate this risk.&lt;br/&gt;&amp;gt; However, it was also acknowledged that a node that attempts this attack&lt;br/&gt;&amp;gt; may be able to fool multiple individual senders and still be able to&lt;br/&gt;&amp;gt; accumulate some fees.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; We then discussed the shortcomings of the &amp;#34;simplest possible&amp;#34; upfront&lt;br/&gt;&amp;gt; fees in [2], specifically focused on the following scenario where&lt;br/&gt;&amp;gt; nodes receive 1% of their success-case fees as an upfront payment:&lt;br/&gt;&amp;gt;   * Alice is sending a payment to Dave, who is a popular sink node in&lt;br/&gt;&amp;gt;     the network.&lt;br/&gt;&amp;gt;   * Bob -&amp;gt; Carol has low/default routing policy: 1000 msat success&lt;br/&gt;&amp;gt;     case / 10 msat upfront fee&lt;br/&gt;&amp;gt;   * Carol -&amp;gt; Dave has high fees: 400,000 msat success case / 4000 msat&lt;br/&gt;&amp;gt;     upfront fee&lt;br/&gt;&amp;gt;   * Dave advertises no success case fee (is recipient) / 100 msat of&lt;br/&gt;&amp;gt;     upfront fee chosen for his invoice.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Alice ------ Bob ------ Carol ------ Dave&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Since we need to source all of these funds from the sender (Alice), the&lt;br/&gt;&amp;gt; forwarding of funds is as follows:&lt;br/&gt;&amp;gt;   * Alice pushes 4110 msat to Bob.&lt;br/&gt;&amp;gt;   * Bob _should_ push 4100 msat to Carol, claiming his 10 msat upfront&lt;br/&gt;&amp;gt;     fee.&lt;br/&gt;&amp;gt;   * Carol _should_ push 100 msat to Dave, claiming her 4000 msat&lt;br/&gt;&amp;gt;     upfront fee.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; However, Bob has no real incentive to forward the HTLC to Carol and&lt;br/&gt;&amp;gt; push her the 4100 msat because that value is more than the fees he&amp;#39;ll&lt;br/&gt;&amp;gt; earn from successfully forwarding and settling the HTLC (10 msat&lt;br/&gt;&amp;gt; upfront fees &#43; 1000 msat success case fees). It&amp;#39;s worth noting that&lt;br/&gt;&amp;gt; this type of fee differential already exists in the network today - I&lt;br/&gt;&amp;gt; got these example numbers by looking at the fee rates of the Loop&lt;br/&gt;&amp;gt; node&amp;#39;s peers [4].&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; There were a few points discussed around this issue:&lt;br/&gt;&amp;gt;   * Whether we should look into a more complicated approach that&lt;br/&gt;&amp;gt;     includes a &amp;#34;proof of forward&amp;#34; secret in the next node&amp;#39;s onion which&lt;br/&gt;&amp;gt;     must be supplied to claim the upfront fee.&lt;br/&gt;&amp;gt;   * Discussion about whether these order of magnitude fee differences&lt;br/&gt;&amp;gt;     will exist in an efficient market (differing opinions).&lt;br/&gt;&amp;gt;   * Whether Bob _would_ steal the upfront fee by dropping the payment,&lt;br/&gt;&amp;gt;     as it&amp;#39;ll impact nodes&amp;#39; desire to route through them in future.&lt;br/&gt;&amp;gt;   * Is there a way to deliver upfront fees to nodes along the route&lt;br/&gt;&amp;gt;     *without* them adding up along the route (other than the naive&lt;br/&gt;&amp;gt;     version of sending each hop a payment, which comes with its own&lt;br/&gt;&amp;gt;     problems)? Seems not, but bright ideas are wanted and welcome!&lt;br/&gt;&amp;gt;   * That nodes will decide where they fall in the trade-off of setting&lt;br/&gt;&amp;gt;     upfront fees to cover their opportunity cost for high routing fees&lt;br/&gt;&amp;gt;     and market pressure to keep these fees low for the sake of&lt;br/&gt;&amp;gt;     remaining competitive.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A few people mentioned the desire to keep an upfront fee solution as&lt;br/&gt;&amp;gt; simple as possible, but generally it seemed that a solution where the&lt;br/&gt;&amp;gt; accumulated upfront fees at any point along a route exceed any single&lt;br/&gt;&amp;gt; hop&amp;#39;s expected success case fees is unacceptable because incentives&lt;br/&gt;&amp;gt; are misaligned (even if we can properly attribute errors with [5]).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; We touched briefly on a few &amp;#34;proof of forwarding&amp;#34; solutions for&lt;br/&gt;&amp;gt; upfront fees:&lt;br/&gt;&amp;gt;   * Using a locking mechanism that relies on a secret that is provided&lt;br/&gt;&amp;gt;     by the next node&amp;#39;s onion.&lt;br/&gt;&amp;gt;   * A taproot tree for all HTLCs where each leaf has a subset of HTLCs,&lt;br/&gt;&amp;gt;     and fees could be incorporated here (summary note: apparently some&lt;br/&gt;&amp;gt;     work has been done here, but I couldn&amp;#39;t find the link).&lt;br/&gt;&amp;gt;   * If we&amp;#39;re confident that a more complicated solution will solve many&lt;br/&gt;&amp;gt;     problems, then we should pursue them, otherwise a simple solution&lt;br/&gt;&amp;gt;     is possibly a _good enough_ first step.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; There was some discussion about how we want to go about addressing&lt;br/&gt;&amp;gt; spamming in the network:&lt;br/&gt;&amp;gt;   * Is it good enough to deploy something today that just charges a&lt;br/&gt;&amp;gt;     simple, capped upfront fee (eg 1 sat per hop) that solves jamming&lt;br/&gt;&amp;gt;     for the current state of the network and allows us to learn&lt;br/&gt;&amp;gt;     something then iterate?&lt;br/&gt;&amp;gt;   * Should our first attempt at solving this issue be for a future&lt;br/&gt;&amp;gt;     steady state where nodes have significant traffic and nodes face&lt;br/&gt;&amp;gt;     real opportunity cost (in the form of lost revenue) if they are&lt;br/&gt;&amp;gt;     targeted by a jamming attack?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 3. Circuit Breaker Update&lt;br/&gt;&amp;gt;   * Circuit breaker has a UI now, and some issues are being opened in&lt;br/&gt;&amp;gt;     the repo so people have at minimum gone through the effort to spin&lt;br/&gt;&amp;gt;     it up.&lt;br/&gt;&amp;gt;   * It&amp;#39;s still pretty manual, but it does provide node operators with&lt;br/&gt;&amp;gt;     information about the payment failures on their nodes (not easily&lt;br/&gt;&amp;gt;     surfaced in many LN UIs).&lt;br/&gt;&amp;gt;   * Hoping to get insights into stuck HTLCs and spam HTLCs so that we&lt;br/&gt;&amp;gt;     can learn from real life experience.&lt;br/&gt;&amp;gt;   * Circuit breaker is generally pushing in the same direction as the&lt;br/&gt;&amp;gt;     reputation scheme in [3], just a more manual one. We could&lt;br/&gt;&amp;gt;     possibly use it to visualize the endorsement system in [3] before&lt;br/&gt;&amp;gt;     enforcing it.&lt;br/&gt;&amp;gt;   * While circuit breaker isn&amp;#39;t necessarily *the* solution to solving&lt;br/&gt;&amp;gt;     jamming on LN, it provides us with some data points and a&lt;br/&gt;&amp;gt;     practical way for individual operators to address spamming of&lt;br/&gt;&amp;gt;     their nodes.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 3. Tokens Update&lt;br/&gt;&amp;gt; Since our last discussion an architecture document was added to the&lt;br/&gt;&amp;gt; proposal [6], details in the mailing list post [7]. The main goal is&lt;br/&gt;&amp;gt; to try to dissociate the people paying the fees from those gaining the&lt;br/&gt;&amp;gt; benefits from the credentials, so that credentials can be paid by a&lt;br/&gt;&amp;gt; LSP (for example).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 4. Reputation discussions in LSP Specification&lt;br/&gt;&amp;gt; Some attendees have been working on a reputation system for the LSP&lt;br/&gt;&amp;gt; specification group [8]. This system is intended to provide standard&lt;br/&gt;&amp;gt; metrics about what makes a node good/bad to connect to in the context&lt;br/&gt;&amp;gt; of a decentralized marketplace. While this work looks at the problem&lt;br/&gt;&amp;gt; from a different perspective, there&amp;#39;s a possibility to consolidate&lt;br/&gt;&amp;gt; the efforts. It seems particularly useful in the anti-jamming case&lt;br/&gt;&amp;gt; where a node has newly connected to you, and needs a &amp;#34;start state&amp;#34;&lt;br/&gt;&amp;gt; reputation score. The idea of defining what qualifies as good&lt;br/&gt;&amp;gt; behavior in the Lightning Network is useful across the board. The&lt;br/&gt;&amp;gt; LSP specification group also has bi-weekly calls, and welcomes&lt;br/&gt;&amp;gt; additional participants!&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 5. Call Cadence&lt;br/&gt;&amp;gt; Attendees agreed to continue with calls every two weeks. General&lt;br/&gt;&amp;gt; consensus was that we would aim for a 30 minute meeting with the&lt;br/&gt;&amp;gt; option to extend to an hour if discussion warrants it.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # What&amp;#39;s next&lt;br/&gt;&amp;gt; Thanks to everyone who attended last week&amp;#39;s meeting, we hope to see&lt;br/&gt;&amp;gt; more folks in the next one!&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; There&amp;#39;s a lot to discuss - brave readers who made it all the way to&lt;br/&gt;&amp;gt; the bottom of this email will notice a fair number of question marks&lt;br/&gt;&amp;gt; scattered about - and we&amp;#39;re going to continue to break the problem&lt;br/&gt;&amp;gt; down into smaller parts to discuss in the hope of making progress.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Any change to the Lightning Network that aims to address channel&lt;br/&gt;&amp;gt; jamming attacks will be a significant (but necessary) change to the&lt;br/&gt;&amp;gt; protocol, and it&amp;#39;s going to need input from many different&lt;br/&gt;&amp;gt; stakeholders. Please reach out here or in private&lt;br/&gt;&amp;gt; (carla at chaincode.com / clara at chaincode.com) if you have any questions&lt;br/&gt;&amp;gt; / concerns / comments!&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers until next time,&lt;br/&gt;&amp;gt; Carla and Clara&lt;br/&gt;&amp;gt; (Yes, our names are confusing. No, you won&amp;#39;t get used to it)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [1]&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/ClaraShk/LNJamming/blob/main/meeting-transcripts/23-01-23-transcript.md&#34;&gt;https://github.com/ClaraShk/LNJamming/blob/main/meeting-transcripts/23-01-23-transcript.md&lt;/a&gt;&lt;br/&gt;&amp;gt; [2] &lt;a href=&#34;https://github.com/lightning/bolts/pull/1052&#34;&gt;https://github.com/lightning/bolts/pull/1052&lt;/a&gt;&lt;br/&gt;&amp;gt; [3] &lt;a href=&#34;https://eprint.iacr.org/2022/1454.pdf&#34;&gt;https://eprint.iacr.org/2022/1454.pdf&lt;/a&gt;&lt;br/&gt;&amp;gt; [4]&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://mempool.space/lightning/node/021c97a90a411ff2b10dc2a8e32de2f29d2fa49d41bfbb52bd416e460db0747d0d&#34;&gt;https://mempool.space/lightning/node/021c97a90a411ff2b10dc2a8e32de2f29d2fa49d41bfbb52bd416e460db0747d0d&lt;/a&gt;&lt;br/&gt;&amp;gt; [5] &lt;a href=&#34;https://github.com/lightning/bolts/pull/1044&#34;&gt;https://github.com/lightning/bolts/pull/1044&lt;/a&gt;&lt;br/&gt;&amp;gt; [6] &lt;a href=&#34;https://github.com/lightning/bolts/pull/1043&#34;&gt;https://github.com/lightning/bolts/pull/1043&lt;/a&gt;&lt;br/&gt;&amp;gt; [8] &lt;a href=&#34;https://github.com/BitcoinAndLightningLayerSpecs/lsp/issues/12&#34;&gt;https://github.com/BitcoinAndLightningLayerSpecs/lsp/issues/12&lt;/a&gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230131/bbef78be/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230131/bbef78be/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:07:59Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsw4g3cvxv4rtgwekyl9g6mxa22s06p7w024t03xvk44wr2j492unqzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zetf7jr</id>
    
      <title type="html">📅 Original date posted:2023-01-31 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsw4g3cvxv4rtgwekyl9g6mxa22s06p7w024t03xvk44wr2j492unqzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zetf7jr" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsyfkuxuvnusjf4azv6yee4xp2zp6wkrftxc4w906az92m5u3akczsh9tf45&#39;&gt;nevent1q…tf45&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-01-31&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Clara,&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;  * They will likely require a network wide upgrade: when a sender&lt;br/&gt;&lt;br/&gt;&amp;gt;    makes a payment, the full path will need to understand the new&lt;br/&gt;&lt;br/&gt;&amp;gt;    feature bit for it to be used.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;I believe the upgradeability dimension is different both for circuit breaker&lt;br/&gt;and staking credentials -- Circuit breaker is a point-level deployment and&lt;br/&gt;can be rolled out without cooperation of the channel peers. Staking&lt;br/&gt;credentials is end-to-end and just requires cooperation between endpoints&lt;br/&gt;(HTLC senders and routing hops, not even all on the payment paths).&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;And I think upfront fees is a link-level one, probably the one requesting the&lt;br/&gt;most cooperation between the community of developers/node operators.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Point-to-point/end-to-end deployment already provides benefits with&lt;br/&gt;&amp;#34;half-state&amp;#34;&lt;br/&gt;deployment, I think. However, you might have &amp;#34;holistic&amp;#34; beneficial effects&lt;br/&gt;of link-level solutions (in terms of economic engineering not in terms of&lt;br/&gt;software compatibility), I don&amp;#39;t know.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;  * Sending nodes are unlikely to be incentivised to upgrade to&lt;br/&gt;&lt;br/&gt;&amp;gt;    support a channel jamming mitigation, as jamming mitigations incur&lt;br/&gt;&lt;br/&gt;&amp;gt;    additional cost (be it in the form of upfront fees, tokens or some&lt;br/&gt;&lt;br/&gt;&amp;gt;    other mechanism).&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;As with any &amp;#34;unpatched&amp;#34; security risks we&amp;#39;re encumbering on Lightning&lt;br/&gt;(pinnings, time-dilation, etc), beyond clearly describing the attack in&lt;br/&gt;reference documents and proof-of-concept of the attack against&lt;br/&gt;implementations, the next step to keep raising awareness is a live demo as&lt;br/&gt;much near as one can from really mainet conditions. While we were patching&lt;br/&gt;CVE-2021-41591 and friends, I&amp;#39;ve been testing the solidity of the fixes on&lt;br/&gt;the Eclair-side in a &amp;#34;black-box&amp;#34; manner. Always worth it, you learn on the&lt;br/&gt;attack bounds.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;We could do the same with jamming attacks, as there is a wide-range of&lt;br/&gt;scenarios&lt;br/&gt;to consider (network-wide/merchant/routing hops) and few optimizations&lt;br/&gt;tricks like looping. Just have to be super careful with any demo exploits&lt;br/&gt;toolchain, there is always a question of ethics here.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;  * Routing nodes have no way of knowing whether a payment comes from&lt;br/&gt;&lt;br/&gt;&amp;gt;    a node that is not upgraded, or simply doesn&amp;#39;t want to pay the&lt;br/&gt;&lt;br/&gt;&amp;gt;    additional cost introduced by a jamming mitigation.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;I think a routing node able to know if the payment sender has upgraded could&lt;br/&gt;constitute a version/implementation fingerprint and a downgrade in HTLC traffic&lt;br/&gt;privacy, ideally a routing node should not be able to link payeer/payee.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;If a sender does not want to pay the jamming mitigation cost, it might be a&lt;br/&gt;flaw in the incentive-compatibility benefit of a mitigation.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;(And in terms of evaluating the&lt;br/&gt;incentives-compatibility/economic-efficiency of any solution, we&amp;#39;re going&lt;br/&gt;to run quickly in hard questions of economic methodology, a bit beyond the&lt;br/&gt;software engineering realm).&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; It was generally agreed that the network is still in an early enough&lt;br/&gt;&lt;br/&gt;&amp;gt; stage that it is fair for relaying nodes to initially upgrade but not&lt;br/&gt;&lt;br/&gt;&amp;gt; enforce the feature, and later look at forwarding traffic to determine&lt;br/&gt;&lt;br/&gt;&amp;gt; whether it is appropriate to require the feature.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;If we look at the recent history of mempool policy upgrades on the&lt;br/&gt;Bitcoin Core-side,&lt;br/&gt;I think it&amp;#39;s best practice to be more conservative in terms of &amp;#34;smooth&lt;br/&gt;feature&amp;#34; deployment, even feature-gated beyond some node operator setting. At&lt;br/&gt;time of feature enforcement, some node operators might claim an established&lt;br/&gt;claim on other flows of HTLC traffic, and there would be a question of&lt;br/&gt;backward-compatibility arising.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Independently, there is the fact on how discrepancies in feature activation&lt;br/&gt;could be exploited (privacy-wise or economically-wise). Same issue we have&lt;br/&gt;on the Bitcoin Core-side, when we update the mempool policy, and old nodes&lt;br/&gt;might not see new types of outputs (e.g Taproot spends being non-standard&lt;br/&gt;before the activation iirc).&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; This will require sending nodes to opt-in to the new feature before the&lt;br/&gt;network can&lt;br/&gt;&lt;br/&gt;&amp;gt; widely enforce it, as no rational routing node will require a feature&lt;br/&gt;&lt;br/&gt;&amp;gt; which would reduce its ability to serve un-upgraded traffic (unless&lt;br/&gt;&lt;br/&gt;&amp;gt; under attack, which is not the case at present).&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;I think the corollary holds -- A rational routing node will not require a&lt;br/&gt;feature which would reduce its ability to serve upgraded traffic.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Note, I think the &amp;#34;rational&amp;#34; routing node could be better defined,&lt;br/&gt;otherwise I think we&amp;#39;ll run quickly in the same bottlenecked discussions&lt;br/&gt;about &amp;#34;policy rules&amp;#34; compatible with miners incentives, as we&amp;#39;re seeing on&lt;br/&gt;the Core-side. So far, I don&amp;#39;t think we have a consistent model of miners&lt;br/&gt;incentives.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; A note was also made that wallets tend to upgrade less frequently, in&lt;br/&gt;&lt;br/&gt;&amp;gt; part because some providers run forked versions of LN implementations,&lt;br/&gt;&lt;br/&gt;&amp;gt; so this horizon may be quite long. It was emphasized that this type of&lt;br/&gt;&lt;br/&gt;&amp;gt; network upgrade would require input from wallets, designers and&lt;br/&gt;&lt;br/&gt;&amp;gt; application developers anyway, so hopefully by the time we look to&lt;br/&gt;&lt;br/&gt;&amp;gt; deploy a change there is rough consensus among the Lightning community&lt;br/&gt;&lt;br/&gt;&amp;gt; already.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Yeah, we have the same issues with transaction-relay/mempool policy or even the&lt;br/&gt;non-really specified addr-relay strategy of Bitcoin Core, when there is&lt;br/&gt;&lt;br/&gt;an upgrade there. It sounds to me there are no well-maintained public and open&lt;br/&gt;communication channels where protocol developers can reach out to&lt;br/&gt;wallet softwares&lt;br/&gt;vendors for protocol upgrades feedback (and vice-versa). I don&amp;#39;t know if&lt;br/&gt;it&amp;#39;s one goal of the LSP spec effort. If you&amp;#39;re building a wallet, you&amp;#39;re&lt;br/&gt;probably going to assemble and maintain components from the two layers.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;  * Nodes can advertise custom upfront fee rates if desired, but to&lt;br/&gt;&lt;br/&gt;&amp;gt;    save gossip bandwidth we assume a network-wide default of 1%.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;I think you will have an additional issue here. The routing convergence delay&lt;br/&gt;network-wide might be a bottleneck in how much fee rate variances you have&lt;br/&gt;flexibility as a routing node operator. Routing convergence delays have&lt;br/&gt;been studied in the past at 2,500 seconds for the worst-audience, I don&amp;#39;t&lt;br/&gt;think it&amp;#39;s going to hold with network graph growth.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;  * Upfront fees accumulate along the route (as htlc payment amounts&lt;br/&gt;&lt;br/&gt;&amp;gt;    do), and are simply pushed to the `to_remote` balance on&lt;br/&gt;&lt;br/&gt;&amp;gt;    `update_add_htlc`.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;I wonder if there is a concern of an &amp;#34;upfront fee&amp;#34; extraction issue at the&lt;br/&gt;channel-level. You have Alice and you have Bob, Bob circular loop to&lt;br/&gt;accumulate max `upfront_fee` on his `to_remote` balance on Alice&amp;#39;s commitment&lt;br/&gt;transaction. Then provoke a force-close by Alice to have her paying the&lt;br/&gt;on-chain fees in the post-anchor output model.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;There can be an interesting &amp;#34;upfront fees&amp;#34; siphoning issue here.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; The interaction between upfront fees and possible future protocol&lt;br/&gt;&lt;br/&gt;&amp;gt; changes such as inbound fees and negative fees was briefly discussed,&lt;br/&gt;&lt;br/&gt;&amp;gt; specifically the case where a node sets low (or negative) fees to&lt;br/&gt;&lt;br/&gt;&amp;gt; attract traffic then fails payments to accumulate upfront fees. As is,&lt;br/&gt;&lt;br/&gt;&amp;gt; all implementations’ algorithms optimize for factors other than fees -&lt;br/&gt;&lt;br/&gt;&amp;gt; specifically avoiding a node once it&amp;#39;s produced failures - and we&lt;br/&gt;&lt;br/&gt;&amp;gt; suspect that careful sender-side behavior will mitigate this risk.&lt;br/&gt;&lt;br/&gt;&amp;gt; However, it was also acknowledged that a node that attempts this attack&lt;br/&gt;&lt;br/&gt;&amp;gt; may be able to fool multiple individual senders and still be able to&lt;br/&gt;&lt;br/&gt;&amp;gt; accumulate some fees.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Correcting upfront fees abuses sounds simple as long as you assume the scoring&lt;br/&gt;is done by the endpoint. When you start to have gossip and routing scoring&lt;br/&gt;delegation, you might be hijacked by an &amp;#34;accumulating fees&amp;#34; adversary. E.g,&lt;br/&gt;one could sybil the rapid-gossip-sync servers, if their deployment becomes&lt;br/&gt;ubiquitous [1]. Same issue with Electrum servers lack of incentives&lt;br/&gt;alignment.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; However, Bob has no real incentive to forward the HTLC to Carol and&lt;br/&gt;&lt;br/&gt;&amp;gt; push her the 4100 msat because that value is more than the fees he&amp;#39;ll&lt;br/&gt;&lt;br/&gt;&amp;gt; earn from successfully forwarding and settling the HTLC (10 msat&lt;br/&gt;&lt;br/&gt;&amp;gt; upfront fees &#43; 1000 msat success case fees). It&amp;#39;s worth noting that&lt;br/&gt;&lt;br/&gt;&amp;gt; this type of fee differential already exists in the network today - I&lt;br/&gt;&lt;br/&gt;&amp;gt; got these example numbers by looking at the fee rates of the Loop&lt;br/&gt;&lt;br/&gt;&amp;gt; node&amp;#39;s peers [4].&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Yes, &amp;#34;fee differential&amp;#34; issues have been discussed affecting upfront fees and&lt;br/&gt;all the hold fees variants in the past. I&amp;#39;m not sure they&amp;#39;re acceptable fee&lt;br/&gt;risks, if you can exploit them by setting correctly the channel&lt;br/&gt;topologies around&lt;br/&gt;a victim routing hop.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;  * Whether we should look into a more complicated approach that&lt;br/&gt;&lt;br/&gt;&amp;gt;    includes a &amp;#34;proof of forward&amp;#34; secret in the next node&amp;#39;s onion which&lt;br/&gt;&lt;br/&gt;&amp;gt;    must be supplied to claim the upfront fee.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;One of the hard things with a &amp;#34;proof of forward&amp;#34; is a hop colluding with&lt;br/&gt;the next counterparty in way non-provable to the HTLC sender. I don&amp;#39;t think&lt;br/&gt;more reliable onion errors will save the mechanism, as you might always&lt;br/&gt;masquerade your routing node offliness (sure -- it might be penalized by&lt;br/&gt;routing algorithms still probably a period of grace exploitable)&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;  * Whether Bob _would_ steal the upfront fee by dropping the payment,&lt;br/&gt;&lt;br/&gt;&amp;gt;    as it&amp;#39;ll impact nodes&amp;#39; desire to route through them in future.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;And if you have &amp;#34;floating&amp;#34; upfront fees to adjust to routing node&lt;br/&gt;opportunity cost and the routing algorithms historical buckets are not&lt;br/&gt;correcting the variations, a &amp;#34;upfront fee&amp;#34; adversary might be able to steal&lt;br/&gt;the amount, in a proportion not corrected by the penalty.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;  * Is there a way to deliver upfront fees to nodes along the route&lt;br/&gt;&lt;br/&gt;&amp;gt;    *without* them adding up along the route (other than the naive&lt;br/&gt;&lt;br/&gt;&amp;gt;    version of sending each hop a payment, which comes with its own&lt;br/&gt;&lt;br/&gt;&amp;gt;    problems)? Seems not, but bright ideas are wanted and welcome!&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;I think the latest update of the Staking Credentials could answer such&lt;br/&gt;description&lt;br/&gt;of &amp;#34;delivering the upfront fees to nodes along the route *without* them&lt;br/&gt;adding up along the route&amp;#34; as the credential issuance is separated from its&lt;br/&gt;redemption.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On a few other ideas, &amp;#34;magically&amp;#34; teleporting the fee payment to the&lt;br/&gt;routing hops, it has been browsed in the past [2].&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;  * That nodes will decide where they fall in the trade-off of setting&lt;br/&gt;&lt;br/&gt;&amp;gt;    upfront fees to cover their opportunity cost for high routing fees&lt;br/&gt;&lt;br/&gt;&amp;gt;    and market pressure to keep these fees low for the sake of&lt;br/&gt;&lt;br/&gt;&amp;gt;    remaining competitive.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;They will probably need to do real-time monitoring of the congestion rates&lt;br/&gt;and outcome results of their HTLC forwarding to adjust in consequence their&lt;br/&gt;routing fees.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;   * A taproot tree for all HTLCs where each leaf has a subset of HTLCs,&lt;br/&gt;&lt;br/&gt;&amp;gt;     and fees could be incorporated here (summary note: apparently some&lt;br/&gt;&lt;br/&gt;&amp;gt;     work has been done here, but I couldn&amp;#39;t find the link).&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;The idea of summing up the taproot tree for all HTLCs is discussed here&lt;br/&gt;with past references [3]. I don&amp;#39;t know if it&amp;#39;s really a viable direction,&lt;br/&gt;as aggregating the claim of HTLCs of different values in the same witness&lt;br/&gt;claims might open the door to transaction-relay games.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;   * If we&amp;#39;re confident that a more complicated solution will solve many&lt;br/&gt;&lt;br/&gt;&amp;gt;     problems, then we should pursue them, otherwise a simple solution&lt;br/&gt;&lt;br/&gt;&amp;gt;     is possibly a _good enough_ first step.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;If the &amp;#34;proof of forward&amp;#34; can be solved by &amp;#34;magic&amp;#34; covenant is still an open&lt;br/&gt;issue. I don&amp;#39;t know if it&amp;#39;s a viable solution as it&amp;#39;s more a hard synchronicity&lt;br/&gt;issue between chain of contracts. However from exploring issue we might&lt;br/&gt;learn interesting design considerations for contracting protocols (at the&lt;br/&gt;very least some semi-formal proof it&amp;#39;s not possible)&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;  * Should our first attempt at solving this issue be for a future&lt;br/&gt;&lt;br/&gt;&amp;gt;    steady state where nodes have significant traffic and nodes face&lt;br/&gt;&lt;br/&gt;&amp;gt;    real opportunity cost (in the form of lost revenue) if they are&lt;br/&gt;&lt;br/&gt;&amp;gt;    targeted by a jamming attack?&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Deferring the most economically-efficient solution we can come from, we might&lt;br/&gt;run into a bunch of incentives-misallignment between generation of nodes&lt;br/&gt;operators and Lightning use-cases. Maybe same as we have seen with lack of&lt;br/&gt;transaction replacement, first-seen RBF, opt-in RBF, mempoolfullrbf, I&lt;br/&gt;believe.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On the other-side, the deployment of a simple solution would enable us to&lt;br/&gt;start to build a consistent model of how the economics of channel&lt;br/&gt;congestion, that we can &amp;#34;transpose&amp;#34; for more advanced solutions (ideally --&lt;br/&gt;all other things being equal).&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;  * While circuit breaker isn&amp;#39;t necessarily *the* solution to solving&lt;br/&gt;&lt;br/&gt;&amp;gt;    jamming on LN, it provides us with some data points and a&lt;br/&gt;&lt;br/&gt;&amp;gt;    practical way for individual operators to address spamming of&lt;br/&gt;&lt;br/&gt;&amp;gt;    their nodes.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;As mentioned above, it sounds like the congestion monitoring and HTLCs&lt;br/&gt;resolution tracking is going to be a standard task among LN&lt;br/&gt;implementations, and that you&amp;#39;ll would probably need a piece of&lt;br/&gt;infrastructure like circuit breaker for all implementations.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; Since our last discussion an architecture document was added to the&lt;br/&gt;&lt;br/&gt;&amp;gt; proposal [6], details in the mailing list post [7]. The main goal is&lt;br/&gt;&lt;br/&gt;&amp;gt; to try to dissociate the people paying the fees from those gaining the&lt;br/&gt;&lt;br/&gt;&amp;gt; benefits from the credentials, so that credentials can be paid by a&lt;br/&gt;&lt;br/&gt;&amp;gt; LSP (for example).&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;I think there is a missing footnote, I believe the mail thread might have&lt;br/&gt;been this one:&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2023-January/003822.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2023-January/003822.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Beyond delegation as mentioned, there are few other design goals targeted:&lt;br/&gt;&lt;br/&gt;- strong economic-efficiency due to credentials accumulation&lt;br/&gt;&lt;br/&gt;- fungibility of their credentials between their issuance and redemption&lt;br/&gt;&lt;br/&gt;- dynamic-management of liquidity risks&lt;br/&gt;&lt;br/&gt;- contract-agnostic (e.g can cover dual-opening)&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Probably, we&amp;#39;ll have the credential issuance flow and extension gossip more&lt;br/&gt;speced out before next meetings.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; 4. Reputation discussions in LSP Specification&lt;br/&gt;&lt;br/&gt;&amp;gt; Some attendees have been working on a reputation system for the LSP&lt;br/&gt;&lt;br/&gt;&amp;gt; specification group [8]. This system is intended to provide standard&lt;br/&gt;&lt;br/&gt;&amp;gt; metrics about what makes a node good/bad to connect to in the context&lt;br/&gt;&lt;br/&gt;&amp;gt; of a decentralized marketplace. While this work looks at the problem&lt;br/&gt;&lt;br/&gt;&amp;gt; from a different perspective, there&amp;#39;s a possibility to consolidate&lt;br/&gt;&lt;br/&gt;&amp;gt; the efforts. It seems particularly useful in the anti-jamming case&lt;br/&gt;&lt;br/&gt;&amp;gt; where a node has newly connected to you, and needs a &amp;#34;start state&amp;#34;&lt;br/&gt;&lt;br/&gt;&amp;gt; reputation score. The idea of defining what qualifies as good&lt;br/&gt;&lt;br/&gt;&amp;gt; behavior in the Lightning Network is useful across the board. The&lt;br/&gt;&lt;br/&gt;&amp;gt; LSP specification group also has bi-weekly calls, and welcomes&lt;br/&gt;&lt;br/&gt;&amp;gt; additional participants!&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Effectively, I think distributed market infrastructure design could benefit&lt;br/&gt;from the lessons of the Lightning Network. It could be fruitful for the LSP&lt;br/&gt;specification group to have its own mailing list at some point in the&lt;br/&gt;future.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; There&amp;#39;s a lot to discuss - brave readers who made it all the way to&lt;br/&gt;&lt;br/&gt;&amp;gt; the bottom of this email will notice a fair number of question marks&lt;br/&gt;&lt;br/&gt;&amp;gt; scattered about - and we&amp;#39;re going to continue to break the problem&lt;br/&gt;&lt;br/&gt;&amp;gt; down into smaller parts to discuss in the hope of making progress.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Beyond archiving well the problem space, there is also an effort of&lt;br/&gt;documenting well any protocol design decisions to preserve future&lt;br/&gt;evolvability and achieve interoperability between implementations.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; Any change to the Lightning Network that aims to address channel&lt;br/&gt;&lt;br/&gt;&amp;gt; jamming attacks will be a significant (but necessary) change to the&lt;br/&gt;&lt;br/&gt;&amp;gt; protocol&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;For sure, this is a significant change to the protocol, beyond that we&lt;br/&gt;should be careful to not downgrade the throughput or operations of the&lt;br/&gt;base-layer. If the original Stakes Certificates would have been&lt;br/&gt;implemented, it would have constituted a mempool congestion risk, where the&lt;br/&gt;node operators under jamming would have forced attackers to pay for fresh&lt;br/&gt;UTXOs. If we have to envision such cross-layer mitigation design in the&lt;br/&gt;future, I think we might have to do cross-layer consensus building.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;[0]&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-May/003594.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-May/003594.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;[1] &lt;a href=&#34;https://github.com/lightningdevkit/rapid-gossip-sync-server&#34;&gt;https://github.com/lightningdevkit/rapid-gossip-sync-server&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;[2] &lt;a href=&#34;https://jamming-dev.github.io/book/4-design_space.html&#34;&gt;https://jamming-dev.github.io/book/4-design_space.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;[3] &lt;a href=&#34;https://github.com/ariard/bitcoin-contracting-primitives-wg/issues/26&#34;&gt;https://github.com/ariard/bitcoin-contracting-primitives-wg/issues/26&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;[4]&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-November/002884.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-November/002884.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Le lun. 30 janv. 2023 à 15:25, Carla Kirk-Cohen &amp;lt;kirkcohenc at gmail.com&amp;gt; a&lt;br/&gt;écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi list,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Monday last week we resumed our fortnightly channel jamming&lt;br/&gt;&amp;gt; mitigation calls for 2023.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Details for the next call:&lt;br/&gt;&amp;gt; * Monday 02/06 @ 18:00 UTC&lt;br/&gt;&amp;gt; * &lt;a href=&#34;https://meet.jit.si/UnjammingLN&#34;&gt;https://meet.jit.si/UnjammingLN&lt;/a&gt;&lt;br/&gt;&amp;gt; * Agenda: &lt;a href=&#34;https://github.com/ClaraShk/LNJamming/issues/2&#34;&gt;https://github.com/ClaraShk/LNJamming/issues/2&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # Meeting Summary&lt;br/&gt;&amp;gt; This email attempts to summarize the discussion, but is of course&lt;br/&gt;&amp;gt; subject to my errors and opinions so the full transcript is available&lt;br/&gt;&amp;gt; at [1]. It is (imperfectly) AI generated, so please reach out to myself&lt;br/&gt;&amp;gt; or Clara if you&amp;#39;d like clarification for a specific section.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1. Upgrade Mechanisms&lt;br/&gt;&amp;gt; The first topic of discussion was around how we would go about&lt;br/&gt;&amp;gt; upgrading the network to support an anti-jamming mitigation. Most&lt;br/&gt;&amp;gt; solutions share the following characteristics:&lt;br/&gt;&amp;gt;   * They will likely require a network wide upgrade: when a sender&lt;br/&gt;&amp;gt;     makes a payment, the full path will need to understand the new&lt;br/&gt;&amp;gt;     feature bit for it to be used.&lt;br/&gt;&amp;gt;   * Sending nodes are unlikely to be incentivised to upgrade to&lt;br/&gt;&amp;gt;     support a channel jamming mitigation, as jamming mitigations incur&lt;br/&gt;&amp;gt;     additional cost (be it in the form of upfront fees, tokens or some&lt;br/&gt;&amp;gt;     other mechanism).&lt;br/&gt;&amp;gt;   * Routing nodes have no way of knowing whether a payment comes from&lt;br/&gt;&amp;gt;     a node that is not upgraded, or simply doesn&amp;#39;t want to pay the&lt;br/&gt;&amp;gt;     additional cost introduced by a jamming mitigation.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It was generally agreed that the network is still in an early enough&lt;br/&gt;&amp;gt; stage that it is fair for relaying nodes to initially upgrade but not&lt;br/&gt;&amp;gt; enforce the feature, and later look at forwarding traffic to determine&lt;br/&gt;&amp;gt; whether it is appropriate to require the feature. This will require&lt;br/&gt;&amp;gt; sending nodes to opt-in to the new feature before the network can&lt;br/&gt;&amp;gt; widely enforce it, as no rational routing node will require a feature&lt;br/&gt;&amp;gt; which would reduce its ability to serve un-upgraded traffic (unless&lt;br/&gt;&amp;gt; under attack, which is not the case at present).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A note was also made that wallets tend to upgrade less frequently, in&lt;br/&gt;&amp;gt; part because some providers run forked versions of LN implementations,&lt;br/&gt;&amp;gt; so this horizon may be quite long. It was emphasized that this type of&lt;br/&gt;&amp;gt; network upgrade would require input from wallets, designers and&lt;br/&gt;&amp;gt; application developers anyway, so hopefully by the time we look to&lt;br/&gt;&amp;gt; deploy a change there is rough consensus among the Lightning community&lt;br/&gt;&amp;gt; already.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 2. Upfront Fees&lt;br/&gt;&amp;gt; Next, we discussed the draft proposal for upfront fees [2] that&lt;br/&gt;&amp;gt; implements the first of a two-part jamming mitigation described in [3].&lt;br/&gt;&amp;gt; As it stands, the PR describes the simplest possible way to introduce&lt;br/&gt;&amp;gt; upfront fees to the protocol:&lt;br/&gt;&amp;gt;   * Upfront fees are expressed as a ppm of a channel&amp;#39;s success-case&lt;br/&gt;&amp;gt;     fees, and charged on the outgoing link of a route.&lt;br/&gt;&amp;gt;   * Nodes can advertise custom upfront fee rates if desired, but to&lt;br/&gt;&amp;gt;     save gossip bandwidth we assume a network-wide default of 1%.&lt;br/&gt;&amp;gt;   * Upfront fees accumulate along the route (as htlc payment amounts&lt;br/&gt;&amp;gt;     do), and are simply pushed to the `to_remote` balance on&lt;br/&gt;&amp;gt;     `update_add_htlc`.&lt;br/&gt;&amp;gt;   * Final hop nodes advertise an upfront fee policy in bolt 11 invoices&lt;br/&gt;&amp;gt;     (or bolt 12 blinded routes) which is sufficiently padded to&lt;br/&gt;&amp;gt;     obfuscate their location in the route.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The interaction between upfront fees and possible future protocol&lt;br/&gt;&amp;gt; changes such as inbound fees and negative fees was briefly discussed,&lt;br/&gt;&amp;gt; specifically the case where a node sets low (or negative) fees to&lt;br/&gt;&amp;gt; attract traffic then fails payments to accumulate upfront fees. As is,&lt;br/&gt;&amp;gt; all implementations’ algorithms optimize for factors other than fees -&lt;br/&gt;&amp;gt; specifically avoiding a node once it&amp;#39;s produced failures - and we&lt;br/&gt;&amp;gt; suspect that careful sender-side behavior will mitigate this risk.&lt;br/&gt;&amp;gt; However, it was also acknowledged that a node that attempts this attack&lt;br/&gt;&amp;gt; may be able to fool multiple individual senders and still be able to&lt;br/&gt;&amp;gt; accumulate some fees.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; We then discussed the shortcomings of the &amp;#34;simplest possible&amp;#34; upfront&lt;br/&gt;&amp;gt; fees in [2], specifically focused on the following scenario where&lt;br/&gt;&amp;gt; nodes receive 1% of their success-case fees as an upfront payment:&lt;br/&gt;&amp;gt;   * Alice is sending a payment to Dave, who is a popular sink node in&lt;br/&gt;&amp;gt;     the network.&lt;br/&gt;&amp;gt;   * Bob -&amp;gt; Carol has low/default routing policy: 1000 msat success&lt;br/&gt;&amp;gt;     case / 10 msat upfront fee&lt;br/&gt;&amp;gt;   * Carol -&amp;gt; Dave has high fees: 400,000 msat success case / 4000 msat&lt;br/&gt;&amp;gt;     upfront fee&lt;br/&gt;&amp;gt;   * Dave advertises no success case fee (is recipient) / 100 msat of&lt;br/&gt;&amp;gt;     upfront fee chosen for his invoice.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Alice ------ Bob ------ Carol ------ Dave&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Since we need to source all of these funds from the sender (Alice), the&lt;br/&gt;&amp;gt; forwarding of funds is as follows:&lt;br/&gt;&amp;gt;   * Alice pushes 4110 msat to Bob.&lt;br/&gt;&amp;gt;   * Bob _should_ push 4100 msat to Carol, claiming his 10 msat upfront&lt;br/&gt;&amp;gt;     fee.&lt;br/&gt;&amp;gt;   * Carol _should_ push 100 msat to Dave, claiming her 4000 msat&lt;br/&gt;&amp;gt;     upfront fee.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; However, Bob has no real incentive to forward the HTLC to Carol and&lt;br/&gt;&amp;gt; push her the 4100 msat because that value is more than the fees he&amp;#39;ll&lt;br/&gt;&amp;gt; earn from successfully forwarding and settling the HTLC (10 msat&lt;br/&gt;&amp;gt; upfront fees &#43; 1000 msat success case fees). It&amp;#39;s worth noting that&lt;br/&gt;&amp;gt; this type of fee differential already exists in the network today - I&lt;br/&gt;&amp;gt; got these example numbers by looking at the fee rates of the Loop&lt;br/&gt;&amp;gt; node&amp;#39;s peers [4].&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; There were a few points discussed around this issue:&lt;br/&gt;&amp;gt;   * Whether we should look into a more complicated approach that&lt;br/&gt;&amp;gt;     includes a &amp;#34;proof of forward&amp;#34; secret in the next node&amp;#39;s onion which&lt;br/&gt;&amp;gt;     must be supplied to claim the upfront fee.&lt;br/&gt;&amp;gt;   * Discussion about whether these order of magnitude fee differences&lt;br/&gt;&amp;gt;     will exist in an efficient market (differing opinions).&lt;br/&gt;&amp;gt;   * Whether Bob _would_ steal the upfront fee by dropping the payment,&lt;br/&gt;&amp;gt;     as it&amp;#39;ll impact nodes&amp;#39; desire to route through them in future.&lt;br/&gt;&amp;gt;   * Is there a way to deliver upfront fees to nodes along the route&lt;br/&gt;&amp;gt;     *without* them adding up along the route (other than the naive&lt;br/&gt;&amp;gt;     version of sending each hop a payment, which comes with its own&lt;br/&gt;&amp;gt;     problems)? Seems not, but bright ideas are wanted and welcome!&lt;br/&gt;&amp;gt;   * That nodes will decide where they fall in the trade-off of setting&lt;br/&gt;&amp;gt;     upfront fees to cover their opportunity cost for high routing fees&lt;br/&gt;&amp;gt;     and market pressure to keep these fees low for the sake of&lt;br/&gt;&amp;gt;     remaining competitive.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A few people mentioned the desire to keep an upfront fee solution as&lt;br/&gt;&amp;gt; simple as possible, but generally it seemed that a solution where the&lt;br/&gt;&amp;gt; accumulated upfront fees at any point along a route exceed any single&lt;br/&gt;&amp;gt; hop&amp;#39;s expected success case fees is unacceptable because incentives&lt;br/&gt;&amp;gt; are misaligned (even if we can properly attribute errors with [5]).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; We touched briefly on a few &amp;#34;proof of forwarding&amp;#34; solutions for&lt;br/&gt;&amp;gt; upfront fees:&lt;br/&gt;&amp;gt;   * Using a locking mechanism that relies on a secret that is provided&lt;br/&gt;&amp;gt;     by the next node&amp;#39;s onion.&lt;br/&gt;&amp;gt;   * A taproot tree for all HTLCs where each leaf has a subset of HTLCs,&lt;br/&gt;&amp;gt;     and fees could be incorporated here (summary note: apparently some&lt;br/&gt;&amp;gt;     work has been done here, but I couldn&amp;#39;t find the link).&lt;br/&gt;&amp;gt;   * If we&amp;#39;re confident that a more complicated solution will solve many&lt;br/&gt;&amp;gt;     problems, then we should pursue them, otherwise a simple solution&lt;br/&gt;&amp;gt;     is possibly a _good enough_ first step.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; There was some discussion about how we want to go about addressing&lt;br/&gt;&amp;gt; spamming in the network:&lt;br/&gt;&amp;gt;   * Is it good enough to deploy something today that just charges a&lt;br/&gt;&amp;gt;     simple, capped upfront fee (eg 1 sat per hop) that solves jamming&lt;br/&gt;&amp;gt;     for the current state of the network and allows us to learn&lt;br/&gt;&amp;gt;     something then iterate?&lt;br/&gt;&amp;gt;   * Should our first attempt at solving this issue be for a future&lt;br/&gt;&amp;gt;     steady state where nodes have significant traffic and nodes face&lt;br/&gt;&amp;gt;     real opportunity cost (in the form of lost revenue) if they are&lt;br/&gt;&amp;gt;     targeted by a jamming attack?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 3. Circuit Breaker Update&lt;br/&gt;&amp;gt;   * Circuit breaker has a UI now, and some issues are being opened in&lt;br/&gt;&amp;gt;     the repo so people have at minimum gone through the effort to spin&lt;br/&gt;&amp;gt;     it up.&lt;br/&gt;&amp;gt;   * It&amp;#39;s still pretty manual, but it does provide node operators with&lt;br/&gt;&amp;gt;     information about the payment failures on their nodes (not easily&lt;br/&gt;&amp;gt;     surfaced in many LN UIs).&lt;br/&gt;&amp;gt;   * Hoping to get insights into stuck HTLCs and spam HTLCs so that we&lt;br/&gt;&amp;gt;     can learn from real life experience.&lt;br/&gt;&amp;gt;   * Circuit breaker is generally pushing in the same direction as the&lt;br/&gt;&amp;gt;     reputation scheme in [3], just a more manual one. We could&lt;br/&gt;&amp;gt;     possibly use it to visualize the endorsement system in [3] before&lt;br/&gt;&amp;gt;     enforcing it.&lt;br/&gt;&amp;gt;   * While circuit breaker isn&amp;#39;t necessarily *the* solution to solving&lt;br/&gt;&amp;gt;     jamming on LN, it provides us with some data points and a&lt;br/&gt;&amp;gt;     practical way for individual operators to address spamming of&lt;br/&gt;&amp;gt;     their nodes.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 3. Tokens Update&lt;br/&gt;&amp;gt; Since our last discussion an architecture document was added to the&lt;br/&gt;&amp;gt; proposal [6], details in the mailing list post [7]. The main goal is&lt;br/&gt;&amp;gt; to try to dissociate the people paying the fees from those gaining the&lt;br/&gt;&amp;gt; benefits from the credentials, so that credentials can be paid by a&lt;br/&gt;&amp;gt; LSP (for example).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 4. Reputation discussions in LSP Specification&lt;br/&gt;&amp;gt; Some attendees have been working on a reputation system for the LSP&lt;br/&gt;&amp;gt; specification group [8]. This system is intended to provide standard&lt;br/&gt;&amp;gt; metrics about what makes a node good/bad to connect to in the context&lt;br/&gt;&amp;gt; of a decentralized marketplace. While this work looks at the problem&lt;br/&gt;&amp;gt; from a different perspective, there&amp;#39;s a possibility to consolidate&lt;br/&gt;&amp;gt; the efforts. It seems particularly useful in the anti-jamming case&lt;br/&gt;&amp;gt; where a node has newly connected to you, and needs a &amp;#34;start state&amp;#34;&lt;br/&gt;&amp;gt; reputation score. The idea of defining what qualifies as good&lt;br/&gt;&amp;gt; behavior in the Lightning Network is useful across the board. The&lt;br/&gt;&amp;gt; LSP specification group also has bi-weekly calls, and welcomes&lt;br/&gt;&amp;gt; additional participants!&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 5. Call Cadence&lt;br/&gt;&amp;gt; Attendees agreed to continue with calls every two weeks. General&lt;br/&gt;&amp;gt; consensus was that we would aim for a 30 minute meeting with the&lt;br/&gt;&amp;gt; option to extend to an hour if discussion warrants it.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # What&amp;#39;s next&lt;br/&gt;&amp;gt; Thanks to everyone who attended last week&amp;#39;s meeting, we hope to see&lt;br/&gt;&amp;gt; more folks in the next one!&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; There&amp;#39;s a lot to discuss - brave readers who made it all the way to&lt;br/&gt;&amp;gt; the bottom of this email will notice a fair number of question marks&lt;br/&gt;&amp;gt; scattered about - and we&amp;#39;re going to continue to break the problem&lt;br/&gt;&amp;gt; down into smaller parts to discuss in the hope of making progress.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Any change to the Lightning Network that aims to address channel&lt;br/&gt;&amp;gt; jamming attacks will be a significant (but necessary) change to the&lt;br/&gt;&amp;gt; protocol, and it&amp;#39;s going to need input from many different&lt;br/&gt;&amp;gt; stakeholders. Please reach out here or in private&lt;br/&gt;&amp;gt; (carla at chaincode.com / clara at chaincode.com) if you have any questions&lt;br/&gt;&amp;gt; / concerns / comments!&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers until next time,&lt;br/&gt;&amp;gt; Carla and Clara&lt;br/&gt;&amp;gt; (Yes, our names are confusing. No, you won&amp;#39;t get used to it)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [1]&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/ClaraShk/LNJamming/blob/main/meeting-transcripts/23-01-23-transcript.md&#34;&gt;https://github.com/ClaraShk/LNJamming/blob/main/meeting-transcripts/23-01-23-transcript.md&lt;/a&gt;&lt;br/&gt;&amp;gt; [2] &lt;a href=&#34;https://github.com/lightning/bolts/pull/1052&#34;&gt;https://github.com/lightning/bolts/pull/1052&lt;/a&gt;&lt;br/&gt;&amp;gt; [3] &lt;a href=&#34;https://eprint.iacr.org/2022/1454.pdf&#34;&gt;https://eprint.iacr.org/2022/1454.pdf&lt;/a&gt;&lt;br/&gt;&amp;gt; [4]&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://mempool.space/lightning/node/021c97a90a411ff2b10dc2a8e32de2f29d2fa49d41bfbb52bd416e460db0747d0d&#34;&gt;https://mempool.space/lightning/node/021c97a90a411ff2b10dc2a8e32de2f29d2fa49d41bfbb52bd416e460db0747d0d&lt;/a&gt;&lt;br/&gt;&amp;gt; [5] &lt;a href=&#34;https://github.com/lightning/bolts/pull/1044&#34;&gt;https://github.com/lightning/bolts/pull/1044&lt;/a&gt;&lt;br/&gt;&amp;gt; [6] &lt;a href=&#34;https://github.com/lightning/bolts/pull/1043&#34;&gt;https://github.com/lightning/bolts/pull/1043&lt;/a&gt;&lt;br/&gt;&amp;gt; [8] &lt;a href=&#34;https://github.com/BitcoinAndLightningLayerSpecs/lsp/issues/12&#34;&gt;https://github.com/BitcoinAndLightningLayerSpecs/lsp/issues/12&lt;/a&gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230131/eaa2019f/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230131/eaa2019f/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:07:58Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsd6ynpf8nl60gctt0z3nncc5w937ljzj0azzes66qn3t6j0vtv0pqzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zzdm495</id>
    
      <title type="html">📅 Original date posted:2023-01-12 📝 Original message: Hi LN ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsd6ynpf8nl60gctt0z3nncc5w937ljzj0azzes66qn3t6j0vtv0pqzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zzdm495" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs97d74mwep773qm3g6synjrx2f3gsh7a5a7expus0v25mz6n58kyg9n2h02&#39;&gt;nevent1q…2h02&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-01-12&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi LN devs,&lt;br/&gt;&lt;br/&gt;Following the November proposal of mitigating channel jamming with&lt;br/&gt;Reputation Credentials, started to document the protocol architecture.&lt;br/&gt;After feedback on the naming protocol itself, I switched to Staking&lt;br/&gt;Credentials. In fact the proposed architecture enables mitigations&lt;br/&gt;deployment both within a reputation strategy or a monetary strategy in&lt;br/&gt;function of the base collateral considered (proof-of-utxo ownership or&lt;br/&gt;on-chain/off-chain payments).&lt;br/&gt;&lt;br/&gt;The main advance is the clear separation of the credentials issuance phase&lt;br/&gt;from the redemption phase. Participants in the architecture have been&lt;br/&gt;abstracted to answer multiple types of Lightning deployment: credentials&lt;br/&gt;issuance and redemption fully-sourced on the client-side, issuance&lt;br/&gt;delegation where the credentials mining is delegated to a LSP, redemption&lt;br/&gt;delegation where the credentials are attached on the fly to a HTLC by a hop&lt;br/&gt;supporting trampoline. Abstraction has been done also on the routing-hop&lt;br/&gt;side, where the credentials issuer can be dissociated from the routing hop&lt;br/&gt;against which it can be redeemed (to allow &amp;#34;phantom node&amp;#34; style of&lt;br/&gt;deployment [0]).&lt;br/&gt;&lt;br/&gt;The credentials redemption mechanism itself has been abstracted to cover&lt;br/&gt;diverse Lightning channel counterparty risks, with a primary focus on HTLC&lt;br/&gt;jamming. Beyond, the redemption flow could be easily deployed to solve the&lt;br/&gt;risk asymmetries brought by the signature release flow in the context of&lt;br/&gt;dual-funding/splicing.&lt;br/&gt;&lt;br/&gt;Architecture document is available here:&lt;br/&gt;&lt;a href=&#34;https://github.com/ariard/lightning-rfc/blob/2022-11-reputation-credentials/60-staking-credentials-archi.md&#34;&gt;https://github.com/ariard/lightning-rfc/blob/2022-11-reputation-credentials/60-staking-credentials-archi.md&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Credential issuance phase, redemption phase, onion communication channels&lt;br/&gt;as credential transport protocol, credentials data format, cryptographic&lt;br/&gt;primitives used for unlinking and recommendations for risk-management&lt;br/&gt;strategy (among others) should land in their own documents with time.&lt;br/&gt;&lt;br/&gt;Next focus on advancing the work-in-progress implementation:&lt;br/&gt;&lt;a href=&#34;https://github.com/ariard/lightning-risk-engine&#34;&gt;https://github.com/ariard/lightning-risk-engine&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Module is designed to be uncoupled from LDK architecture specifics and&lt;br/&gt;generic to minimize interdependencies with independent advances in channel&lt;br/&gt;types/transaction-relay policy.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;[0] &lt;a href=&#34;https://lightningdevkit.org/blog/introducing-phantom-node-payments/&#34;&gt;https://lightningdevkit.org/blog/introducing-phantom-node-payments/&lt;/a&gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230112/7ab3d050/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230112/7ab3d050/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:07:54Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqs0sczxegxku3zntr02c02xya0yh5vzva802mc326wtxey3r42ktjqzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zvad2t2</id>
    
      <title type="html">📅 Original date posted:2023-01-05 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqs0sczxegxku3zntr02c02xya0yh5vzva802mc326wtxey3r42ktjqzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zvad2t2" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsyc77mhqhzd535afl0np9zljd3z03m3jqyh0xcwwp0sxg06lcwxzcx97gsj&#39;&gt;nevent1q…7gsj&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-01-05&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi AJ,&lt;br/&gt;&lt;br/&gt;&amp;gt; Chia uses different terminology to bitcoin; &amp;#34;puzzle&amp;#34; is just what we call&lt;br/&gt;&amp;gt; &amp;#34;scriptPubKey&amp;#34; in bitcoin, more or less. Since its scripting capabilities&lt;br/&gt;&amp;gt; are pretty powerful, you can rig up a TLUV/OP_EVICT like mechanism, but&lt;br/&gt;&amp;gt; for a two-party setup, in practice I think that mostly just means you&lt;br/&gt;&amp;gt; can encode the logic directly as script, and when updating the state you&lt;br/&gt;&amp;gt; then only need to exchange CHECKSIGFROMSTACK-like signatures along the&lt;br/&gt;&amp;gt; lines of &amp;#34;state N implies outputs of A,B,C,... -- Alice&amp;#34;, rather than&lt;br/&gt;&amp;gt; signing multiple transactions.&lt;br/&gt;&lt;br/&gt;In the multi-party setup, encoding more of the unrolling logic directly as&lt;br/&gt;script could be a witness space gain, I guess. To express a channel&lt;br/&gt;factory/payment pool withdrawal, at the minimum I think you need an&lt;br/&gt;amount/exit scriptPubKey committed by the signature. Or maybe the output&lt;br/&gt;value could be a spent input amount distribution among a set of signers, if&lt;br/&gt;you would like some non-interactive pre-funded scheme.&lt;br/&gt;&lt;br/&gt;&amp;gt; If you have fully symmetric transactions, then you could have the&lt;br/&gt;&amp;gt; situation where Alice broadcasts update K, then attacks Bob and when&lt;br/&gt;&amp;gt; he attempts to post update N, she instead does a pinning attack by&lt;br/&gt;&amp;gt; broadcasting update K&#43;1 (spending update K), which then forces Bob to&lt;br/&gt;&amp;gt; generate a new version update N, which she then blocks with update K&#43;2,&lt;br/&gt;&amp;gt; etc. An attack like that is presumably pretty difficult to pull off in&lt;br/&gt;&amp;gt; practice, but it makes it pretty hard to reason about many of the limits.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A simple advantage to breaking the symmetry is that if A does a unilateral&lt;br/&gt;&amp;gt; close, then B can immediately confirm that closure releasing all funds&lt;br/&gt;&amp;gt; for both parties. Without breaking the symmetry, you can&amp;#39;t distinguish&lt;br/&gt;&amp;gt; that case from B attempting to confirm his own unilateral close, which&lt;br/&gt;&amp;gt; would allow B to cheat.&lt;br/&gt;&lt;br/&gt;Yes, IIUC the proposed flow is UA.n -&amp;gt; CB.n -&amp;gt; money, and in this&lt;br/&gt;optimistic case, there is only one CLTV delay to respect the spend of the&lt;br/&gt;UA. In terms of timevalue cost to redeem all the funds, I think this is&lt;br/&gt;making the cost equivalent for all the parties. With today&amp;#39;s LN-penalty,&lt;br/&gt;the broadcaster balance is encumbered by the CSV delay, not the&lt;br/&gt;counterparty one.&lt;br/&gt;&lt;br/&gt;(Note on the gist, the UA state description includes a Pa or tapscript &amp;#34;IF&lt;br/&gt;CODESEP n OP_CLTV DROP ENDIF 1 CHECKSIG&amp;#34; as spendable paths and the CA.n&lt;br/&gt;state description nSequence = 0, so I&amp;#39;m not sure how the update/justice&lt;br/&gt;delay is enforced)&lt;br/&gt;&lt;br/&gt;&amp;gt; Yes, you can unilaterally close the channel with state N-1; but even&lt;br/&gt;&amp;gt; then they might respond by bumping to state N anyway. If that happens,&lt;br/&gt;&amp;gt; then the funds can remain locked up until the timeout, as you can no&lt;br/&gt;&amp;gt; longer time the htlc out off-chain.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Still, if it&amp;#39;s one hung per htlc for the channel&amp;#39;s entire lifetime&lt;br/&gt;&amp;gt; (because you close it &amp;#34;immediately&amp;#34; when it happens), that&amp;#39;s probably&lt;br/&gt;&amp;gt; not going to cause problems frequently...&lt;br/&gt;&lt;br/&gt;I think here the issue can be corrected by selecting conservatively your&lt;br/&gt;implementation channel breakout timers, you should go to chain with the&lt;br/&gt;state N-1 with X buffer of block and ensure your CLTV delta are always&lt;br/&gt;bigger than X, where X=delay * 2. That way even if your counterparty is&lt;br/&gt;broadcasting state N at X-1, your htlc-timeout should be safe, I guess.&lt;br/&gt;&lt;br/&gt;&amp;gt; If Alice is dishonest, and posts a very old state (n-x), then Bob could&lt;br/&gt;&amp;gt; post up to x watchtower txs (WB.(n-x&#43;1) .. WB.n) causing Alice to be&lt;br/&gt;&amp;gt; unable to access her funds for up to (x&#43;1)*to_self_delay blocks. But&lt;br/&gt;&amp;gt; that&amp;#39;s just a reason for her to not be dishonest in the first place.&lt;br/&gt;&lt;br/&gt;So I think there still is the case of Bob broadcasting a very old state and&lt;br/&gt;Alice&amp;#39;s watchtowers colluding to prevent Alice&amp;#39;s honest funds access,&lt;br/&gt;potentially preventing the HTLC-timeout, IIUC. I don&amp;#39;t know if we&amp;#39;re not&lt;br/&gt;introducing some changes in the trust assumptions towards watchtowers where&lt;br/&gt;with vanilla eltoo a single compromised watchtower can be corrected by the&lt;br/&gt;honest channel holder or another watchtower, iirc.&lt;br/&gt;&lt;br/&gt;&amp;gt; No -- the RB.n transactions immediately release A&amp;#39;s funds after applying&lt;br/&gt;&amp;gt; the penalty, so if the watchtower colludes with A and has an old RB.y&lt;br/&gt;&amp;gt; transaction, Alice can steal funds by posting UA.x and RB.y, provided that&lt;br/&gt;&amp;gt; her balance now is sufficiently less than her balance then (ie bal.n &amp;lt;&lt;br/&gt;&amp;gt; bal.y - penalty).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In this model, Bob shouldn&amp;#39;t be signing RB.n or CB.n txs until Alice&lt;br/&gt;&amp;gt; has already started a unilateral close and posted UA.n/UA.k.&lt;br/&gt;&lt;br/&gt;So the penalty transactions should not be delegated to untrusted&lt;br/&gt;watchtowers. In case of RB.n signing key compromise, the whole channel&lt;br/&gt;funds might be lost.&lt;br/&gt;&lt;br/&gt;&amp;gt; Doesn&amp;#39;t generalise to redundant untrusted watchtowers though, but&lt;br/&gt;&amp;gt; presumably nothing does. (You could use the same utxo across multiple&lt;br/&gt;&amp;gt; watchtowers, but a rogue watchtower could just post an old WA.k tx and&lt;br/&gt;&amp;gt; claim your funds, preventing some honest watchtower from helping)&lt;br/&gt;&lt;br/&gt;So you could have a channel balance between the watchtower and yourself,&lt;br/&gt;where the tower balance is the payment for the WA.n broadcast, and there is&lt;br/&gt;an assumption the balance is cooperatively updated to adjust for on-chain&lt;br/&gt;fees. For sure, I&amp;#39;m not sure either how it would generalize to an untrusted&lt;br/&gt;watchtower, where interactions might be even bounded to avoid leak of the&lt;br/&gt;client identity.&lt;br/&gt;&lt;br/&gt;Still, I think eltoo channels would simplify the implementation of&lt;br/&gt;distributed towers by Lightning implementation, notably handling concurrent&lt;br/&gt;broadcast w.r.t chain asynchronicity issues, and hopefully removing the&lt;br/&gt;concern of commitment transaction key duplication by tower [0].&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;[0] &lt;a href=&#34;https://github.com/lightningdevkit/rust-lightning/pull/679&#34;&gt;https://github.com/lightningdevkit/rust-lightning/pull/679&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Le ven. 9 déc. 2022 à 01:55, Anthony Towns &amp;lt;aj at erisian.com.au&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; On Thu, Dec 08, 2022 at 02:14:06PM -0500, Antoine Riard wrote:&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;  - 2022-10-21, eltoo/chia:&lt;br/&gt;&amp;gt; &amp;gt; &lt;a href=&#34;https://twitter.com/bramcohen/status/1583122833932099585&#34;&gt;https://twitter.com/bramcohen/status/1583122833932099585&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt; On the eltoo/chia variant, from my (quick) understanding, the main&lt;br/&gt;&amp;gt; &amp;gt; innovation aimed for is&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I&amp;#39;d say the main innovation aimed for is just doing something like&lt;br/&gt;&amp;gt; lightning over the top of chia (rather than bitcoin, liquid, ethereum&lt;br/&gt;&amp;gt; etc), and making it simple enough to be easily implemented.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; the limitation of the publication of eltoo states&lt;br/&gt;&amp;gt; &amp;gt; more than once by a counterparty, by introducing a cryptographic puzzle,&lt;br/&gt;&amp;gt; &amp;gt; where the witness can be produced once and only once ? I would say you&lt;br/&gt;&amp;gt; &amp;gt; might need the inheritance of the updated scriptpubkey across the chain&lt;br/&gt;&amp;gt; of&lt;br/&gt;&amp;gt; &amp;gt; eltoo states, with a TLUV-like mechanism.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Chia uses different terminology to bitcoin; &amp;#34;puzzle&amp;#34; is just what we call&lt;br/&gt;&amp;gt; &amp;#34;scriptPubKey&amp;#34; in bitcoin, more or less. Since its scripting capabilities&lt;br/&gt;&amp;gt; are pretty powerful, you can rig up a TLUV/OP_EVICT like mechanism, but&lt;br/&gt;&amp;gt; for a two-party setup, in practice I think that mostly just means you&lt;br/&gt;&amp;gt; can encode the logic directly as script, and when updating the state you&lt;br/&gt;&amp;gt; then only need to exchange CHECKSIGFROMSTACK-like signatures along the&lt;br/&gt;&amp;gt; lines of &amp;#34;state N implies outputs of A,B,C,... -- Alice&amp;#34;, rather than&lt;br/&gt;&amp;gt; signing multiple transactions.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; The basic idea is &amp;#34;if it&amp;#39;s a two party channel with just Alice and Bob,&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; then if Alice starts a unilateral close, then she&amp;#39;s already had her&lt;br/&gt;&amp;gt; say,&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; so it&amp;#39;s only Bob&amp;#39;s opinion that matters from now on, and he should be&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; able to act immediately&amp;#34;, and once it&amp;#39;s only Bob&amp;#39;s opinion that&lt;br/&gt;&amp;gt; matters,&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; you can simplify a bunch of things.&lt;br/&gt;&amp;gt; &amp;gt; From my understanding, assuming Eltoo paper terminology, Alice can&lt;br/&gt;&amp;gt; publish&lt;br/&gt;&amp;gt; &amp;gt; an update K transaction, and then after Bob can publish an update&lt;br/&gt;&amp;gt; &amp;gt; transaction K&amp;lt;N or Alice can publish the settlement transaction N, or Bob&lt;br/&gt;&amp;gt; &amp;gt; can publish an update transaction N. The main advantage of this&lt;br/&gt;&amp;gt; &amp;gt; construction I can see is a strict bound on the shared_delay encumbered&lt;br/&gt;&amp;gt; in&lt;br/&gt;&amp;gt; &amp;gt; the on-chain publication of the channel ?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If you have fully symmetric transactions, then you could have the&lt;br/&gt;&amp;gt; situation where Alice broadcasts update K, then attacks Bob and when&lt;br/&gt;&amp;gt; he attempts to post update N, she instead does a pinning attack by&lt;br/&gt;&amp;gt; broadcasting update K&#43;1 (spending update K), which then forces Bob to&lt;br/&gt;&amp;gt; generate a new version update N, which she then blocks with update K&#43;2,&lt;br/&gt;&amp;gt; etc. An attack like that is presumably pretty difficult to pull off in&lt;br/&gt;&amp;gt; practice, but it makes it pretty hard to reason about many of the limits.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A simple advantage to breaking the symmetry is that if A does a unilateral&lt;br/&gt;&amp;gt; close, then B can immediately confirm that closure releasing all funds&lt;br/&gt;&amp;gt; for both parties. Without breaking the symmetry, you can&amp;#39;t distinguish&lt;br/&gt;&amp;gt; that case from B attempting to confirm his own unilateral close, which&lt;br/&gt;&amp;gt; would allow B to cheat.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; fast forwards: we might want to allow our channel partner&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; to immediately rely on a new state we propose without needing a&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; round-trip delay -- this potentially makes forwarding payments much&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; faster (though with some risk of locking the funds up, if you do a&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; fast forward to someone who&amp;#39;s gone offline)&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; IIRC, there has already been a &amp;#34;fast-forward&amp;#34; protocol upgrade proposal&lt;br/&gt;&amp;gt; &amp;gt; based on update-turn in the LN-penalty paradigm [0]. I think reducing the&lt;br/&gt;&amp;gt; &amp;gt; latency of HTLC propagation across payment paths would constitute a UX&lt;br/&gt;&amp;gt; &amp;gt; improvement, especially a link-level update mechanism upgrade deployment&lt;br/&gt;&amp;gt; &amp;gt; might be incentivized by routing algorithms starting to penalize routing&lt;br/&gt;&amp;gt; &amp;gt; hops HTLC relay latency. What is unclear is the additional risk of&lt;br/&gt;&amp;gt; locking&lt;br/&gt;&amp;gt; &amp;gt; the funds up. If you don&amp;#39;t receive acknowledgement the fast forward state&lt;br/&gt;&amp;gt; &amp;gt; has been received, you should still be able to exit with the state N-1 ?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Yes, you can unilaterally close the channel with state N-1; but even&lt;br/&gt;&amp;gt; then they might respond by bumping to state N anyway. If that happens,&lt;br/&gt;&amp;gt; then the funds can remain locked up until the timeout, as you can no&lt;br/&gt;&amp;gt; longer time the htlc out off-chain.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Still, if it&amp;#39;s one hung per htlc for the channel&amp;#39;s entire lifetime&lt;br/&gt;&amp;gt; (because you close it &amp;#34;immediately&amp;#34; when it happens), that&amp;#39;s probably&lt;br/&gt;&amp;gt; not going to cause problems frequently...&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; doubled delays: once we publish the latest state we can, we want to&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; be able to claim the funds immediately after to_self_delay expires;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; however if our counterparty has signatures for a newer state than we&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; do (which will happen if it was fast forwarded), they could post that&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; state shortly before to_self_delay expires, potentially increasing&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; the total delay to 2*to_self_delay.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; While the 2*to_self_delay sounds the maximum time delay in the state&lt;br/&gt;&amp;gt; &amp;gt; publication scenario where the cheating counterparty publishes a old&lt;br/&gt;&amp;gt; state&lt;br/&gt;&amp;gt; &amp;gt; then the honest counterparty publishes the latest one, there could be the&lt;br/&gt;&amp;gt; &amp;gt; case where the cheating counterparty broadcast chain of old states, up to&lt;br/&gt;&amp;gt; &amp;gt; mempool&amp;#39;s `limitancestorcount`. However, this chain of eltoo transactions&lt;br/&gt;&amp;gt; &amp;gt; could be replaced by the honest party paying a higher-feerate (assuming&lt;br/&gt;&amp;gt; &amp;gt; something like nversion=3).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; With the asymmetric transactions proposed here, you&amp;#39;d need to have your&lt;br/&gt;&amp;gt; watchtowers collude with the attacker for this to happen.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I think you could prevent chains from building up in the mempool by&lt;br/&gt;&amp;gt; requiring a relative timelock of perhaps 2 or 3 blocks for a WA.n/WB.n&lt;br/&gt;&amp;gt; tx to be valid (giving you time to post RA.n/RB.n in the meantime).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; * WA.n, WB.n : watchtower update to state n&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;   - this is for an untrusted watchtower to correct attempted cheating&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     by Bob on behalf of Alice (or vice-versa). Spends UB.k or WA.k&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     (or UA.k/WB.k) respectively, provided k &amp;lt; n.&lt;br/&gt;&amp;gt; &amp;gt; I wonder if the introduction of watchtower specific transactions doesn&amp;#39;t&lt;br/&gt;&amp;gt; &amp;gt; break the 2*to_self_delay assumption&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The to_self_delay applies to whoever initiated the unilateral close,&lt;br/&gt;&amp;gt; and provided they actually posted the most recent state, no watchtower&lt;br/&gt;&amp;gt; tx is a valid spend. ie, if Alice is honest and n is the latest state,&lt;br/&gt;&amp;gt; then the only possible spends of UA.n are SA.n (after a delay) or CB.n,&lt;br/&gt;&amp;gt; and as soon as either of those are on chain, she gets access to her funds.&lt;br/&gt;&amp;gt; No version of WB.k or RB.k (or WA.k, CA.k, RA.k) are valid if k&amp;lt;=n and&lt;br/&gt;&amp;gt; UA.n is confirmed.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If Alice is dishonest, and posts a very old state (n-x), then Bob could&lt;br/&gt;&amp;gt; post up to x watchtower txs (WB.(n-x&#43;1) .. WB.n) causing Alice to be&lt;br/&gt;&amp;gt; unable to access her funds for up to (x&#43;1)*to_self_delay blocks. But&lt;br/&gt;&amp;gt; that&amp;#39;s just a reason for her to not be dishonest in the first place.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; (iiuc it&amp;#39;s a design goal of current&lt;br/&gt;&amp;gt; &amp;gt; protocol) and what is the design rationale. Beyond that, there is a&lt;br/&gt;&amp;gt; concern&lt;br/&gt;&amp;gt; &amp;gt; with watchtower-specific transactions, it might leak your towers topology&lt;br/&gt;&amp;gt; &amp;gt; (i.e the number of them and the distribution in the p2p network) to an&lt;br/&gt;&amp;gt; &amp;gt; adversary.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If you have a watchtower and it takes action, I don&amp;#39;t think you can&lt;br/&gt;&amp;gt; expect to retain privacy over the fact that you have a watchtower,&lt;br/&gt;&amp;gt; and how effective it is against an attacker with extensive monitoring&lt;br/&gt;&amp;gt; of the p2p network...&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; * SA.n, SB.n : slowly claim funds according to state n&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;   - this is for Alice to claim her funds if Bob is completely offline&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     (or vice-versa). Spends UA.n, UB.n, WA.n or WB.n with relative&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     timelock of to_self_delay.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; If I&amp;#39;m following correctly the description, this is logically equivalent&lt;br/&gt;&amp;gt; to&lt;br/&gt;&amp;gt; &amp;gt; the sweep of a `to_local`/`to_remote` output on a commitment transaction&lt;br/&gt;&amp;gt; &amp;gt; though instead the waiting delay is eltoo shared_delay. There is no&lt;br/&gt;&amp;gt; &amp;gt; to_self_delay, at the punishment seems only to happen on the&lt;br/&gt;&amp;gt; update-level,&lt;br/&gt;&amp;gt; &amp;gt; or maybe one should be also able to punish slow fund exit, and another&lt;br/&gt;&amp;gt; &amp;gt; relative locktime should exist on the S* transactions.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I&amp;#39;m just using &amp;#34;to_self_delay&amp;#34; as the X in &amp;#34;if you attempt to cheat,&lt;br/&gt;&amp;gt; I&amp;#39;ll definitely notice and take action within X blocks&amp;#34;. If you post&lt;br/&gt;&amp;gt; UA.n then post SA.n after X blocks (due to SA.n&amp;#39;s relative time lock)&lt;br/&gt;&amp;gt; then you&amp;#39;ve already proven you didn&amp;#39;t cheat, because that was enough&lt;br/&gt;&amp;gt; time for B to notice and take action.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; * Alice and Bob&amp;#39;s watchtower collude, but Bob has many watchtowers:&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;     F -&amp;gt; UA.k1 -&amp;gt; WB.k2 -&amp;gt; WB.n -&amp;gt; (to_self_delay) -&amp;gt; SA.n -&amp;gt; money&lt;br/&gt;&amp;gt; &amp;gt; Could the punishment transactions R* be also delegated to watchtowers,&lt;br/&gt;&amp;gt; &amp;gt; assuming they have been pre-signed to lockdown the exit scriptpubkeys ?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; No -- the RB.n transactions immediately release A&amp;#39;s funds after applying&lt;br/&gt;&amp;gt; the penalty, so if the watchtower colludes with A and has an old RB.y&lt;br/&gt;&amp;gt; transaction, Alice can steal funds by posting UA.x and RB.y, provided that&lt;br/&gt;&amp;gt; her balance now is sufficiently less than her balance then (ie bal.n &amp;lt;&lt;br/&gt;&amp;gt; bal.y - penalty).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In this model, Bob shouldn&amp;#39;t be signing RB.n or CB.n txs until Alice&lt;br/&gt;&amp;gt; has already started a unilateral close and posted UA.n/UA.k.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; In order to allow fast-forwards, when Alice proposes a new state,&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; she needs to send her partial signatures to allow Bob to unilaterally&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; accept the new state, ie sigs for: UB.n, CB.n, SB.n, RB.n. But she&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; also needs to be able to claim the funds if Bob proposes the new state&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; and broadcasts UB.n, she needs to be able broadcast CA.n. This can be&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; achieved with an adaptor signature approach (spelt out a bit more fully&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; in the gist) or a CTV-like approach, provided that UB.n reveals the&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; state needed to calculate the the CTV commitment (see &amp;#34;EXPR_SETTLE&amp;#34; in&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/instagibbs/bolts/blob/29fe6d36cbad4101d5ec76c2b19c83c1494ac2fc/XX-eltoo-transactions.md&#34;&gt;https://github.com/instagibbs/bolts/blob/29fe6d36cbad4101d5ec76c2b19c83c1494ac2fc/XX-eltoo-transactions.md&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt; ).&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; If you would like to have fast forward of chain of transactions, I wonder&lt;br/&gt;&amp;gt; &amp;gt; if there could be also the &amp;#34;sig-in-the-script&amp;#34; trick, where UB.n&lt;br/&gt;&amp;gt; &amp;gt; scriptpubkey (or one of its tapscripts) contains the signature for CB.n,&lt;br/&gt;&amp;gt; &amp;gt; SB.n, RB.n. Though you might have an issue of re-generating the&lt;br/&gt;&amp;gt; &amp;gt; witnessscript in case of state loss.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Broadcasting UB.n will only reveal signatures by B; so that would only&lt;br/&gt;&amp;gt; potentially help with CA.n or RA.n; and if UB.n is on-chain, then RA.n&lt;br/&gt;&amp;gt; isn&amp;#39;t valid (since it would require &amp;#34;n &amp;lt; n&amp;#34;).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The EXPR_SETTLE stuff in the github link describes how to do the trick&lt;br/&gt;&amp;gt; via a CTV-ish approach (including an APO signature in a tapscript in the&lt;br/&gt;&amp;gt; scriptPubKey of UA.n here; and including data in the annex so that you&lt;br/&gt;&amp;gt; can recalculate thinks if an old UA.n is broadcast after you&amp;#39;ve&lt;br/&gt;&amp;gt; forgotten n&amp;#39;s state details).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; * how to pay watchtowers -- when a watchtower broadcasts a W&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;   transaction, it needs to add fees, and it&amp;#39;s not clear (to me) how it&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;   could fairly and reliably ensure it&amp;#39;s compensated for those costs,&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;   particularly if multiple W transactions are broadcast for a single&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;   unilateral close attempt, due to one or more watchtowers colluding&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;   with an attacker, or simply having out of date information.&lt;br/&gt;&amp;gt; &amp;gt; I wonder if paying a watchtower, or getting paid as a watchtower isn&amp;#39;t  a&lt;br/&gt;&amp;gt; &amp;gt; &amp;#34;counterparty risk&amp;#34; similar to what is happening with jamming due to&lt;br/&gt;&amp;gt; &amp;gt; non-covered HTLC forward risk.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Actually, perhaps you could &amp;#34;yo dawg&amp;#34; it: if you give the watchtower a&lt;br/&gt;&amp;gt; pre-signed transaction WA.n:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;     input 1: UA.k/WA.k (ANYPREVOUTANYSCRIPT, SINGLE)&lt;br/&gt;&amp;gt;     input 2: my funds (SINGLE, ALL)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;     output 1: WA.n&lt;br/&gt;&amp;gt;     output 2: new lightning channel between me and watchtower&lt;br/&gt;&amp;gt;     output 3: ephemeral OP_TRUE output&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; then you could have the &amp;#34;new lightning channel&amp;#34; be setup with an initial&lt;br/&gt;&amp;gt; capacity of &amp;#34;my funds&amp;#34;, and off-chain update the state of that channel so&lt;br/&gt;&amp;gt; that the watchtower&amp;#39;s balance is how much you&amp;#39;re willing to contribute in&lt;br/&gt;&amp;gt; fees if the watchtower does its job. If you set things up so that you&amp;#39;re&lt;br/&gt;&amp;gt; always able to claim a penalty via WA.n-&amp;gt;RA.n if the watchtower acts,&lt;br/&gt;&amp;gt; then you can give up to that penalty to the watchtower and still end up&lt;br/&gt;&amp;gt; making a profit.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Doesn&amp;#39;t generalise to redundant untrusted watchtowers though, but&lt;br/&gt;&amp;gt; presumably nothing does. (You could use the same utxo across multiple&lt;br/&gt;&amp;gt; watchtowers, but a rogue watchtower could just post an old WA.k tx and&lt;br/&gt;&amp;gt; claim your funds, preventing some honest watchtower from helping)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; (Yo dawg, I heard you liked closing lightning channels, so we put a&lt;br/&gt;&amp;gt; lightning channel in your watchtower, so you can close a channel while&lt;br/&gt;&amp;gt; you&amp;#39;re closing a channel. Alternatively: &amp;#34;when god closes one channel,&lt;br/&gt;&amp;gt; he opens another&amp;#34;)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; aj&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230105/a6627adb/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230105/a6627adb/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:07:50Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsyvky0u2n40959cjmsl32y9t5rkyj943gg2kltv0cean6aek9dsrszypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zt780ej</id>
    
      <title type="html">📅 Original date posted:2022-12-13 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsyvky0u2n40959cjmsl32y9t5rkyj943gg2kltv0cean6aek9dsrszypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zt780ej" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsrfe3wp4laxtvzz0m6va0uy99h7fn7kdmhr4zh6ckw9gv9kkpukpga3pcdg&#39;&gt;nevent1q…pcdg&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-12-13&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi AJ,&lt;br/&gt;&lt;br/&gt;I believe we&amp;#39;re in sync on the attack description.&lt;br/&gt;&lt;br/&gt;&amp;gt;  prior to (1): UA.k (k &amp;lt;= n) -- However this allows Bob to immediately&lt;br/&gt;&amp;gt;  broadcast one of either CA.n or RA.n, and will then have ~150 blocks&lt;br/&gt;&amp;gt;  to claim the HTLC before its timeout&lt;br/&gt;&lt;br/&gt;&amp;gt;From my understanding, with two party eltoo w/punihsment, UA.k has a&lt;br/&gt;tapscript path with &amp;#34;1 CHECKSIGVERIFY k&amp;lt;n CLTV&amp;#34;, where the internal pubkey&lt;br/&gt;substituted is &amp;#34;musig(A,B)/1. Mallory should receive Bob&amp;#39;s signature for&lt;br/&gt;UA.k, though also UA.k&#43;1, UA.k&#43;2, UAk&#43;3, until k=n.&lt;br/&gt;&lt;br/&gt;Or is this a tapscript only existing for the dual-funding case ? I think&lt;br/&gt;this a bit unclear from the gist construction, how Mallory is restrained to&lt;br/&gt;use the tapscript path on UA.k, with UA.k&#43;1 as she should be in possession&lt;br/&gt;of Bob&amp;#39;s signature for this state.&lt;br/&gt;&lt;br/&gt;&amp;gt; I think traditional eltoo envisages being able to spend update transaction&lt;br/&gt;&amp;gt; 1 immediately, without having to wait for the next block.  This might&lt;br/&gt;&amp;gt; not be compatible with the version 3 relay rules that are being thought&lt;br/&gt;&amp;gt; about, though, and presumably would hit ancestor limits.&lt;br/&gt;&lt;br/&gt;While update transaction 1 could spend update transaction 0 immediately,&lt;br/&gt;there is no reliable knowledge by U*.1 transaction broadcaster of the state&lt;br/&gt;of the network mempools. I believe the update transactions themselves could&lt;br/&gt;be used to partition network mempools in multiple subsets (at least this is&lt;br/&gt;achievable under LN-penalty with using old revoked states).&lt;br/&gt;&lt;br/&gt;&amp;gt; I think a simple way to avoid that problem would be for eltoo nodes&lt;br/&gt;&amp;gt; to have a priority tx relay network -- if they see a channel close to&lt;br/&gt;&amp;gt; state N, always replace any txs closing to an earlier state K&amp;lt;N, and&lt;br/&gt;&amp;gt; always quickly relay that close to all other peers. There&amp;#39;s no reason&lt;br/&gt;&amp;gt; to assume the bad guys have the best access to the network when we can&lt;br/&gt;&amp;gt; write code so that the honest participants have it instead.&lt;br/&gt;&lt;br/&gt;While I think this solution of eltoo nodes quickly replacing any state K&lt;br/&gt;previous to the latest state N, there is no guarantee the latest state K&lt;br/&gt;doesn&amp;#39;t offer a higher feerate than state N, making it more attractive to&lt;br/&gt;the miners.&lt;br/&gt;&lt;br/&gt;One other solution could be a p2p extension allowing an update transaction&lt;br/&gt;N to be &amp;#34;blindly&amp;#34; rebinded on any update transaction K, with K &amp;lt; N, by&lt;br/&gt;pointing to the channel funding output, and a per-counterparty ancestor&lt;br/&gt;limit enforced as a policy rule (otherwise the malicious counterparty could&lt;br/&gt;still buy all the ancestor limits).&lt;br/&gt;&lt;br/&gt;A more sophisticated solution could be to &amp;#34;trim&amp;#34; the counterparty ability&lt;br/&gt;to confirm multiple update transactions with some TLUV mechanism.&lt;br/&gt;&lt;br/&gt;&amp;gt; In the two-party scheme, the only transaction Mallory can broadcast&lt;br/&gt;&amp;gt; after sending UA.k and having it confirmed on chain is SA.k, and that&lt;br/&gt;&amp;gt; only after a 144 block relative timelock. UA.(k&#43;1) etc only spend the&lt;br/&gt;&amp;gt; funding output, but that has already been spent by UA.k.&lt;br/&gt;&lt;br/&gt;See above question on the existence of a tapscript 1 path in update&lt;br/&gt;transaction, and by which transaction type it could/should be spent. I&lt;br/&gt;think the crux of the attack&amp;#39;s soundness (or not) against two parties eltoo&lt;br/&gt;w/ punishment relies here. AFAICT, if there is an unbounded spending path&lt;br/&gt;cycle introduced for one of the counterparties, you&amp;#39;re exposed to &amp;#34;eltoo&lt;br/&gt;states overflow&amp;#34;.&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;Le lun. 12 déc. 2022 à 22:51, Anthony Towns &amp;lt;aj at erisian.com.au&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; On Mon, Dec 12, 2022 at 08:38:43PM -0500, Antoine Riard wrote:&lt;br/&gt;&amp;gt; &amp;gt; The attack purpose is to delay the confirmation of the final settlement&lt;br/&gt;&amp;gt; &amp;gt; transaction S, to double-spend a HTLC forwarded by a routing hop.&lt;br/&gt;&amp;gt; &amp;gt; The cltv_expiry_delta requested by Ned is equal to N=144.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I believe what you&amp;#39;re suggesting here is:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   Mallory has two channels with Bob, M1 and M2. Both have a to_self_delay&lt;br/&gt;&amp;gt;   of 144 blocks. In that case cltv_expiry_delay should include some slack,&lt;br/&gt;&amp;gt;   I&amp;#39;m going to assume it&amp;#39;s 154 blocks in total.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   Mallory forwards a large payment, M1-&amp;gt;Bob-&amp;gt;M2.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   Mallory claims the funds on M2 just prior to the timeout, but&lt;br/&gt;&amp;gt;   goes offline on M1.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   Bob chose the timeout for M2 via cltv_expiry_delay, so now has 154&lt;br/&gt;&amp;gt;   blocks before the CLTV on the M1-&amp;gt;Bob payment expires.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In this scenario, under the two-party eltoo scheme, Bob should:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   1) immediately broadcast the most recent UB.n state for M1/Bob,&lt;br/&gt;&amp;gt;      aiming for this to be confirmed within 5 blocks&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   2) wait 144 blocks for the relative timelock to expire&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   3) broadcast SB.n to finalise the funds, and immediately claim the&lt;br/&gt;&amp;gt;      large HTLC. providing this confirms within 5 blocks, it will confirm&lt;br/&gt;&amp;gt;      before the HTLC timelock expires, and Mallory will have been unable&lt;br/&gt;&amp;gt;      to claim the funds.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The only transactions Mallory could broadcast are:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   prior to (1): UA.k (k &amp;lt;= n) -- However this allows Bob to immediately&lt;br/&gt;&amp;gt;   broadcast one of either CA.n or RA.n, and will then have ~150 blocks&lt;br/&gt;&amp;gt;   to claim the HTLC before its timeout&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   during (2): CA.n -- Again, this allows Bob to claim the HTLC&lt;br/&gt;&amp;gt;   immediately, prior to its timeout&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The only delaying attack with repeated transactions comes if Bob&lt;br/&gt;&amp;gt; broadcasts an old state UB.k (k &amp;lt; n), in which case Mallory can broadcast&lt;br/&gt;&amp;gt; (n-k) WA.i watchtower transactions prior to finalising the state. However&lt;br/&gt;&amp;gt; if Bob *only* has old state, Mallory can simply broadcast WA.n, at which&lt;br/&gt;&amp;gt; point Bob can do nothing, as (by assumption) he doesn&amp;#39;t have access&lt;br/&gt;&amp;gt; to current state and thus doesn&amp;#39;t have SB.n to broadcast it.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; The attack scenario works in the following way: Malicia updates the Eltoo&lt;br/&gt;&amp;gt; &amp;gt; channel N time, getting the possession of N update transactions. At block&lt;br/&gt;&amp;gt; &amp;gt; A, she breaks the channel and confirms the update transaction 0 by&lt;br/&gt;&amp;gt; &amp;gt; attaching a feerate equal to or superior to top mempool block space &#43; 1&lt;br/&gt;&amp;gt; &amp;gt; sat. At each new block, she iterates by confirming the next update&lt;br/&gt;&amp;gt; &amp;gt; transaction, i.e update transaction 1 at block A&#43;1, update transaction&lt;br/&gt;&amp;gt; &amp;gt; transaction 2 at block A&#43;2, update transaction 3 at block A&#43;3, ...&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I think traditional eltoo envisages being able to spend update transaction&lt;br/&gt;&amp;gt; 1 immediately, without having to wait for the next block.  This might&lt;br/&gt;&amp;gt; not be compatible with the version 3 relay rules that are being thought&lt;br/&gt;&amp;gt; about, though, and presumably would hit ancestor limits.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I think a simple way to avoid that problem would be for eltoo nodes&lt;br/&gt;&amp;gt; to have a priority tx relay network -- if they see a channel close to&lt;br/&gt;&amp;gt; state N, always replace any txs closing to an earlier state K&amp;lt;N, and&lt;br/&gt;&amp;gt; always quickly relay that close to all other peers. There&amp;#39;s no reason&lt;br/&gt;&amp;gt; to assume the bad guys have the best access to the network when we can&lt;br/&gt;&amp;gt; write code so that the honest participants have it instead.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; From Ned&amp;#39;s viewpoint, there is limited rationality of the network&lt;br/&gt;&amp;gt; mempools,&lt;br/&gt;&amp;gt; &amp;gt; as such each punishment transaction R, as it&amp;#39;s confirmation could have&lt;br/&gt;&amp;gt; been&lt;br/&gt;&amp;gt; &amp;gt; delay due to &amp;#34;honest&amp;#34; slow propagation on the network is likely to be&lt;br/&gt;&amp;gt; &amp;gt; pre-signed with top mempool block space feerate, but not more to save on&lt;br/&gt;&amp;gt; &amp;gt; fees. Therefore, transaction RN.0 should fail to punish update&lt;br/&gt;&amp;gt; transaction&lt;br/&gt;&amp;gt; &amp;gt; 0 as it&amp;#39;s double-spent by update transaction 1, transaction RN.1 should&lt;br/&gt;&amp;gt; &amp;gt; fail to punish update transaction 1 as it&amp;#39;s double-spent by update&lt;br/&gt;&amp;gt; &amp;gt; transaction 2, transaction RN.2 should fail to punish update transaction&lt;br/&gt;&amp;gt; 2&lt;br/&gt;&amp;gt; &amp;gt; as it&amp;#39;s double-spent by update transaction 3...&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In the two-party scheme, the only transaction Mallory can broadcast&lt;br/&gt;&amp;gt; after sending UA.k and having it confirmed on chain is SA.k, and that&lt;br/&gt;&amp;gt; only after a 144 block relative timelock. UA.(k&#43;1) etc only spend the&lt;br/&gt;&amp;gt; funding output, but that has already been spent by UA.k.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; aj&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20221213/caed9efb/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20221213/caed9efb/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:07:43Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsp0xsmnca8xkaeyl2kj88tcaxq2a7yn9vptzl7a9s66rs6v6psjsszypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zev4uh0</id>
    
      <title type="html">📅 Original date posted:2022-12-12 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsp0xsmnca8xkaeyl2kj88tcaxq2a7yn9vptzl7a9s66rs6v6psjsszypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zev4uh0" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqstsxum8sgxu047k5d4jet7yul6q6cey5tyqx5dgxlxeafh0k4e46qykd79x&#39;&gt;nevent1q…d79x&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-12-12&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi list,&lt;br/&gt;&lt;br/&gt;The following post describes a potential attack vector against eltoo-based&lt;br/&gt;Lightning channels, from my understanding also including the recent&lt;br/&gt;two-party eltoo w/ punishment construction. While I think this concern has&lt;br/&gt;been known for a while among devs, and I believe it&amp;#39;s mitigable by adopting&lt;br/&gt;an adequate fee-bumping strategy, I still wonder how exactly it affects&lt;br/&gt;eltoo-based constructions.&lt;br/&gt;&lt;br/&gt;AFAICT, the eltoo 2-stage proposal relies on a serie of pre-signed update&lt;br/&gt;transactions, of which in the optimistic case only one of them confirms.&lt;br/&gt;There is a script-spend path, where an update transaction N can spend an&lt;br/&gt;update transaction K, assuming K&amp;lt;N and an aggregated musig for the&lt;br/&gt;checksigverify.&lt;br/&gt;&lt;br/&gt;The attack purpose is to delay the confirmation of the final settlement&lt;br/&gt;transaction S, to double-spend a HTLC forwarded by a routing hop. I.e you&lt;br/&gt;have Ned the routing hop receiving the HTLC from Mallory upstream and&lt;br/&gt;sending the HTLC to Malicia downstream. Thanks to the cltv_expiry_delta,&lt;br/&gt;the HTLC forward should be safe as Ned can timeout the HTLC on the&lt;br/&gt;Ned-Malicia link before it is timed-out by Mallory on the Mallory-Ned link.&lt;br/&gt;In case of timeout failure, Malicia can claim the HTLC forward with the&lt;br/&gt;corresponding preimage, at the same block height than Mallory timeout the&lt;br/&gt;HTLC, effectively double-spending Ned.&lt;br/&gt;&lt;br/&gt;The cltv_expiry_delta requested by Ned is equal to N=144.&lt;br/&gt;&lt;br/&gt;The attack scenario works in the following way: Malicia updates the Eltoo&lt;br/&gt;channel N time, getting the possession of N update transactions. At block&lt;br/&gt;A, she breaks the channel and confirms the update transaction 0 by&lt;br/&gt;attaching a feerate equal to or superior to top mempool block space &#43; 1&lt;br/&gt;sat. At each new block, she iterates by confirming the next update&lt;br/&gt;transaction, i.e update transaction 1 at block A&#43;1, update transaction&lt;br/&gt;transaction 2 at block A&#43;2, update transaction 3 at block A&#43;3, ...&lt;br/&gt;&lt;br/&gt;&amp;gt;From Ned&amp;#39;s viewpoint, there is limited rationality of the network mempools,&lt;br/&gt;as such each punishment transaction R, as it&amp;#39;s confirmation could have been&lt;br/&gt;delay due to &amp;#34;honest&amp;#34; slow propagation on the network is likely to be&lt;br/&gt;pre-signed with top mempool block space feerate, but not more to save on&lt;br/&gt;fees. Therefore, transaction RN.0 should fail to punish update transaction&lt;br/&gt;0 as it&amp;#39;s double-spent by update transaction 1, transaction RN.1 should&lt;br/&gt;fail to punish update transaction 1 as it&amp;#39;s double-spent by update&lt;br/&gt;transaction 2, transaction RN.2 should fail to punish update transaction 2&lt;br/&gt;as it&amp;#39;s double-spent by update transaction 3...&lt;br/&gt;&lt;br/&gt;While there is a RBF-race, I think this can be easily won by Malicia by&lt;br/&gt;mass-connecting on the transaction-relay network and ignoring the Core&lt;br/&gt;transaction-relay delay timers (here for privacy purposes iirc).&lt;br/&gt;&lt;br/&gt;If it holds, I think the attack is economically opportun as long as the sum&lt;br/&gt;of the chain of update transactions weight multiplied by the spent feerate&lt;br/&gt;is inferior to the sum of HTLC values stolen (upper bounded to&lt;br/&gt;`max_htlc_value_in_flight_msat`, not `funding_satoshis`). The attack could&lt;br/&gt;be more sound in periods of low-fee, as the number of HTLC exploitable is&lt;br/&gt;higher.&lt;br/&gt;&lt;br/&gt;A mitigation could be for a fee-bumping strategy to adopt a scorched&lt;br/&gt;approach when the HTLC-timeout is approaching, and there is a corresponding&lt;br/&gt;incoming HTLC. When the HTLC-timeout is near expiration (e.g X blocks from&lt;br/&gt;incoming HTLC expiry), probably 100% of the HTLC value should be burnt in&lt;br/&gt;update transaction fees.&lt;br/&gt;&lt;br/&gt;I think some implementations in the LN-penalty are already doing &amp;#34;upward&amp;#34;&lt;br/&gt;fee-bumping frequency, while I believe it reduces the attack surface, I&lt;br/&gt;still think there is an exploitable window for &amp;#34;update overflow&amp;#34; attack.&lt;br/&gt;E.g in LDK justice transactions are bumped by 25% every block according to&lt;br/&gt;a height timer schedule [0].&lt;br/&gt;&lt;br/&gt;Assuming the attack holds, and scorched approach are adopted by default to&lt;br/&gt;mitigate this concern, there is a second-order concern, we might open&lt;br/&gt;Lightning channels to miner-harvesting attacks, where the confirmation of&lt;br/&gt;the update transactions are deferred to kick-out the scorched earth&lt;br/&gt;reaction of the fee-bumping engine. In my opinion, this would be still an&lt;br/&gt;improvement, as we&amp;#39;re moving a (plausible) security risk triggerable by a&lt;br/&gt;Lightning counterparty to (hypothetical) one triggerable by a wide&lt;br/&gt;coalition of miners.&lt;br/&gt;&lt;br/&gt;There is another caveat, it sounds if the update transaction can be&lt;br/&gt;malleable (i.e SIGHASH_SINGLE|ANYONECANPAY), update transactions across&lt;br/&gt;Lightning channels could be aggregated by the attacker, changing the&lt;br/&gt;economy there in a way defavorable to the victims. I.e the attacker can&lt;br/&gt;select the targeted channels, but the victim cannot coordinate with each&lt;br/&gt;other to respond with a collective fee-bumping.&lt;br/&gt;&lt;br/&gt;Is the understanding of the two-party eltoo construction correct, and this&lt;br/&gt;&amp;#34;update overflow&amp;#34; attack is sound and economically opportun ? If it holds,&lt;br/&gt;I still wonder if we have variants playing with mempool descendant limits.&lt;br/&gt;In all cases, it sounds to me the implications are more in the way&lt;br/&gt;fee-bumping is implemented by Lightning softwares rather than directly on&lt;br/&gt;eltoo-based constructions, I don&amp;#39;t see an immediate way to address it by&lt;br/&gt;the construction itself.&lt;br/&gt;&lt;br/&gt;Mistakes and confusions are my own.&lt;br/&gt;&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;[0]&lt;br/&gt;&lt;a href=&#34;https://github.com/lightningdevkit/rust-lightning/blob/5e14c24a11f610ab8c402f788ec5bd637e9e24af/lightning/src/chain/onchaintx.rs#L505&#34;&gt;https://github.com/lightningdevkit/rust-lightning/blob/5e14c24a11f610ab8c402f788ec5bd637e9e24af/lightning/src/chain/onchaintx.rs#L505&lt;/a&gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20221212/d9abd7ad/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20221212/d9abd7ad/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:07:42Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsyju4zfxq74sgprre5yjs2085t2sjr306737qw0y59jyemsy7r5agzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24z5prxrd</id>
    
      <title type="html">📅 Original date posted:2022-12-09 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsyju4zfxq74sgprre5yjs2085t2sjr306737qw0y59jyemsy7r5agzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24z5prxrd" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsgwy4gut4pz0lzpxgfvpymqslgjtc6gtq63zl4rt6u2mg3uyxkaccjmr9w9&#39;&gt;nevent1q…r9w9&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-12-09&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Clara,&lt;br/&gt;&lt;br/&gt;Thanks for rolling the ball forward.&lt;br/&gt;&lt;br/&gt;On the agenda, a few more thoughts.&lt;br/&gt;&lt;br/&gt;&amp;gt; 1. Which parameters should be considered in reputation-based solutions?&lt;br/&gt;&lt;br/&gt;I think before thinking about the parameters of reputation-based solutions,&lt;br/&gt;we should discuss the security goal we&amp;#39;re aiming to achieve with any&lt;br/&gt;potential jamming solutions. Browsing the solution space some have aimed to&lt;br/&gt;increase the opportunity cost for the attacker (e.g liquidity slots), some&lt;br/&gt;to reduce the jamming intensity (e.g circuit breakers), some inflicting a&lt;br/&gt;on-chain fee damage cost back to the adversary (e.g stake certificates),&lt;br/&gt;some to achieve economic hedge of the routing hops (e.g unconditional&lt;br/&gt;fees, reputation credentials). As of today, I would say a security goal&lt;br/&gt;designed in the term of a monetary strategy could be more acceptable to the&lt;br/&gt;routing hops node operators. Beyond that, I believe there is capturing this&lt;br/&gt;design goal in a &amp;#34;measurable&amp;#34; notion, such as the unjamming lightning&lt;br/&gt;paper&amp;#39;s breakeven point, and see how we can enrich this &amp;#34;measurable&amp;#34; notion.&lt;br/&gt;&lt;br/&gt;&amp;gt; 2. Circuitbreaker [1]&lt;br/&gt;&lt;br/&gt;While reviewing the circuitbreaker last week, I started to wonder if there&lt;br/&gt;wasn&amp;#39;t another &amp;#34;hidden&amp;#34; issue while solving channel jamming, namely&lt;br/&gt;congestion control of the HTLC flows. A node operator is not only&lt;br/&gt;interested that any liquidity unit allocated for a HTLC forward is paid&lt;br/&gt;back with routing fees, but also in case of more forward demand than&lt;br/&gt;liquidity offer, ready to process it (potentially by deferring and sending&lt;br/&gt;backpressure messages to the HTLC sender). I don&amp;#39;t know, though I think&lt;br/&gt;that can be an interesting point to discuss.&lt;br/&gt;&lt;br/&gt;&amp;gt; 3. Onion relay network [2] and its potential uses.&lt;br/&gt;&lt;br/&gt;Onion relay network rate-limits have been discussed earlier this year, with&lt;br/&gt;a probabilistic backpressure scheme proposed. If the onion relay traffic&lt;br/&gt;starts to have economically-weighable traffic (offers, credentials tokens,&lt;br/&gt;etc), there could be a risk of onion-jamming. For the bootstrap of the&lt;br/&gt;onion relay network, I believe this could be solved by leveraging more the&lt;br/&gt;channel-network topology for the design of a solution. We could re-use the&lt;br/&gt;evaluation framework from the unjamming lightning paper, I guess.&lt;br/&gt;&lt;br/&gt;In the meeting, I think it could be very valuable if we have reliable&lt;br/&gt;transcripts and if we start to maintain a community repository, where we&lt;br/&gt;can pin the issues, problems and ideas.&lt;br/&gt;&lt;br/&gt;On the frequency of the meeting, note some Lightning developers raised the&lt;br/&gt;concern that biweekly might be too much:&lt;br/&gt;&lt;a href=&#34;https://gnusha.org/lightning-dev/2022-11-23.log&#34;&gt;https://gnusha.org/lightning-dev/2022-11-23.log&lt;/a&gt; (once a month could work&lt;br/&gt;well too, if  we have a sound agenda).&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;Le jeu. 8 déc. 2022 à 11:08, Clara Shikhelman &amp;lt;clara.shikhelman at gmail.com&amp;gt;&lt;br/&gt;a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi all,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The agenda for next week&amp;#39;s meeting (Monday the 12th, 7 pm UTC) is the&lt;br/&gt;&amp;gt; following:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1. Which parameters should be considered in reputation-based solutions?&lt;br/&gt;&amp;gt; 2. Circuitbreaker [1]&lt;br/&gt;&amp;gt; 3. Onion relay network [2] and its potential uses.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The link to the call:  &lt;a href=&#34;https://meet.jit.si/UnjammingLN&#34;&gt;https://meet.jit.si/UnjammingLN&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; See you there,&lt;br/&gt;&amp;gt; Clara&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [1]&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-December/003781.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-December/003781.html&lt;/a&gt;&lt;br/&gt;&amp;gt; [2]&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-December/003780.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-December/003780.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Sun, Nov 27, 2022 at 9:48 PM Clara Shikhelman &amp;lt;&lt;br/&gt;&amp;gt; clara.shikhelman at gmail.com&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Hi all,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; In light of recent conversations ([1],[2]), the agenda for the call&lt;br/&gt;&amp;gt;&amp;gt; tomorrow (Monday the 28th, 7 pm UTC) is roughly the following:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; 1. Overview of solutions under discussion&lt;br/&gt;&amp;gt;&amp;gt; 2. Reputation (local/tokens)&lt;br/&gt;&amp;gt;&amp;gt; 3. Fees&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; This is the link to the call: &lt;a href=&#34;https://meet.jit.si/UnjammingLN&#34;&gt;https://meet.jit.si/UnjammingLN&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; See you there,&lt;br/&gt;&amp;gt;&amp;gt; Clara&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; [1]&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-November/003740.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-November/003740.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; [2]&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-November/003754.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-November/003754.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20221208/e56d9ec4/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20221208/e56d9ec4/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:07:40Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsf69qndz5ycnfnr8elm2ycws9llh36z27eugw3xznq4n6wusplkcqzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zqv49lq</id>
    
      <title type="html">📅 Original date posted:2022-12-12 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsf69qndz5ycnfnr8elm2ycws9llh36z27eugw3xznq4n6wusplkcqzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zqv49lq" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsd3rrawpk6dp8wxqvt58jmfz5df98a6y58vnnv55pehnjxk5qn5tsq096mg&#39;&gt;nevent1q…96mg&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-12-12&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Greg,&lt;br/&gt;&lt;br/&gt;&amp;gt; Feel free to assume that we&amp;#39;ve worked around mempool pinning for all of&lt;br/&gt;&amp;gt; these discussions, otherwise we&amp;#39;re pretty hosed regardless. I&amp;#39;m implicitly&lt;br/&gt;&amp;gt; assuming V3&#43;ephemeral anchors, which disallows batched bumps, for example.&lt;br/&gt;&amp;gt; You&amp;#39;ll need to give some room for &amp;#34;slippage&amp;#34;, but I think&lt;br/&gt;&amp;gt; shared_delay/2*shared_delay is going to end up dominating UX in any&lt;br/&gt;&amp;gt; non-layered scheme.&lt;br/&gt;&lt;br/&gt;I think I was making the same assumption of V3&#43;ephemeral anchors, and&lt;br/&gt;effectively disabling batching removes the known case of &amp;#34;commitment&lt;br/&gt;cat-and-mouse&amp;#34; attack, where a counterparty goes to confirm the commitment&lt;br/&gt;one by one to break the validity of the common CPFP. However, I wonder if&lt;br/&gt;there is not another attack case, see my other &amp;#34;update overflow&amp;#34; mail, and&lt;br/&gt;I don&amp;#39;t think it qualifies as a pinning here!&lt;br/&gt;&lt;br/&gt;&amp;gt; This architecture doesn&amp;#39;t suffer from 2*self_delay, and each transition&lt;br/&gt;&amp;gt; aside from Slow/Settle/SX.y has no relative timelock so that relative&lt;br/&gt;&amp;gt; timelock is all that matters. It does introduce a watchtower cycle, so&lt;br/&gt;it&amp;#39;s&lt;br/&gt;&amp;gt; not longer a one-shot architecture, or even k-shot exactly, it ends up&lt;br/&gt;&amp;gt; looking like vanilla eltoo for that single path.&lt;br/&gt;&lt;br/&gt;Here I think my understanding is aligned, the watchtower cycle ends up&lt;br/&gt;looking more like the update phase of vanilla eltoo.&lt;br/&gt;&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;Le jeu. 8 déc. 2022 à 15:28, Greg Sanders &amp;lt;gsanders87 at gmail.com&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Antoine,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; While the 2*to_self_delay sounds the maximum time delay in the state&lt;br/&gt;&amp;gt; publication scenario where the cheating counterparty publishes a old state&lt;br/&gt;&amp;gt; then the honest counterparty publishes the latest one, there could be the&lt;br/&gt;&amp;gt; case where the cheating counterparty broadcast chain of old states, up to&lt;br/&gt;&amp;gt; mempool&amp;#39;s `limitancestorcount`. However, this chain of eltoo transactions&lt;br/&gt;&amp;gt; could be replaced by the honest party paying a higher-feerate (assuming&lt;br/&gt;&amp;gt; something like nversion=3). I think there might still be an attack&lt;br/&gt;&amp;gt; triggerable under certain economic conditions, where the attacker overbids&lt;br/&gt;&amp;gt; with the higher-feerate transaction until the HTLC cltv expires. If this&lt;br/&gt;&amp;gt; attack is plausible, it could be even opportun if you&amp;#39;re batching against&lt;br/&gt;&amp;gt; multiple channels, where the victims are not able to coordinate response.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Feel free to assume that we&amp;#39;ve worked around mempool pinning for all of&lt;br/&gt;&amp;gt; these discussions, otherwise we&amp;#39;re pretty hosed regardless. I&amp;#39;m implicitly&lt;br/&gt;&amp;gt; assuming V3&#43;ephemeral anchors, which disallows batched bumps, for example.&lt;br/&gt;&amp;gt; You&amp;#39;ll need to give some room for &amp;#34;slippage&amp;#34;, but I think&lt;br/&gt;&amp;gt; shared_delay/2*shared_delay is going to end up dominating UX in any&lt;br/&gt;&amp;gt; non-layered scheme.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; I wonder if the introduction of watchtower specific transactions doesn&amp;#39;t&lt;br/&gt;&amp;gt; break the 2*to_self_delay assumption&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This architecture doesn&amp;#39;t suffer from 2*self_delay, and each transition&lt;br/&gt;&amp;gt; aside from Slow/Settle/SX.y has no relative timelock so that relative&lt;br/&gt;&amp;gt; timelock is all that matters. It does introduce a watchtower cycle, so it&amp;#39;s&lt;br/&gt;&amp;gt; not longer a one-shot architecture, or even k-shot exactly, it ends up&lt;br/&gt;&amp;gt; looking like vanilla eltoo for that single path.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; Greg&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Thu, Dec 8, 2022 at 2:14 PM Antoine Riard &amp;lt;antoine.riard at gmail.com&amp;gt;&lt;br/&gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Hi AJ,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; The eltoo irc channel is ##eltoo on Libera chat.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;  - 2022-10-21, eltoo/chia:&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://twitter.com/bramcohen/status/1583122833932099585&#34;&gt;https://twitter.com/bramcohen/status/1583122833932099585&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; On the eltoo/chia variant, from my (quick) understanding, the main&lt;br/&gt;&amp;gt;&amp;gt; innovation aimed for is the limitation of the publication of eltoo states&lt;br/&gt;&amp;gt;&amp;gt; more than once by a counterparty, by introducing a cryptographic puzzle,&lt;br/&gt;&amp;gt;&amp;gt; where the witness can be produced once and only once ? I would say you&lt;br/&gt;&amp;gt;&amp;gt; might need the inheritance of the updated scriptpubkey across the chain of&lt;br/&gt;&amp;gt;&amp;gt; eltoo states, with a TLUV-like mechanism.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; The basic idea is &amp;#34;if it&amp;#39;s a two party channel with just Alice and Bob,&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; then if Alice starts a unilateral close, then she&amp;#39;s already had her say,&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; so it&amp;#39;s only Bob&amp;#39;s opinion that matters from now on, and he should be&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; able to act immediately&amp;#34;, and once it&amp;#39;s only Bob&amp;#39;s opinion that matters,&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; you can simplify a bunch of things.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; From my understanding, assuming Eltoo paper terminology, Alice can&lt;br/&gt;&amp;gt;&amp;gt; publish an update K transaction, and then after Bob can publish an update&lt;br/&gt;&amp;gt;&amp;gt; transaction K&amp;lt;N or Alice can publish the settlement transaction N, or Bob&lt;br/&gt;&amp;gt;&amp;gt; can publish an update transaction N. The main advantage of this&lt;br/&gt;&amp;gt;&amp;gt; construction I can see is a strict bound on the shared_delay encumbered in&lt;br/&gt;&amp;gt;&amp;gt; the on-chain publication of the channel ?&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; fast forwards: we might want to allow our channel partner&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; to immediately rely on a new state we propose without needing a&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; round-trip delay -- this potentially makes forwarding payments much&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; faster (though with some risk of locking the funds up, if you do a&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; fast forward to someone who&amp;#39;s gone offline)&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; IIRC, there has already been a &amp;#34;fast-forward&amp;#34; protocol upgrade proposal&lt;br/&gt;&amp;gt;&amp;gt; based on update-turn in the LN-penalty paradigm [0]. I think reducing the&lt;br/&gt;&amp;gt;&amp;gt; latency of HTLC propagation across payment paths would constitute a UX&lt;br/&gt;&amp;gt;&amp;gt; improvement, especially a link-level update mechanism upgrade deployment&lt;br/&gt;&amp;gt;&amp;gt; might be incentivized by routing algorithms starting to penalize routing&lt;br/&gt;&amp;gt;&amp;gt; hops HTLC relay latency. What is unclear is the additional risk of locking&lt;br/&gt;&amp;gt;&amp;gt; the funds up. If you don&amp;#39;t receive acknowledgement the fast forward state&lt;br/&gt;&amp;gt;&amp;gt; has been received, you should still be able to exit with the state N-1 ?&lt;br/&gt;&amp;gt;&amp;gt; However, the fast-forward trade-off might sound acceptable, with time you&lt;br/&gt;&amp;gt;&amp;gt; might expect reliable routing hops in the core of the graph, and flappy&lt;br/&gt;&amp;gt;&amp;gt; spokes at the edge.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; doubled delays: once we publish the latest state we can, we want to&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; be able to claim the funds immediately after to_self_delay expires;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; however if our counterparty has signatures for a newer state than we&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; do (which will happen if it was fast forwarded), they could post that&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; state shortly before to_self_delay expires, potentially increasing&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; the total delay to 2*to_self_delay.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; While the 2*to_self_delay sounds the maximum time delay in the state&lt;br/&gt;&amp;gt;&amp;gt; publication scenario where the cheating counterparty publishes a old state&lt;br/&gt;&amp;gt;&amp;gt; then the honest counterparty publishes the latest one, there could be the&lt;br/&gt;&amp;gt;&amp;gt; case where the cheating counterparty broadcast chain of old states, up to&lt;br/&gt;&amp;gt;&amp;gt; mempool&amp;#39;s `limitancestorcount`. However, this chain of eltoo transactions&lt;br/&gt;&amp;gt;&amp;gt; could be replaced by the honest party paying a higher-feerate (assuming&lt;br/&gt;&amp;gt;&amp;gt; something like nversion=3). I think there might still be an attack&lt;br/&gt;&amp;gt;&amp;gt; triggerable under certain economic conditions, where the attacker overbids&lt;br/&gt;&amp;gt;&amp;gt; with the higher-feerate transaction until the HTLC cltv expires. If this&lt;br/&gt;&amp;gt;&amp;gt; attack is plausible, it could be even opportun if you&amp;#39;re batching against&lt;br/&gt;&amp;gt;&amp;gt; multiple channels, where the victims are not able to coordinate response.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; penalties: when you do a unilateral close, attempting to cheat comes&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; with no cost to you and a possible benefit if you succeed, but&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; potentially does cost your channel partner (either in forcing them&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; to spend on-chain fees to update to the correct state, or in the risk&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; of loss if their node malfunctions occassionally) -- a penalty could&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; reduce this incentive to cheat&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I think there has been a proposal in the past to enable penalties on top&lt;br/&gt;&amp;gt;&amp;gt; of symmetric states by leveraging asymmetric witnesses [1]. Further, I&lt;br/&gt;&amp;gt;&amp;gt; wonder if there is a game-theory interest for penalty-on-top-eltoo, it&lt;br/&gt;&amp;gt;&amp;gt; could be an incentive against laziness, where a dysfunctional trusted&lt;br/&gt;&amp;gt;&amp;gt; watchtower broadcasts an old state. On the qualification of the game-theory&lt;br/&gt;&amp;gt;&amp;gt; soundness, I think one would have to run the empirical case study: select&lt;br/&gt;&amp;gt;&amp;gt; channel counterparties randomly (no out-of-band assumptions), one set with&lt;br/&gt;&amp;gt;&amp;gt; eltoo&#43;penalty and the other with vanilla eltoo, observe the broadcast of&lt;br/&gt;&amp;gt;&amp;gt; revoked states over some period.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; trustless watchtowers: we may want to consider the possibility of a&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; watchtower holding onto obsolete states and colluding with an&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; attacker to attempt to cheat us&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; In terms of pinning and other mempool games, I think honest participant&lt;br/&gt;&amp;gt;&amp;gt; own states leveraged by a colluding watchtower might increase the attack&lt;br/&gt;&amp;gt;&amp;gt; surface, especially post-anchor with the SIGHASH_SINGLE malleability on&lt;br/&gt;&amp;gt;&amp;gt; second-stage HTLC transactions.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; (I think for initial eltoo experimentation it doesn&amp;#39;t make sense to try&lt;br/&gt;&amp;gt;&amp;gt; to&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; deal with all (or perhaps any) of those constraints; simple and working&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; is better than complex and theoretical. But having them written down so&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; the ideas can be thought about and looked up later still seems useful)&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I share the belief -- &amp;#34;simple and working&amp;#34; enable shorter iteration&lt;br/&gt;&amp;gt;&amp;gt; cycles and hopefully fasten the protocol design learning curve. Beyond, I&lt;br/&gt;&amp;gt;&amp;gt; think it&amp;#39;s also realistic in face of the state of the LN ecosystem,&lt;br/&gt;&amp;gt;&amp;gt; especially on the watchtower issue. AFAICT, there is no even multi trusted&lt;br/&gt;&amp;gt;&amp;gt; watchtower design covering the full execution of the protocol (i.e&lt;br/&gt;&amp;gt;&amp;gt; including HTLC-preimage/ HTLC-timeout claim), and such implementation is&lt;br/&gt;&amp;gt;&amp;gt; far from simple, as from now on you LN&amp;#39;s chain backend might have&lt;br/&gt;&amp;gt;&amp;gt; asynchronicity issue to solve between your on-chain monitoring state&lt;br/&gt;&amp;gt;&amp;gt; machine (at least speaking in knowledge of the LDK-architecture).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; * WA.n, WB.n : watchtower update to state n&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;   - this is for an untrusted watchtower to correct attempted cheating&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     by Bob on behalf of Alice (or vice-versa). Spends UB.k or WA.k&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     (or UA.k/WB.k) respectively, provided k &amp;lt; n.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I wonder if the introduction of watchtower specific transactions doesn&amp;#39;t&lt;br/&gt;&amp;gt;&amp;gt; break the 2*to_self_delay assumption (iiuc it&amp;#39;s a design goal of current&lt;br/&gt;&amp;gt;&amp;gt; protocol) and what is the design rationale. Beyond that, there is a concern&lt;br/&gt;&amp;gt;&amp;gt; with watchtower-specific transactions, it might leak your towers topology&lt;br/&gt;&amp;gt;&amp;gt; (i.e the number of them and the distribution in the p2p network) to an&lt;br/&gt;&amp;gt;&amp;gt; adversary.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; * SA.n, SB.n : slowly claim funds according to state n&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;   - this is for Alice to claim her funds if Bob is completely offline&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     (or vice-versa). Spends UA.n, UB.n, WA.n or WB.n with relative&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     timelock of to_self_delay.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; If I&amp;#39;m following correctly the description, this is logically equivalent&lt;br/&gt;&amp;gt;&amp;gt; to the sweep of a `to_local`/`to_remote` output on a commitment transaction&lt;br/&gt;&amp;gt;&amp;gt; though instead the waiting delay is eltoo shared_delay. There is no&lt;br/&gt;&amp;gt;&amp;gt; to_self_delay, at the punishment seems only to happen on the update-level,&lt;br/&gt;&amp;gt;&amp;gt; or maybe one should be also able to punish slow fund exit, and another&lt;br/&gt;&amp;gt;&amp;gt; relative locktime should exist on the S* transactions.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; * Alice and Bob&amp;#39;s watchtower collude, but Bob has many watchtowers:&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     F -&amp;gt; UA.k1 -&amp;gt; WB.k2 -&amp;gt; WB.n -&amp;gt; (to_self_delay) -&amp;gt; SA.n -&amp;gt; money&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Could the punishment transactions R* be also delegated to watchtowers,&lt;br/&gt;&amp;gt;&amp;gt; assuming they have been pre-signed to lockdown the exit scriptpubkeys ?&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; In order to allow fast-forwards, when Alice proposes a new state,&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; she needs to send her partial signatures to allow Bob to unilaterally&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; accept the new state, ie sigs for: UB.n, CB.n, SB.n, RB.n. But she&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; also needs to be able to claim the funds if Bob proposes the new state&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; and broadcasts UB.n, she needs to be able broadcast CA.n. This can be&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; achieved with an adaptor signature approach (spelt out a bit more fully&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; in the gist) or a CTV-like approach, provided that UB.n reveals the&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; state needed to calculate the the CTV commitment (see &amp;#34;EXPR_SETTLE&amp;#34; in&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://github.com/instagibbs/bolts/blob/29fe6d36cbad4101d5ec76c2b19c83c1494ac2fc/XX-eltoo-transactions.md&#34;&gt;https://github.com/instagibbs/bolts/blob/29fe6d36cbad4101d5ec76c2b19c83c1494ac2fc/XX-eltoo-transactions.md&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; ).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; If you would like to have fast forward of chain of transactions, I wonder&lt;br/&gt;&amp;gt;&amp;gt; if there could be also the &amp;#34;sig-in-the-script&amp;#34; trick, where UB.n&lt;br/&gt;&amp;gt;&amp;gt; scriptpubkey (or one of its tapscripts) contains the signature for CB.n,&lt;br/&gt;&amp;gt;&amp;gt; SB.n, RB.n. Though you might have an issue of re-generating the&lt;br/&gt;&amp;gt;&amp;gt; witnessscript in case of state loss.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; * how to add fees -- the U/W transactions are 1-in/1-out transactions&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;   that can&amp;#39;t be trivially CPFPed by the proposer and need to have&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;   fees added (either SINGLE/ANYONECANPAY signatures or having a 0-sat&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;   ephemeral output and package relay might be workable); the C/S/R&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;   transactions are 1-in/many-out transactions, but have balance outputs&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;   that can be immediately spent to pay for fees via CPFP if package&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;   relay is available.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Assuming something like nversion=3, the SINGLE/ANYONCANPAY could be a&lt;br/&gt;&amp;gt;&amp;gt; viable fee-bumping mechanism, as ancestor-based pinning should be less of a&lt;br/&gt;&amp;gt;&amp;gt; concern. Ephemeral anchor output could be a more efficient direction, if&lt;br/&gt;&amp;gt;&amp;gt; the output value can be cooperatively inflated from the channel value,&lt;br/&gt;&amp;gt;&amp;gt; rather than relying on external fee-bumping reserves. I think even more&lt;br/&gt;&amp;gt;&amp;gt; efficient fee-bumping primitives can be introduced later.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; * how to pay watchtowers -- when a watchtower broadcasts a W&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;   transaction, it needs to add fees, and it&amp;#39;s not clear (to me) how it&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;   could fairly and reliably ensure it&amp;#39;s compensated for those costs,&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;   particularly if multiple W transactions are broadcast for a single&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;   unilateral close attempt, due to one or more watchtowers colluding&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;   with an attacker, or simply having out of date information.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I wonder if paying a watchtower, or getting paid as a watchtower isn&amp;#39;t  a&lt;br/&gt;&amp;gt;&amp;gt; &amp;#34;counterparty risk&amp;#34; similar to what is happening with jamming due to&lt;br/&gt;&amp;gt;&amp;gt; non-covered HTLC forward risk. The watchtower has the risk of not being&lt;br/&gt;&amp;gt;&amp;gt; paid a posteriori and the user has the risk of the tower not acting. There&lt;br/&gt;&amp;gt;&amp;gt; is even a trade-off between tower costs and safety, as the more towers you&lt;br/&gt;&amp;gt;&amp;gt; have, more robust if your Lightning channel (in theory, as you also have a&lt;br/&gt;&amp;gt;&amp;gt; duplication of the key material).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; * lack of layered transactions -- while this prevents you having to&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;   wait longer than to_self_delay before you can claim channel funds,&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;   it still means that any htlc that is going to timeout sooner than that&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;   may not be claimable on-chain, meaning you need to set&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;   cltv_expiry_delta &amp;gt;= to_self_delay.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; From a security perspective, offsetting the cltv_expiry_delta to a value&lt;br/&gt;&amp;gt;&amp;gt; superior to to_self_delay can be considered as an improvement, especially&lt;br/&gt;&amp;gt;&amp;gt; if it gradually does it network-wide. On the other hand, if routing&lt;br/&gt;&amp;gt;&amp;gt; algorithms start to penalize long-cltv-delta payment paths as the timevalue&lt;br/&gt;&amp;gt;&amp;gt; of liquidity is priced in routing fees, this design rationale might not be&lt;br/&gt;&amp;gt;&amp;gt; aligned with long-term LN network incentives (as of today even more&lt;br/&gt;&amp;gt;&amp;gt; loosely-defined than miner incentives).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; * extending to multiparty channels -- penalising is hard if there&amp;#39;s&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;   more than two parties, fast forwards are probably impossible since&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;   you need multiple round-trips to coordinate signatures anyway, and if&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;   you&amp;#39;re doing channels-within-channels to reduce your n-party channel&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;   to an easier to update 2-party channel you&amp;#39;re probably forced to have&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;   to_self_delay for each layer of channels. Also, just figuring out how&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;   to coordinate multiparty state updates and even keeping everyone in&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;   a multiparty channel online consistently to generate new signatures&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;   seems potentially hard?&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I don&amp;#39;t know if penalising has been a solved issue for mulit-party, at&lt;br/&gt;&amp;gt;&amp;gt; least in a trustless fashion in the same way we have with 2-party&lt;br/&gt;&amp;gt;&amp;gt; LN-penalty (you could devise weird scheme based on timelock, taproot tree&lt;br/&gt;&amp;gt;&amp;gt; and threshold signatures incentivizing towards the convergence of a&lt;br/&gt;&amp;gt;&amp;gt; &amp;#34;consensus&amp;#34; punishment, still...) Figuring out coordinating multi-party&lt;br/&gt;&amp;gt;&amp;gt; states updates sounds workable with modern consensus algorithms (e.g Raft),&lt;br/&gt;&amp;gt;&amp;gt; though still conserving the fast forward effect is a high bar, it might be&lt;br/&gt;&amp;gt;&amp;gt; better deferred to an uplifted layer of 2-of-2 LN channels. The only reason&lt;br/&gt;&amp;gt;&amp;gt; you might have payments at the multi-party level (with the signature of the&lt;br/&gt;&amp;gt;&amp;gt; N-of-N participants requested) only for privacy or liquidity allocation&lt;br/&gt;&amp;gt;&amp;gt; reason. Though effectively, it sounds like your multiparty&lt;br/&gt;&amp;gt;&amp;gt; channel coordination mechanism should encompass party eviction or&lt;br/&gt;&amp;gt;&amp;gt; partitioning the offline parties. One or two orders of magnitude of&lt;br/&gt;&amp;gt;&amp;gt; complexity beyond the 2-party eltoo channel case, I think.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Antoine&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; [0] &lt;a href=&#34;https://github.com/lightning/bolts/pull/867&#34;&gt;https://github.com/lightning/bolts/pull/867&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; [1] &lt;a href=&#34;https://github.com/LLFourn/witness-asymmetric-channel&#34;&gt;https://github.com/LLFourn/witness-asymmetric-channel&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Le mer. 7 déc. 2022 à 00:36, Anthony Towns &amp;lt;aj at erisian.com.au&amp;gt; a écrit :&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Hi all,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; On the eltoo irc channel we discussed optimising eltoo for the 2-party&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; scenario; figured it was probably worth repeating that here.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; This is similar to:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;  - 2018-07-18, simplified eltoo:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2018-July/001363.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2018-July/001363.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;  - 2021-09-17, IID 2Stage,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-September/019470.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-September/019470.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;  - 2022-09-29, Daric: &lt;a href=&#34;https://eprint.iacr.org/2022/1295&#34;&gt;https://eprint.iacr.org/2022/1295&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;  - 2022-10-21, eltoo/chia:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://twitter.com/bramcohen/status/1583122833932099585&#34;&gt;https://twitter.com/bramcohen/status/1583122833932099585&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; The basic idea is &amp;#34;if it&amp;#39;s a two party channel with just Alice and Bob,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; then if Alice starts a unilateral close, then she&amp;#39;s already had her say,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; so it&amp;#39;s only Bob&amp;#39;s opinion that matters from now on, and he should be&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; able to act immediately&amp;#34;, and once it&amp;#39;s only Bob&amp;#39;s opinion that matters,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; you can simplify a bunch of things.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; A &amp;#34;gist&amp;#34; for this idea is&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://gist.github.com/ajtowns/53e0f735f4d5c06a681429d937200aa5&#34;&gt;https://gist.github.com/ajtowns/53e0f735f4d5c06a681429d937200aa5&lt;/a&gt; (it&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; goes into a little more detail in places, though doesn&amp;#39;t cover trustless&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; watchtowers at all).&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; In particular, there are a few practical constraints that we might like&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; to consider for 2-party channels with eltoo:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;  - fast forwards: we might want to allow our channel partner&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    to immediately rely on a new state we propose without needing a&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    round-trip delay -- this potentially makes forwarding payments much&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    faster (though with some risk of locking the funds up, if you do a&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    fast forward to someone who&amp;#39;s gone offline)&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;  - doubled delays: once we publish the latest state we can, we want to&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    be able to claim the funds immediately after to_self_delay expires;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    however if our counterparty has signatures for a newer state than we&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    do (which will happen if it was fast forwarded), they could post that&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    state shortly before to_self_delay expires, potentially increasing&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    the total delay to 2*to_self_delay.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;  - penalties: when you do a unilateral close, attempting to cheat comes&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    with no cost to you and a possible benefit if you succeed, but&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    potentially does cost your channel partner (either in forcing them&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    to spend on-chain fees to update to the correct state, or in the risk&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    of loss if their node malfunctions occassionally) -- a penalty could&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    reduce this incentive to cheat&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;  - trustless watchtowers: we may want to consider the possibility of a&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    watchtower holding onto obsolete states and colluding with an&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    attacker to attempt to cheat us&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; What follows is a rough approach for dealing with all those issues for&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; two-party channels. It&amp;#39;s spelled out in a little more detail in the gist.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; (I think for initial eltoo experimentation it doesn&amp;#39;t make sense to try&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; to&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; deal with all (or perhaps any) of those constraints; simple and working&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; is better than complex and theoretical. But having them written down so&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; the ideas can be thought about and looked up later still seems useful)&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; In more detail: unilateral closes are handled by each channel participant&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; maintaining five transactions, which we&amp;#39;ll call:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;  * UA.n, UB.n : unilaterally propose closing at state n&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    - this is for Alice or Bob to spend the funding tx for a unilater&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;      close to state n. Spends the funding transaction.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;  * WA.n, WB.n : watchtower update to state n&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    - this is for an untrusted watchtower to correct attempted cheating&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;      by Bob on behalf of Alice (or vice-versa). Spends UB.k or WA.k&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;      (or UA.k/WB.k) respectively, provided k &amp;lt; n.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;  * CA.n, CB.n : cooperatively claim funds according to state n&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    - this is for Alice to confirm Bob&amp;#39;s unilateral close (or vice-versa).&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;      Spends UB.k, WA.k (or UA.k/WB.k respectively), provided k &amp;lt;= n&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;  * SA.n, SB.n : slowly claim funds according to state n&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    - this is for Alice to claim her funds if Bob is completely offline&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;      (or vice-versa). Spends UA.n, UB.n, WA.n or WB.n with relative&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;      timelock of to_self_delay.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;  * RA.n, RB.n : claim funds with penalty after unilateral close to&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    revoked state&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    - this is for Alice to update the state if Bob attempted to cheat&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;      (or vice-versa). Spends UB.k or WA.k (or UA.k/WB.k respectively)&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;      conditional on k &amp;lt; n - 1; outputs are adjusted to transfer a fixed&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;      penalty of penalty_msat from Bob&amp;#39;s balance to Alice&amp;#39;s (or&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; vice-versa)&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Each of these &amp;#34;transactions&amp;#34; requires a pre-signed signature; however&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; the actual transaction/txid will vary in cases where a transaction has&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; the possibility of spending different inputs (eg &amp;#34;Spends UB.k or WA.k&amp;#34;).&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; In particular UA.n/UB.n can be constructed with known txids and non-APO&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; signatures but WA.n/WB.n/CA.n/CB.n/SA.n/SB.n/RA.n/RB.n all require&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; APO signatures.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; They&amp;#39;re named such that Alice can immediately broadcast all the *A.n&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; transactions (provided a tx that it can spend has been broadcast) and&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Bob can likewise immediately broadcast all the *B.n transactions.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Scenarios where Alice decides to unilaterally close the channel might&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; look like:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;  * if Alice/Bob can&amp;#39;t communicate directly, but both are online:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;      F -&amp;gt; UA.n -&amp;gt; CB.n -&amp;gt; money&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    (balances and htlcs claimed, no delay)&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;  * if Bob has gone offline entirely:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;      F -&amp;gt; UA.n -&amp;gt; (to_self_delay) -&amp;gt; SA.n -&amp;gt; money&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;  * Alice cheats, Bob punishes:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;      F -&amp;gt; UA.k -&amp;gt; RB.n -&amp;gt; money[Alice pays Bob penalty]&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;  * Bob is offline, Alice cheats, but Bob has a watchtower:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;      F -&amp;gt; UA.k -&amp;gt; WB.n -&amp;gt; (to_self_delay) -&amp;gt; SA.n -&amp;gt; money&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;  * Alice and Bob&amp;#39;s watchtower collude, but Bob&amp;#39;s not offline:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;      F -&amp;gt; UA.k1 -&amp;gt; WB.k2 -&amp;gt; RB.n -&amp;gt; money[Alice pays Bob penalty]&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;  * Alice and Bob&amp;#39;s watchtower collude, but Bob has many watchtowers:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;      F -&amp;gt; UA.k1 -&amp;gt; WB.k2 -&amp;gt; WB.n -&amp;gt; (to_self_delay) -&amp;gt; SA.n -&amp;gt; money&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; For Alice to successfully cheat, she needs Bob to be offline for at least&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; to_self_delay, and for all Bob&amp;#39;s watchtowers to either also be offline,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; or colluding.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; This can be simplified somewhat, if you don&amp;#39;t care about all the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; features:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;  * If you don&amp;#39;t care about trustless watchtowers you can drop WA.n/WB.n&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    (and simplify SA.n/SB.n to not require an APO signature)&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;  * If you don&amp;#39;t care about penalties you can set penalty_msat to 0 and&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    allow RA.n/RB.n to spend k&amp;lt;=n. In this case, you can either drop&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    CA.n/CB.n entirely, or you can have CA.n/CB.n only be used for&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; directly&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    spending of UB.n/UA.n and thus not require APO signatures&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; In order to allow fast-forwards, when Alice proposes a new state,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; she needs to send her partial signatures to allow Bob to unilaterally&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; accept the new state, ie sigs for: UB.n, CB.n, SB.n, RB.n. But she&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; also needs to be able to claim the funds if Bob proposes the new state&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; and broadcasts UB.n, she needs to be able broadcast CA.n. This can be&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; achieved with an adaptor signature approach (spelt out a bit more fully&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; in the gist) or a CTV-like approach, provided that UB.n reveals the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; state needed to calculate the the CTV commitment (see &amp;#34;EXPR_SETTLE&amp;#34; in&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://github.com/instagibbs/bolts/blob/29fe6d36cbad4101d5ec76c2b19c83c1494ac2fc/XX-eltoo-transactions.md&#34;&gt;https://github.com/instagibbs/bolts/blob/29fe6d36cbad4101d5ec76c2b19c83c1494ac2fc/XX-eltoo-transactions.md&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; ).&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Note that in this scenario Alice doesn&amp;#39;t provide WB.n to Bob&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; immediately. This is okay, as if Alice proposes UA.(n-1) (her most&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; recent state), Bob can still immediately claim via CA.n. If Bob did have&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; WB.n; then if Alice proposed UA.(n-1) Bob could wait for an initial&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; to_self_delay period and broadcast WB.n, forcing Alice to wait for an&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; additional to_self_delay before being able to claim her funds via SA.n.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Note also that this is why RA.n/RB.n require &amp;#34;k &amp;lt; n - 1&amp;#34; -- otherwise&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Alice would only be able to broadcast UA.(n-1) and Bob would immediately&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; be able to penalise by broadcasting RB.n.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Note that if you&amp;#39;re using a watchtower and wish to punish your&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; counterparty if it attempts to cheat, you should only pass WA.(n-2)&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; to your watchtowers, not WA.(n-1) or WA.n.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; This doesn&amp;#39;t address any potential issues from:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;  * how to add fees -- the U/W transactions are 1-in/1-out transactions&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    that can&amp;#39;t be trivially CPFPed by the proposer and need to have&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    fees added (either SINGLE/ANYONECANPAY signatures or having a 0-sat&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    ephemeral output and package relay might be workable); the C/S/R&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    transactions are 1-in/many-out transactions, but have balance outputs&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    that can be immediately spent to pay for fees via CPFP if package&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    relay is available.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;  * how to pay watchtowers -- when a watchtower broadcasts a W&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    transaction, it needs to add fees, and it&amp;#39;s not clear (to me) how it&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    could fairly and reliably ensure it&amp;#39;s compensated for those costs,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    particularly if multiple W transactions are broadcast for a single&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    unilateral close attempt, due to one or more watchtowers colluding&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    with an attacker, or simply having out of date information.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;  * lack of layered transactions -- while this prevents you having to&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    wait longer than to_self_delay before you can claim channel funds,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    it still means that any htlc that is going to timeout sooner than that&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    may not be claimable on-chain, meaning you need to set&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    cltv_expiry_delta &amp;gt;= to_self_delay.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;  * extending to multiparty channels -- penalising is hard if there&amp;#39;s&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    more than two parties, fast forwards are probably impossible since&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    you need multiple round-trips to coordinate signatures anyway, and if&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    you&amp;#39;re doing channels-within-channels to reduce your n-party channel&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    to an easier to update 2-party channel you&amp;#39;re probably forced to have&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    to_self_delay for each layer of channels. Also, just figuring out how&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    to coordinate multiparty state updates and even keeping everyone in&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    a multiparty channel online consistently to generate new signatures&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;    seems potentially hard?&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; aj&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20221212/a2aadcd6/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20221212/a2aadcd6/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:07:38Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqstvly3uz28dd3swgpwhu9c5gygwa2u3zm5jyyscnx8aw0lnxwlymszypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zxu40ev</id>
    
      <title type="html">📅 Original date posted:2022-12-08 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqstvly3uz28dd3swgpwhu9c5gygwa2u3zm5jyyscnx8aw0lnxwlymszypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zxu40ev" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsft8k24t658k7287rstsnmsq009x0e8nwrqd03egr4llhdsefkamqknzkcp&#39;&gt;nevent1q…zkcp&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-12-08&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi AJ,&lt;br/&gt;&lt;br/&gt;The eltoo irc channel is ##eltoo on Libera chat.&lt;br/&gt;&lt;br/&gt;&amp;gt;  - 2022-10-21, eltoo/chia:&lt;br/&gt;&lt;a href=&#34;https://twitter.com/bramcohen/status/1583122833932099585&#34;&gt;https://twitter.com/bramcohen/status/1583122833932099585&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;On the eltoo/chia variant, from my (quick) understanding, the main&lt;br/&gt;innovation aimed for is the limitation of the publication of eltoo states&lt;br/&gt;more than once by a counterparty, by introducing a cryptographic puzzle,&lt;br/&gt;where the witness can be produced once and only once ? I would say you&lt;br/&gt;might need the inheritance of the updated scriptpubkey across the chain of&lt;br/&gt;eltoo states, with a TLUV-like mechanism.&lt;br/&gt;&lt;br/&gt;&amp;gt; The basic idea is &amp;#34;if it&amp;#39;s a two party channel with just Alice and Bob,&lt;br/&gt;&amp;gt; then if Alice starts a unilateral close, then she&amp;#39;s already had her say,&lt;br/&gt;&amp;gt; so it&amp;#39;s only Bob&amp;#39;s opinion that matters from now on, and he should be&lt;br/&gt;&amp;gt; able to act immediately&amp;#34;, and once it&amp;#39;s only Bob&amp;#39;s opinion that matters,&lt;br/&gt;&amp;gt; you can simplify a bunch of things.&lt;br/&gt;&lt;br/&gt;&amp;gt;From my understanding, assuming Eltoo paper terminology, Alice can publish&lt;br/&gt;an update K transaction, and then after Bob can publish an update&lt;br/&gt;transaction K&amp;lt;N or Alice can publish the settlement transaction N, or Bob&lt;br/&gt;can publish an update transaction N. The main advantage of this&lt;br/&gt;construction I can see is a strict bound on the shared_delay encumbered in&lt;br/&gt;the on-chain publication of the channel ?&lt;br/&gt;&lt;br/&gt;&amp;gt; fast forwards: we might want to allow our channel partner&lt;br/&gt;&amp;gt; to immediately rely on a new state we propose without needing a&lt;br/&gt;&amp;gt; round-trip delay -- this potentially makes forwarding payments much&lt;br/&gt;&amp;gt; faster (though with some risk of locking the funds up, if you do a&lt;br/&gt;&amp;gt; fast forward to someone who&amp;#39;s gone offline)&lt;br/&gt;&lt;br/&gt;IIRC, there has already been a &amp;#34;fast-forward&amp;#34; protocol upgrade proposal&lt;br/&gt;based on update-turn in the LN-penalty paradigm [0]. I think reducing the&lt;br/&gt;latency of HTLC propagation across payment paths would constitute a UX&lt;br/&gt;improvement, especially a link-level update mechanism upgrade deployment&lt;br/&gt;might be incentivized by routing algorithms starting to penalize routing&lt;br/&gt;hops HTLC relay latency. What is unclear is the additional risk of locking&lt;br/&gt;the funds up. If you don&amp;#39;t receive acknowledgement the fast forward state&lt;br/&gt;has been received, you should still be able to exit with the state N-1 ?&lt;br/&gt;However, the fast-forward trade-off might sound acceptable, with time you&lt;br/&gt;might expect reliable routing hops in the core of the graph, and flappy&lt;br/&gt;spokes at the edge.&lt;br/&gt;&lt;br/&gt;&amp;gt; doubled delays: once we publish the latest state we can, we want to&lt;br/&gt;&amp;gt; be able to claim the funds immediately after to_self_delay expires;&lt;br/&gt;&amp;gt; however if our counterparty has signatures for a newer state than we&lt;br/&gt;&amp;gt; do (which will happen if it was fast forwarded), they could post that&lt;br/&gt;&amp;gt; state shortly before to_self_delay expires, potentially increasing&lt;br/&gt;&amp;gt; the total delay to 2*to_self_delay.&lt;br/&gt;&lt;br/&gt;While the 2*to_self_delay sounds the maximum time delay in the state&lt;br/&gt;publication scenario where the cheating counterparty publishes a old state&lt;br/&gt;then the honest counterparty publishes the latest one, there could be the&lt;br/&gt;case where the cheating counterparty broadcast chain of old states, up to&lt;br/&gt;mempool&amp;#39;s `limitancestorcount`. However, this chain of eltoo transactions&lt;br/&gt;could be replaced by the honest party paying a higher-feerate (assuming&lt;br/&gt;something like nversion=3). I think there might still be an attack&lt;br/&gt;triggerable under certain economic conditions, where the attacker overbids&lt;br/&gt;with the higher-feerate transaction until the HTLC cltv expires. If this&lt;br/&gt;attack is plausible, it could be even opportun if you&amp;#39;re batching against&lt;br/&gt;multiple channels, where the victims are not able to coordinate response.&lt;br/&gt;&lt;br/&gt;&amp;gt; penalties: when you do a unilateral close, attempting to cheat comes&lt;br/&gt;&amp;gt; with no cost to you and a possible benefit if you succeed, but&lt;br/&gt;&amp;gt; potentially does cost your channel partner (either in forcing them&lt;br/&gt;&amp;gt; to spend on-chain fees to update to the correct state, or in the risk&lt;br/&gt;&amp;gt; of loss if their node malfunctions occassionally) -- a penalty could&lt;br/&gt;&amp;gt; reduce this incentive to cheat&lt;br/&gt;&lt;br/&gt;I think there has been a proposal in the past to enable penalties on top of&lt;br/&gt;symmetric states by leveraging asymmetric witnesses [1]. Further, I wonder&lt;br/&gt;if there is a game-theory interest for penalty-on-top-eltoo, it could be an&lt;br/&gt;incentive against laziness, where a dysfunctional trusted watchtower&lt;br/&gt;broadcasts an old state. On the qualification of the game-theory soundness,&lt;br/&gt;I think one would have to run the empirical case study: select channel&lt;br/&gt;counterparties randomly (no out-of-band assumptions), one set with&lt;br/&gt;eltoo&#43;penalty and the other with vanilla eltoo, observe the broadcast of&lt;br/&gt;revoked states over some period.&lt;br/&gt;&lt;br/&gt;&amp;gt; trustless watchtowers: we may want to consider the possibility of a&lt;br/&gt;&amp;gt; watchtower holding onto obsolete states and colluding with an&lt;br/&gt;&amp;gt; attacker to attempt to cheat us&lt;br/&gt;&lt;br/&gt;In terms of pinning and other mempool games, I think honest participant own&lt;br/&gt;states leveraged by a colluding watchtower might increase the attack&lt;br/&gt;surface, especially post-anchor with the SIGHASH_SINGLE malleability on&lt;br/&gt;second-stage HTLC transactions.&lt;br/&gt;&lt;br/&gt;&amp;gt; (I think for initial eltoo experimentation it doesn&amp;#39;t make sense to try to&lt;br/&gt;&amp;gt; deal with all (or perhaps any) of those constraints; simple and working&lt;br/&gt;&amp;gt; is better than complex and theoretical. But having them written down so&lt;br/&gt;&amp;gt; the ideas can be thought about and looked up later still seems useful)&lt;br/&gt;&lt;br/&gt;I share the belief -- &amp;#34;simple and working&amp;#34; enable shorter iteration cycles&lt;br/&gt;and hopefully fasten the protocol design learning curve. Beyond, I think&lt;br/&gt;it&amp;#39;s also realistic in face of the state of the LN ecosystem, especially on&lt;br/&gt;the watchtower issue. AFAICT, there is no even multi trusted watchtower&lt;br/&gt;design covering the full execution of the protocol (i.e including&lt;br/&gt;HTLC-preimage/ HTLC-timeout claim), and such implementation is far from&lt;br/&gt;simple, as from now on you LN&amp;#39;s chain backend might have asynchronicity&lt;br/&gt;issue to solve between your on-chain monitoring state machine (at least&lt;br/&gt;speaking in knowledge of the LDK-architecture).&lt;br/&gt;&lt;br/&gt;&amp;gt; * WA.n, WB.n : watchtower update to state n&lt;br/&gt;&amp;gt;   - this is for an untrusted watchtower to correct attempted cheating&lt;br/&gt;&amp;gt;     by Bob on behalf of Alice (or vice-versa). Spends UB.k or WA.k&lt;br/&gt;&amp;gt;     (or UA.k/WB.k) respectively, provided k &amp;lt; n.&lt;br/&gt;&lt;br/&gt;I wonder if the introduction of watchtower specific transactions doesn&amp;#39;t&lt;br/&gt;break the 2*to_self_delay assumption (iiuc it&amp;#39;s a design goal of current&lt;br/&gt;protocol) and what is the design rationale. Beyond that, there is a concern&lt;br/&gt;with watchtower-specific transactions, it might leak your towers topology&lt;br/&gt;(i.e the number of them and the distribution in the p2p network) to an&lt;br/&gt;adversary.&lt;br/&gt;&lt;br/&gt;&amp;gt; * SA.n, SB.n : slowly claim funds according to state n&lt;br/&gt;&amp;gt;   - this is for Alice to claim her funds if Bob is completely offline&lt;br/&gt;&amp;gt;     (or vice-versa). Spends UA.n, UB.n, WA.n or WB.n with relative&lt;br/&gt;&amp;gt;     timelock of to_self_delay.&lt;br/&gt;&lt;br/&gt;If I&amp;#39;m following correctly the description, this is logically equivalent to&lt;br/&gt;the sweep of a `to_local`/`to_remote` output on a commitment transaction&lt;br/&gt;though instead the waiting delay is eltoo shared_delay. There is no&lt;br/&gt;to_self_delay, at the punishment seems only to happen on the update-level,&lt;br/&gt;or maybe one should be also able to punish slow fund exit, and another&lt;br/&gt;relative locktime should exist on the S* transactions.&lt;br/&gt;&lt;br/&gt;&amp;gt; * Alice and Bob&amp;#39;s watchtower collude, but Bob has many watchtowers:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;     F -&amp;gt; UA.k1 -&amp;gt; WB.k2 -&amp;gt; WB.n -&amp;gt; (to_self_delay) -&amp;gt; SA.n -&amp;gt; money&lt;br/&gt;&lt;br/&gt;Could the punishment transactions R* be also delegated to watchtowers,&lt;br/&gt;assuming they have been pre-signed to lockdown the exit scriptpubkeys ?&lt;br/&gt;&lt;br/&gt;&amp;gt; In order to allow fast-forwards, when Alice proposes a new state,&lt;br/&gt;&amp;gt; she needs to send her partial signatures to allow Bob to unilaterally&lt;br/&gt;&amp;gt; accept the new state, ie sigs for: UB.n, CB.n, SB.n, RB.n. But she&lt;br/&gt;&amp;gt; also needs to be able to claim the funds if Bob proposes the new state&lt;br/&gt;&amp;gt; and broadcasts UB.n, she needs to be able broadcast CA.n. This can be&lt;br/&gt;&amp;gt; achieved with an adaptor signature approach (spelt out a bit more fully&lt;br/&gt;&amp;gt; in the gist) or a CTV-like approach, provided that UB.n reveals the&lt;br/&gt;&amp;gt; state needed to calculate the the CTV commitment (see &amp;#34;EXPR_SETTLE&amp;#34; in&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;a href=&#34;https://github.com/instagibbs/bolts/blob/29fe6d36cbad4101d5ec76c2b19c83c1494ac2fc/XX-eltoo-transactions.md&#34;&gt;https://github.com/instagibbs/bolts/blob/29fe6d36cbad4101d5ec76c2b19c83c1494ac2fc/XX-eltoo-transactions.md&lt;/a&gt;&lt;br/&gt;).&lt;br/&gt;&lt;br/&gt;If you would like to have fast forward of chain of transactions, I wonder&lt;br/&gt;if there could be also the &amp;#34;sig-in-the-script&amp;#34; trick, where UB.n&lt;br/&gt;scriptpubkey (or one of its tapscripts) contains the signature for CB.n,&lt;br/&gt;SB.n, RB.n. Though you might have an issue of re-generating the&lt;br/&gt;witnessscript in case of state loss.&lt;br/&gt;&lt;br/&gt;&amp;gt; * how to add fees -- the U/W transactions are 1-in/1-out transactions&lt;br/&gt;&amp;gt;   that can&amp;#39;t be trivially CPFPed by the proposer and need to have&lt;br/&gt;&amp;gt;   fees added (either SINGLE/ANYONECANPAY signatures or having a 0-sat&lt;br/&gt;&amp;gt;   ephemeral output and package relay might be workable); the C/S/R&lt;br/&gt;&amp;gt;   transactions are 1-in/many-out transactions, but have balance outputs&lt;br/&gt;&amp;gt;   that can be immediately spent to pay for fees via CPFP if package&lt;br/&gt;&amp;gt;   relay is available.&lt;br/&gt;&lt;br/&gt;Assuming something like nversion=3, the SINGLE/ANYONCANPAY could be a&lt;br/&gt;viable fee-bumping mechanism, as ancestor-based pinning should be less of a&lt;br/&gt;concern. Ephemeral anchor output could be a more efficient direction, if&lt;br/&gt;the output value can be cooperatively inflated from the channel value,&lt;br/&gt;rather than relying on external fee-bumping reserves. I think even more&lt;br/&gt;efficient fee-bumping primitives can be introduced later.&lt;br/&gt;&lt;br/&gt;&amp;gt; * how to pay watchtowers -- when a watchtower broadcasts a W&lt;br/&gt;&amp;gt;   transaction, it needs to add fees, and it&amp;#39;s not clear (to me) how it&lt;br/&gt;&amp;gt;   could fairly and reliably ensure it&amp;#39;s compensated for those costs,&lt;br/&gt;&amp;gt;   particularly if multiple W transactions are broadcast for a single&lt;br/&gt;&amp;gt;   unilateral close attempt, due to one or more watchtowers colluding&lt;br/&gt;&amp;gt;   with an attacker, or simply having out of date information.&lt;br/&gt;&lt;br/&gt;I wonder if paying a watchtower, or getting paid as a watchtower isn&amp;#39;t  a&lt;br/&gt;&amp;#34;counterparty risk&amp;#34; similar to what is happening with jamming due to&lt;br/&gt;non-covered HTLC forward risk. The watchtower has the risk of not being&lt;br/&gt;paid a posteriori and the user has the risk of the tower not acting. There&lt;br/&gt;is even a trade-off between tower costs and safety, as the more towers you&lt;br/&gt;have, more robust if your Lightning channel (in theory, as you also have a&lt;br/&gt;duplication of the key material).&lt;br/&gt;&lt;br/&gt;&amp;gt; * lack of layered transactions -- while this prevents you having to&lt;br/&gt;&amp;gt;   wait longer than to_self_delay before you can claim channel funds,&lt;br/&gt;&amp;gt;   it still means that any htlc that is going to timeout sooner than that&lt;br/&gt;&amp;gt;   may not be claimable on-chain, meaning you need to set&lt;br/&gt;&amp;gt;   cltv_expiry_delta &amp;gt;= to_self_delay.&lt;br/&gt;&lt;br/&gt;&amp;gt;From a security perspective, offsetting the cltv_expiry_delta to a value&lt;br/&gt;superior to to_self_delay can be considered as an improvement, especially&lt;br/&gt;if it gradually does it network-wide. On the other hand, if routing&lt;br/&gt;algorithms start to penalize long-cltv-delta payment paths as the timevalue&lt;br/&gt;of liquidity is priced in routing fees, this design rationale might not be&lt;br/&gt;aligned with long-term LN network incentives (as of today even more&lt;br/&gt;loosely-defined than miner incentives).&lt;br/&gt;&lt;br/&gt;&amp;gt; * extending to multiparty channels -- penalising is hard if there&amp;#39;s&lt;br/&gt;&amp;gt;   more than two parties, fast forwards are probably impossible since&lt;br/&gt;&amp;gt;   you need multiple round-trips to coordinate signatures anyway, and if&lt;br/&gt;&amp;gt;   you&amp;#39;re doing channels-within-channels to reduce your n-party channel&lt;br/&gt;&amp;gt;   to an easier to update 2-party channel you&amp;#39;re probably forced to have&lt;br/&gt;&amp;gt;   to_self_delay for each layer of channels. Also, just figuring out how&lt;br/&gt;&amp;gt;   to coordinate multiparty state updates and even keeping everyone in&lt;br/&gt;&amp;gt;   a multiparty channel online consistently to generate new signatures&lt;br/&gt;&amp;gt;   seems potentially hard?&lt;br/&gt;&lt;br/&gt;I don&amp;#39;t know if penalising has been a solved issue for mulit-party, at&lt;br/&gt;least in a trustless fashion in the same way we have with 2-party&lt;br/&gt;LN-penalty (you could devise weird scheme based on timelock, taproot tree&lt;br/&gt;and threshold signatures incentivizing towards the convergence of a&lt;br/&gt;&amp;#34;consensus&amp;#34; punishment, still...) Figuring out coordinating multi-party&lt;br/&gt;states updates sounds workable with modern consensus algorithms (e.g Raft),&lt;br/&gt;though still conserving the fast forward effect is a high bar, it might be&lt;br/&gt;better deferred to an uplifted layer of 2-of-2 LN channels. The only reason&lt;br/&gt;you might have payments at the multi-party level (with the signature of the&lt;br/&gt;N-of-N participants requested) only for privacy or liquidity allocation&lt;br/&gt;reason. Though effectively, it sounds like your multiparty&lt;br/&gt;channel coordination mechanism should encompass party eviction or&lt;br/&gt;partitioning the offline parties. One or two orders of magnitude of&lt;br/&gt;complexity beyond the 2-party eltoo channel case, I think.&lt;br/&gt;&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;[0] &lt;a href=&#34;https://github.com/lightning/bolts/pull/867&#34;&gt;https://github.com/lightning/bolts/pull/867&lt;/a&gt;&lt;br/&gt;[1] &lt;a href=&#34;https://github.com/LLFourn/witness-asymmetric-channel&#34;&gt;https://github.com/LLFourn/witness-asymmetric-channel&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Le mer. 7 déc. 2022 à 00:36, Anthony Towns &amp;lt;aj at erisian.com.au&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi all,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On the eltoo irc channel we discussed optimising eltoo for the 2-party&lt;br/&gt;&amp;gt; scenario; figured it was probably worth repeating that here.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This is similar to:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  - 2018-07-18, simplified eltoo:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2018-July/001363.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2018-July/001363.html&lt;/a&gt;&lt;br/&gt;&amp;gt;  - 2021-09-17, IID 2Stage,&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-September/019470.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-September/019470.html&lt;/a&gt;&lt;br/&gt;&amp;gt;  - 2022-09-29, Daric: &lt;a href=&#34;https://eprint.iacr.org/2022/1295&#34;&gt;https://eprint.iacr.org/2022/1295&lt;/a&gt;&lt;br/&gt;&amp;gt;  - 2022-10-21, eltoo/chia:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://twitter.com/bramcohen/status/1583122833932099585&#34;&gt;https://twitter.com/bramcohen/status/1583122833932099585&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The basic idea is &amp;#34;if it&amp;#39;s a two party channel with just Alice and Bob,&lt;br/&gt;&amp;gt; then if Alice starts a unilateral close, then she&amp;#39;s already had her say,&lt;br/&gt;&amp;gt; so it&amp;#39;s only Bob&amp;#39;s opinion that matters from now on, and he should be&lt;br/&gt;&amp;gt; able to act immediately&amp;#34;, and once it&amp;#39;s only Bob&amp;#39;s opinion that matters,&lt;br/&gt;&amp;gt; you can simplify a bunch of things.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A &amp;#34;gist&amp;#34; for this idea is&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://gist.github.com/ajtowns/53e0f735f4d5c06a681429d937200aa5&#34;&gt;https://gist.github.com/ajtowns/53e0f735f4d5c06a681429d937200aa5&lt;/a&gt; (it goes&lt;br/&gt;&amp;gt; into a little more detail in places, though doesn&amp;#39;t cover trustless&lt;br/&gt;&amp;gt; watchtowers at all).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In particular, there are a few practical constraints that we might like&lt;br/&gt;&amp;gt; to consider for 2-party channels with eltoo:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  - fast forwards: we might want to allow our channel partner&lt;br/&gt;&amp;gt;    to immediately rely on a new state we propose without needing a&lt;br/&gt;&amp;gt;    round-trip delay -- this potentially makes forwarding payments much&lt;br/&gt;&amp;gt;    faster (though with some risk of locking the funds up, if you do a&lt;br/&gt;&amp;gt;    fast forward to someone who&amp;#39;s gone offline)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  - doubled delays: once we publish the latest state we can, we want to&lt;br/&gt;&amp;gt;    be able to claim the funds immediately after to_self_delay expires;&lt;br/&gt;&amp;gt;    however if our counterparty has signatures for a newer state than we&lt;br/&gt;&amp;gt;    do (which will happen if it was fast forwarded), they could post that&lt;br/&gt;&amp;gt;    state shortly before to_self_delay expires, potentially increasing&lt;br/&gt;&amp;gt;    the total delay to 2*to_self_delay.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  - penalties: when you do a unilateral close, attempting to cheat comes&lt;br/&gt;&amp;gt;    with no cost to you and a possible benefit if you succeed, but&lt;br/&gt;&amp;gt;    potentially does cost your channel partner (either in forcing them&lt;br/&gt;&amp;gt;    to spend on-chain fees to update to the correct state, or in the risk&lt;br/&gt;&amp;gt;    of loss if their node malfunctions occassionally) -- a penalty could&lt;br/&gt;&amp;gt;    reduce this incentive to cheat&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  - trustless watchtowers: we may want to consider the possibility of a&lt;br/&gt;&amp;gt;    watchtower holding onto obsolete states and colluding with an&lt;br/&gt;&amp;gt;    attacker to attempt to cheat us&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; What follows is a rough approach for dealing with all those issues for&lt;br/&gt;&amp;gt; two-party channels. It&amp;#39;s spelled out in a little more detail in the gist.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; (I think for initial eltoo experimentation it doesn&amp;#39;t make sense to try to&lt;br/&gt;&amp;gt; deal with all (or perhaps any) of those constraints; simple and working&lt;br/&gt;&amp;gt; is better than complex and theoretical. But having them written down so&lt;br/&gt;&amp;gt; the ideas can be thought about and looked up later still seems useful)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In more detail: unilateral closes are handled by each channel participant&lt;br/&gt;&amp;gt; maintaining five transactions, which we&amp;#39;ll call:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  * UA.n, UB.n : unilaterally propose closing at state n&lt;br/&gt;&amp;gt;    - this is for Alice or Bob to spend the funding tx for a unilater&lt;br/&gt;&amp;gt;      close to state n. Spends the funding transaction.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  * WA.n, WB.n : watchtower update to state n&lt;br/&gt;&amp;gt;    - this is for an untrusted watchtower to correct attempted cheating&lt;br/&gt;&amp;gt;      by Bob on behalf of Alice (or vice-versa). Spends UB.k or WA.k&lt;br/&gt;&amp;gt;      (or UA.k/WB.k) respectively, provided k &amp;lt; n.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  * CA.n, CB.n : cooperatively claim funds according to state n&lt;br/&gt;&amp;gt;    - this is for Alice to confirm Bob&amp;#39;s unilateral close (or vice-versa).&lt;br/&gt;&amp;gt;      Spends UB.k, WA.k (or UA.k/WB.k respectively), provided k &amp;lt;= n&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  * SA.n, SB.n : slowly claim funds according to state n&lt;br/&gt;&amp;gt;    - this is for Alice to claim her funds if Bob is completely offline&lt;br/&gt;&amp;gt;      (or vice-versa). Spends UA.n, UB.n, WA.n or WB.n with relative&lt;br/&gt;&amp;gt;      timelock of to_self_delay.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  * RA.n, RB.n : claim funds with penalty after unilateral close to&lt;br/&gt;&amp;gt;    revoked state&lt;br/&gt;&amp;gt;    - this is for Alice to update the state if Bob attempted to cheat&lt;br/&gt;&amp;gt;      (or vice-versa). Spends UB.k or WA.k (or UA.k/WB.k respectively)&lt;br/&gt;&amp;gt;      conditional on k &amp;lt; n - 1; outputs are adjusted to transfer a fixed&lt;br/&gt;&amp;gt;      penalty of penalty_msat from Bob&amp;#39;s balance to Alice&amp;#39;s (or vice-versa)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Each of these &amp;#34;transactions&amp;#34; requires a pre-signed signature; however&lt;br/&gt;&amp;gt; the actual transaction/txid will vary in cases where a transaction has&lt;br/&gt;&amp;gt; the possibility of spending different inputs (eg &amp;#34;Spends UB.k or WA.k&amp;#34;).&lt;br/&gt;&amp;gt; In particular UA.n/UB.n can be constructed with known txids and non-APO&lt;br/&gt;&amp;gt; signatures but WA.n/WB.n/CA.n/CB.n/SA.n/SB.n/RA.n/RB.n all require&lt;br/&gt;&amp;gt; APO signatures.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; They&amp;#39;re named such that Alice can immediately broadcast all the *A.n&lt;br/&gt;&amp;gt; transactions (provided a tx that it can spend has been broadcast) and&lt;br/&gt;&amp;gt; Bob can likewise immediately broadcast all the *B.n transactions.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Scenarios where Alice decides to unilaterally close the channel might&lt;br/&gt;&amp;gt; look like:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  * if Alice/Bob can&amp;#39;t communicate directly, but both are online:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;      F -&amp;gt; UA.n -&amp;gt; CB.n -&amp;gt; money&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;    (balances and htlcs claimed, no delay)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  * if Bob has gone offline entirely:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;      F -&amp;gt; UA.n -&amp;gt; (to_self_delay) -&amp;gt; SA.n -&amp;gt; money&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  * Alice cheats, Bob punishes:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;      F -&amp;gt; UA.k -&amp;gt; RB.n -&amp;gt; money[Alice pays Bob penalty]&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  * Bob is offline, Alice cheats, but Bob has a watchtower:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;      F -&amp;gt; UA.k -&amp;gt; WB.n -&amp;gt; (to_self_delay) -&amp;gt; SA.n -&amp;gt; money&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  * Alice and Bob&amp;#39;s watchtower collude, but Bob&amp;#39;s not offline:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;      F -&amp;gt; UA.k1 -&amp;gt; WB.k2 -&amp;gt; RB.n -&amp;gt; money[Alice pays Bob penalty]&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  * Alice and Bob&amp;#39;s watchtower collude, but Bob has many watchtowers:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;      F -&amp;gt; UA.k1 -&amp;gt; WB.k2 -&amp;gt; WB.n -&amp;gt; (to_self_delay) -&amp;gt; SA.n -&amp;gt; money&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; For Alice to successfully cheat, she needs Bob to be offline for at least&lt;br/&gt;&amp;gt; to_self_delay, and for all Bob&amp;#39;s watchtowers to either also be offline,&lt;br/&gt;&amp;gt; or colluding.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This can be simplified somewhat, if you don&amp;#39;t care about all the features:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  * If you don&amp;#39;t care about trustless watchtowers you can drop WA.n/WB.n&lt;br/&gt;&amp;gt;    (and simplify SA.n/SB.n to not require an APO signature)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  * If you don&amp;#39;t care about penalties you can set penalty_msat to 0 and&lt;br/&gt;&amp;gt;    allow RA.n/RB.n to spend k&amp;lt;=n. In this case, you can either drop&lt;br/&gt;&amp;gt;    CA.n/CB.n entirely, or you can have CA.n/CB.n only be used for directly&lt;br/&gt;&amp;gt;    spending of UB.n/UA.n and thus not require APO signatures&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In order to allow fast-forwards, when Alice proposes a new state,&lt;br/&gt;&amp;gt; she needs to send her partial signatures to allow Bob to unilaterally&lt;br/&gt;&amp;gt; accept the new state, ie sigs for: UB.n, CB.n, SB.n, RB.n. But she&lt;br/&gt;&amp;gt; also needs to be able to claim the funds if Bob proposes the new state&lt;br/&gt;&amp;gt; and broadcasts UB.n, she needs to be able broadcast CA.n. This can be&lt;br/&gt;&amp;gt; achieved with an adaptor signature approach (spelt out a bit more fully&lt;br/&gt;&amp;gt; in the gist) or a CTV-like approach, provided that UB.n reveals the&lt;br/&gt;&amp;gt; state needed to calculate the the CTV commitment (see &amp;#34;EXPR_SETTLE&amp;#34; in&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/instagibbs/bolts/blob/29fe6d36cbad4101d5ec76c2b19c83c1494ac2fc/XX-eltoo-transactions.md&#34;&gt;https://github.com/instagibbs/bolts/blob/29fe6d36cbad4101d5ec76c2b19c83c1494ac2fc/XX-eltoo-transactions.md&lt;/a&gt;&lt;br/&gt;&amp;gt; ).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Note that in this scenario Alice doesn&amp;#39;t provide WB.n to Bob&lt;br/&gt;&amp;gt; immediately. This is okay, as if Alice proposes UA.(n-1) (her most&lt;br/&gt;&amp;gt; recent state), Bob can still immediately claim via CA.n. If Bob did have&lt;br/&gt;&amp;gt; WB.n; then if Alice proposed UA.(n-1) Bob could wait for an initial&lt;br/&gt;&amp;gt; to_self_delay period and broadcast WB.n, forcing Alice to wait for an&lt;br/&gt;&amp;gt; additional to_self_delay before being able to claim her funds via SA.n.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Note also that this is why RA.n/RB.n require &amp;#34;k &amp;lt; n - 1&amp;#34; -- otherwise&lt;br/&gt;&amp;gt; Alice would only be able to broadcast UA.(n-1) and Bob would immediately&lt;br/&gt;&amp;gt; be able to penalise by broadcasting RB.n.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Note that if you&amp;#39;re using a watchtower and wish to punish your&lt;br/&gt;&amp;gt; counterparty if it attempts to cheat, you should only pass WA.(n-2)&lt;br/&gt;&amp;gt; to your watchtowers, not WA.(n-1) or WA.n.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This doesn&amp;#39;t address any potential issues from:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  * how to add fees -- the U/W transactions are 1-in/1-out transactions&lt;br/&gt;&amp;gt;    that can&amp;#39;t be trivially CPFPed by the proposer and need to have&lt;br/&gt;&amp;gt;    fees added (either SINGLE/ANYONECANPAY signatures or having a 0-sat&lt;br/&gt;&amp;gt;    ephemeral output and package relay might be workable); the C/S/R&lt;br/&gt;&amp;gt;    transactions are 1-in/many-out transactions, but have balance outputs&lt;br/&gt;&amp;gt;    that can be immediately spent to pay for fees via CPFP if package&lt;br/&gt;&amp;gt;    relay is available.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  * how to pay watchtowers -- when a watchtower broadcasts a W&lt;br/&gt;&amp;gt;    transaction, it needs to add fees, and it&amp;#39;s not clear (to me) how it&lt;br/&gt;&amp;gt;    could fairly and reliably ensure it&amp;#39;s compensated for those costs,&lt;br/&gt;&amp;gt;    particularly if multiple W transactions are broadcast for a single&lt;br/&gt;&amp;gt;    unilateral close attempt, due to one or more watchtowers colluding&lt;br/&gt;&amp;gt;    with an attacker, or simply having out of date information.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  * lack of layered transactions -- while this prevents you having to&lt;br/&gt;&amp;gt;    wait longer than to_self_delay before you can claim channel funds,&lt;br/&gt;&amp;gt;    it still means that any htlc that is going to timeout sooner than that&lt;br/&gt;&amp;gt;    may not be claimable on-chain, meaning you need to set&lt;br/&gt;&amp;gt;    cltv_expiry_delta &amp;gt;= to_self_delay.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  * extending to multiparty channels -- penalising is hard if there&amp;#39;s&lt;br/&gt;&amp;gt;    more than two parties, fast forwards are probably impossible since&lt;br/&gt;&amp;gt;    you need multiple round-trips to coordinate signatures anyway, and if&lt;br/&gt;&amp;gt;    you&amp;#39;re doing channels-within-channels to reduce your n-party channel&lt;br/&gt;&amp;gt;    to an easier to update 2-party channel you&amp;#39;re probably forced to have&lt;br/&gt;&amp;gt;    to_self_delay for each layer of channels. Also, just figuring out how&lt;br/&gt;&amp;gt;    to coordinate multiparty state updates and even keeping everyone in&lt;br/&gt;&amp;gt;    a multiparty channel online consistently to generate new signatures&lt;br/&gt;&amp;gt;    seems potentially hard?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; aj&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20221208/6ba33096/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20221208/6ba33096/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:07:37Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsxgxz0g49jdycjy0neeqxyma83rcwyxulg64c0ptxlh666gpe9xrgzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zqw2jkr</id>
    
      <title type="html">📅 Original date posted:2022-12-06 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsxgxz0g49jdycjy0neeqxyma83rcwyxulg64c0ptxlh666gpe9xrgzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zqw2jkr" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs8s399dguafmlssh665vkla9skytzpggqk2pcuhr8gaygegy4nf5smtq7et&#39;&gt;nevent1q…q7et&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-12-06&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Joost,&lt;br/&gt;&lt;br/&gt;&amp;gt; The economic proportionality is that an attacker can&amp;#39;t do much with a&lt;br/&gt;&amp;gt; severely limited channel, and would need many more to achieve the same&lt;br/&gt;&amp;gt; effect. I don&amp;#39;t think it is possible to eliminate all bad behavior, and&lt;br/&gt;&amp;gt; that the goal should just be to make it a lot harder than it currently is.&lt;br/&gt;&amp;gt; Not sure how force-closes come into play. I don&amp;#39;t think there needs to be&lt;br/&gt;&amp;gt; any force-close?&lt;br/&gt;&lt;br/&gt;I think I share the assumption that you&amp;#39;re restraining the ability of a&lt;br/&gt;jamming attacker by applying congestion control, though it sounds only a&lt;br/&gt;hindrance and there might still be an asymmetry between the on-chain&lt;br/&gt;opening channel cost encumbered by the attacker and the gain from hijacking&lt;br/&gt;HTLC traffic. Force-close would be a means to increase the cost for the&lt;br/&gt;attacker by slashing the channel source of jamming.&lt;br/&gt;&lt;br/&gt;Though, I think in the design of jammign solution, there is a conceptual&lt;br/&gt;step to define first what we aim to achieve by making a routing hop&lt;br/&gt;&amp;#34;jamming safe&amp;#34;, either putting a cost so high on the attacker it&amp;#39;s not&lt;br/&gt;economically profitable (from my understanding the direction of&lt;br/&gt;circuitbreaker, or old stake certificates) or guaranteeing routing fees&lt;br/&gt;incomes to the routing hop, whatever the outcome of the HTLC traffic (more&lt;br/&gt;the direction of unconditional fees or reputational credentials).&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;Le sam. 3 déc. 2022 à 02:50, Joost Jager &amp;lt;joost.jager at gmail.com&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi Antoine,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If I understand correctly circuitbreaker, it adds new &amp;#34;dynamic&amp;#34; HTLC slot&lt;br/&gt;&amp;gt;&amp;gt; limits, in opposition to the &amp;#34;static&amp;#34; ones declared to your counterparty&lt;br/&gt;&amp;gt;&amp;gt; during channel opening (within the protocol-limit of 483). On top, you can&lt;br/&gt;&amp;gt;&amp;gt; rate-limit the HTLCs forwards based on the incoming source.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Correct.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Effectively, this scheme would penalize your own routing hop as HTLC&lt;br/&gt;&amp;gt;&amp;gt; senders routing algorithms would likely cause the hop, in the lack of a new&lt;br/&gt;&amp;gt;&amp;gt; gossip message advertising the limits/rates. Further, it sounds for the&lt;br/&gt;&amp;gt;&amp;gt; measure to be robust, a circuitbreaking policy should be applied&lt;br/&gt;&amp;gt;&amp;gt; recursively by your counterparty on their network topologies. Otherwise,&lt;br/&gt;&amp;gt;&amp;gt; you&amp;#39;re opening I think you&amp;#39;ll have the non-constrained links being targeted&lt;br/&gt;&amp;gt;&amp;gt; as entry points in the rate-limited, &amp;#34;jamming-safe&amp;#34; subset of the graph.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Indeed, the more nodes run it, the harder it becomes for attackers to&lt;br/&gt;&amp;gt; attack. You&amp;#39;d only penalize your own routing node if you send back&lt;br/&gt;&amp;gt; failures. If you hold the htlc, there is no penalty with the network as it&lt;br/&gt;&amp;gt; is currently.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; The limits could be based on HTLC values, e.g the Xth slots for HTLCs of&lt;br/&gt;&amp;gt;&amp;gt; value &amp;lt;1k sats, the Yth slots for HTLC of value &amp;lt;100k sats, the remaining&lt;br/&gt;&amp;gt;&amp;gt; Zth slots for HTLC of value &amp;lt;200k sats. IIRC, this jamming countermeasure&lt;br/&gt;&amp;gt;&amp;gt; has been implemented by Eclair [0] and discussed more in detail here [1].&lt;br/&gt;&amp;gt;&amp;gt; While it increases the liquidity cost for an attacker to launch jamming&lt;br/&gt;&amp;gt;&amp;gt; attacks against the high-value slots, it comes at the major downside of&lt;br/&gt;&amp;gt;&amp;gt; lowering the cost for jamming low-value slots. Betting on an increasing&lt;br/&gt;&amp;gt;&amp;gt; bitcoin price, all other things equals, we&amp;#39;ll make simple payments from&lt;br/&gt;&amp;gt;&amp;gt; lambda users more and more vulnerable.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It is true that the limits make it easier to jam a channel, but the theory&lt;br/&gt;&amp;gt; is that everyone does it, the attacker won&amp;#39;t have much reach anymore.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Beyond that, I think this solution would classify in the reputation-based&lt;br/&gt;&amp;gt;&amp;gt; family of solutions, where reputation is local and enforced through&lt;br/&gt;&amp;gt;&amp;gt; rate-limiting (from my understanding), I would say there is no economic&lt;br/&gt;&amp;gt;&amp;gt; proportionality enforced between the rate-limiting and the cost for an&lt;br/&gt;&amp;gt;&amp;gt; attacker. A jamming attacker could open new channels during period of&lt;br/&gt;&amp;gt;&amp;gt; low-fees in the edges of the graph, and still launch attacks against&lt;br/&gt;&amp;gt;&amp;gt; distant hops by splitting the jamming traffic between many sources,&lt;br/&gt;&amp;gt;&amp;gt; therefore avoiding force-closures (e.g 230 HTLCs from channel Mallory, 253&lt;br/&gt;&amp;gt;&amp;gt; HTLCs from channel Malicia). Even force-closure in case of observed jamming&lt;br/&gt;&amp;gt;&amp;gt; isn&amp;#39;t that evident, as the economic traffic could still be opportunistic&lt;br/&gt;&amp;gt;&amp;gt; locally but only a jam on a distant hop. So I think the economic&lt;br/&gt;&amp;gt;&amp;gt; equilibrium and risk structure of this scheme is still uncertain.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The economic proportionality is that an attacker can&amp;#39;t do much with a&lt;br/&gt;&amp;gt; severely limited channel, and would need many more to achieve the same&lt;br/&gt;&amp;gt; effect. I don&amp;#39;t think it is possible to eliminate all bad behavior, and&lt;br/&gt;&amp;gt; that the goal should just be to make it a lot harder than it currently is.&lt;br/&gt;&amp;gt; Not sure how force-closes come into play. I don&amp;#39;t think there needs to be&lt;br/&gt;&amp;gt; any force-close? I just mentioned them in my original post because they can&lt;br/&gt;&amp;gt; happen for independent reasons (bug, node offline), and then the size of&lt;br/&gt;&amp;gt; the commitment tx and number of pending htlcs translates to a real cost.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; However, I think the mode of queuing HTLCs is still valuable itself,&lt;br/&gt;&amp;gt;&amp;gt; independently of jamming, either a) to increase routed privacy of HTLC (e.g&lt;br/&gt;&amp;gt;&amp;gt; &amp;#34;delay my HTLC&amp;#34; option [2]), maybe with double opt-in of both senders/hops&lt;br/&gt;&amp;gt;&amp;gt; or b) as a congestion control mechanism where you have &amp;gt;100% of honest&lt;br/&gt;&amp;gt;&amp;gt; incoming HTLC traffic and you would like to earn routing fees on all of&lt;br/&gt;&amp;gt;&amp;gt; them, in the limit of what the outgoing CLTV allow you. An advanced idea&lt;br/&gt;&amp;gt;&amp;gt; could be based on statistics collection, sending back-pressure messages or&lt;br/&gt;&amp;gt;&amp;gt; HTLC sending scheduling information to the upstream hops. Let&amp;#39;s say in the&lt;br/&gt;&amp;gt;&amp;gt; future we have more periodic payments, those ones could be scheduled in&lt;br/&gt;&amp;gt;&amp;gt; periods of low-congestions.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; So I wonder if we don&amp;#39;t have two (or even more) problems when we think&lt;br/&gt;&amp;gt;&amp;gt; about jamming, the first one, the HTLC forward &amp;#34;counterparty risk&amp;#34; (the&lt;br/&gt;&amp;gt;&amp;gt; real jamming) and the other one, congestion and scheduling of efficient&lt;br/&gt;&amp;gt;&amp;gt; HTLC traffic, with some interdependencies between them of course.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Yes, so the main idea that I tried to present is that applying congestion&lt;br/&gt;&amp;gt; control by holding htlcs may wake up everyone along the path back to the&lt;br/&gt;&amp;gt; attacker and move them to apply congestion control too.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; On experimenting with circuitbreaker, I don&amp;#39;t know which HTLC&lt;br/&gt;&amp;gt;&amp;gt; intercepting interface it does expect, we still have a rudimentary one on&lt;br/&gt;&amp;gt;&amp;gt; the LDK-side only supporting JIT channels use-case.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It connects to lnd&amp;#39;s htlc interceptor and htlc events interfaces.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Joost&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20221205/1fa4f5eb/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20221205/1fa4f5eb/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:07:34Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqs86z7vcw6uxacvs8ct6uzs2n2l3udssdcvq8xphdmwle3d9qp67cgzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zketgm5</id>
    
      <title type="html">📅 Original date posted:2022-12-02 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqs86z7vcw6uxacvs8ct6uzs2n2l3udssdcvq8xphdmwle3d9qp67cgzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zketgm5" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsx8tkwaeyu6q4uvr7aehxg6wn0tfzhpqfujwru3upn30jz5hmydfc030f9k&#39;&gt;nevent1q…0f9k&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-12-02&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Loki,&lt;br/&gt;&lt;br/&gt;Thanks for raising awareness on this project.&lt;br/&gt;&lt;br/&gt;I share the sentiment on the gradual generalization of Lightning onion&lt;br/&gt;messaging as a transport network on its own for Bitcoin-specific traffic&lt;br/&gt;such as offers, offline receive control flow or credentials tokens or even&lt;br/&gt;in the future DLC offers. I don&amp;#39;t know about the extension as a&lt;br/&gt;fully-fledged anonymity network such as Tor or I2P, we&amp;#39;ll have issues with&lt;br/&gt;DoS too there [0] [1].&lt;br/&gt;&lt;br/&gt;On a mechanism to improve the reliability of path-finding, have a look at&lt;br/&gt;the recent fat errors proposal [1] (probably a needed piece for&lt;br/&gt;reputational credentials too).&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;[0]&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-June/003623.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-June/003623.html&lt;/a&gt;&lt;br/&gt;[1]&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-July/003660.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-July/003660.html&lt;/a&gt;&lt;br/&gt;[2] &lt;a href=&#34;https://github.com/lightning/bolts/pull/1044&#34;&gt;https://github.com/lightning/bolts/pull/1044&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Le ven. 2 déc. 2022 à 07:33, Loki Verloren via Lightning-dev &amp;lt;&lt;br/&gt;lightning-dev at lists.linuxfoundation.org&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; This subject makes a strong argument, along with the onion routed&lt;br/&gt;&amp;gt; messaging part of Bolt 12 for an independent, Lightning funded onion&lt;br/&gt;&amp;gt; routing relay network, over which all such kinds of traffic and security&lt;br/&gt;&amp;gt; can be provided.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I&amp;#39;m working on such a project, which will be initially built to support&lt;br/&gt;&amp;gt; LND/BTCD/Neutrino: &lt;a href=&#34;https://github.com/Indra-Labs/indra&#34;&gt;https://github.com/Indra-Labs/indra&lt;/a&gt; One of its key&lt;br/&gt;&amp;gt; innovations is a mechanism for path tracing, which enables the deduction of&lt;br/&gt;&amp;gt; likely nodes that are currently not functioning correctly or malicious or&lt;br/&gt;&amp;gt; offline or congested, via a process of deduction, while keeping the client&lt;br/&gt;&amp;gt; originating traffic hidden from nodes in the path.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Channels running across this overlay network would not be possible to jam&lt;br/&gt;&amp;gt; and with many nodes a lot of traffic would pass through opaque tunnels,&lt;br/&gt;&amp;gt; which would make jamming harder. The payment scheme in it also might work&lt;br/&gt;&amp;gt; as a full solution to the adding of a cost against attempts to jam&lt;br/&gt;&amp;gt; channels. My current idea for reputation is just a simple measure of client&lt;br/&gt;&amp;gt; success ranking nodes by how recent and reliable they are, creating a loose&lt;br/&gt;&amp;gt; consensus on the network of which nodes are better connected and&lt;br/&gt;&amp;gt; dependable. Because it will use a median/zip merging process for evaluating&lt;br/&gt;&amp;gt; the nodes it is hard for an adversary to damage the reputation of good&lt;br/&gt;&amp;gt; nodes without also having to run a lot of nodes and for those nodes to also&lt;br/&gt;&amp;gt; develop a good reputation.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Anyway, just some thoughts on the subject, not sure how useful or correct&lt;br/&gt;&amp;gt; they are at this point.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Sent with Proton Mail &amp;lt;&lt;a href=&#34;https://proton.me/&amp;gt&#34;&gt;https://proton.me/&amp;gt&lt;/a&gt;; secure email.&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20221202/83fed228/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20221202/83fed228/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:07:33Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsq0gpk0v89ef4w7hj8n7xk7w8kj7wa8dmcutpgksdpnvhenktzluqzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zh7f3sq</id>
    
      <title type="html">📅 Original date posted:2022-12-02 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsq0gpk0v89ef4w7hj8n7xk7w8kj7wa8dmcutpgksdpnvhenktzluqzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zh7f3sq" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsftflkx2vs0h7hd6rrm4g5js6z3zkm5r9svl52dummntqt8leknpgvqcppy&#39;&gt;nevent1q…cppy&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-12-02&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Joost,&lt;br/&gt;&lt;br/&gt;If I understand correctly circuitbreaker, it adds new &amp;#34;dynamic&amp;#34; HTLC slot&lt;br/&gt;limits, in opposition to the &amp;#34;static&amp;#34; ones declared to your counterparty&lt;br/&gt;during channel opening (within the protocol-limit of 483). On top, you can&lt;br/&gt;rate-limit the HTLCs forwards based on the incoming source.&lt;br/&gt;&lt;br/&gt;Effectively, this scheme would penalize your own routing hop as HTLC&lt;br/&gt;senders routing algorithms would likely cause the hop, in the lack of a new&lt;br/&gt;gossip message advertising the limits/rates. Further, it sounds for the&lt;br/&gt;measure to be robust, a circuitbreaking policy should be applied&lt;br/&gt;recursively by your counterparty on their network topologies. Otherwise,&lt;br/&gt;you&amp;#39;re opening I think you&amp;#39;ll have the non-constrained links being targeted&lt;br/&gt;as entry points in the rate-limited, &amp;#34;jamming-safe&amp;#34; subset of the graph.&lt;br/&gt;&lt;br/&gt;The limits could be based on HTLC values, e.g the Xth slots for HTLCs of&lt;br/&gt;value &amp;lt;1k sats, the Yth slots for HTLC of value &amp;lt;100k sats, the remaining&lt;br/&gt;Zth slots for HTLC of value &amp;lt;200k sats. IIRC, this jamming countermeasure&lt;br/&gt;has been implemented by Eclair [0] and discussed more in detail here [1].&lt;br/&gt;While it increases the liquidity cost for an attacker to launch jamming&lt;br/&gt;attacks against the high-value slots, it comes at the major downside of&lt;br/&gt;lowering the cost for jamming low-value slots. Betting on an increasing&lt;br/&gt;bitcoin price, all other things equals, we&amp;#39;ll make simple payments from&lt;br/&gt;lambda users more and more vulnerable.&lt;br/&gt;&lt;br/&gt;Beyond that, I think this solution would classify in the reputation-based&lt;br/&gt;family of solutions, where reputation is local and enforced through&lt;br/&gt;rate-limiting (from my understanding), I would say there is no economic&lt;br/&gt;proportionality enforced between the rate-limiting and the cost for an&lt;br/&gt;attacker. A jamming attacker could open new channels during period of&lt;br/&gt;low-fees in the edges of the graph, and still launch attacks against&lt;br/&gt;distant hops by splitting the jamming traffic between many sources,&lt;br/&gt;therefore avoiding force-closures (e.g 230 HTLCs from channel Mallory, 253&lt;br/&gt;HTLCs from channel Malicia). Even force-closure in case of observed jamming&lt;br/&gt;isn&amp;#39;t that evident, as the economic traffic could still be opportunistic&lt;br/&gt;locally but only a jam on a distant hop. So I think the economic&lt;br/&gt;equilibrium and risk structure of this scheme is still uncertain.&lt;br/&gt;&lt;br/&gt;However, I think the mode of queuing HTLCs is still valuable itself,&lt;br/&gt;independently of jamming, either a) to increase routed privacy of HTLC (e.g&lt;br/&gt;&amp;#34;delay my HTLC&amp;#34; option [2]), maybe with double opt-in of both senders/hops&lt;br/&gt;or b) as a congestion control mechanism where you have &amp;gt;100% of honest&lt;br/&gt;incoming HTLC traffic and you would like to earn routing fees on all of&lt;br/&gt;them, in the limit of what the outgoing CLTV allow you. An advanced idea&lt;br/&gt;could be based on statistics collection, sending back-pressure messages or&lt;br/&gt;HTLC sending scheduling information to the upstream hops. Let&amp;#39;s say in the&lt;br/&gt;future we have more periodic payments, those ones could be scheduled in&lt;br/&gt;periods of low-congestions.&lt;br/&gt;&lt;br/&gt;So I wonder if we don&amp;#39;t have two (or even more) problems when we think&lt;br/&gt;about jamming, the first one, the HTLC forward &amp;#34;counterparty risk&amp;#34; (the&lt;br/&gt;real jamming) and the other one, congestion and scheduling of efficient&lt;br/&gt;HTLC traffic, with some interdependencies between them of course.&lt;br/&gt;&lt;br/&gt;On experimenting with circuitbreaker, I don&amp;#39;t know which HTLC intercepting&lt;br/&gt;interface it does expect, we still have a rudimentary one on the LDK-side&lt;br/&gt;only supporting JIT channels use-case.&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;[0] &lt;a href=&#34;https://github.com/ACINQ/eclair/pull/2330&#34;&gt;https://github.com/ACINQ/eclair/pull/2330&lt;/a&gt;&lt;br/&gt;[1] &lt;a href=&#34;https://jamming-dev.github.io/book/about.html&#34;&gt;https://jamming-dev.github.io/book/about.html&lt;/a&gt;&lt;br/&gt;[2] &lt;a href=&#34;https://github.com/lightning/bolts/issues/1008&#34;&gt;https://github.com/lightning/bolts/issues/1008&lt;/a&gt;&lt;br/&gt;[3] &lt;a href=&#34;https://github.com/lightningdevkit/rust-lightning/pull/1835&#34;&gt;https://github.com/lightningdevkit/rust-lightning/pull/1835&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Le ven. 2 déc. 2022 à 13:00, Joost Jager &amp;lt;joost.jager at gmail.com&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; A simple but imperfect way to deal with channel jamming and spamming is to&lt;br/&gt;&amp;gt; install a lightning firewall such as circuitbreaker [1]. It allows you to&lt;br/&gt;&amp;gt; set limits like a maximum number of pending htlcs (fight jamming) and/or a&lt;br/&gt;&amp;gt; rate limit (fight spamming). Incoming htlcs that exceed one of the limits&lt;br/&gt;&amp;gt; are failed back.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Unfortunately there are problems with this approach. Failures probably&lt;br/&gt;&amp;gt; lead to extra retries which increases the load on the network as a whole.&lt;br/&gt;&amp;gt; Senders are also taking note of the failure, penalizing you and favoring&lt;br/&gt;&amp;gt; other nodes that do not apply limits. With a large part of the network&lt;br/&gt;&amp;gt; applying limits, it will probably work better because misbehaving nodes&lt;br/&gt;&amp;gt; have fewer opportunities to affect distant nodes. Then it also becomes less&lt;br/&gt;&amp;gt; likely that limits are applied to traffic coming from well-behaving nodes,&lt;br/&gt;&amp;gt; and the reputation of routing nodes isn’t degraded as much.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; But how to get to the point where restrictions are applied generally?&lt;br/&gt;&amp;gt; Currently there isn’t too much of a reason for routing nodes to constrain&lt;br/&gt;&amp;gt; their peers, and as explained above it may even be bad for business.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Instead of failing, an alternative course of action for htlcs that exceed&lt;br/&gt;&amp;gt; a limit is to hold and queue them. For example, if htlcs come in at a high&lt;br/&gt;&amp;gt; rate, they’ll just be stacking up on the incoming side and are gradually&lt;br/&gt;&amp;gt; forwarded when their time has come.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; An advantage of this is that a routing node’s reputation isn’t affected&lt;br/&gt;&amp;gt; because there are no failures. This however may change in the future with&lt;br/&gt;&amp;gt; fat errors [2]. It will then become possible for senders to identify slow&lt;br/&gt;&amp;gt; nodes, and the no-penalty advantage may go away.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A more important effect of holding is that the upstream nodes are punished&lt;br/&gt;&amp;gt; for the bad traffic that they facilitate. They see their htlc slots&lt;br/&gt;&amp;gt; occupied and funds frozen. They can’t coop close, and a force-close may be&lt;br/&gt;&amp;gt; expensive depending on the number of htlcs that materialize on the&lt;br/&gt;&amp;gt; commitment transaction. This could be a reason for them to take a careful&lt;br/&gt;&amp;gt; look at the source of that traffic, and also start applying limits. Limits&lt;br/&gt;&amp;gt; propagating recursively across the network and pushing bad senders into&lt;br/&gt;&amp;gt; corners where they can’t do much harm anymore. It’s sort of paradoxical:&lt;br/&gt;&amp;gt; jamming channels to stop jamming.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; One thing to note is that routing nodes employing the hold strategy are&lt;br/&gt;&amp;gt; potentially punishing themselves too. If they are the initiator of a&lt;br/&gt;&amp;gt; channel with many pending htlcs, the commit fee for them to pay can be high&lt;br/&gt;&amp;gt; in the case of a force-close. They do not need to sweep the htlcs that were&lt;br/&gt;&amp;gt; extended by their peer, but still. One way around this is to only use the&lt;br/&gt;&amp;gt; hold strategy for channels that the routing node did not initiate, and use&lt;br/&gt;&amp;gt; the fail action or no limit at all for self-initiated channels.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Interested to hear opinions on the idea. I’ve also updated circuitbreaker&lt;br/&gt;&amp;gt; with a queue mode for anyone willing to experiment with it [3].&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [1] &lt;a href=&#34;https://github.com/lightningequipment/circuitbreaker&#34;&gt;https://github.com/lightningequipment/circuitbreaker&lt;/a&gt;&lt;br/&gt;&amp;gt; [2]&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-October/003723.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-October/003723.html&lt;/a&gt;&lt;br/&gt;&amp;gt; [3] &lt;a href=&#34;https://github.com/lightningequipment/circuitbreaker/pull/14&#34;&gt;https://github.com/lightningequipment/circuitbreaker/pull/14&lt;/a&gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20221202/5cdcb76a/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20221202/5cdcb76a/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:07:33Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsgl2deg5llecytg5tcy23mssc5uk96pc8vc8x89uu9e7s7wzuk7zgzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zc8hzfu</id>
    
      <title type="html">📅 Original date posted:2022-12-01 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsgl2deg5llecytg5tcy23mssc5uk96pc8vc8x89uu9e7s7wzuk7zgzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zc8hzfu" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs0t3qujmj9x9na2stqpp60axfs40tvjrguaua4zkkpzz2pk5cqvpsk5yery&#39;&gt;nevent1q…yery&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-12-01&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Zeeman,&lt;br/&gt;&lt;br/&gt;I think it is correct to say that if any mechanism to protect against&lt;br/&gt;channel jamming succeeds, the remaining instance of apparent channel&lt;br/&gt;jamming might be accidental. This rate of accident might be still high due&lt;br/&gt;to spontaneous congestion (i.e more HTLC senders than slots/liquidity&lt;br/&gt;available for the core links of the network). With the present credential&lt;br/&gt;tokens scheme the rate of spontaneous failure should still have to be&lt;br/&gt;encumbered by some entity. By default it would be the HTLC sender, as is&lt;br/&gt;the one attaching the tokens, and this sounds to be aligned with incentive&lt;br/&gt;as is the one building a payment path of _reliable_ routing hop.&lt;br/&gt;&lt;br/&gt;On the second issue, namely a node B who is a competitor of node A and&lt;br/&gt;accepting node A credentials to provoke a jamming attack against A, I don&amp;#39;t&lt;br/&gt;think this is plausible. As long as node A is requesting its _own_ tokens&lt;br/&gt;to accept HTLC forward, there is a compensation for the risk. The behavior&lt;br/&gt;of node B accepting node A to drain traffic through node A, in an attempt&lt;br/&gt;to jam it, would in the present situation benefit node A due to the&lt;br/&gt;credentials acquisition cost.&lt;br/&gt;&lt;br/&gt;There is a different idea, I think you&amp;#39;re describing, the trust-minimized&lt;br/&gt;exchange of credentials tokens between receivers. Effectively here we can&lt;br/&gt;imagine a Chaumian bank-style construction where the tokens are transferred&lt;br/&gt;in a privacy-fashion, and double-spend flagged out by the bank. However,&lt;br/&gt;this wouldn&amp;#39;t prevent a token double-spend against another bank. So it&lt;br/&gt;sounds to me you need some kind of underlying reputation or enforcement&lt;br/&gt;mechanism to make the economics of the bank work ? I.e the bank being a LSP&lt;br/&gt;and force-closing channels in case of double-spend.&lt;br/&gt;&lt;br/&gt;It should be noted, even if we assume federation of Chaumian banks leading&lt;br/&gt;to a global secondary market for token transfers, the routing hops should&lt;br/&gt;be still economically safe against jamming attacks, as long as the token&lt;br/&gt;acquisition cost is paid at issuance.&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;Le jeu. 1 déc. 2022 à 07:28, ZmnSCPxj &amp;lt;ZmnSCPxj at protonmail.com&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Good morning Antoine,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; About secondary-markets, the credentials themselves are subject to the&lt;br/&gt;&amp;gt; classic double-spend problem. E.g, Alice can transfer her &amp;#34;Ned&amp;#34; credentials&lt;br/&gt;&amp;gt; both to Bob and Caroll, without any of them getting knowledge of the&lt;br/&gt;&amp;gt; duplication. So it could be expected secondary markets to only happen&lt;br/&gt;&amp;gt; between LSP and their spokes (where &amp;#34;trust&amp;#34; relationships already exist),&lt;br/&gt;&amp;gt; as such harder to formalize.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If this is a problem, would the use of the WabiSabi technique help?&lt;br/&gt;&amp;gt; If my understanding was correct, the WabiSabi paper described a Chaumian&lt;br/&gt;&amp;gt; bank that issues coins of variable amount, with clients able to merge and&lt;br/&gt;&amp;gt; split coins without revealing the amount to the bank/issuer, while allowing&lt;br/&gt;&amp;gt; for non-double-spendable transfer of coins by having the bank sign off on&lt;br/&gt;&amp;gt; all transfers between clients (without the bank becoming aware of the value&lt;br/&gt;&amp;gt; being transferred or the pseudonyms of either client).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If transfer of tokens can be made non-double-spendable, then it may be&lt;br/&gt;&amp;gt; feasible for a forwarding node to accept tokens issued by a different&lt;br/&gt;&amp;gt; forwarding node, if the sender also transfers control of those tokens to&lt;br/&gt;&amp;gt; the forwarding node.&lt;br/&gt;&amp;gt; i.e. if a sender has credentials for node A but needs to forward via node&lt;br/&gt;&amp;gt; B, then node B may be willing to accept credentials issued by node A.&lt;br/&gt;&amp;gt; This is similar to the situation where &amp;#34;free banks&amp;#34;, in the absence of a&lt;br/&gt;&amp;gt; central bank, are willing to accept paper bearer bonds issued by another&lt;br/&gt;&amp;gt; bank, as this lets them attack the other bank by withdrawing the value&lt;br/&gt;&amp;gt; backing the bond and attempt to trigger a bank run on that other bank (and&lt;br/&gt;&amp;gt; thus remove them from competition).&lt;br/&gt;&amp;gt; Similarly, node B who is a competitor of node A may be willing to accept&lt;br/&gt;&amp;gt; credentials issued by node A, in a forward that goes through node B, as the&lt;br/&gt;&amp;gt; transferred credentials would allow node B to perform a jamming attack on&lt;br/&gt;&amp;gt; node A (and thus remove them from competition).&lt;br/&gt;&amp;gt; Both node A and B can then peacefully resolve the difference without&lt;br/&gt;&amp;gt; attacking via a &amp;#34;clearing house&amp;#34; where they reveal how much of the&lt;br/&gt;&amp;gt; credential issued by the other they have, in much the same way as free&lt;br/&gt;&amp;gt; banks would resolve paper bearer bonds.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Regards,&lt;br/&gt;&amp;gt; ZmnSCPxj&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20221201/57ee379b/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20221201/57ee379b/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:07:31Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsyeayqaqtx52m5nnjxr7kssg2x96aqx23qhrmup9j6rwm0ln6z7yszypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24z8fma67</id>
    
      <title type="html">📅 Original date posted:2022-11-28 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsyeayqaqtx52m5nnjxr7kssg2x96aqx23qhrmup9j6rwm0ln6z7yszypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24z8fma67" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsdd6hhjx90qek3wuakfg4qmpqu32ee5ul8ypf3za7p2nfrjnnnwesa93x9k&#39;&gt;nevent1q…3x9k&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-11-28&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Dave,&lt;br/&gt;&lt;br/&gt;I think the issue you&amp;#39;re describing about credential tampering by&lt;br/&gt;intermediary nodes is correct. If Alice controls Y along the path&lt;br/&gt;W-&amp;gt;X-&amp;gt;Y-&amp;gt;Zed, she can waste the credentials value provided. Indeed, this&lt;br/&gt;issue generalizes for any classic payment path, where a routing node can&lt;br/&gt;waste the senders  credentials allocated on the downstream hops.&lt;br/&gt;&lt;br/&gt;As discussed on the corresponding BOLT proposal, &amp;#34;staking/reputational&amp;#34;&lt;br/&gt;credentials are probably be dependent on fat errors to assign payment path&lt;br/&gt;failure correctly:&lt;br/&gt;&lt;a href=&#34;https://github.com/lightning/bolts/pull/1043#discussion_r1029938977&#34;&gt;https://github.com/lightning/bolts/pull/1043#discussion_r1029938977&lt;/a&gt;&lt;br/&gt;(even further in the case of blinded path, the senders might need another&lt;br/&gt;round with the recipient to share a subset of the fat error).&lt;br/&gt;&lt;br/&gt;Note the usage of blinded path in the aforementioned comment is about&lt;br/&gt;sending back fresh credentials if the HTLC succeeds. One alternative is to&lt;br/&gt;use the per-hop shared secret and wrap them in the return HTLC onion.&lt;br/&gt;Another alternative, a blinded onion route could be registered at HTLC&lt;br/&gt;forward phase, and this blinded path is leveraged for the fresh credentials&lt;br/&gt;refill (I think the quantity of credentials could be a privacy-leak itself,&lt;br/&gt;that you would like to mask).&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;Le sam. 26 nov. 2022 à 15:48, David A. Harding &amp;lt;dave at dtrt.org&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; On 2022-11-21 14:26, Antoine Riard wrote:&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; Clara Shikhelman wrote:&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; 4. How would these tokens work with blinded paths and other&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; privacy-preserving suggestions?&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Primarily, the tokens could use the new onion messages and blinded&lt;br/&gt;&amp;gt; &amp;gt; paths for the dissemination and renewal rounds. Current design assumes&lt;br/&gt;&amp;gt; &amp;gt; they&amp;#39;re attached to the HTLC during forward along the payment path,&lt;br/&gt;&amp;gt; &amp;gt; though I think one design alternative could be completely detached,&lt;br/&gt;&amp;gt; &amp;gt; and the HTLC onion just contains a ref to the tokens.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I&amp;#39;m not sure I understand this answer, so I&amp;#39;ll explain in my own words&lt;br/&gt;&amp;gt; and kindly ask that you tell me if I&amp;#39;m wrong or missing something&lt;br/&gt;&amp;gt; important.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If Alice wants to pay Zed using a blinded path where Zed chooses&lt;br/&gt;&amp;gt; terminal channels W-&amp;gt;X-&amp;gt;Y-&amp;gt;Zed, then Zed will need to provide to Alice&lt;br/&gt;&amp;gt; the encrypted credential tokens for X, and Y.  In theory, if Alice&lt;br/&gt;&amp;gt; controls node Y, she can prevent the HTLC from settling and so waste the&lt;br/&gt;&amp;gt; value of Zed&amp;#39;s provided tokens for node X.  However, Alice shouldn&amp;#39;t&lt;br/&gt;&amp;gt; know where Zed&amp;#39;s node is in the LN topography and can&amp;#39;t be assured that&lt;br/&gt;&amp;gt; he&amp;#39;ll forward through her secondary node, so the attack is uncertain to&lt;br/&gt;&amp;gt; work.  The attack may also have a cost---Alice may need to buy&lt;br/&gt;&amp;gt; credential tokens for node W and the hops leading to it from her primary&lt;br/&gt;&amp;gt; node---with that cost mitigating the chance of the attack and the&lt;br/&gt;&amp;gt; likelihood that it would be profitable.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Thank you both for the interesting proposal and the insightful&lt;br/&gt;&amp;gt; questions!,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; -Dave&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20221128/58fc4c69/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20221128/58fc4c69/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:07:26Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsg9fcugn2f6cka0y2c46vx7a00txqhfjqdkmtqel6rjwy2x3tcx7qzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zndm00t</id>
    
      <title type="html">📅 Original date posted:2022-11-26 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsg9fcugn2f6cka0y2c46vx7a00txqhfjqdkmtqel6rjwy2x3tcx7qzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zndm00t" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsphgjxfnsxf2ywzk9x0qmrme0ew66mplzxre0ntqyy36ftzswyzkcwcctgj&#39;&gt;nevent1q…ctgj&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-11-26&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Clara,&lt;br/&gt;&lt;br/&gt;&amp;gt; Have you done any work on the economic aspects of the new tokens and their&lt;br/&gt;&amp;gt; secondary markets?&lt;br/&gt;&lt;br/&gt;About the economic aspects, while I think 0-risk HTLC forwarding acceptance&lt;br/&gt;would require credentials cost to perfectly bind to the routing fees, in an&lt;br/&gt;open market like the LN routing one it is expected routing hops to bump the&lt;br/&gt;liquidity value of their credentials. As such increase their forwarded HTLC&lt;br/&gt;traffic volume, until the failure rate downgrades their routing income&lt;br/&gt;beyond their opportunity costs. How the market of HTLC senders would react&lt;br/&gt;to the liquidity value bump of their credentials, and how a routing node&lt;br/&gt;should pick up this bump to reach their income target is a good research&lt;br/&gt;question, I think.&lt;br/&gt;&lt;br/&gt;About secondary-markets, the credentials themselves are subject to the&lt;br/&gt;classic double-spend problem. E.g, Alice can transfer her &amp;#34;Ned&amp;#34; credentials&lt;br/&gt;both to Bob and Caroll, without any of them getting knowledge of the&lt;br/&gt;duplication. So it could be expected secondary markets to only happen&lt;br/&gt;between LSP and their spokes (where &amp;#34;trust&amp;#34; relationships already exist),&lt;br/&gt;as such harder to formalize.&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;Le ven. 25 nov. 2022 à 10:40, Clara Shikhelman &amp;lt;clara.shikhelman at gmail.com&amp;gt;&lt;br/&gt;a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Cool, thanks for that.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Have you done any work on the economic aspects of the new tokens and their&lt;br/&gt;&amp;gt; secondary markets?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Thu, Nov 24, 2022, 21:22 Antoine Riard &amp;lt;antoine.riard at gmail.com&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Hi Clara,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; The main benefit of this &amp;#34;staking&amp;#34;/reputational credentials is to save on&lt;br/&gt;&amp;gt;&amp;gt; unconditional fees paid by HTLC senders. They benefit from their past HTLC&lt;br/&gt;&amp;gt;&amp;gt; routing success in terms of more credentials allocated to them, and as such&lt;br/&gt;&amp;gt;&amp;gt; minimize the overhead cost of their future HTLC sends, or allow them to&lt;br/&gt;&amp;gt;&amp;gt; lock liquidity for longer periods. From a routing node viewpoint, a 0-risk&lt;br/&gt;&amp;gt;&amp;gt; HTLC forwarding acceptance can be maintained by requesting strict binding&lt;br/&gt;&amp;gt;&amp;gt; between credentials acquisition cost and channel liquidity routed. If&lt;br/&gt;&amp;gt;&amp;gt; higher returns are seeked, the ratio credentials to liquidity can be&lt;br/&gt;&amp;gt;&amp;gt; adjusted, of course coming with higher risks, and I think this is where the&lt;br/&gt;&amp;gt;&amp;gt; model built for the current unconditional fees proposal could be useful (if&lt;br/&gt;&amp;gt;&amp;gt; we integrate the channel congestion rate factor, I believe).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; On top of this monetary paradigm, we can layer a &amp;#34;pure reputation&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt; system, where in function of the quality of the identities (e.g&lt;br/&gt;&amp;gt;&amp;gt; proof-of-utxo-ownership), HTLC senders are allocated more significant&lt;br/&gt;&amp;gt;&amp;gt; liquidity slots. Here, the real bottleneck is the cryptosystem, i.e proving&lt;br/&gt;&amp;gt;&amp;gt; a UTXO ownership without revealing any other information. The rationale of&lt;br/&gt;&amp;gt;&amp;gt; this &amp;#34;pure reputation&amp;#34; system, we could even save more in&lt;br/&gt;&amp;gt;&amp;gt; upfront/unconditional fees in the steady state of the network (however such&lt;br/&gt;&amp;gt;&amp;gt; a probabilistic model breaks hard in presence of attackers).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Best,&lt;br/&gt;&amp;gt;&amp;gt; Antoine&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Le jeu. 24 nov. 2022 à 09:45, Clara Shikhelman &amp;lt;&lt;br/&gt;&amp;gt;&amp;gt; clara.shikhelman at gmail.com&amp;gt; a écrit :&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Hi Antoine,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; It sounds like unconditional fees cover most of what this policy does,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; without the extra risks that come from creating a new token. Is there a&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; clear benefit to using a token compared to unconditional fees and&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; local reputation?&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Best,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Clara&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; On Wed, Nov 23, 2022 at 9:48 PM Antoine Riard &amp;lt;antoine.riard at gmail.com&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Hi Clara,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; I think the simplest recommended policy you can devise is credential&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; shown to the routing hop should cover for full routing fees, therefore the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; routing hop benefits from a zero-jamming risk situation. Then you can&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; appreciate the &amp;#34;liquidity value&amp;#34; credentials requested in function of your&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; local channel congestion rate, or even network data. Increasing your&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; returns in exchange of higher risk exposure. And even more, you can lay on&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; top a reputation layer, where the reputation scores are fully fungible&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; against monetary credentials, in the acceptance of a HTLC forward request.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; So I think I agree with you a recommended policy is needed, let&amp;#39;s just&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; start with a simple one! And refine it with time once we sense we have&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; solid foundations.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Best,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Antoine&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Le mer. 23 nov. 2022 à 11:00, Clara Shikhelman &amp;lt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; clara.shikhelman at gmail.com&amp;gt; a écrit :&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Hi Antoine,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; To discuss your proposed solution in detail, I think that some kind of&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; recommended policy is needed. If presenting one is a low priority, and&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; waiting for other things, my main concern is that it will just never happen&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; (&amp;#34;any decade now&amp;#34; kind of situation).&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Best,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Clara&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; On Tue, Nov 22, 2022 at 8:13 PM Antoine Riard &amp;lt;antoine.riard at gmail.com&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Hi Clara,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Shared the mail on #lightning-dev Libera chat to get more feedback on&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; schedule.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; Do you have a timeline in mind for presenting such a policy?&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; See the comments on the BOLT #1043  PR, for now I&amp;#39;m thinking more to&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; refine the proposed credentials architectural framework.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; I think dynamic routing policy in function of channel congestion&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; rate, and you combine that with reputation to do active risk-management are&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; far more advanced questions.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Best,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Antoine&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Le mar. 22 nov. 2022 à 15:54, Clara Shikhelman &amp;lt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; clara.shikhelman at gmail.com&amp;gt; a écrit :&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Dear All,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; If the call time (Monday the 28th at 7 pm UTC) doesn&amp;#39;t work out for&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; you, please reach out!&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Thanks for your quick and detailed response, Antoine.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; If by recommend policy, you mean the set of algorithms that should&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; guide the token quantity, rate issuance, token acquisition cost, and the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; adaptations in function of the local channel congestion, or even the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; gossips of the other routing nodes, not at all.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Do you have a timeline in mind for presenting such a policy?&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Looking forward to discussing this further over the phone call, will&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; make some inquiries to make sure the time works for most people.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Best,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Clara&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20221125/92d4609c/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20221125/92d4609c/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:07:25Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsycx52xd8jh2s2ceq9x4wuxcaaps65chqhwnpfdkcaggum4xfdhpszypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24z4gg429</id>
    
      <title type="html">📅 Original date posted:2022-11-25 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsycx52xd8jh2s2ceq9x4wuxcaaps65chqhwnpfdkcaggum4xfdhpszypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24z4gg429" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsvw657d4dvl5xstthjfn7gha6n36hjcph4alzn8r5cdhyukkh2j5ce5535r&#39;&gt;nevent1q…535r&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-11-25&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Clara,&lt;br/&gt;&lt;br/&gt;The main benefit of this &amp;#34;staking&amp;#34;/reputational credentials is to save on&lt;br/&gt;unconditional fees paid by HTLC senders. They benefit from their past HTLC&lt;br/&gt;routing success in terms of more credentials allocated to them, and as such&lt;br/&gt;minimize the overhead cost of their future HTLC sends, or allow them to&lt;br/&gt;lock liquidity for longer periods. From a routing node viewpoint, a 0-risk&lt;br/&gt;HTLC forwarding acceptance can be maintained by requesting strict binding&lt;br/&gt;between credentials acquisition cost and channel liquidity routed. If&lt;br/&gt;higher returns are seeked, the ratio credentials to liquidity can be&lt;br/&gt;adjusted, of course coming with higher risks, and I think this is where the&lt;br/&gt;model built for the current unconditional fees proposal could be useful (if&lt;br/&gt;we integrate the channel congestion rate factor, I believe).&lt;br/&gt;&lt;br/&gt;On top of this monetary paradigm, we can layer a &amp;#34;pure reputation&amp;#34; system,&lt;br/&gt;where in function of the quality of the identities (e.g&lt;br/&gt;proof-of-utxo-ownership), HTLC senders are allocated more significant&lt;br/&gt;liquidity slots. Here, the real bottleneck is the cryptosystem, i.e proving&lt;br/&gt;a UTXO ownership without revealing any other information. The rationale of&lt;br/&gt;this &amp;#34;pure reputation&amp;#34; system, we could even save more in&lt;br/&gt;upfront/unconditional fees in the steady state of the network (however such&lt;br/&gt;a probabilistic model breaks hard in presence of attackers).&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;Le jeu. 24 nov. 2022 à 09:45, Clara Shikhelman &amp;lt;clara.shikhelman at gmail.com&amp;gt;&lt;br/&gt;a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi Antoine,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It sounds like unconditional fees cover most of what this policy does,&lt;br/&gt;&amp;gt; without the extra risks that come from creating a new token. Is there a&lt;br/&gt;&amp;gt; clear benefit to using a token compared to unconditional fees and&lt;br/&gt;&amp;gt; local reputation?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Best,&lt;br/&gt;&amp;gt; Clara&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Wed, Nov 23, 2022 at 9:48 PM Antoine Riard &amp;lt;antoine.riard at gmail.com&amp;gt;&lt;br/&gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Hi Clara,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I think the simplest recommended policy you can devise is credential&lt;br/&gt;&amp;gt;&amp;gt; shown to the routing hop should cover for full routing fees, therefore the&lt;br/&gt;&amp;gt;&amp;gt; routing hop benefits from a zero-jamming risk situation. Then you can&lt;br/&gt;&amp;gt;&amp;gt; appreciate the &amp;#34;liquidity value&amp;#34; credentials requested in function of your&lt;br/&gt;&amp;gt;&amp;gt; local channel congestion rate, or even network data. Increasing your&lt;br/&gt;&amp;gt;&amp;gt; returns in exchange of higher risk exposure. And even more, you can lay on&lt;br/&gt;&amp;gt;&amp;gt; top a reputation layer, where the reputation scores are fully fungible&lt;br/&gt;&amp;gt;&amp;gt; against monetary credentials, in the acceptance of a HTLC forward request.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; So I think I agree with you a recommended policy is needed, let&amp;#39;s just&lt;br/&gt;&amp;gt;&amp;gt; start with a simple one! And refine it with time once we sense we have&lt;br/&gt;&amp;gt;&amp;gt; solid foundations.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Best,&lt;br/&gt;&amp;gt;&amp;gt; Antoine&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Le mer. 23 nov. 2022 à 11:00, Clara Shikhelman &amp;lt;&lt;br/&gt;&amp;gt;&amp;gt; clara.shikhelman at gmail.com&amp;gt; a écrit :&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Hi Antoine,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; To discuss your proposed solution in detail, I think that some kind of&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; recommended policy is needed. If presenting one is a low priority, and&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; waiting for other things, my main concern is that it will just never happen&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; (&amp;#34;any decade now&amp;#34; kind of situation).&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Best,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Clara&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; On Tue, Nov 22, 2022 at 8:13 PM Antoine Riard &amp;lt;antoine.riard at gmail.com&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Hi Clara,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Shared the mail on #lightning-dev Libera chat to get more feedback on&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; schedule.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; Do you have a timeline in mind for presenting such a policy?&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; See the comments on the BOLT #1043  PR, for now I&amp;#39;m thinking more to&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; refine the proposed credentials architectural framework.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; I think dynamic routing policy in function of channel congestion rate,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; and you combine that with reputation to do active risk-management are far&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; more advanced questions.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Best,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Antoine&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Le mar. 22 nov. 2022 à 15:54, Clara Shikhelman &amp;lt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; clara.shikhelman at gmail.com&amp;gt; a écrit :&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Dear All,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; If the call time (Monday the 28th at 7 pm UTC) doesn&amp;#39;t work out for&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; you, please reach out!&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Thanks for your quick and detailed response, Antoine.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; If by recommend policy, you mean the set of algorithms that should&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; guide the token quantity, rate issuance, token acquisition cost, and the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; adaptations in function of the local channel congestion, or even the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; gossips of the other routing nodes, not at all.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Do you have a timeline in mind for presenting such a policy?&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Looking forward to discussing this further over the phone call, will&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; make some inquiries to make sure the time works for most people.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Best,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Clara&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20221124/e87d5d27/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20221124/e87d5d27/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:07:25Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqs2pz92ajfg80zrvgwu02nnflxa0ez9tlmx65jty7kr3n7eud4gtjczypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zsfy44k</id>
    
      <title type="html">📅 Original date posted:2022-11-22 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqs2pz92ajfg80zrvgwu02nnflxa0ez9tlmx65jty7kr3n7eud4gtjczypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zsfy44k" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsqw0v7ladg4fg3ml7hhvek6afsks3gtd2t7fndw73xq6kpgn3jjgs8kepmx&#39;&gt;nevent1q…epmx&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-11-22&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Clara,&lt;br/&gt;&lt;br/&gt;Shared the mail on #lightning-dev Libera chat to get more feedback on&lt;br/&gt;schedule.&lt;br/&gt;&lt;br/&gt;&amp;gt; Do you have a timeline in mind for presenting such a policy?&lt;br/&gt;&lt;br/&gt;See the comments on the BOLT #1043  PR, for now I&amp;#39;m thinking more to refine&lt;br/&gt;the proposed credentials architectural framework.&lt;br/&gt;I think dynamic routing policy in function of channel congestion rate, and&lt;br/&gt;you combine that with reputation to do active risk-management are far more&lt;br/&gt;advanced questions.&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;Le mar. 22 nov. 2022 à 15:54, Clara Shikhelman &amp;lt;clara.shikhelman at gmail.com&amp;gt;&lt;br/&gt;a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Dear All,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If the call time (Monday the 28th at 7 pm UTC) doesn&amp;#39;t work out for you,&lt;br/&gt;&amp;gt; please reach out!&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Thanks for your quick and detailed response, Antoine.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If by recommend policy, you mean the set of algorithms that should guide&lt;br/&gt;&amp;gt;&amp;gt; the token quantity, rate issuance, token acquisition cost, and the&lt;br/&gt;&amp;gt;&amp;gt; adaptations in function of the local channel congestion, or even the&lt;br/&gt;&amp;gt;&amp;gt; gossips of the other routing nodes, not at all.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Do you have a timeline in mind for presenting such a policy?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Looking forward to discussing this further over the phone call, will make&lt;br/&gt;&amp;gt; some inquiries to make sure the time works for most people.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Best,&lt;br/&gt;&amp;gt; Clara&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20221122/11bab8b0/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20221122/11bab8b0/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:07:24Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsf9j5hqjstfchgw95phnjd8q83hqarp5mrhx06sewue6rxu33xrpgzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zepu3ng</id>
    
      <title type="html">📅 Original date posted:2022-11-24 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsf9j5hqjstfchgw95phnjd8q83hqarp5mrhx06sewue6rxu33xrpgzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zepu3ng" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsvs82taltze8mcvlw5p0lt6gs7tf2dthsdcjegrpfzftkveg2gjesanw3kq&#39;&gt;nevent1q…w3kq&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-11-24&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Clara,&lt;br/&gt;&lt;br/&gt;I think the simplest recommended policy you can devise is credential shown&lt;br/&gt;to the routing hop should cover for full routing fees, therefore the&lt;br/&gt;routing hop benefits from a zero-jamming risk situation. Then you can&lt;br/&gt;appreciate the &amp;#34;liquidity value&amp;#34; credentials requested in function of your&lt;br/&gt;local channel congestion rate, or even network data. Increasing your&lt;br/&gt;returns in exchange of higher risk exposure. And even more, you can lay on&lt;br/&gt;top a reputation layer, where the reputation scores are fully fungible&lt;br/&gt;against monetary credentials, in the acceptance of a HTLC forward request.&lt;br/&gt;&lt;br/&gt;So I think I agree with you a recommended policy is needed, let&amp;#39;s just&lt;br/&gt;start with a simple one! And refine it with time once we sense we have&lt;br/&gt;solid foundations.&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Le mer. 23 nov. 2022 à 11:00, Clara Shikhelman &amp;lt;clara.shikhelman at gmail.com&amp;gt;&lt;br/&gt;a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi Antoine,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; To discuss your proposed solution in detail, I think that some kind of&lt;br/&gt;&amp;gt; recommended policy is needed. If presenting one is a low priority, and&lt;br/&gt;&amp;gt; waiting for other things, my main concern is that it will just never happen&lt;br/&gt;&amp;gt; (&amp;#34;any decade now&amp;#34; kind of situation).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Best,&lt;br/&gt;&amp;gt; Clara&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Tue, Nov 22, 2022 at 8:13 PM Antoine Riard &amp;lt;antoine.riard at gmail.com&amp;gt;&lt;br/&gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Hi Clara,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Shared the mail on #lightning-dev Libera chat to get more feedback on&lt;br/&gt;&amp;gt;&amp;gt; schedule.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; Do you have a timeline in mind for presenting such a policy?&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; See the comments on the BOLT #1043  PR, for now I&amp;#39;m thinking more to&lt;br/&gt;&amp;gt;&amp;gt; refine the proposed credentials architectural framework.&lt;br/&gt;&amp;gt;&amp;gt; I think dynamic routing policy in function of channel congestion rate,&lt;br/&gt;&amp;gt;&amp;gt; and you combine that with reputation to do active risk-management are far&lt;br/&gt;&amp;gt;&amp;gt; more advanced questions.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Best,&lt;br/&gt;&amp;gt;&amp;gt; Antoine&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Le mar. 22 nov. 2022 à 15:54, Clara Shikhelman &amp;lt;&lt;br/&gt;&amp;gt;&amp;gt; clara.shikhelman at gmail.com&amp;gt; a écrit :&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Dear All,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; If the call time (Monday the 28th at 7 pm UTC) doesn&amp;#39;t work out for you,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; please reach out!&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Thanks for your quick and detailed response, Antoine.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; If by recommend policy, you mean the set of algorithms that should guide&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; the token quantity, rate issuance, token acquisition cost, and the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; adaptations in function of the local channel congestion, or even the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; gossips of the other routing nodes, not at all.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Do you have a timeline in mind for presenting such a policy?&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Looking forward to discussing this further over the phone call, will&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; make some inquiries to make sure the time works for most people.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Best,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Clara&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20221123/4dfcbdf3/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20221123/4dfcbdf3/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:07:24Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsq2e7yrjqe8z4xwu5qgpxs33m7njv5x8qfpnu2u7vwvmuthhqdurqzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zftm24m</id>
    
      <title type="html">📅 Original date posted:2022-11-21 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsq2e7yrjqe8z4xwu5qgpxs33m7njv5x8qfpnu2u7vwvmuthhqdurqzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zftm24m" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsx066r4dnd3rymte0898qf49m804hxkdtw2y3uhu34pjwc3rrqyvc39wz8q&#39;&gt;nevent1q…wz8q&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-11-21&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Clara,&lt;br/&gt;&lt;br/&gt;Thanks for reading!&lt;br/&gt;&lt;br/&gt;&amp;gt; I think that another call to discuss jamming would be great. I would&lt;br/&gt;&amp;gt; suggest making it a repeating call every 2 weeks, starting from Monday the&lt;br/&gt;&amp;gt; 28th at 7 pm UTC.&lt;br/&gt;&lt;br/&gt;Cool to take the initiative, the schedule works for me, however this slot&lt;br/&gt;might conflict with the Core Lightning engineering call ? I remember we&lt;br/&gt;moved the LDK meeting time from 7pm to 5pm, as we had folks willing to&lt;br/&gt;attend both.&lt;br/&gt;&lt;br/&gt;&amp;gt; 1. Are the tokens transferable between users? For example, if Ned is a&lt;br/&gt;&amp;gt; routing node, and Alice has some of their tokens, can she give these&lt;br/&gt;tokens&lt;br/&gt;&amp;gt; to Bob?&lt;br/&gt;&amp;gt; If yes - could this lead to the creation of a secondary market?&lt;br/&gt;&amp;gt; If no - will that slow down the transaction flow that a new node can send?&lt;br/&gt;&lt;br/&gt;Current version of the proposal, there is nothing preventing the tokens to&lt;br/&gt;be transferred between the users, Alice can give these tokens to Bob. We&lt;br/&gt;could make them binding to the prover, by requesting a new round where&lt;br/&gt;Alice registers a pubkey towards Ned, and all tokens should be&lt;br/&gt;counter-authenticated by Ned at forward. Ned would flag out the&lt;br/&gt;double-usage of tokens, ideally in a ZKP-way. Still I think this would&lt;br/&gt;never prevent Alice from sharing her key material with Bob. So I&amp;#39;m not sure&lt;br/&gt;we can prevent a secondary-market, and it might be even more valuable if we&lt;br/&gt;would like LSPs to collect tokens for their spokes nodes to simplify UX.&lt;br/&gt;&lt;br/&gt;That said, beyond unlinkability between the blinded message and the&lt;br/&gt;cleartext tokens/signatures, I think all the properties should be open to&lt;br/&gt;more research.&lt;br/&gt;&lt;br/&gt;&amp;gt; 2. Do you have a recommended policy for the creation of tokens and their&lt;br/&gt;&amp;gt; use? Ideally, there will be a policy that would mitigate both slow and&lt;br/&gt;&amp;gt; quick jamming, without harming usability too much.&lt;br/&gt;&lt;br/&gt;If by recommend policy, you mean the set of algorithms that should guide&lt;br/&gt;the token quantity, rate issuance, token acquisition cost, and the&lt;br/&gt;adaptations in function of the local channel congestion, or even the&lt;br/&gt;gossips of the other routing nodes, not at all. Just intuition, I think a&lt;br/&gt;simple model should start from enforcing a proportionality between token&lt;br/&gt;acquisition costs and the available channels liquidity, then you can add&lt;br/&gt;more factors in function of your risk model.&lt;br/&gt;&lt;br/&gt;About the slow/quick jamming distinction, I still believe a good&lt;br/&gt;anti-jamming solution should aim to solve things in a continuous fashion,&lt;br/&gt;rather than a discrete one. That way binds better to the reality of&lt;br/&gt;differing hold time Lightning HTLC: simple payment, offline receive,&lt;br/&gt;hold-invoice,  swaps, etc...&lt;br/&gt;&lt;br/&gt;&amp;gt; 3. You write &amp;#34;the reputation credentials to liquidity units translation&lt;br/&gt;can&lt;br/&gt;&amp;gt; be severed&amp;#34; - does this mean that the value of the token changes? Is that&lt;br/&gt;&amp;gt; in the spirit of changing the fees in a channel?&lt;br/&gt;&amp;gt; If this is the case, can&amp;#39;t a routing node &amp;#34;trick&amp;#34; a user into buying many&lt;br/&gt;&amp;gt; tokens and then bring the price up?&lt;br/&gt;&lt;br/&gt;Yes, the &amp;#34;liquidity value&amp;#34; of the tokens is currently left as a floating&lt;br/&gt;parameter. This is a good question if it should be fixed and only the&lt;br/&gt;routing fees should fluctuate in function of channel congestion, or&lt;br/&gt;floating e.g when the global quantity of tokens are required to re-dilute&lt;br/&gt;their current values to maintain some proportion between acquisition cost&lt;br/&gt;and available liquidity.&lt;br/&gt;&lt;br/&gt;For sure, a routing node could &amp;#34;trick&amp;#34; a user into buying many tokens and&lt;br/&gt;then break the promise of not only bringing the price up but also plainly&lt;br/&gt;reject HTLC forward requests satisfying the announced routing policy.&lt;br/&gt;Though note the user&amp;#39;s routing algorithms could penalize in retorsion the&lt;br/&gt;node, if the routing policy gossiped isn&amp;#39;t respected.&lt;br/&gt;&lt;br/&gt;&amp;gt; 4. How would these tokens work with blinded paths and other&lt;br/&gt;&amp;gt; privacy-preserving suggestions?&lt;br/&gt;&lt;br/&gt;Primarily, the tokens could use the new onion messages and blinded paths&lt;br/&gt;for the dissemination and renewal rounds. Current design assumes they&amp;#39;re&lt;br/&gt;attached to the HTLC during forward along the payment path, though I think&lt;br/&gt;one design alternative could be completely detached, and the HTLC onion&lt;br/&gt;just contains a ref to the tokens.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Zooming out, after submitting this proposal to the mailing list yesterday,&lt;br/&gt;I thought how much a token/credentials system bootstrapped on pre-paid fees&lt;br/&gt;should be classified into monetary strategy or a reputation-based strategy,&lt;br/&gt;and it turns out as there is an acquisition cost associated to the tokens,&lt;br/&gt;in fact it might belong more to the monetary strategy classification. So I&lt;br/&gt;wonder now if the usage of the reputation in the proposal title isn&amp;#39;t&lt;br/&gt;misleading and if a &amp;#34;breakeven point&amp;#34; isn&amp;#39;t still implied (&amp;#34;the&lt;br/&gt;proportionality&amp;#34; seeked). From a history of ideas standpoint, a&lt;br/&gt;reputation-based strategy was more the Stakes Certificate solution&lt;br/&gt;originally proposed in 2020. Though this proposal reuses the liquidity&lt;br/&gt;units/credit score introduced there.&lt;br/&gt;&lt;br/&gt;I think more and more we should have a &amp;#34;two-tier&amp;#34; mitigation strategy,&lt;br/&gt;where the base tier is strictly defined in &amp;#34;pure fees&amp;#34; terms, and then&lt;br/&gt;layered on top of a reputation system. A routing node could deviate from&lt;br/&gt;the zero risk &amp;#34;pure fees&amp;#34; ones to increase its routing fees returns, by&lt;br/&gt;relying more on assumptions like &amp;#34;Past HTLC senders behave well if there is&lt;br/&gt;a proportionality between reputation cost and amount of liquidity resources&lt;br/&gt;allocated in function of said-reputation&amp;#34;.&lt;br/&gt;&lt;br/&gt;Looking forward to pursuing discussions during calls!&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;Le lun. 21 nov. 2022 à 13:16, Clara Shikhelman &amp;lt;clara.shikhelman at gmail.com&amp;gt;&lt;br/&gt;a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Dear Antoine and list,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I think that another call to discuss jamming would be great. I would&lt;br/&gt;&amp;gt; suggest making it a repeating call every 2 weeks, starting from Monday the&lt;br/&gt;&amp;gt; 28th at 7 pm UTC.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Antoine - Thank you for your work!&lt;br/&gt;&amp;gt; I have a few questions to better understand the details.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1. Are the tokens transferable between users? For example, if Ned is a&lt;br/&gt;&amp;gt; routing node, and Alice has some of their tokens, can she give these tokens&lt;br/&gt;&amp;gt; to Bob?&lt;br/&gt;&amp;gt; If yes - could this lead to the creation of a secondary market?&lt;br/&gt;&amp;gt; If no - will that slow down the transaction flow that a new node can send?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 2. Do you have a recommended policy for the creation of tokens and their&lt;br/&gt;&amp;gt; use? Ideally, there will be a policy that would mitigate both slow and&lt;br/&gt;&amp;gt; quick jamming, without harming usability too much.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 3. You write &amp;#34;the reputation credentials to liquidity units translation&lt;br/&gt;&amp;gt; can be severed&amp;#34; - does this mean that the value of the token changes? Is&lt;br/&gt;&amp;gt; that in the spirit of changing the fees in a channel?&lt;br/&gt;&amp;gt; If this is the case, can&amp;#39;t a routing node &amp;#34;trick&amp;#34; a user into buying many&lt;br/&gt;&amp;gt; tokens and then bring the price up?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 4. How would these tokens work with blinded paths and other&lt;br/&gt;&amp;gt; privacy-preserving suggestions?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Thanks again,&lt;br/&gt;&amp;gt; Clara&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Sun, Nov 20, 2022 at 11:01 PM Antoine Riard &amp;lt;antoine.riard at gmail.com&amp;gt;&lt;br/&gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Hi LN Devs,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; tl;dr A formalization of a reputation-based scheme to solve channel&lt;br/&gt;&amp;gt;&amp;gt; jamming is proposed. The system relies on &amp;#34;credentials&amp;#34; issued by routing&lt;br/&gt;&amp;gt;&amp;gt; hops and requested to be attached to each HTLC forward request. The&lt;br/&gt;&amp;gt;&amp;gt; &amp;#34;credentials&amp;#34; can be used by a reputation algorithm to reward/punish&lt;br/&gt;&amp;gt;&amp;gt; payment senders and allocate channel liquidity resources efficiently. The&lt;br/&gt;&amp;gt;&amp;gt; &amp;#34;credentials&amp;#34;  initial distribution can be bootstrapped leveraging one-time&lt;br/&gt;&amp;gt;&amp;gt; upfront fees paid toward the routing hops. Afterwards, the &amp;#34;credentials&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt; subsequent distribution can rely on previous HTLC traffic.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; A protocol description can be found here, with few extensions already to&lt;br/&gt;&amp;gt;&amp;gt; the BOLTs:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://github.com/lightning/bolts/pull/1043&#34;&gt;https://github.com/lightning/bolts/pull/1043&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; There is also a work-in-progress proof-of-concept in LDK (on top of our&lt;br/&gt;&amp;gt;&amp;gt; coming soon^TM  HTLC intercepting API):&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://github.com/lightningdevkit/rust-lightning/pull/1848&#34;&gt;https://github.com/lightningdevkit/rust-lightning/pull/1848&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; This work builds on previous reputation-scheme research [0] [1]. It also&lt;br/&gt;&amp;gt;&amp;gt; integrates the more recent proposals of upfront fees as a straightforward&lt;br/&gt;&amp;gt;&amp;gt; mechanism to bootstrap the reputation system. Bootstrapping the system with&lt;br/&gt;&amp;gt;&amp;gt; more economically cost-effective privacy-preserving UTXO ownership proofs&lt;br/&gt;&amp;gt;&amp;gt; not only add another layer of engineering complexity, there is still a&lt;br/&gt;&amp;gt;&amp;gt; proof size vs proof generation/validation trade-off to arbiter between ZKP&lt;br/&gt;&amp;gt;&amp;gt; cryptosystems.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Rather to seek for a game-theory equilibrium defined as a breakeven point&lt;br/&gt;&amp;gt;&amp;gt; as in the latest unconditional fee research [2], this proposal aims to use&lt;br/&gt;&amp;gt;&amp;gt; reputation credentials to allow HTLC traffic-shaping. This not only should&lt;br/&gt;&amp;gt;&amp;gt; protect against jamming situations (either malicious&lt;br/&gt;&amp;gt;&amp;gt; or spontaneous) but also allow active HTLC traffic-shaping, where a&lt;br/&gt;&amp;gt;&amp;gt; routing hop can allow extended channel liquidity lockups based on&lt;br/&gt;&amp;gt;&amp;gt; accumulated reputation (e.g for hold-invoices). This is also a reduced&lt;br/&gt;&amp;gt;&amp;gt; overhead cost, as upfront fees are only paid at bootstrap, or when the HTLC&lt;br/&gt;&amp;gt;&amp;gt; forward behavior can be qualified as &amp;#34;whitewashing&amp;#34; from the routing hop&lt;br/&gt;&amp;gt;&amp;gt; viewpoint.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; It should be noted, this current reputation-credential architectural&lt;br/&gt;&amp;gt;&amp;gt; framework assumes credentials distribution at the endpoint of the network.&lt;br/&gt;&amp;gt;&amp;gt; However, the framework should be flexible enough for the credentials to be&lt;br/&gt;&amp;gt;&amp;gt; harvested by the LSPs, and then distributed in a secondary fashion to their&lt;br/&gt;&amp;gt;&amp;gt; spokes, when they need it, or even attached transparently thanks to&lt;br/&gt;&amp;gt;&amp;gt; trampoline. So one design intuition, there is no strong attachment of the&lt;br/&gt;&amp;gt;&amp;gt; reputation to the endpoint HTLC sender, even if the protocol is described&lt;br/&gt;&amp;gt;&amp;gt; in a &amp;#34;flat&amp;#34; view for now.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Let&amp;#39;s evaluate quickly this mitigation proposal against a few criterias&lt;br/&gt;&amp;gt;&amp;gt; emerged from recent research.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; The mitigation is effective, in the sense a routing hop can apply a&lt;br/&gt;&amp;gt;&amp;gt; proportional relationship between the acquisition of the reputation and the&lt;br/&gt;&amp;gt;&amp;gt; amount of liquidity resources credited in function of said reputation. In a&lt;br/&gt;&amp;gt;&amp;gt; period of steady state, the reputation acquisition cost can be downgraded&lt;br/&gt;&amp;gt;&amp;gt; to 0. In periods of channel congestion, the reputation credentials to&lt;br/&gt;&amp;gt;&amp;gt; liquidity units translation can be severed, in the limit of routing hop&lt;br/&gt;&amp;gt;&amp;gt; acceptable competitiveness.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; The mitigation is incentive-compatible, if the credentials are not&lt;br/&gt;&amp;gt;&amp;gt; honored by their issuers, the HTLC senders can evict them from the routing&lt;br/&gt;&amp;gt;&amp;gt; network view for a while. The successful usage of credentials can lead to&lt;br/&gt;&amp;gt;&amp;gt; more credentials allocated for longer and more capacity-intensive channel&lt;br/&gt;&amp;gt;&amp;gt; lockups. In case of HTLC failure, the failure source could be forgiven by&lt;br/&gt;&amp;gt;&amp;gt; routing hops to maintain the worthiness of the sender credentials.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; The mitigation can be made transparent from the user, as the credentials&lt;br/&gt;&amp;gt;&amp;gt; harvesting can be done automatically from a pre-allocated budget, similar&lt;br/&gt;&amp;gt;&amp;gt; to the fee-bumping reserves requirement introduced by anchor output. At the&lt;br/&gt;&amp;gt;&amp;gt; end of today, if we take modern browsers as an example, the average user&lt;br/&gt;&amp;gt;&amp;gt; doesn&amp;#39;t check manually the TLS certificates (for what they&amp;#39;re worth...).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; The mitigation can conserve high-level privacy, as the usage of blinded&lt;br/&gt;&amp;gt;&amp;gt; signature (or another equivalent cryptosystem breaking signature/message&lt;br/&gt;&amp;gt;&amp;gt; linking) should allow the credentials issued during a preliminary phase to&lt;br/&gt;&amp;gt;&amp;gt; be undistinguishable during the redeem/usage phase. New CPU/memory DoS&lt;br/&gt;&amp;gt;&amp;gt; vectors due to the credentials processing should be watched out.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; About the ease of implementation, there are few protocol messages to&lt;br/&gt;&amp;gt;&amp;gt; modify, a HTLC intercepting API is assumed as supported by the&lt;br/&gt;&amp;gt;&amp;gt; implementation, onion messages support is also implied, landing EC blinded&lt;br/&gt;&amp;gt;&amp;gt; signature in libsecp256k1-zkp shouldn&amp;#39;t be a big deal, routing algorithms&lt;br/&gt;&amp;gt;&amp;gt; adaptations might be more serious but still reasonable. The&lt;br/&gt;&amp;gt;&amp;gt; &amp;#34;credentials-to-liquidity&amp;#34; allocation algorithms are likely the new real&lt;br/&gt;&amp;gt;&amp;gt; beast, though I don&amp;#39;t think any reputation scheme can spare them.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; There could be a concern about the centralization inertia introduced by a&lt;br/&gt;&amp;gt;&amp;gt; reputation system.  Intuitively, the argument can be made that any&lt;br/&gt;&amp;gt;&amp;gt; historical tracking (such as routing buckets) favor established LN&lt;br/&gt;&amp;gt;&amp;gt; incumbents at the gain of efficiency. A counter-argument can be made, a new&lt;br/&gt;&amp;gt;&amp;gt; routing hop can lower the acquisition cost of its issued credentials to&lt;br/&gt;&amp;gt;&amp;gt; attract more HTLC traffic (accepting higher jamming risk).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; On the ecosystem impacts, it should be studied that this proposal would&lt;br/&gt;&amp;gt;&amp;gt; impact things like inbound channel routing fees [3], ratecard [4] or&lt;br/&gt;&amp;gt;&amp;gt; flow-control valve [5] and the whole liquidity toolchain. Hopefully, we&lt;br/&gt;&amp;gt;&amp;gt; don&amp;#39;t significantly restrain the design space for future LN protocol&lt;br/&gt;&amp;gt;&amp;gt; upgrades.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; On the proposal modularity and flexibility, each routing node has&lt;br/&gt;&amp;gt;&amp;gt; oversight on its routing policy, acquisition methods, credentials to&lt;br/&gt;&amp;gt;&amp;gt; liquidity rate. New acquisition methods can be experimented or deployed&lt;br/&gt;&amp;gt;&amp;gt; when ready, e.g stakes certificates with only e2e upgrade. The credentials&lt;br/&gt;&amp;gt;&amp;gt; themselves could have &amp;#34;innate&amp;#34; expiration time if we use things like&lt;br/&gt;&amp;gt;&amp;gt; short-lived ZKP [6]. The credentials framework can be extended beyond&lt;br/&gt;&amp;gt;&amp;gt; solving jamming, as a generalized risk-management framework for Bitcoin&lt;br/&gt;&amp;gt;&amp;gt; decentralized financial network, e.g transaction signature exchange&lt;br/&gt;&amp;gt;&amp;gt; ordering in multi-party transactions [7] or finding reliable Coinjoin&lt;br/&gt;&amp;gt;&amp;gt; counterparties.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Feedback welcome.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt;&amp;gt; Antoine&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; [0]&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-November/002884.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-November/002884.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; [1]&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-August/003673.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-August/003673.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; [2]&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-November/003740.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-November/003740.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; [3]&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-July/003643.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-July/003643.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; [4]&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-September/003685.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-September/003685.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; [5]&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-September/003686.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-September/003686.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; [6] &lt;a href=&#34;https://eprint.iacr.org/2022/190.pdf&#34;&gt;https://eprint.iacr.org/2022/190.pdf&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; [7] &lt;a href=&#34;https://github.com/lightning/bolts/pull/851#issuecomment-1290727242&#34;&gt;https://github.com/lightning/bolts/pull/851#issuecomment-1290727242&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20221121/d1e83ac2/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20221121/d1e83ac2/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:07:23Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsqnwj6ha49s5us4tmksxerfsu9yvhpd64m5wtm3udfg2qgcgsattqzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zf602n0</id>
    
      <title type="html">📅 Original date posted:2022-11-21 📝 Original message: Hi LN ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsqnwj6ha49s5us4tmksxerfsu9yvhpd64m5wtm3udfg2qgcgsattqzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zf602n0" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsfcwnrkdtx4kpmrm7zgy9svaczuy580vt8mursydqsx98kt6lh2jcscluzn&#39;&gt;nevent1q…luzn&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-11-21&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi LN Devs,&lt;br/&gt;&lt;br/&gt;tl;dr A formalization of a reputation-based scheme to solve channel jamming&lt;br/&gt;is proposed. The system relies on &amp;#34;credentials&amp;#34; issued by routing hops and&lt;br/&gt;requested to be attached to each HTLC forward request. The &amp;#34;credentials&amp;#34;&lt;br/&gt;can be used by a reputation algorithm to reward/punish payment senders and&lt;br/&gt;allocate channel liquidity resources efficiently. The &amp;#34;credentials&amp;#34;&lt;br/&gt;initial distribution can be bootstrapped leveraging one-time upfront fees&lt;br/&gt;paid toward the routing hops. Afterwards, the &amp;#34;credentials&amp;#34; subsequent&lt;br/&gt;distribution can rely on previous HTLC traffic.&lt;br/&gt;&lt;br/&gt;A protocol description can be found here, with few extensions already to&lt;br/&gt;the BOLTs:&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://github.com/lightning/bolts/pull/1043&#34;&gt;https://github.com/lightning/bolts/pull/1043&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;There is also a work-in-progress proof-of-concept in LDK (on top of our&lt;br/&gt;coming soon^TM  HTLC intercepting API):&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://github.com/lightningdevkit/rust-lightning/pull/1848&#34;&gt;https://github.com/lightningdevkit/rust-lightning/pull/1848&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;This work builds on previous reputation-scheme research [0] [1]. It also&lt;br/&gt;integrates the more recent proposals of upfront fees as a straightforward&lt;br/&gt;mechanism to bootstrap the reputation system. Bootstrapping the system with&lt;br/&gt;more economically cost-effective privacy-preserving UTXO ownership proofs&lt;br/&gt;not only add another layer of engineering complexity, there is still a&lt;br/&gt;proof size vs proof generation/validation trade-off to arbiter between ZKP&lt;br/&gt;cryptosystems.&lt;br/&gt;&lt;br/&gt;Rather to seek for a game-theory equilibrium defined as a breakeven point&lt;br/&gt;as in the latest unconditional fee research [2], this proposal aims to use&lt;br/&gt;reputation credentials to allow HTLC traffic-shaping. This not only should&lt;br/&gt;protect against jamming situations (either malicious&lt;br/&gt;or spontaneous) but also allow active HTLC traffic-shaping, where a routing&lt;br/&gt;hop can allow extended channel liquidity lockups based on accumulated&lt;br/&gt;reputation (e.g for hold-invoices). This is also a reduced overhead cost,&lt;br/&gt;as upfront fees are only paid at bootstrap, or when the HTLC forward&lt;br/&gt;behavior can be qualified as &amp;#34;whitewashing&amp;#34; from the routing hop viewpoint.&lt;br/&gt;&lt;br/&gt;It should be noted, this current reputation-credential architectural&lt;br/&gt;framework assumes credentials distribution at the endpoint of the network.&lt;br/&gt;However, the framework should be flexible enough for the credentials to be&lt;br/&gt;harvested by the LSPs, and then distributed in a secondary fashion to their&lt;br/&gt;spokes, when they need it, or even attached transparently thanks to&lt;br/&gt;trampoline. So one design intuition, there is no strong attachment of the&lt;br/&gt;reputation to the endpoint HTLC sender, even if the protocol is described&lt;br/&gt;in a &amp;#34;flat&amp;#34; view for now.&lt;br/&gt;&lt;br/&gt;Let&amp;#39;s evaluate quickly this mitigation proposal against a few criterias&lt;br/&gt;emerged from recent research.&lt;br/&gt;&lt;br/&gt;The mitigation is effective, in the sense a routing hop can apply a&lt;br/&gt;proportional relationship between the acquisition of the reputation and the&lt;br/&gt;amount of liquidity resources credited in function of said reputation. In a&lt;br/&gt;period of steady state, the reputation acquisition cost can be downgraded&lt;br/&gt;to 0. In periods of channel congestion, the reputation credentials to&lt;br/&gt;liquidity units translation can be severed, in the limit of routing hop&lt;br/&gt;acceptable competitiveness.&lt;br/&gt;&lt;br/&gt;The mitigation is incentive-compatible, if the credentials are not honored&lt;br/&gt;by their issuers, the HTLC senders can evict them from the routing network&lt;br/&gt;view for a while. The successful usage of credentials can lead to more&lt;br/&gt;credentials allocated for longer and more capacity-intensive channel&lt;br/&gt;lockups. In case of HTLC failure, the failure source could be forgiven by&lt;br/&gt;routing hops to maintain the worthiness of the sender credentials.&lt;br/&gt;&lt;br/&gt;The mitigation can be made transparent from the user, as the credentials&lt;br/&gt;harvesting can be done automatically from a pre-allocated budget, similar&lt;br/&gt;to the fee-bumping reserves requirement introduced by anchor output. At the&lt;br/&gt;end of today, if we take modern browsers as an example, the average user&lt;br/&gt;doesn&amp;#39;t check manually the TLS certificates (for what they&amp;#39;re worth...).&lt;br/&gt;&lt;br/&gt;The mitigation can conserve high-level privacy, as the usage of blinded&lt;br/&gt;signature (or another equivalent cryptosystem breaking signature/message&lt;br/&gt;linking) should allow the credentials issued during a preliminary phase to&lt;br/&gt;be undistinguishable during the redeem/usage phase. New CPU/memory DoS&lt;br/&gt;vectors due to the credentials processing should be watched out.&lt;br/&gt;&lt;br/&gt;About the ease of implementation, there are few protocol messages to&lt;br/&gt;modify, a HTLC intercepting API is assumed as supported by the&lt;br/&gt;implementation, onion messages support is also implied, landing EC blinded&lt;br/&gt;signature in libsecp256k1-zkp shouldn&amp;#39;t be a big deal, routing algorithms&lt;br/&gt;adaptations might be more serious but still reasonable. The&lt;br/&gt;&amp;#34;credentials-to-liquidity&amp;#34; allocation algorithms are likely the new real&lt;br/&gt;beast, though I don&amp;#39;t think any reputation scheme can spare them.&lt;br/&gt;&lt;br/&gt;There could be a concern about the centralization inertia introduced by a&lt;br/&gt;reputation system.  Intuitively, the argument can be made that any&lt;br/&gt;historical tracking (such as routing buckets) favor established LN&lt;br/&gt;incumbents at the gain of efficiency. A counter-argument can be made, a new&lt;br/&gt;routing hop can lower the acquisition cost of its issued credentials to&lt;br/&gt;attract more HTLC traffic (accepting higher jamming risk).&lt;br/&gt;&lt;br/&gt;On the ecosystem impacts, it should be studied that this proposal would&lt;br/&gt;impact things like inbound channel routing fees [3], ratecard [4] or&lt;br/&gt;flow-control valve [5] and the whole liquidity toolchain. Hopefully, we&lt;br/&gt;don&amp;#39;t significantly restrain the design space for future LN protocol&lt;br/&gt;upgrades.&lt;br/&gt;&lt;br/&gt;On the proposal modularity and flexibility, each routing node has oversight&lt;br/&gt;on its routing policy, acquisition methods, credentials to liquidity rate.&lt;br/&gt;New acquisition methods can be experimented or deployed when ready, e.g&lt;br/&gt;stakes certificates with only e2e upgrade. The credentials themselves could&lt;br/&gt;have &amp;#34;innate&amp;#34; expiration time if we use things like short-lived ZKP [6].&lt;br/&gt;The credentials framework can be extended beyond solving jamming, as a&lt;br/&gt;generalized risk-management framework for Bitcoin decentralized financial&lt;br/&gt;network, e.g transaction signature exchange ordering in multi-party&lt;br/&gt;transactions [7] or finding reliable Coinjoin counterparties.&lt;br/&gt;&lt;br/&gt;Feedback welcome.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;[0]&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-November/002884.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-November/002884.html&lt;/a&gt;&lt;br/&gt;[1]&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-August/003673.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-August/003673.html&lt;/a&gt;&lt;br/&gt;[2]&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-November/003740.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-November/003740.html&lt;/a&gt;&lt;br/&gt;[3]&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-July/003643.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-July/003643.html&lt;/a&gt;&lt;br/&gt;[4]&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-September/003685.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-September/003685.html&lt;/a&gt;&lt;br/&gt;[5]&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-September/003686.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2022-September/003686.html&lt;/a&gt;&lt;br/&gt;[6] &lt;a href=&#34;https://eprint.iacr.org/2022/190.pdf&#34;&gt;https://eprint.iacr.org/2022/190.pdf&lt;/a&gt;&lt;br/&gt;[7] &lt;a href=&#34;https://github.com/lightning/bolts/pull/851#issuecomment-1290727242&#34;&gt;https://github.com/lightning/bolts/pull/851#issuecomment-1290727242&lt;/a&gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20221120/2a736ba2/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20221120/2a736ba2/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:07:22Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqszzsmw5sppqavkfhcem6zte57hvehs5805vcn23cqc8znca3kgs8czypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zw9ak8p</id>
    
      <title type="html">📅 Original date posted:2022-11-06 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqszzsmw5sppqavkfhcem6zte57hvehs5805vcn23cqc8znca3kgs8czypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zw9ak8p" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsrzr45ngd08dyuwylu8kmvqnsnqhg2j25fsgksr7fjxz5kl7kjdqctj6mqq&#39;&gt;nevent1q…6mqq&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-11-06&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Clara, Sergei&lt;br/&gt;&lt;br/&gt;Congrats for the paper!&lt;br/&gt;&lt;br/&gt;Here are a few in-flight thoughts browsing the paper.&lt;br/&gt;&lt;br/&gt;On introducing a general framework for evaluating attack mitigations, I&lt;br/&gt;think this is relevant as scarce resources wastes, of which jamming is a&lt;br/&gt;subcase is echoed multiple times not only in Lightning, but in multiple&lt;br/&gt;other L2 protocols. For Lightning: at channel peer selection, or for any&lt;br/&gt;multi-party operation like a dual-funded or splicing, the timevalue of the&lt;br/&gt;UTXOs committed can be wasted by a lazy or malicious counterparty. For&lt;br/&gt;Coinjoin/Swaps: again UTXO opportunity cost can be wasted, or a swap HTLC&lt;br/&gt;holded for nothing. I hold the hope that any solution we can nurture for&lt;br/&gt;jamming could be reused and refined in other Bitcoin &amp;#34;decentralized&lt;br/&gt;financial networks&amp;#34;.&lt;br/&gt;&lt;br/&gt;On the framework for mitigation evaluation, there are few other dimensions&lt;br/&gt;we have considered in the past with Gleb for our research that could be&lt;br/&gt;relevant to integrate. One is &amp;#34;centralization&amp;#34;, the solution shouldn&amp;#39;t&lt;br/&gt;centralize sensibly the LN ecosystem around any of its actors: LSP,&lt;br/&gt;Lightning Wallet Providers (e.g watchtower or Greenlight-style infra) or&lt;br/&gt;routing node, where centralization could be defined in terms of &amp;#34;market&lt;br/&gt;entry cost&amp;#34; for new incumbents. &amp;#34;Protocol evolvability&amp;#34; could be another&lt;br/&gt;one, as we don&amp;#39;t want a solution rendering the design and operations of&lt;br/&gt;things like offline-receive, trampoline, negative fees, etc harder.&lt;br/&gt;&amp;#34;Ecosystem impacts&amp;#34; was one more category we thought about, e.g introducing&lt;br/&gt;a mass mempool congestion vector (one of the versions of Stakes&lt;br/&gt;Certificates did it...).&lt;br/&gt;&lt;br/&gt;For the dimensions of your evaluation framework, the &amp;#34;effectiveness&amp;#34; sounds&lt;br/&gt;to be understood as attacker-centric. However few times after in the paper,&lt;br/&gt;the viewpoint of the routing nodes sounds to be adopted (&amp;#34;compensating them&lt;br/&gt;for the financial damage of jamming&amp;#34;, &amp;#34;breakeven point n&amp;#34;). If this&lt;br/&gt;distinction is real, the first way would be more searching for a&lt;br/&gt;game-theory equilibrium whereas much damage is inflicted to the attacker.&lt;br/&gt;The second one would be more to ensure a compensation for the loss income&lt;br/&gt;for the routing nodes. I believe the first approach is limited as the&lt;br/&gt;attacker&amp;#39;s resources could overwhelm the victim&amp;#39;s economic sustainability,&lt;br/&gt;and rationality might be uneconomic. Maybe those two approaches could be&lt;br/&gt;combined, in the sense that loss income compensation should only be borne&lt;br/&gt;by &amp;#34;identified&amp;#34; attackers, however this doesn&amp;#39;t sound the direction taken&lt;br/&gt;by unconditional fees.&lt;br/&gt;&lt;br/&gt;About &amp;#34;incentive compatibility&amp;#34;, one element valuable to integrate is how&lt;br/&gt;much the existence of scoring algorithms allows the routing nodes to adopt&lt;br/&gt;&amp;#34;honest behaviors&amp;#34; and high-level of service availability. I don&amp;#39;t know if&lt;br/&gt;a jamming solution can be devised without considerations of the inner&lt;br/&gt;workings of routing/scoring algorithms, and so far every LN implementation&lt;br/&gt;has its own cooking.&lt;br/&gt;&lt;br/&gt;On the structure of the monetary strategy, I think there could be a&lt;br/&gt;solution to implement a proof-of-burn, where the fee is captured in a&lt;br/&gt;commitment output sending to a provably unspendable output. Theoretically,&lt;br/&gt;it&amp;#39;s interesting as &amp;#34;unburning&amp;#34; the fee is dependent on counterparty&lt;br/&gt;cooperation, the one potentially encumbering the jamming risk.&lt;br/&gt;Proof-of-work &amp;#34;fee&amp;#34; has been discussed in the past by LN devs, however it&lt;br/&gt;was quickly dismissed, as it would give an edge to the attacker who is able&lt;br/&gt;to gather ASICs farms while completely burning the batteries of LN mobile&lt;br/&gt;clients. It has also been widely discussed to make the fees conditional on&lt;br/&gt;either outgoing HTLC CLTV value or effective duration. For effective&lt;br/&gt;duration, an upfront fee shard could be paid after each clock tick (either&lt;br/&gt;epoch or block-based).&lt;br/&gt;&lt;br/&gt;On the structure of reputation strategy, I think one interesting missing&lt;br/&gt;point to me is the blurring of the local/global reputation definition in&lt;br/&gt;Lightning. At least maybe in a way traditionally defined in P2P&lt;br/&gt;litterature. Reputation could be enforced on the HTLC sender, as we&amp;#39;ve&lt;br/&gt;aimed with Stakes Certificates. The upstream peer reputation is not&lt;br/&gt;accounted for at all. I think it&amp;#39;s an open question if the reputation score&lt;br/&gt;of a routing node could be exported across nodes (a behavior that one could&lt;br/&gt;expect if you assume web-of-trust, as the current LN network topology is&lt;br/&gt;heavily based on). On the statement, that attaching reputation to payment&lt;br/&gt;contradicts the LN&amp;#39;s privacy-focused goal, I would say it&amp;#39;s a light one in&lt;br/&gt;regards to the state of cryptography tools like blinded signature, known&lt;br/&gt;since the 80s.&lt;br/&gt;&lt;br/&gt;On the analysis of the unconditional fee, I think my main objection would&lt;br/&gt;be the lack of integration of the time uncertainty of the honest use-cases,&lt;br/&gt;making it hard to classify between quick and slow jamming. As you say &amp;#34;The&lt;br/&gt;borderline between quick and slow jamming depends on a subjective&lt;br/&gt;definition of the maximal honest payment resolution delay&amp;#34; An attacker&lt;br/&gt;should hold all its HTLC jamming for a duration of &amp;#34;maximal honest payment&lt;br/&gt;resolution delay&amp;#34; minus 1. Without even scoping L2s protocol like swaps or&lt;br/&gt;hold-invoice where the effective duration might hold for a few blocks,&lt;br/&gt;modern flows like offline receive where the user has to take manual actions&lt;br/&gt;to settle the HTLC could far extend beyond a few seconds. To develop my&lt;br/&gt;point, fair compensation could aim for the most optimistic flow of&lt;br/&gt;short-held 0.1s payment, however a routing policy could qualify as honest&lt;br/&gt;payment resolution delay duration of as much as a few minutes. This&lt;br/&gt;discrepancy could be exploited by an attacker to inflict an asymmetric&lt;br/&gt;damage to the routing nodes. Of course, one fix could be to scale up the&lt;br/&gt;unconditional fee amount in function of the maximal honest payment&lt;br/&gt;resolution delay accepted by the routing node policy&amp;#34;. I wonder if it would&lt;br/&gt;be suitable in terms of UX.&lt;br/&gt;&lt;br/&gt;For a routing node, there is the uncertainty of downstream payment path&lt;br/&gt;hops, responsible for some failures, I don&amp;#39;t know if it&amp;#39;s currently&lt;br/&gt;accounted for in the evaluation of the unconditional fee. If the&lt;br/&gt;unconditional fee paid downstream is too high, there is a moral hazard for&lt;br/&gt;the routing node, they can pocket the fee, depending how much they&amp;#39;re&lt;br/&gt;penalized by the sender scoring algorithm.&lt;br/&gt;&lt;br/&gt;On the analysis of the reputation mechanism, there is one recursive issue:&lt;br/&gt;you might constrain the incoming HTLC traffic of your peers, even if&lt;br/&gt;they&amp;#39;re all honest. Let&amp;#39;s say you assign K slots and L satoshis of&lt;br/&gt;liquidity to your upstream peer Carioll, Caroll must know divide by (K, L)&lt;br/&gt;by two to Alice and Bob, even if Alice and Bob each can offer (K, L) of&lt;br/&gt;honest HTLC traffic.&lt;br/&gt;&lt;br/&gt;Further, there is also the attack timing asymmetries, in the sense that a&lt;br/&gt;high-reputation score might have been earned in period of low-congestion,&lt;br/&gt;and consumed during period of high-congestion, so it sounds to me&lt;br/&gt;reputation should be quantitative rather to introduce a low-risk/high-risk&lt;br/&gt;binary framework, to account for proportionality. This proportionality&lt;br/&gt;issue is a hard thing, especially if I would like concretely to address&lt;br/&gt;payments with intentionally delayed resolutions in a non-cooperative-only&lt;br/&gt;way.&lt;br/&gt;&lt;br/&gt;Lastly, I wonder if there is not some conceptual issue with the chaining of&lt;br/&gt;unconditional fee and local reputation. As I understand the distinction&lt;br/&gt;between quick/slow jamming is based on this idea of maximal honest payment&lt;br/&gt;resolution delay. However, the bypass of this upper bound is only known&lt;br/&gt;_after_ the HTLC forward, and as such it sounds to me the strategie regime&lt;br/&gt;(unconditional fee/local reputation) under which a HTLC forward should be&lt;br/&gt;evaluated is dependent on the knowledge of a future event.&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;Le jeu. 3 nov. 2022 à 13:25, Clara Shikhelman &amp;lt;clara.shikhelman at gmail.com&amp;gt;&lt;br/&gt;a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi list,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; We would like to share with you our recent research on jamming in&lt;br/&gt;&amp;gt; Lightning. We propose a combination of unconditional (~ upfront) fees and&lt;br/&gt;&amp;gt; local reputation to fight jamming. We believe this can be a basis for an&lt;br/&gt;&amp;gt; efficient and practical solution that can be implemented in the foreseeable&lt;br/&gt;&amp;gt; future.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The full paper is available [1].&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; We classify jams into quick (resolve in seconds, mimicking honest&lt;br/&gt;&amp;gt; payments) and slow (remain in-flight for hours or days). Fees&lt;br/&gt;&amp;gt; disincentivize an attack where quick jams are constantly resolved and sent&lt;br/&gt;&amp;gt; again. Reputation, in turn, allows nodes to deprioritize peers who&lt;br/&gt;&amp;gt; consistently forward slow jams.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; We believe that our proposal is practical and efficient. In particular, we&lt;br/&gt;&amp;gt; have shown that the additional (unconditional) fees can be relatively low&lt;br/&gt;&amp;gt; (as low as 2% of the total fee) to fully compensate jamming victims for the&lt;br/&gt;&amp;gt; lost routing revenue. Moreover, the total unconditional fee paid for all&lt;br/&gt;&amp;gt; failed attempts stays low even if the failure rate is reasonably high. This&lt;br/&gt;&amp;gt; means that the UX burden of paying for failed attempts is also low. A&lt;br/&gt;&amp;gt; straightforward PoC implementation [2] demonstrates one approach to&lt;br/&gt;&amp;gt; implementing the fee-related aspect of our proposal.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Further sections provide more details on our approach and results.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # Jamming&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; As a reminder, jamming is a DoS attack where a malicious sender initiates&lt;br/&gt;&amp;gt; payments (jams) but delays finalizing them, blocking channels along the&lt;br/&gt;&amp;gt; route until the jams are resolved. Jamming may target liquidity or payment&lt;br/&gt;&amp;gt; slots.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; We distinguish between quick and slow jamming. Quick jamming implies that&lt;br/&gt;&amp;gt; jams are failed and re-sent every few seconds, making them hardly&lt;br/&gt;&amp;gt; distinguishable from honest failing payments. In slow jamming, jams remain&lt;br/&gt;&amp;gt; in-flight for hours.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # Unconditional fees&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; We propose unconditional fees to discourage quick jamming. Currently, jams&lt;br/&gt;&amp;gt; are free because routing nodes don’t charge for failed payment attempts.&lt;br/&gt;&amp;gt; With unconditional fees, however, jamming is no longer free.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Our simulations indicate that unconditional fees don’t have to be too&lt;br/&gt;&amp;gt; high. Under certain assumptions about the honest payment flow, a fee&lt;br/&gt;&amp;gt; increase by just 2% (paid upfront) fully compensates a routing node under&lt;br/&gt;&amp;gt; attack. Our simulator is open-source [3]. A PoC implementation demonstrates&lt;br/&gt;&amp;gt; one approach to implementing unconditional fees and only requires minor&lt;br/&gt;&amp;gt; changes [2].&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; We have also considered the UX implications of paying for failed attempts.&lt;br/&gt;&amp;gt; We have concluded that this should not be a deal-breaker, as the total&lt;br/&gt;&amp;gt; unconditional fee paid stays low even if the failure rate is reasonably&lt;br/&gt;&amp;gt; high (even as high as 50%). Privacy and incentives are also discussed in&lt;br/&gt;&amp;gt; the paper.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # Reputation&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Fees are not very effective in preventing slow jamming: this type of&lt;br/&gt;&amp;gt; attack requires only a few jams, therefore, fees would have to be too high&lt;br/&gt;&amp;gt; to be effective. Instead, we address slow jamming using local reputation.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; As per our proposal, nodes keep track of their peers’ past behavior. A&lt;br/&gt;&amp;gt; routing node considers its peer “good” if it only forwards honest payments&lt;br/&gt;&amp;gt; that resolve quickly and bring sufficient fee revenue. A peer that forwards&lt;br/&gt;&amp;gt; jams, in contrast, loses reputation. Payments endorsed by a high-reputation&lt;br/&gt;&amp;gt; peer are forwarded on the best efforts basis, while other (“high-risk”)&lt;br/&gt;&amp;gt; payments can only use a predefined quota of liquidity and slots. Unless the&lt;br/&gt;&amp;gt; attacker has built up a reputation in advance, it cannot fully jam a&lt;br/&gt;&amp;gt; channel with at least some liquidity allocated exclusively to low-risk&lt;br/&gt;&amp;gt; payments. Nodes parameterize their channels according to their risk&lt;br/&gt;&amp;gt; tolerance.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # Alternatives and Future Work&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In this work, we strive for a systematic approach. First, we list five&lt;br/&gt;&amp;gt; properties a potential mitigation strategy should have: effectiveness,&lt;br/&gt;&amp;gt; incentive compatibility, user experience, privacy and security, and ease of&lt;br/&gt;&amp;gt; implementation. Then, we go over the design decisions to be made when&lt;br/&gt;&amp;gt; constructing a countermeasure against jamming. Based on the desired&lt;br/&gt;&amp;gt; criteria and the available options, we converge on a solution.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Multiple approaches to jamming mitigation have been discussed on this list&lt;br/&gt;&amp;gt; and elsewhere. Many of them may well be worth exploring, such as&lt;br/&gt;&amp;gt; resolution-time-dependent fee amounts or stake certificates for reputation&lt;br/&gt;&amp;gt; building. However, we believe that our solution strikes a good balance: it&lt;br/&gt;&amp;gt; addresses the problem in question and is relatively straightforward to&lt;br/&gt;&amp;gt; implement.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; We would love to bring this idea closer to implementation, and we plan to&lt;br/&gt;&amp;gt; discuss it over the next spec meeting [4] (Monday, 2022-11-07). We’d&lt;br/&gt;&amp;gt; greatly appreciate your feedback!&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Kind regards,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Sergei and Clara&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [1] -&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/s-tikhomirov/ln-jamming-simulator/blob/master/unjamming-lightning.pdf&#34;&gt;https://github.com/s-tikhomirov/ln-jamming-simulator/blob/master/unjamming-lightning.pdf&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [2] - &lt;a href=&#34;https://github.com/sr-gi/rust-lightning/commit/ce606&#34;&gt;https://github.com/sr-gi/rust-lightning/commit/ce606&lt;/a&gt;)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [3] - &lt;a href=&#34;https://github.com/s-tikhomirov/ln-jamming-simulator&#34;&gt;https://github.com/s-tikhomirov/ln-jamming-simulator&lt;/a&gt;&lt;br/&gt;&amp;gt; [4] - &lt;a href=&#34;https://github.com/lightning/bolts/issues/1038&#34;&gt;https://github.com/lightning/bolts/issues/1038&lt;/a&gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20221106/55593583/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20221106/55593583/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:07:17Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsfgyjszyxyq0jf93d789j6c67pg25n2cl0f09zsrmz8mzerta8xlszypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zraeh6h</id>
    
      <title type="html">📅 Original date posted:2022-09-26 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsfgyjszyxyq0jf93d789j6c67pg25n2cl0f09zsrmz8mzerta8xlszypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zraeh6h" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqswm94x27afzar9cewrumyhxmsqx0ayejpg99ge2wzw3n8zpsc5j8q860u69&#39;&gt;nevent1q…0u69&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-09-26&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Dustin,&lt;br/&gt;&lt;br/&gt;&amp;gt;From my understanding, splice pinning is problematic for channel funds&lt;br/&gt;safety. In the sense once you have a splice floating in network mempools&lt;br/&gt;and your latest valid commitment transaction pre-signed fees isn&amp;#39;t enough&lt;br/&gt;to replace the splice, lack of confirmation might damage the claim of HTLCs.&lt;br/&gt;&lt;br/&gt;I don&amp;#39;t know if the current splice proposal discourages pending HTLCs&lt;br/&gt;during the splice lifetime, this would at least downgrade the pinning&lt;br/&gt;severity in the splicing case to a simple liquidity timevalue loss.&lt;br/&gt;&lt;br/&gt;W.r.t, about the mitigation proposed.&lt;br/&gt;&lt;br/&gt;&amp;gt; For “ancestor bulking”, every `tx_add_input` proposed by a peer must be&lt;br/&gt;&amp;gt; included in the UTXO set. A node MUST verify the presence of a proposed&lt;br/&gt;&amp;gt; input before adding it to the splicing transaction.&lt;br/&gt;&lt;br/&gt;I think this mitigation requires reliable access to the UTXO set, a&lt;br/&gt;significant constraint for LN mobile clients relying on lightweight&lt;br/&gt;validation backends. While this requirement already exists in matters of&lt;br/&gt;routing to authenticate channel announcements, on the LDK-side we have&lt;br/&gt;alternative infrastructure to offer source-based routing to such a class of&lt;br/&gt;clients, without them having to care about the UTXO set [0]. I don&amp;#39;t&lt;br/&gt;exclude there would be infrastructure in the future to access a subset of&lt;br/&gt;the UTXO set (e.g if utreexo is deployed on the p2p network) for&lt;br/&gt;resource-constraint clients, however as of today this is still pure&lt;br/&gt;speculation and vaporware.&lt;br/&gt;&lt;br/&gt;In the meantime, mobile clients might not be able to partake in splicing&lt;br/&gt;operations with their LSPs, or without a decrease in trust-minimization&lt;br/&gt;(e.g assuming your LSP doesn&amp;#39;t initiate malicious pinnings against you).&lt;br/&gt;&lt;br/&gt;&amp;gt; 1) You cannot CPFP a splice transaction. All splices must be RBF’d to be&lt;br/&gt;&amp;gt; fee-bumped. The interactive tx protocol already provides a protocol for&lt;br/&gt;&amp;gt; initiating an RBF, which we re-use for splicing.&lt;br/&gt;&lt;br/&gt;The issue with RBF, it assumes interactivity with your counterparties. As&lt;br/&gt;splicing is built on top of the interactive transaction construction&lt;br/&gt;protocol, from my understanding you could have a high order of participants&lt;br/&gt;to coordinate with, without knowledge of their signing policies (e.g if&lt;br/&gt;they&amp;#39;re time-constraints) therefore any re-signing operations might have&lt;br/&gt;odds to fail. Moreover, one of these participants could be malicious and&lt;br/&gt;refuses straightly to sign, therefore the  already splicing transactions&lt;br/&gt;stay as a pin in the network mempools.&lt;br/&gt;&lt;br/&gt;If this concern is correct, I&amp;#39;m not sure we have a current good solution,&lt;br/&gt;the WIP package RBF proposal would be limited to only 2 descendants [1],&lt;br/&gt;and here we might have 3 generations: the splice, a commitment, a CPFP.&lt;br/&gt;&lt;br/&gt;[0] &lt;a href=&#34;https://github.com/lightningdevkit/rapid-gossip-sync-server&#34;&gt;https://github.com/lightningdevkit/rapid-gossip-sync-server&lt;/a&gt;&lt;br/&gt;[1]&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-September/020937.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-September/020937.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Le mar. 9 août 2022 à 16:15, Dustin Dettmer &amp;lt;dustin at koinkeep.com&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; As raised by @crypto-iq and @roasbeef, splices which permit arbitrary&lt;br/&gt;&amp;gt; script and input inclusion are at risk of being mempool pinned. Here we&lt;br/&gt;&amp;gt; present a solution to this splice pinning problem.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ## Background&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Pinning can be done by building a very large “junk” transaction that&lt;br/&gt;&amp;gt; spends from an important pending one. There are two known pinning vectors:&lt;br/&gt;&amp;gt; ancestor bulking thru addition of new inputs and junk pinning via the&lt;br/&gt;&amp;gt; spending of outputs.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Pinning pushes transactions to the bottom of the priority list without a&lt;br/&gt;&amp;gt; practical way of bumping it up. It is in effect a griefing attack, but in&lt;br/&gt;&amp;gt; the case of lightning can risk funds loss for HTLCs that have timed out for&lt;br/&gt;&amp;gt; a pinned commitment transaction.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Anchor outputs were introduced to lightning to mitigate the junk pinning&lt;br/&gt;&amp;gt; vector; they work by adding a minimum of  `1 CSV` lock to all outputs on&lt;br/&gt;&amp;gt; the commitment transaction except for two “anchor” outputs, one for each&lt;br/&gt;&amp;gt; channel peer. (These take advantage of a 1-tx carve-out exception to enable&lt;br/&gt;&amp;gt; propagation of anchors despite any junk attached to the peer’s anchor).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ## Mitigation&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Splice transactions are susceptible to both junk and bulk pinning attacks.&lt;br/&gt;&amp;gt; Here’s how we propose mitigating these for splice.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [ &lt;img src=&#34;https://i.imgur.com/ayiO1Qt.png&#34;&gt; ]&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; For “ancestor bulking”, every `tx_add_input` proposed by a peer must be&lt;br/&gt;&amp;gt; included in the UTXO set. A node MUST verify the presence of a proposed&lt;br/&gt;&amp;gt; input before adding it to the splicing transaction.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; For “output junk”, every output included directly in a splice transaction&lt;br/&gt;&amp;gt; MUST be a v0 P2SH witness script which begins with a minimum of `1 CSV`&lt;br/&gt;&amp;gt; relative timelock. No output on the splice transaction will be spendable&lt;br/&gt;&amp;gt; until it is included in a block. This prevents junk pinning by removing the&lt;br/&gt;&amp;gt; ability to propose spends of splice outputs before the transaction is&lt;br/&gt;&amp;gt; included in a block.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; There are two side effects here.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1) You cannot CPFP a splice transaction. All splices must be RBF’d to be&lt;br/&gt;&amp;gt; fee-bumped. The interactive tx protocol already provides a protocol for&lt;br/&gt;&amp;gt; initiating an RBF, which we re-use for splicing.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 2) Arbitrary 3rd party scriptPubKeys are not permissible directly into the&lt;br/&gt;&amp;gt; splice tx.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In order for this to work we need to validate that every output has a 1&lt;br/&gt;&amp;gt; block CSV. There are two output types to consider:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;    1. New channel outpoints&lt;br/&gt;&amp;gt;    2. Arbitrary splice out funds&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; For arbitrary splice out, funds can be included in a “fan-out”&lt;br/&gt;&amp;gt; transaction. Here standard pay to address etc outputs can live. The output&lt;br/&gt;&amp;gt; leading to the fan-out transaction will be a P2WSH that also begins with&lt;br/&gt;&amp;gt; [OP_1, OP_CHECKSEQUENCEVERIFY] (referred to from here on as ‘1 CSV’). Each&lt;br/&gt;&amp;gt; splice party SHOULD build a fan-out transaction for all arbitrary spliced&lt;br/&gt;&amp;gt; outputs.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [ &lt;img src=&#34;https://i.imgur.com/40Dy3oq.png&#34;&gt; ]&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Splice-in transactions will not require any fan-out children as long as&lt;br/&gt;&amp;gt; all change goes into the channel outpoint.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; For new channel outpoints, the v0 witness script should be modified to&lt;br/&gt;&amp;gt; start with [OP_1, OP_CHECKSEQUENCEVERIFY]. It needs to be the first item in&lt;br/&gt;&amp;gt; the script to allow easy validation that it is used and not hidden in a&lt;br/&gt;&amp;gt; false conditional. This would need to be applied to post-splice channel&lt;br/&gt;&amp;gt; outpoints and probably dual funding channels should add it as well so they&lt;br/&gt;&amp;gt; can be successfully included in splices.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ### interactive tx protocol changes&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; For splices, `tx_add_output` MUST include the `witness_script` in the tlv.&lt;br/&gt;&amp;gt; Upon receiving outputs, nodes must validate the script matches the script&lt;br/&gt;&amp;gt; hash in the output and that it begins with a minimum of 1 CSV.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ## HTLC Timeouts and Splices&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Typically when this technique is used, one or two anchor outputs are added&lt;br/&gt;&amp;gt; to purposely allow for CPFP fee bumping. But, turns out, we already have a&lt;br/&gt;&amp;gt; usable anchor in the original commitment transaction! Very exciting.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The interactive tx protocol mandates that splice txs are RBF-enabled.&lt;br/&gt;&amp;gt; Broadcast splice proposals can be replaced out for the original commitment&lt;br/&gt;&amp;gt; transaction at any time. Since the original commitment transaction has&lt;br/&gt;&amp;gt; existing anchors, these may be used to increase fees on a force close. This&lt;br/&gt;&amp;gt; combined with every other output in the tree being locked behind a 1 CSV&lt;br/&gt;&amp;gt; means the force close will always have top mempool priority, mitigating the&lt;br/&gt;&amp;gt; “output junk” style pin.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; - Nifty &amp;amp; Dusty&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20220926/cd8dcdf3/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20220926/cd8dcdf3/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:06:56Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsqfya3cuj0xn5klqu3fr2put8kd425g0spjvgwaensw77kdqghe7qzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zq0henn</id>
    
      <title type="html">📅 Original date posted:2022-09-01 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsqfya3cuj0xn5klqu3fr2put8kd425g0spjvgwaensw77kdqghe7qzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zq0henn" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsvzdzhqh60mg0vmtsqqlcltc232nwzzrymae8sqsvjgdx9apggeegerwgx3&#39;&gt;nevent1q…wgx3&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-09-01&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Alex,&lt;br/&gt;&lt;br/&gt;Let&amp;#39;s say the adversary targeting your high-value &amp;#34;LiFi&amp;#34; infrastructure is&lt;br/&gt;a nation-state sponsored hacking-group with strong capabilities (as we&amp;#39;re&lt;br/&gt;seeing today in the cryptocurrencies DeFi space). This hacking group avails&lt;br/&gt;hundreds of bitcoins to fund channels, is able to setup thousands of sybil&lt;br/&gt;peers across the base-layer p2p network, has built a fine-grained knowledge&lt;br/&gt;of the miner mempools, controls few Internet ASNs and has bought&lt;br/&gt;second-hands mining chips on the market to own limited hashing capabilities.&lt;br/&gt;&lt;br/&gt;As of today, they would have a marked embarrassment on which attack pickup&lt;br/&gt;to target your Lightning infrastructure. They could start with an &amp;#34;old&lt;br/&gt;known&amp;#34; jamming attack to permanently cut your channel links from the rest&lt;br/&gt;of the wider network topology [0].&lt;br/&gt;Or they could launch time-dilation attacks by building on BGP disruptions,&lt;br/&gt;until your chain view is so far in the past from the network tip that your&lt;br/&gt;on-chain HTLC-claiming safety reaction timers are useless [1]. Or they&lt;br/&gt;could exercise pinning attacks to prevent you to claim back routed HTLC, as&lt;br/&gt;a malicious commitment transaction sleeps in the network mempools until&lt;br/&gt;it&amp;#39;s too far [2].  Or they could target your pre-0.24 Bitcoin Core&lt;br/&gt;full-node to provoke a memory crash thanks to a long-chain of low-work&lt;br/&gt;headers [3].&lt;br/&gt;&lt;br/&gt;And I would say that&amp;#39;s only a subset of the attack surface of a Lightning&lt;br/&gt;node.&lt;br/&gt;&lt;br/&gt;Considering all those factors, moving a LN implementation architecture from&lt;br/&gt;a single, monolithic process towards a collection of processes, where the&lt;br/&gt;critical components of the LN active defense security model are replicated&lt;br/&gt;and distributed, redundant access to the chain view guaranteed, sandboxing&lt;br/&gt;access between processes enforced and data flow monitored to react on&lt;br/&gt;anomalies, all things your #6843 would make easier, sounds a reasonable&lt;br/&gt;direction. I think it&amp;#39;s needed if you aim for your infrastructure to&lt;br/&gt;survive strong attacks.&lt;br/&gt;&lt;br/&gt;On the LDK-side, inheriting from the adversarial thinking and safety-first&lt;br/&gt;mindset development culture from Bitcoin Core, we&amp;#39;ve always considered that&lt;br/&gt;type of scenarii since the early days and designed our software in&lt;br/&gt;consequence. We have been working and we&amp;#39;ll keep working on many&lt;br/&gt;security/safety hardening: external signing [4], replicated  chain&lt;br/&gt;monitoring [5], dynamic fee-bumping of time-sensitive transactions, various&lt;br/&gt;attack vectors mitigations [6]. All that said, we&amp;#39;re looking forward to&lt;br/&gt;collaborate with the wider Lightning community on reusable security modules&lt;br/&gt;across implementations (e.g jamming mitigations) and wished&lt;br/&gt;&amp;#34;fix-the-annoying-holes&amp;#34; changes in Bitcoin Core (e.g package relay).&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;[0] &lt;a href=&#34;https://jamming-dev.github.io/book/&#34;&gt;https://jamming-dev.github.io/book/&lt;/a&gt;&lt;br/&gt;[1] &lt;a href=&#34;https://arxiv.org/abs/2006.01418&#34;&gt;https://arxiv.org/abs/2006.01418&lt;/a&gt;&lt;br/&gt;[2]&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-June/002758.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-June/002758.html&lt;/a&gt;&lt;br/&gt;[3] &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/25717&#34;&gt;https://github.com/bitcoin/bitcoin/pull/25717&lt;/a&gt;&lt;br/&gt;[4] &lt;a href=&#34;https://github.com/lightningdevkit/rust-lightning/pull/214&#34;&gt;https://github.com/lightningdevkit/rust-lightning/pull/214&lt;/a&gt;&lt;br/&gt;[5] &lt;a href=&#34;https://github.com/lightningdevkit/rust-lightning/pull/679&#34;&gt;https://github.com/lightningdevkit/rust-lightning/pull/679&lt;/a&gt;&lt;br/&gt;[6] &lt;a href=&#34;https://github.com/lightningdevkit/rust-lightning/pull/1009&#34;&gt;https://github.com/lightningdevkit/rust-lightning/pull/1009&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Le jeu. 1 sept. 2022 à 13:56, Alex Akselrod via Lightning-dev &amp;lt;&lt;br/&gt;lightning-dev at lists.linuxfoundation.org&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; At NYDIG, we&amp;#39;re considering ways to harden large LND deployments. Joost&lt;br/&gt;&amp;gt; and I discussed that currently, when external untrusted peers make inbound&lt;br/&gt;&amp;gt; connections, LND must verify the identity of the peer during the noise&lt;br/&gt;&amp;gt; handshake, and it must do this before enforcing any potential key-based&lt;br/&gt;&amp;gt; allow lists. This is done in the same process as the node&amp;#39;s other critical&lt;br/&gt;&amp;gt; tasks, such as monitoring the chain.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; To reduce the attack area of the main node process, we&amp;#39;d like to propose a&lt;br/&gt;&amp;gt; means to optionally separate the peer communication into a separate&lt;br/&gt;&amp;gt; process: something like CLN&amp;#39;s connectd, running separately, and the&lt;br/&gt;&amp;gt; connections would be multiplexed over a single network connection initiated&lt;br/&gt;&amp;gt; from the node to the proxy. The core of our current idea is demonstrated in&lt;br/&gt;&amp;gt; a draft PR: &lt;a href=&#34;https://github.com/lightningnetwork/lnd/pull/6843&#34;&gt;https://github.com/lightningnetwork/lnd/pull/6843&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I&amp;#39;d love some early feedback on the general direction of this. If this&lt;br/&gt;&amp;gt; would be interesting, I&amp;#39;ll build it out into a fully working feature.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Thanks,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Alex Akselrod&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20220901/d81ca8c8/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20220901/d81ca8c8/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:06:46Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqs95fwx7rxakeuz8sxnv7lrphx3qdnj7kg88uexxmkjjl7c3pg33rszypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zgyqse4</id>
    
      <title type="html">📅 Original date posted:2022-08-17 📝 Original message: Gleb ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqs95fwx7rxakeuz8sxnv7lrphx3qdnj7kg88uexxmkjjl7c3pg33rszypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zgyqse4" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsymnfy0nwzkxu69qhg4pylpyj287n5a9qqwhfnjgvzlwa0syddjkcqj6045&#39;&gt;nevent1q…6045&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-08-17&lt;br/&gt;📝 Original message:&lt;br/&gt;Gleb Naumenko and I would like to present our latest research on the&lt;br/&gt;well-known channel jamming attacks affecting the Lightning Network. For a&lt;br/&gt;reminder on the basis of channel jamming, we would like to point to Gleb&amp;#39;s&lt;br/&gt;earlier recollection [0].&lt;br/&gt;&lt;br/&gt;We have a serie of research posts available here:&lt;br/&gt;&lt;a href=&#34;https://jamming-dev.github.io/book/&#34;&gt;https://jamming-dev.github.io/book/&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;The research is based on Lightning Network data as of March 2022.&lt;br/&gt;&lt;br/&gt;Here&amp;#39;s the summary.&lt;br/&gt;&lt;br/&gt;Chapter 1 (The impacts of channel jamming) where we discuss:&lt;br/&gt;&lt;br/&gt;   - how the attacker may steal routing fees or target victim&amp;#39;s routing&lt;br/&gt;   reputation;&lt;br/&gt;   - how the attacker may DoS a goods/service provider;&lt;br/&gt;   - the monetary implications victims may bear;&lt;br/&gt;   - how jamming could enhance probing;&lt;br/&gt;   - how jamming may allow an attacker to drag LN users to other payment&lt;br/&gt;   solutions.&lt;br/&gt;&lt;br/&gt;Chapter 2 (Channel jamming costs) where we:&lt;br/&gt;&lt;br/&gt;   - discuss the on-chain aspect and the opportunity aspect of attack cost;&lt;br/&gt;   - describe cost optimizations (looping, rebalancing, targeting&lt;br/&gt;   surroundings);&lt;br/&gt;   - notice that the targeted attack costs are currently as low as&lt;br/&gt;   thousands of satoshis;&lt;br/&gt;   - notice that attacking the entire network requires locking ~million of&lt;br/&gt;   sats a month;&lt;br/&gt;   - discuss how an attacker may compensate for these costs.&lt;br/&gt;&lt;br/&gt;Chapter 3 (Incremental solutions to channel jamming) where we:&lt;br/&gt;&lt;br/&gt;   - analyze several low-effort solutions to jamming (slot bucketing, JIT&lt;br/&gt;   transaction staging, &amp;#34;active defence&amp;#34;);&lt;br/&gt;   - realize their fundamental trade-offs, strong and weak points;&lt;br/&gt;   - discuss slot bucketing in detail (including &amp;#34;0-bucket strategy&amp;#34;), a&lt;br/&gt;   good solution candidate.&lt;br/&gt;&lt;br/&gt;Chapter 4 (Solution Design Space) where we:&lt;br/&gt;&lt;br/&gt;   - make a broad overview of potential solutions (bonding to a payment;&lt;br/&gt;   reward/punishment incentives);&lt;br/&gt;   - identify known and novel families of solutions, discuss their&lt;br/&gt;   trade-offs;&lt;br/&gt;   - put them in the context of DLC-over-Lightning and other similar &amp;#34;LiFi&amp;#34;&lt;br/&gt;   protocols.&lt;br/&gt;&lt;br/&gt;Chapter 5 (Hold-time-dependent bidirectional fee schemes) where we:&lt;br/&gt;&lt;br/&gt;   - overview the most advanced Upfront Payment fee scheme and identify the&lt;br/&gt;   trade-offs;&lt;br/&gt;   - discuss why it&amp;#39;s hard to guarantee a game theoretic balance;&lt;br/&gt;   - suggest improvements.&lt;br/&gt;&lt;br/&gt;Chapter 6 (The Reputation Scheme: Stake Certificates &#43; Forwarding Pass)&lt;br/&gt;where we:&lt;br/&gt;&lt;br/&gt;   - suggest a reputation-based solution based on the combination of two&lt;br/&gt;   known ideas;&lt;br/&gt;   - discuss the associated challenges and the importance of designing a&lt;br/&gt;   strong reputation policy.&lt;br/&gt;&lt;br/&gt;At the end, we suggest our subjective view on moving forward with this. The&lt;br/&gt;next steps could be either working on more solutions (for which, we&lt;br/&gt;highlight the potential directions) or choosing one of the already&lt;br/&gt;suggested. Among the suggestions, the ecosystem should decide which set of&lt;br/&gt;trade-offs (including solution complexity) is acceptable.&lt;br/&gt;&lt;br/&gt;This research should be seen as the synthesis of numerous ideas presented&lt;br/&gt;by other LN developers over the years, and that we can claim original&lt;br/&gt;authorship of really few of them. We made a solid effort to find public&lt;br/&gt;references, though sometimes the ideas have been communicated to us&lt;br/&gt;offline. If you think we missed mentioning the authorship, please let us&lt;br/&gt;know. We also invite the best scrutiny and verification of model&lt;br/&gt;assumptions and research statements. All mistakes or confusions are our own.&lt;br/&gt;&lt;br/&gt;Finally, channel jamming has been one of the oldest high-impact issues&lt;br/&gt;mentioned in the Lightning space [1]. It&amp;#39;s likely that any solution will&lt;br/&gt;have long-term impacts on the fundamental economic units of the network,&lt;br/&gt;and therefore we hope that such solution finds the consensus of the LN&lt;br/&gt;develoment community as a whole.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Gleb &amp;amp; Antoine&lt;br/&gt;&lt;br/&gt;PS: Thanks to the reviewers&lt;br/&gt;&lt;br/&gt;[0] &lt;a href=&#34;https://blog.bitmex.com/preventing-channel-jamming/&#34;&gt;https://blog.bitmex.com/preventing-channel-jamming/&lt;/a&gt;&lt;br/&gt;[1]&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2015-August/000135.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2015-August/000135.html&lt;/a&gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20220817/98c8cdc5/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20220817/98c8cdc5/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:06:42Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsp3am0krhhs7zmyrdzah4tgy5w2a6asxzkpu5fgh3lyr0d80n5tvqzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zj0ca5f</id>
    
      <title type="html">📅 Original date posted:2022-07-05 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsp3am0krhhs7zmyrdzah4tgy5w2a6asxzkpu5fgh3lyr0d80n5tvqzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zj0ca5f" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs9wfjt0ly4nv8lpejgukj437ltxy852rcry28krnw4q00l7ddlh2g684056&#39;&gt;nevent1q…4056&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-07-05&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Bastien,&lt;br/&gt;&lt;br/&gt;Thanks for the proposal,&lt;br/&gt;&lt;br/&gt;While I think establishing the rate limiting based on channel topology&lt;br/&gt;should be effective to mitigate against DoS attackers, there is still a&lt;br/&gt;concern that the damage inflicted might be beyond the channel cost. I.e, as&lt;br/&gt;the onion messages routing is source-based, an attacker could exhaust or&lt;br/&gt;reduce targeted onion communication channels to prevent invoices exchanges&lt;br/&gt;between LN peers, and thus disrupt their HTLC traffic. Moreover, if the&lt;br/&gt;HTLC traffic is substitutable (&amp;#34;Good X sold by Merchant Alice can be&lt;br/&gt;substituted by good Y sold by Merchant Mallory&amp;#34;), the attacker could&lt;br/&gt;extract income from the DoS attack, compensating for the channel cost.&lt;br/&gt;&lt;br/&gt;If plausible, such targeted onion bandwidth attacks would be fairly&lt;br/&gt;sophisticated so it might not be a concern for the short-term. Though we&lt;br/&gt;might have to introduce some proportion between onion bandwidth units&lt;br/&gt;across the network and the cost of opening channels in the future...&lt;br/&gt;&lt;br/&gt;One further concern, we might have &amp;#34;spontaneous&amp;#34; bandwidth DoS in the&lt;br/&gt;future, if the onion traffic is leveraged beyond offers such as for&lt;br/&gt;discovery of LSP liquidity services (e.g PeerSwap, instant inbound&lt;br/&gt;channels, etc). For confidentiality reasons, a LN node might not use the&lt;br/&gt;Noise connections to learn about such services. The LN node might be also&lt;br/&gt;interested to do real market-discovery by fetching the services rates from&lt;br/&gt;all the LSP, while engaging with only one, therefore provoking a spike in&lt;br/&gt;onion bandwidth consumed across the network without symmetric&lt;br/&gt;HTLC traffic. This concern is hypothetical as that class of traffic might&lt;br/&gt;end up announced in gossip.&lt;br/&gt;&lt;br/&gt;So I think backpressure based rate limiting is good to boostrap as a&lt;br/&gt;&amp;#34;naive&amp;#34; DoS protection for onion messages though I&amp;#39;m not sure it will be&lt;br/&gt;robust enough in the long-term.&lt;br/&gt;&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;Le mer. 29 juin 2022 à 04:28, Bastien TEINTURIER &amp;lt;bastien at acinq.fr&amp;gt; a&lt;br/&gt;écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; During the recent Oakland Dev Summit, some lightning engineers got together to discuss DoS&lt;br/&gt;&amp;gt; protection for onion messages. Rusty proposed a very simple rate-limiting scheme that&lt;br/&gt;&amp;gt; statistically propagates back to the correct sender, which we describe in details below.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; You can also read this in gist format if that works better for you [1].&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Nodes apply per-peer rate limits on _incoming_ onion messages that should be relayed (e.g.&lt;br/&gt;&amp;gt; N/seconds with some burst tolerance). It is recommended to allow more onion messages from&lt;br/&gt;&amp;gt; peers with whom you have channels, for example 10/seconds when you have a channel and 1/second&lt;br/&gt;&amp;gt; when you don&amp;#39;t.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; When relaying an onion message, nodes keep track of where it came from (by using the `node_id` of&lt;br/&gt;&amp;gt; the peer who sent that message). Nodes only need the last such `node_id` per outgoing connection,&lt;br/&gt;&amp;gt; which ensures the memory footprint is very small. Also, this data doesn&amp;#39;t need to be persisted.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Let&amp;#39;s walk through an example to illustrate this mechanism:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * Bob receives an onion message from Alice that should be relayed to Carol&lt;br/&gt;&amp;gt; * After relaying that message, Bob stores Alice&amp;#39;s `node_id` in its per-connection state with Carol&lt;br/&gt;&amp;gt; * Bob receives an onion message from Eve that should be relayed to Carol&lt;br/&gt;&amp;gt; * After relaying that message, Bob replaces Alice&amp;#39;s `node_id` with Eve&amp;#39;s `node_id` in its&lt;br/&gt;&amp;gt; per-connection state with Carol&lt;br/&gt;&amp;gt; * Bob receives an onion message from Alice that should be relayed to Dave&lt;br/&gt;&amp;gt; * After relaying that message, Bob stores Alice&amp;#39;s `node_id` in its per-connection state with Dave&lt;br/&gt;&amp;gt; * ...&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; We introduce a new message that will be sent when dropping an incoming onion message because it&lt;br/&gt;&amp;gt; reached rate limits:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1. type: 515 (`onion_message_drop`)&lt;br/&gt;&amp;gt; 2. data:&lt;br/&gt;&amp;gt;    * [`rate_limited`:`u8`]&lt;br/&gt;&amp;gt;    * [`shared_secret_hash`:`32*byte`]&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Whenever an incoming onion message reaches the rate limit, the receiver sends `onion_message_drop`&lt;br/&gt;&amp;gt; to the sender. The sender looks at its per-connection state to find where the message was coming&lt;br/&gt;&amp;gt; from and relays `onion_message_drop` to the last sender, halving their rate limits with that peer.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If the sender doesn&amp;#39;t overflow the rate limit again, the receiver should double the rate limit&lt;br/&gt;&amp;gt; after 30 seconds, until it reaches the default rate limit again.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The flow will look like:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Alice                      Bob                      Carol&lt;br/&gt;&amp;gt;   |                         |                         |&lt;br/&gt;&amp;gt;   |      onion_message      |                         |&lt;br/&gt;&amp;gt;   |------------------------&amp;gt;|                         |&lt;br/&gt;&amp;gt;   |                         |      onion_message      |&lt;br/&gt;&amp;gt;   |                         |------------------------&amp;gt;|&lt;br/&gt;&amp;gt;   |                         |    onion_message_drop   |&lt;br/&gt;&amp;gt;   |                         |&amp;lt;------------------------|&lt;br/&gt;&amp;gt;   |    onion_message_drop   |                         |&lt;br/&gt;&amp;gt;   |&amp;lt;------------------------|                         |&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The `shared_secret_hash` field contains a BIP 340 tagged hash of the Sphinx shared secret of the&lt;br/&gt;&amp;gt; rate limiting peer (in the example above, Carol):&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * `shared_secret_hash = SHA256(SHA256(&amp;#34;onion_message_drop&amp;#34;) || SHA256(&amp;#34;onion_message_drop&amp;#34;) || sphinx_shared_secret)`&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This value is known by the node that created the onion message: if `onion_message_drop` propagates&lt;br/&gt;&amp;gt; all the way back to them, it lets them know which part of the route is congested, allowing them&lt;br/&gt;&amp;gt; to retry through a different path.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Whenever there is some latency between nodes and many onion messages, `onion_message_drop` may&lt;br/&gt;&amp;gt; be relayed to the incorrect incoming peer (since we only store the `node_id` of the _last_ incoming&lt;br/&gt;&amp;gt; peer in our outgoing connection state). The following example highlights this:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  Eve                       Bob                      Carol&lt;br/&gt;&amp;gt;   |      onion_message      |                         |&lt;br/&gt;&amp;gt;   |------------------------&amp;gt;|      onion_message      |&lt;br/&gt;&amp;gt;   |      onion_message      |------------------------&amp;gt;|&lt;br/&gt;&amp;gt;   |------------------------&amp;gt;|      onion_message      |&lt;br/&gt;&amp;gt;   |      onion_message      |------------------------&amp;gt;|&lt;br/&gt;&amp;gt;   |------------------------&amp;gt;|      onion_message      |&lt;br/&gt;&amp;gt;                             |------------------------&amp;gt;|&lt;br/&gt;&amp;gt; Alice                       |    onion_message_drop   |&lt;br/&gt;&amp;gt;   |      onion_message      |                    &#43;----|&lt;br/&gt;&amp;gt;   |------------------------&amp;gt;|      onion_message |    |&lt;br/&gt;&amp;gt;   |                         |--------------------|---&amp;gt;|&lt;br/&gt;&amp;gt;   |                         |                    |    |&lt;br/&gt;&amp;gt;   |                         |                    |    |&lt;br/&gt;&amp;gt;   |                         |                    |    |&lt;br/&gt;&amp;gt;   |    onion_message_drop   |&amp;lt;-------------------&#43;    |&lt;br/&gt;&amp;gt;   |&amp;lt;------------------------|                         |&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In this example, Eve is spamming but `onion_message_drop` is propagated back to Alice instead.&lt;br/&gt;&amp;gt; However, this scheme will _statistically_ penalize the right incoming peer (with a probability&lt;br/&gt;&amp;gt; depending on the volume of onion messages that the spamming peer is generating compared to the&lt;br/&gt;&amp;gt; volume of legitimate onion messages).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It is an interesting research problem to find formulas for those probabilities to evaluate how&lt;br/&gt;&amp;gt; efficient this will be against various types of spam. We hope researchers on this list will be&lt;br/&gt;&amp;gt; interested in looking into it and will come up with a good model to evaluate that scheme.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; To increase the accuracy of attributing `onion_message_drop`, more data could be stored in the&lt;br/&gt;&amp;gt; future if it becomes necessary. We need more research to quantify how much accuracy would be&lt;br/&gt;&amp;gt; gained by storing more data and making the protocol more complex.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; Bastien&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [1] &lt;a href=&#34;https://gist.github.com/t-bast/e37ee9249d9825e51d260335c94f0fcf&#34;&gt;https://gist.github.com/t-bast/e37ee9249d9825e51d260335c94f0fcf&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20220705/ce8d1fbe/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20220705/ce8d1fbe/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:06:36Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqst6p96wqd73r4e9uwfk6qscv3drsshaa4mmtftjsmay6dx8m9hkeczypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zt935rl</id>
    
      <title type="html">📅 Original date posted:2022-03-07 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqst6p96wqd73r4e9uwfk6qscv3drsshaa4mmtftjsmay6dx8m9hkeczypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zt935rl" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsgtwwxv8em0z2v3ya3h34f6xc357s3fudtrn5wj7xkm4jxgaza7mgtqfjd6&#39;&gt;nevent1q…fjd6&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-03-07&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Eugene,&lt;br/&gt;&lt;br/&gt;&amp;gt; Since the remote party gives them a signature, after the timeout, the&lt;br/&gt;offering party can&lt;br/&gt;claim with the remote&amp;#39;s signature &#43; preimage, but can only spend with the&lt;br/&gt;HTLC-timeout transaction because of SIGHASH_ALL.&lt;br/&gt;&lt;br/&gt;I&amp;#39;ve not exercised the witness against our test framework though the&lt;br/&gt;description sounds to me correct.&lt;br/&gt;&lt;br/&gt;The offering counterparty spends the offered HTLC output with a&lt;br/&gt;HTLC-timeout transaction where the witness is &amp;lt;&amp;lt;remote_sig&amp;gt;&lt;br/&gt;&amp;lt;payment_preimage&amp;gt;&amp;gt;. SIGHASH_ALL is not committing to the spent Script&lt;br/&gt;branch intended to be used. As you raised, it doesn&amp;#39;t alleviate the&lt;br/&gt;offering counterparty to respect the CLTV delay and as such the offered&lt;br/&gt;HTLC timespan cannot be shortened. The implication I can think of, in case&lt;br/&gt;of competing HTLC race, once the absolute timelock is expired, the offering&lt;br/&gt;counterparty is able to compete against the receiving one with a more&lt;br/&gt;feerate-efficient witness. However, from a receiving counterparty safety&lt;br/&gt;viewpoint, if you&amp;#39;re already suffering a contest, it means your HTLC-claim&lt;br/&gt;on your own local commitment transaction inbound HTLC output has been&lt;br/&gt;inefficient, and your fee-bumping strategy is to blame.&lt;br/&gt;&lt;br/&gt;If we think the issue is relevant, I believe splitting the Script branches&lt;br/&gt;in two tapleaves and having bip342 signature digest committing to the&lt;br/&gt;tapleaf_hash solves it.&lt;br/&gt;&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;Le lun. 7 mars 2022 à 15:27, Eugene Siegel &amp;lt;elzeigel at gmail.com&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; I&amp;#39;m not sure if this is known, but I&amp;#39;m pretty sure it&amp;#39;s benign and so I&lt;br/&gt;&amp;gt; thought I&amp;#39;d share since I found it interesting and maybe someone else will&lt;br/&gt;&amp;gt; too. I&amp;#39;m not sure if this is already known either.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/lightning/bolts/blob/master/03-transactions.md#offered-htlc-outputs&#34;&gt;https://github.com/lightning/bolts/blob/master/03-transactions.md#offered-htlc-outputs&lt;/a&gt;&lt;br/&gt;&amp;gt; Offered HTLCs have three claim paths: the revocation case, the offerer&lt;br/&gt;&amp;gt; claiming through the HTLC-timeout transaction, and the receiver claiming&lt;br/&gt;&amp;gt; via their sig &#43; preimage. The offering party can claim via the HTLC-timeout&lt;br/&gt;&amp;gt; case on their commitment transaction with their signature and the remote&amp;#39;s&lt;br/&gt;&amp;gt; signature (SIGHASH_ALL) after the cltv_expiry timeout. Since the remote&lt;br/&gt;&amp;gt; party gives them a signature, after the timeout, the offering party can&lt;br/&gt;&amp;gt; claim with the remote&amp;#39;s signature &#43; preimage, but can only spend with the&lt;br/&gt;&amp;gt; HTLC-timeout transaction because of SIGHASH_ALL. This assumes that the&lt;br/&gt;&amp;gt; remote party doesn&amp;#39;t claim it first. I can&amp;#39;t think of any cases where the&lt;br/&gt;&amp;gt; offering party would know the preimage AND want to force close, so that&amp;#39;s&lt;br/&gt;&amp;gt; why I think it&amp;#39;s benign. It does make the witness smaller. The same trick&lt;br/&gt;&amp;gt; isn&amp;#39;t possible with the Received HTLC&amp;#39;s due to OP_CHECKLOCKTIMEVERIFY.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Eugene (Crypt-iQ on github)&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20220307/b55f369a/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20220307/b55f369a/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:05:28Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsvqmtwlkhpvn63h9wrskcrflv5dwf6pkecygrue9tmlvffzh69ylszypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zs3z50y</id>
    
      <title type="html">📅 Original date posted:2021-10-04 📝 Original message: &amp;gt; ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsvqmtwlkhpvn63h9wrskcrflv5dwf6pkecygrue9tmlvffzh69ylszypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zs3z50y" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs0u3sf6943erguxdnp74vgcm9n2szlud07affj7lxk9dak49cvqgceqdu5g&#39;&gt;nevent1q…du5g&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-10-04&lt;br/&gt;📝 Original message:&lt;br/&gt;&amp;gt; * C-lightning v0.10.2 (CVE-2021-41593)&lt;br/&gt;&lt;br/&gt;Thanks I was unsure about the exact version number. I&amp;#39;ll update the CVE&lt;br/&gt;quickly.&lt;br/&gt;&lt;br/&gt;Le lun. 4 oct. 2021 à 14:16, lisa neigut &amp;lt;niftynei at gmail.com&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; FYI the next version of c-lightning will contain the proposed&lt;br/&gt;&amp;gt; `max_dust_htlc_exposure_msat` as outlined in #919&lt;br/&gt;&amp;gt; &amp;lt;&lt;a href=&#34;https://github.com/lightningnetwork/lightning-rfc/pull/919/files&amp;gt&#34;&gt;https://github.com/lightningnetwork/lightning-rfc/pull/919/files&amp;gt&lt;/a&gt;;; the&lt;br/&gt;&amp;gt; given expected vulnerabilities patch table should have reflected this.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; The vulnerabilities are expected to be patched in:&lt;br/&gt;&amp;gt; &amp;gt; * Eclair: v0.6.2&#43; (CVE-2021-41591)&lt;br/&gt;&amp;gt; &amp;gt; * LND: v0.13.3&#43; (CVE-2021-41592)&lt;br/&gt;&amp;gt; &amp;gt; * LDK: v0.0.102 (not released as production software yet)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * C-lightning v0.10.2 (CVE-2021-41593)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Lisa&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Mon, Oct 4, 2021 at 10:09 AM Antoine Riard &amp;lt;antoine.riard at gmail.com&amp;gt;&lt;br/&gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Hi,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I&amp;#39;m writing a report to disclose specification-level vulnerabilities&lt;br/&gt;&amp;gt;&amp;gt; affecting the Lightning implementations.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; The vulnerabilities are expected to be patched in:&lt;br/&gt;&amp;gt;&amp;gt; * Eclair: v0.6.2&#43; (CVE-2021-41591)&lt;br/&gt;&amp;gt;&amp;gt; * LND: v0.13.3&#43; (CVE-2021-41592)&lt;br/&gt;&amp;gt;&amp;gt; * LDK: v0.0.102 (not released as production software yet)&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; The vulnerabilities are also affecting c-lightning (CVE-2021-41593).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Those vulnerabilities can be exploited in a wide range of attacks, going&lt;br/&gt;&amp;gt;&amp;gt; from fee blackmailing of node operators, burning liquidity of your&lt;br/&gt;&amp;gt;&amp;gt; competing LSPs or even stealing your counterparty channel balance if you&lt;br/&gt;&amp;gt;&amp;gt; avail mining capabilities. Exercise of the vulnerability revealed that a&lt;br/&gt;&amp;gt;&amp;gt; majority of the balance funds can be at loss.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Credit to Eugene Siegel (Crypt-iQ) for reporting the trimmed-to-dust&lt;br/&gt;&amp;gt;&amp;gt; exploitation and multiple insights about attacks.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Thanks to Bastien Teinturier and Matt Corallo for numerous contributions&lt;br/&gt;&amp;gt;&amp;gt; about mitigations development.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; # Problem&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; The current BOLT specification only requires Alice&amp;#39;s&lt;br/&gt;&amp;gt;&amp;gt; `dust_limit_satoshis` (applied on Alice&amp;#39;s commitment) to be under Alice&amp;#39;s&lt;br/&gt;&amp;gt;&amp;gt; `channel_reserve_satoshis` (applied on Bob). As those 2 parameters are&lt;br/&gt;&amp;gt;&amp;gt; selectable by Alice, she can inflate the dust limit until reaching the&lt;br/&gt;&amp;gt;&amp;gt; implementation-defined max value (e.g LND: 20% of chan capacity, LDK: 100%&lt;br/&gt;&amp;gt;&amp;gt; of chan capacity).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Any in-flight incoming HTLC under Alice&amp;#39;s dust limit will be converted as&lt;br/&gt;&amp;gt;&amp;gt; miner fees on Alice&amp;#39;s commitment. This HTLC is deducted from Bob&amp;#39;s balance&lt;br/&gt;&amp;gt;&amp;gt; and as such they&amp;#39;re still owned by Bob, until resolution (i.e a RAA&lt;br/&gt;&amp;gt;&amp;gt; removing the HTLC from Alice&amp;#39;s commitment). This limitation only applies&lt;br/&gt;&amp;gt;&amp;gt; per-HTLC. No implementation enforces a limit on the sum of in-flight HTLCs&lt;br/&gt;&amp;gt;&amp;gt; burned as fees. Therefore, Alice is free to inflict a substantial loss to&lt;br/&gt;&amp;gt;&amp;gt; Bob funds by publishing her commitment on-chain.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; In-flight outgoing HTLC are also committed as fees on Bob&amp;#39;s commitment if&lt;br/&gt;&amp;gt;&amp;gt; they&amp;#39;re under Bob&amp;#39;s threshold. Alice can also exploit from this angle by&lt;br/&gt;&amp;gt;&amp;gt; circular routing HTLCs until reaching Bob&amp;#39;s&lt;br/&gt;&amp;gt;&amp;gt; `max_htlc_value_in_flight_msat`. Alice withholds HTLCs resolution until Bob&lt;br/&gt;&amp;gt;&amp;gt; goes on-chain to timeout an offered HTLC or claim an accepted HTLC.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Dust HTLC processing can be also exploited at `update_fee` reception.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; As the BOLT3&amp;#39;s fees computation encompasses the negotiated feerate from&lt;br/&gt;&amp;gt;&amp;gt; `update_fee` for the 2nd-stage HTLC fees to decide if the HTLC must be&lt;br/&gt;&amp;gt;&amp;gt; trimmed, the amount of balance at risk is a function of current mempool&lt;br/&gt;&amp;gt;&amp;gt; feerates.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; The maximum of funds at risk on a counterparty commitment is:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; counterparty&amp;#39;s `max_accepted_htlcs` * (`htlc_success_tx_kw` * opener&amp;#39;s&lt;br/&gt;&amp;gt;&amp;gt; `feerate_per_kw` &#43; counterparty&amp;#39;s `dust_limit_satoshis`) &#43; holder&amp;#39;s&lt;br/&gt;&amp;gt;&amp;gt; `max_accepted_htlcs` * (`htlc_timeout_tx_kw` * opener&amp;#39;s `feerate_per_kw` &#43;&lt;br/&gt;&amp;gt;&amp;gt; counterparty&amp;#39;s `dust_limit_satoshis`)&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; If the opener is also the attacker, the negotiated feerate can be&lt;br/&gt;&amp;gt;&amp;gt; manipulated beyond the &amp;#34;honest&amp;#34; mempool feerates only upper bounded&lt;br/&gt;&amp;gt;&amp;gt; implementation-defined value (before fixes, LDK: 2 * high-feerate of our&lt;br/&gt;&amp;gt;&amp;gt; fee-estimator). If the opener is the victim, the negotiated feerate is&lt;br/&gt;&amp;gt;&amp;gt; still a safety concern in case of spontaneous mempool spikes.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Note, `anchors_zero_htlc_fee` channels are not affected by the feerate&lt;br/&gt;&amp;gt;&amp;gt; inflation as the trimmed-to-dust fee computation mechanism for 2nd-stage&lt;br/&gt;&amp;gt;&amp;gt; HTLC is removed. They&amp;#39;re still at risk of the sum of the HTLCs under the&lt;br/&gt;&amp;gt;&amp;gt; dust limit being maliciously burned.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; # Solution&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; A first mitigation is to verify the counterparty&amp;#39;s announced&lt;br/&gt;&amp;gt;&amp;gt; `dust_limit_satoshis` at channel opening (`open_channel`/`accept_channel`)&lt;br/&gt;&amp;gt;&amp;gt; reception and reject if it&amp;#39;s estimated too large (see #894)&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; For LDK, we choose the value of 660 satoshis as it&amp;#39;s beyond the highest&lt;br/&gt;&amp;gt;&amp;gt; dust threshold enforced by Bitcoin Core (p2pkh: 546) with a margin of&lt;br/&gt;&amp;gt;&amp;gt; safety. Propagation of Lightning time-sensitive transactions shouldn&amp;#39;t be&lt;br/&gt;&amp;gt;&amp;gt; affected.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; A second mitigation is to define a new configurable limit&lt;br/&gt;&amp;gt;&amp;gt; `max_dust_htlc_exposure` and apply this one at incoming and outgoing of&lt;br/&gt;&amp;gt;&amp;gt; HTLC.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; For LDK, we choose the value of 5 000 000 milli-satoshis as we gauged&lt;br/&gt;&amp;gt;&amp;gt; this value as a substantial loss for our class of users. Setting this too&lt;br/&gt;&amp;gt;&amp;gt; low may prevent the sending or receipt of low-value HTLCs on high-traffic&lt;br/&gt;&amp;gt;&amp;gt; nodes. A node operator should fine-tune this value in function of what&lt;br/&gt;&amp;gt;&amp;gt; qualifies as an acceptable loss.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; We would like to ensure that the node isn&amp;#39;t suddenly exposed to&lt;br/&gt;&amp;gt;&amp;gt; significantly more trimmed balance if the feerate increases when we have&lt;br/&gt;&amp;gt;&amp;gt; several HTLCs pending which are near the dust limit.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; To achieve this goal, we introduce a new `dust_buffer_feerate` defined as&lt;br/&gt;&amp;gt;&amp;gt; the maximum of either 2530 sats per kWU or 125% of the current&lt;br/&gt;&amp;gt;&amp;gt; `feerate_per_kw` (implementation-defined values).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Then, upon an incoming HTLC, if the HTLC&amp;#39;s `amount_msat` is inferior to&lt;br/&gt;&amp;gt;&amp;gt; the counterparty&amp;#39;s `dust_limit_satoshis` plus the HTLC-timeout fee at the&lt;br/&gt;&amp;gt;&amp;gt; `dust_buffer_feerate`. If the `amount_msat` plus the&lt;br/&gt;&amp;gt;&amp;gt; `dust_balance_on_counterparty_tx` is superior to `max_dust_htlc_exposure`,&lt;br/&gt;&amp;gt;&amp;gt; the HTLC should be failed once it&amp;#39;s committed.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Upon an outgoing HTLC, if the HTLC&amp;#39;s `amount_msat` is inferior to the&lt;br/&gt;&amp;gt;&amp;gt; counterparty&amp;#39;s `dust_limit_satoshis`  plus the HTLC-success fee at the&lt;br/&gt;&amp;gt;&amp;gt; `dust_buffer_feerate`. If the `amount_msat` plus the&lt;br/&gt;&amp;gt;&amp;gt; `dust_balance_on_counterparty_tx` is superior to `max_dust_htlc_exposure`,&lt;br/&gt;&amp;gt;&amp;gt; the HTLC should not be sent and fail without forwarding.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; The check symmetry must also be applied on holder commitment&lt;br/&gt;&amp;gt;&amp;gt; transactions. See PR #919 for more details.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; A last mitigation is ensuring that at `update_fee` reception, the pending&lt;br/&gt;&amp;gt;&amp;gt; `dust_balance` at the new proposed feerate isn&amp;#39;t superior to&lt;br/&gt;&amp;gt;&amp;gt; `max_dust_htlc_exposure_msat`.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; # Background&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; The dust limit is a base layer policy stopping the relay of a transaction&lt;br/&gt;&amp;gt;&amp;gt; if one of its outputs is under a given threshold. The goal of this policy&lt;br/&gt;&amp;gt;&amp;gt; is to prevent the pollution of the UTXO set with low-value outputs and as&lt;br/&gt;&amp;gt;&amp;gt; such increase the amount of work done by full-nodes.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Lightning commitment transactions should be able to propagate at any&lt;br/&gt;&amp;gt;&amp;gt; point during the channel lifetime to unilaterally enforce on-chain a&lt;br/&gt;&amp;gt;&amp;gt; balance. A Lightning commitment transaction with one of its outputs below&lt;br/&gt;&amp;gt;&amp;gt; the dust limit would fail to relay and thus jeopardizes funds safety.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; To prevent this, BOLT2 requires counterparties to announce a&lt;br/&gt;&amp;gt;&amp;gt; `dust_limit_satoshis` during channel opening (at&lt;br/&gt;&amp;gt;&amp;gt; `open_channel`/`accept_channel` exchange). This `dust_limit_satoshis` must&lt;br/&gt;&amp;gt;&amp;gt; be under the same party&amp;#39;s `channel_reserve_satoshis`. This value is static&lt;br/&gt;&amp;gt;&amp;gt; for the channel lifetime.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; During commitment signatures exchange, each counterparty&amp;#39;s limit is&lt;br/&gt;&amp;gt;&amp;gt; applied on each counterparty&amp;#39;s commitment (e.g A&amp;#39;s `dust_limit_satoshis` is&lt;br/&gt;&amp;gt;&amp;gt; applied on A&amp;#39;s commitment, though both A and B have to generate and sign&lt;br/&gt;&amp;gt;&amp;gt; the transaction). An output below this limit is trimmed to fees and won&amp;#39;t&lt;br/&gt;&amp;gt;&amp;gt; materialize on the commitment.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; The specification didn&amp;#39;t require that the `open_channel`/`accept_channel`&lt;br/&gt;&amp;gt;&amp;gt; receiver verify that the announced `dust_limit_satoshis` isn&amp;#39;t too large.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; The specification didn&amp;#39;t require that the sum of the dust HTLC committed&lt;br/&gt;&amp;gt;&amp;gt; as fees was verified against an upper bound.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; # Discovery&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Vulnerabilities around our dust HTLC processing have been known for years&lt;br/&gt;&amp;gt;&amp;gt; by some LN developers/researchers.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; During Q1 2019, private discussions on the Rust-Lightning-side (LDK&lt;br/&gt;&amp;gt;&amp;gt; before marketing rebranding) about potential safety risks around dust HTLC&lt;br/&gt;&amp;gt;&amp;gt; processing.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; In November 2019, Rusty Russell (c-lightning) opened an issue against the&lt;br/&gt;&amp;gt;&amp;gt; specification mentioning the lack of check of counterparty&amp;#39;s dust limit&lt;br/&gt;&amp;gt;&amp;gt; (#696).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; In May 2020, I published a high-level attack scenario &amp;#34;Miners Dust&lt;br/&gt;&amp;gt;&amp;gt; Inflation attacks on Lightning Network&amp;#34;, leveraging this lack.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; In February 2021, I did a test of the first vulnerability against LND&lt;br/&gt;&amp;gt;&amp;gt; software and successfully burnt the majority of the targeted node balance&lt;br/&gt;&amp;gt;&amp;gt; in fees. As it sounds to me like a check missing in the specification, I&lt;br/&gt;&amp;gt;&amp;gt; notified CL/LND/Eclair/LDK maintainers. Mitigations started to be developed&lt;br/&gt;&amp;gt;&amp;gt; on the LDK-side.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; In July 2021, in the context of `option_dusty_htlcs_uncounted`&lt;br/&gt;&amp;gt;&amp;gt; discussions, Eugene Spiegel (LND) reported on how to exploit the&lt;br/&gt;&amp;gt;&amp;gt; trimmed-to-dust mechanism at `update_fee` reception. Discussions followed&lt;br/&gt;&amp;gt;&amp;gt; on the best way to mitigate this new vector.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; During August 2021, mitigations were developed and released on the&lt;br/&gt;&amp;gt;&amp;gt; LDK-side. vulnerabilities were disclosed to other Lightning projects (Muun&lt;br/&gt;&amp;gt;&amp;gt; wallet, Electrum). From the LDK-side, a public disclosure date was proposed.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Still during August 2021, the Bitcoin Core dust limit was actively&lt;br/&gt;&amp;gt;&amp;gt; discussed on the mailing list. Changes of this dust limit would have&lt;br/&gt;&amp;gt;&amp;gt; affected the ongoing development of the mitigations.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; While this report highlights the lack of well-defined communication&lt;br/&gt;&amp;gt;&amp;gt; process across Lightning teams,  developers from 3 different&lt;br/&gt;&amp;gt;&amp;gt; implementations have actively participated in the vulnerabilities&lt;br/&gt;&amp;gt;&amp;gt; diagnostic and mitigations development of those long-standing specification&lt;br/&gt;&amp;gt;&amp;gt; issues affecting the whole Lightning ecosystem.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; All mistakes and opinions are my own and please verify any information&lt;br/&gt;&amp;gt;&amp;gt; reported.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; # Timeline&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; * 2021-04-19: Working exploit of the vulnerability against LND,&lt;br/&gt;&amp;gt;&amp;gt; CL/LND/Eclair/LDK maintainers notified&lt;br/&gt;&amp;gt;&amp;gt; * 2021-07-21: Finding by Eugene Siegel on how to exploit the&lt;br/&gt;&amp;gt;&amp;gt; trimmed-to-dust mechanism at `update_fee` reception&lt;br/&gt;&amp;gt;&amp;gt; * 2021-08-11: BOLT PR #894 opened by Bastien Teinturier, covering the&lt;br/&gt;&amp;gt;&amp;gt; lack of verification of counterparty per-HTLC `dust_limit_satoshis`&lt;br/&gt;&amp;gt;&amp;gt; * 2021-08-16: Mitigations developed in LDK, communication of a public&lt;br/&gt;&amp;gt;&amp;gt; disclosure date&lt;br/&gt;&amp;gt;&amp;gt; * 2021-08-26: Notification to Muun wallet, non-affected&lt;br/&gt;&amp;gt;&amp;gt; * 2021-08-27: Notification to Electrum wallet&lt;br/&gt;&amp;gt;&amp;gt; * 2021-10-04: Full Disclosure of CVEs&lt;br/&gt;&amp;gt;&amp;gt; * 2021-10-04: Submit BOLT PR #919 covering the remaining vulnerabilities&lt;br/&gt;&amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20211004/7a56a20b/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20211004/7a56a20b/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:04:00Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsrpw3sy4eqm6garkgueth4glk8p9xyvj0gha3tjmvck0znfeczcuczypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zv6v6l0</id>
    
      <title type="html">📅 Original date posted:2021-10-04 📝 Original message: ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsrpw3sy4eqm6garkgueth4glk8p9xyvj0gha3tjmvck0znfeczcuczypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zv6v6l0" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsvqmtwlkhpvn63h9wrskcrflv5dwf6pkecygrue9tmlvffzh69ylskhjf5x&#39;&gt;nevent1q…jf5x&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-10-04&lt;br/&gt;📝 Original message:&lt;br/&gt;I&amp;#39;ve been informed by Mitre, the correct CVE assignment:&lt;br/&gt;* c-lightning : CVE-2021-41592&lt;br/&gt;* lnd: CVE-2021-41593&lt;br/&gt;&lt;br/&gt;Not the assignement disclosed in the initial mail.&lt;br/&gt;&lt;br/&gt;Le lun. 4 oct. 2021 à 11:09, Antoine Riard &amp;lt;antoine.riard at gmail.com&amp;gt; a&lt;br/&gt;écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I&amp;#39;m writing a report to disclose specification-level vulnerabilities&lt;br/&gt;&amp;gt; affecting the Lightning implementations.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The vulnerabilities are expected to be patched in:&lt;br/&gt;&amp;gt; * Eclair: v0.6.2&#43; (CVE-2021-41591)&lt;br/&gt;&amp;gt; * LND: v0.13.3&#43; (CVE-2021-41592)&lt;br/&gt;&amp;gt; * LDK: v0.0.102 (not released as production software yet)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The vulnerabilities are also affecting c-lightning (CVE-2021-41593).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Those vulnerabilities can be exploited in a wide range of attacks, going&lt;br/&gt;&amp;gt; from fee blackmailing of node operators, burning liquidity of your&lt;br/&gt;&amp;gt; competing LSPs or even stealing your counterparty channel balance if you&lt;br/&gt;&amp;gt; avail mining capabilities. Exercise of the vulnerability revealed that a&lt;br/&gt;&amp;gt; majority of the balance funds can be at loss.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Credit to Eugene Siegel (Crypt-iQ) for reporting the trimmed-to-dust&lt;br/&gt;&amp;gt; exploitation and multiple insights about attacks.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Thanks to Bastien Teinturier and Matt Corallo for numerous contributions&lt;br/&gt;&amp;gt; about mitigations development.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # Problem&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The current BOLT specification only requires Alice&amp;#39;s `dust_limit_satoshis`&lt;br/&gt;&amp;gt; (applied on Alice&amp;#39;s commitment) to be under Alice&amp;#39;s&lt;br/&gt;&amp;gt; `channel_reserve_satoshis` (applied on Bob). As those 2 parameters are&lt;br/&gt;&amp;gt; selectable by Alice, she can inflate the dust limit until reaching the&lt;br/&gt;&amp;gt; implementation-defined max value (e.g LND: 20% of chan capacity, LDK: 100%&lt;br/&gt;&amp;gt; of chan capacity).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Any in-flight incoming HTLC under Alice&amp;#39;s dust limit will be converted as&lt;br/&gt;&amp;gt; miner fees on Alice&amp;#39;s commitment. This HTLC is deducted from Bob&amp;#39;s balance&lt;br/&gt;&amp;gt; and as such they&amp;#39;re still owned by Bob, until resolution (i.e a RAA&lt;br/&gt;&amp;gt; removing the HTLC from Alice&amp;#39;s commitment). This limitation only applies&lt;br/&gt;&amp;gt; per-HTLC. No implementation enforces a limit on the sum of in-flight HTLCs&lt;br/&gt;&amp;gt; burned as fees. Therefore, Alice is free to inflict a substantial loss to&lt;br/&gt;&amp;gt; Bob funds by publishing her commitment on-chain.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In-flight outgoing HTLC are also committed as fees on Bob&amp;#39;s commitment if&lt;br/&gt;&amp;gt; they&amp;#39;re under Bob&amp;#39;s threshold. Alice can also exploit from this angle by&lt;br/&gt;&amp;gt; circular routing HTLCs until reaching Bob&amp;#39;s&lt;br/&gt;&amp;gt; `max_htlc_value_in_flight_msat`. Alice withholds HTLCs resolution until Bob&lt;br/&gt;&amp;gt; goes on-chain to timeout an offered HTLC or claim an accepted HTLC.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Dust HTLC processing can be also exploited at `update_fee` reception.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; As the BOLT3&amp;#39;s fees computation encompasses the negotiated feerate from&lt;br/&gt;&amp;gt; `update_fee` for the 2nd-stage HTLC fees to decide if the HTLC must be&lt;br/&gt;&amp;gt; trimmed, the amount of balance at risk is a function of current mempool&lt;br/&gt;&amp;gt; feerates.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The maximum of funds at risk on a counterparty commitment is:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; counterparty&amp;#39;s `max_accepted_htlcs` * (`htlc_success_tx_kw` * opener&amp;#39;s&lt;br/&gt;&amp;gt; `feerate_per_kw` &#43; counterparty&amp;#39;s `dust_limit_satoshis`) &#43; holder&amp;#39;s&lt;br/&gt;&amp;gt; `max_accepted_htlcs` * (`htlc_timeout_tx_kw` * opener&amp;#39;s `feerate_per_kw` &#43;&lt;br/&gt;&amp;gt; counterparty&amp;#39;s `dust_limit_satoshis`)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If the opener is also the attacker, the negotiated feerate can be&lt;br/&gt;&amp;gt; manipulated beyond the &amp;#34;honest&amp;#34; mempool feerates only upper bounded&lt;br/&gt;&amp;gt; implementation-defined value (before fixes, LDK: 2 * high-feerate of our&lt;br/&gt;&amp;gt; fee-estimator). If the opener is the victim, the negotiated feerate is&lt;br/&gt;&amp;gt; still a safety concern in case of spontaneous mempool spikes.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Note, `anchors_zero_htlc_fee` channels are not affected by the feerate&lt;br/&gt;&amp;gt; inflation as the trimmed-to-dust fee computation mechanism for 2nd-stage&lt;br/&gt;&amp;gt; HTLC is removed. They&amp;#39;re still at risk of the sum of the HTLCs under the&lt;br/&gt;&amp;gt; dust limit being maliciously burned.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # Solution&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A first mitigation is to verify the counterparty&amp;#39;s announced&lt;br/&gt;&amp;gt; `dust_limit_satoshis` at channel opening (`open_channel`/`accept_channel`)&lt;br/&gt;&amp;gt; reception and reject if it&amp;#39;s estimated too large (see #894)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; For LDK, we choose the value of 660 satoshis as it&amp;#39;s beyond the highest&lt;br/&gt;&amp;gt; dust threshold enforced by Bitcoin Core (p2pkh: 546) with a margin of&lt;br/&gt;&amp;gt; safety. Propagation of Lightning time-sensitive transactions shouldn&amp;#39;t be&lt;br/&gt;&amp;gt; affected.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A second mitigation is to define a new configurable limit&lt;br/&gt;&amp;gt; `max_dust_htlc_exposure` and apply this one at incoming and outgoing of&lt;br/&gt;&amp;gt; HTLC.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; For LDK, we choose the value of 5 000 000 milli-satoshis as we gauged this&lt;br/&gt;&amp;gt; value as a substantial loss for our class of users. Setting this too low&lt;br/&gt;&amp;gt; may prevent the sending or receipt of low-value HTLCs on high-traffic&lt;br/&gt;&amp;gt; nodes. A node operator should fine-tune this value in function of what&lt;br/&gt;&amp;gt; qualifies as an acceptable loss.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; We would like to ensure that the node isn&amp;#39;t suddenly exposed to&lt;br/&gt;&amp;gt; significantly more trimmed balance if the feerate increases when we have&lt;br/&gt;&amp;gt; several HTLCs pending which are near the dust limit.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; To achieve this goal, we introduce a new `dust_buffer_feerate` defined as&lt;br/&gt;&amp;gt; the maximum of either 2530 sats per kWU or 125% of the current&lt;br/&gt;&amp;gt; `feerate_per_kw` (implementation-defined values).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Then, upon an incoming HTLC, if the HTLC&amp;#39;s `amount_msat` is inferior to&lt;br/&gt;&amp;gt; the counterparty&amp;#39;s `dust_limit_satoshis` plus the HTLC-timeout fee at the&lt;br/&gt;&amp;gt; `dust_buffer_feerate`. If the `amount_msat` plus the&lt;br/&gt;&amp;gt; `dust_balance_on_counterparty_tx` is superior to `max_dust_htlc_exposure`,&lt;br/&gt;&amp;gt; the HTLC should be failed once it&amp;#39;s committed.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Upon an outgoing HTLC, if the HTLC&amp;#39;s `amount_msat` is inferior to the&lt;br/&gt;&amp;gt; counterparty&amp;#39;s `dust_limit_satoshis`  plus the HTLC-success fee at the&lt;br/&gt;&amp;gt; `dust_buffer_feerate`. If the `amount_msat` plus the&lt;br/&gt;&amp;gt; `dust_balance_on_counterparty_tx` is superior to `max_dust_htlc_exposure`,&lt;br/&gt;&amp;gt; the HTLC should not be sent and fail without forwarding.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The check symmetry must also be applied on holder commitment transactions.&lt;br/&gt;&amp;gt; See PR #919 for more details.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A last mitigation is ensuring that at `update_fee` reception, the pending&lt;br/&gt;&amp;gt; `dust_balance` at the new proposed feerate isn&amp;#39;t superior to&lt;br/&gt;&amp;gt; `max_dust_htlc_exposure_msat`.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # Background&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The dust limit is a base layer policy stopping the relay of a transaction&lt;br/&gt;&amp;gt; if one of its outputs is under a given threshold. The goal of this policy&lt;br/&gt;&amp;gt; is to prevent the pollution of the UTXO set with low-value outputs and as&lt;br/&gt;&amp;gt; such increase the amount of work done by full-nodes.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Lightning commitment transactions should be able to propagate at any point&lt;br/&gt;&amp;gt; during the channel lifetime to unilaterally enforce on-chain a balance. A&lt;br/&gt;&amp;gt; Lightning commitment transaction with one of its outputs below the dust&lt;br/&gt;&amp;gt; limit would fail to relay and thus jeopardizes funds safety.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; To prevent this, BOLT2 requires counterparties to announce a&lt;br/&gt;&amp;gt; `dust_limit_satoshis` during channel opening (at&lt;br/&gt;&amp;gt; `open_channel`/`accept_channel` exchange). This `dust_limit_satoshis` must&lt;br/&gt;&amp;gt; be under the same party&amp;#39;s `channel_reserve_satoshis`. This value is static&lt;br/&gt;&amp;gt; for the channel lifetime.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; During commitment signatures exchange, each counterparty&amp;#39;s limit is&lt;br/&gt;&amp;gt; applied on each counterparty&amp;#39;s commitment (e.g A&amp;#39;s `dust_limit_satoshis` is&lt;br/&gt;&amp;gt; applied on A&amp;#39;s commitment, though both A and B have to generate and sign&lt;br/&gt;&amp;gt; the transaction). An output below this limit is trimmed to fees and won&amp;#39;t&lt;br/&gt;&amp;gt; materialize on the commitment.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The specification didn&amp;#39;t require that the `open_channel`/`accept_channel`&lt;br/&gt;&amp;gt; receiver verify that the announced `dust_limit_satoshis` isn&amp;#39;t too large.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The specification didn&amp;#39;t require that the sum of the dust HTLC committed&lt;br/&gt;&amp;gt; as fees was verified against an upper bound.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # Discovery&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Vulnerabilities around our dust HTLC processing have been known for years&lt;br/&gt;&amp;gt; by some LN developers/researchers.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; During Q1 2019, private discussions on the Rust-Lightning-side (LDK before&lt;br/&gt;&amp;gt; marketing rebranding) about potential safety risks around dust HTLC&lt;br/&gt;&amp;gt; processing.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In November 2019, Rusty Russell (c-lightning) opened an issue against the&lt;br/&gt;&amp;gt; specification mentioning the lack of check of counterparty&amp;#39;s dust limit&lt;br/&gt;&amp;gt; (#696).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In May 2020, I published a high-level attack scenario &amp;#34;Miners Dust&lt;br/&gt;&amp;gt; Inflation attacks on Lightning Network&amp;#34;, leveraging this lack.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In February 2021, I did a test of the first vulnerability against LND&lt;br/&gt;&amp;gt; software and successfully burnt the majority of the targeted node balance&lt;br/&gt;&amp;gt; in fees. As it sounds to me like a check missing in the specification, I&lt;br/&gt;&amp;gt; notified CL/LND/Eclair/LDK maintainers. Mitigations started to be developed&lt;br/&gt;&amp;gt; on the LDK-side.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In July 2021, in the context of `option_dusty_htlcs_uncounted`&lt;br/&gt;&amp;gt; discussions, Eugene Spiegel (LND) reported on how to exploit the&lt;br/&gt;&amp;gt; trimmed-to-dust mechanism at `update_fee` reception. Discussions followed&lt;br/&gt;&amp;gt; on the best way to mitigate this new vector.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; During August 2021, mitigations were developed and released on the&lt;br/&gt;&amp;gt; LDK-side. vulnerabilities were disclosed to other Lightning projects (Muun&lt;br/&gt;&amp;gt; wallet, Electrum). From the LDK-side, a public disclosure date was proposed.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Still during August 2021, the Bitcoin Core dust limit was actively&lt;br/&gt;&amp;gt; discussed on the mailing list. Changes of this dust limit would have&lt;br/&gt;&amp;gt; affected the ongoing development of the mitigations.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; While this report highlights the lack of well-defined communication&lt;br/&gt;&amp;gt; process across Lightning teams,  developers from 3 different&lt;br/&gt;&amp;gt; implementations have actively participated in the vulnerabilities&lt;br/&gt;&amp;gt; diagnostic and mitigations development of those long-standing specification&lt;br/&gt;&amp;gt; issues affecting the whole Lightning ecosystem.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; All mistakes and opinions are my own and please verify any information&lt;br/&gt;&amp;gt; reported.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # Timeline&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * 2021-04-19: Working exploit of the vulnerability against LND,&lt;br/&gt;&amp;gt; CL/LND/Eclair/LDK maintainers notified&lt;br/&gt;&amp;gt; * 2021-07-21: Finding by Eugene Siegel on how to exploit the&lt;br/&gt;&amp;gt; trimmed-to-dust mechanism at `update_fee` reception&lt;br/&gt;&amp;gt; * 2021-08-11: BOLT PR #894 opened by Bastien Teinturier, covering the lack&lt;br/&gt;&amp;gt; of verification of counterparty per-HTLC `dust_limit_satoshis`&lt;br/&gt;&amp;gt; * 2021-08-16: Mitigations developed in LDK, communication of a public&lt;br/&gt;&amp;gt; disclosure date&lt;br/&gt;&amp;gt; * 2021-08-26: Notification to Muun wallet, non-affected&lt;br/&gt;&amp;gt; * 2021-08-27: Notification to Electrum wallet&lt;br/&gt;&amp;gt; * 2021-10-04: Full Disclosure of CVEs&lt;br/&gt;&amp;gt; * 2021-10-04: Submit BOLT PR #919 covering the remaining vulnerabilities&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20211004/30c51399/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20211004/30c51399/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:04:00Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqs2x4a443edfnl9vthns67k9slvgj3g5sle60s50mn4vscu9rf97eczypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zaee4t4</id>
    
      <title type="html">📅 Original date posted:2021-10-04 📝 Original message: &amp;gt; ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqs2x4a443edfnl9vthns67k9slvgj3g5sle60s50mn4vscu9rf97eczypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zaee4t4" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsztm8dpl6z3fv6h2qndct7kp7arzdh0rrje6gfeta2mx907p36z0gzu359g&#39;&gt;nevent1q…359g&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-10-04&lt;br/&gt;📝 Original message:&lt;br/&gt;&amp;gt; In other words, simply not secured.&lt;br/&gt;&lt;br/&gt;How do you define Bitcoin base-layer security ? How strong are the&lt;br/&gt;assumptions we&amp;#39;re relying on the base-layer ?&lt;br/&gt;Not easy answers :/&lt;br/&gt;&lt;br/&gt;&amp;gt; L2s shouldn&amp;#39;t build on flawed assumptions.&lt;br/&gt;&lt;br/&gt;Waiting for your proposal to scale Bitcoin payments relying on pure&lt;br/&gt;consensus assumptions :)&lt;br/&gt;&lt;br/&gt;&amp;gt; No thanks. Not sure that would even help (since policies can always be&lt;br/&gt;set to&lt;br/&gt;a higher dust limit than any consensus rule)&lt;br/&gt;&lt;br/&gt;Sure. Policies can always be more restrictive. One of them could be to not&lt;br/&gt;relay transactions at all. If widely-deployed, such policy would make the&lt;br/&gt;network quite unusable....&lt;br/&gt;&lt;br/&gt;More seriously, I think when we consider this policy discussion, we should&lt;br/&gt;have more in mind the consequences of adopting a given policy or another&lt;br/&gt;one.&lt;br/&gt;As long as they&amp;#39;re economically-compatible, they should be followed by an&lt;br/&gt;economically rational node operator.&lt;br/&gt;I think we&amp;#39;re already making that kind of social or economic assumption on&lt;br/&gt;the user behavior w.r.t to full-node design. Blocks and transactions are&lt;br/&gt;relayed for &amp;#34;free&amp;#34; today, not satoshis are received in exchange.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Le lun. 4 oct. 2021 à 12:28, Luke Dashjr &amp;lt;luke at dashjr.org&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; On Monday 04 October 2021 16:14:20 Antoine Riard wrote:&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; The &amp;#34;dust limit&amp;#34; is arbitrarily decided by each node, and cannot be&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; relied upon for security at all. Expecting it to be a given default&lt;br/&gt;&amp;gt; value&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; is in itself a security vulnerability&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Reality is that an increasing number of funds are secured by assumptions&lt;br/&gt;&amp;gt; &amp;gt; around mempool behavior.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In other words, simply not secured.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; And sadly that&amp;#39;s going to increase with Lightning growth and deployment&lt;br/&gt;&amp;gt; of&lt;br/&gt;&amp;gt; &amp;gt; other L2s.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; L2s shouldn&amp;#39;t build on flawed assumptions.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Maybe we could dry-up some policy rules in consensus like the dust limit&lt;br/&gt;&amp;gt; &amp;gt; one :)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; No thanks. Not sure that would even help (since policies can always be set&lt;br/&gt;&amp;gt; to&lt;br/&gt;&amp;gt; a higher dust limit than any consensus rule)&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20211004/30471001/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20211004/30471001/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:03:59Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqszusuv20ht66ple7f5hmp7v7sjdv6g2lvdwk96trmdz9pt47wvc0qzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zrxpszv</id>
    
      <title type="html">📅 Original date posted:2021-10-04 📝 Original message: &amp;gt; ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqszusuv20ht66ple7f5hmp7v7sjdv6g2lvdwk96trmdz9pt47wvc0qzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zrxpszv" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsq77cy0upsep3eyrt8yt5kw99t2synch80nqk7c56p9fsqswscyscmcswn2&#39;&gt;nevent1q…swn2&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-10-04&lt;br/&gt;📝 Original message:&lt;br/&gt;&amp;gt; The &amp;#34;dust limit&amp;#34; is arbitrarily decided by each node, and cannot be&lt;br/&gt;relied&lt;br/&gt;upon for security at all. Expecting it to be a given default value is in&lt;br/&gt;itself a security vulnerability&lt;br/&gt;&lt;br/&gt;Reality is that an increasing number of funds are secured by assumptions&lt;br/&gt;around mempool behavior.&lt;br/&gt;And sadly that&amp;#39;s going to increase with Lightning growth and deployment of&lt;br/&gt;other L2s.&lt;br/&gt;&lt;br/&gt;Maybe we could dry-up some policy rules in consensus like the dust limit&lt;br/&gt;one :)&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Le lun. 4 oct. 2021 à 11:57, Luke Dashjr &amp;lt;luke at dashjr.org&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; On Monday 04 October 2021 15:09:28 Antoine Riard wrote:&lt;br/&gt;&amp;gt; &amp;gt; Still during August 2021, the Bitcoin Core dust limit was actively&lt;br/&gt;&amp;gt; &amp;gt; discussed on the mailing list. Changes of this dust limit would have&lt;br/&gt;&amp;gt; &amp;gt; affected the ongoing development of the mitigations.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The &amp;#34;dust limit&amp;#34; is arbitrarily decided by each node, and cannot be relied&lt;br/&gt;&amp;gt; upon for security at all. Expecting it to be a given default value is in&lt;br/&gt;&amp;gt; itself a security vulnerability.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; P.S. It&amp;#39;d be nice if someone familiar with these could fill in&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://en.bitcoin.it/wiki/CVEs&#34;&gt;https://en.bitcoin.it/wiki/CVEs&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20211004/4f3f6154/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20211004/4f3f6154/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:03:58Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqs2n9wjmurek3cun4mv07duja8sz088up5efdp2kruwlhqrere6q6gzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zd54c7u</id>
    
      <title type="html">📅 Original date posted:2021-10-04 📝 Original message: Hi, ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqs2n9wjmurek3cun4mv07duja8sz088up5efdp2kruwlhqrere6q6gzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zd54c7u" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsp6xqxxgszhfn80xdglrjas8ju96n5gxkpelzcu2p8dfzfuse2zlq887hv7&#39;&gt;nevent1q…7hv7&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-10-04&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi,&lt;br/&gt;&lt;br/&gt;I&amp;#39;m writing a report to disclose specification-level vulnerabilities&lt;br/&gt;affecting the Lightning implementations.&lt;br/&gt;&lt;br/&gt;The vulnerabilities are expected to be patched in:&lt;br/&gt;* Eclair: v0.6.2&#43; (CVE-2021-41591)&lt;br/&gt;* LND: v0.13.3&#43; (CVE-2021-41592)&lt;br/&gt;* LDK: v0.0.102 (not released as production software yet)&lt;br/&gt;&lt;br/&gt;The vulnerabilities are also affecting c-lightning (CVE-2021-41593).&lt;br/&gt;&lt;br/&gt;Those vulnerabilities can be exploited in a wide range of attacks, going&lt;br/&gt;from fee blackmailing of node operators, burning liquidity of your&lt;br/&gt;competing LSPs or even stealing your counterparty channel balance if you&lt;br/&gt;avail mining capabilities. Exercise of the vulnerability revealed that a&lt;br/&gt;majority of the balance funds can be at loss.&lt;br/&gt;&lt;br/&gt;Credit to Eugene Siegel (Crypt-iQ) for reporting the trimmed-to-dust&lt;br/&gt;exploitation and multiple insights about attacks.&lt;br/&gt;&lt;br/&gt;Thanks to Bastien Teinturier and Matt Corallo for numerous contributions&lt;br/&gt;about mitigations development.&lt;br/&gt;&lt;br/&gt;# Problem&lt;br/&gt;&lt;br/&gt;The current BOLT specification only requires Alice&amp;#39;s `dust_limit_satoshis`&lt;br/&gt;(applied on Alice&amp;#39;s commitment) to be under Alice&amp;#39;s&lt;br/&gt;`channel_reserve_satoshis` (applied on Bob). As those 2 parameters are&lt;br/&gt;selectable by Alice, she can inflate the dust limit until reaching the&lt;br/&gt;implementation-defined max value (e.g LND: 20% of chan capacity, LDK: 100%&lt;br/&gt;of chan capacity).&lt;br/&gt;&lt;br/&gt;Any in-flight incoming HTLC under Alice&amp;#39;s dust limit will be converted as&lt;br/&gt;miner fees on Alice&amp;#39;s commitment. This HTLC is deducted from Bob&amp;#39;s balance&lt;br/&gt;and as such they&amp;#39;re still owned by Bob, until resolution (i.e a RAA&lt;br/&gt;removing the HTLC from Alice&amp;#39;s commitment). This limitation only applies&lt;br/&gt;per-HTLC. No implementation enforces a limit on the sum of in-flight HTLCs&lt;br/&gt;burned as fees. Therefore, Alice is free to inflict a substantial loss to&lt;br/&gt;Bob funds by publishing her commitment on-chain.&lt;br/&gt;&lt;br/&gt;In-flight outgoing HTLC are also committed as fees on Bob&amp;#39;s commitment if&lt;br/&gt;they&amp;#39;re under Bob&amp;#39;s threshold. Alice can also exploit from this angle by&lt;br/&gt;circular routing HTLCs until reaching Bob&amp;#39;s&lt;br/&gt;`max_htlc_value_in_flight_msat`. Alice withholds HTLCs resolution until Bob&lt;br/&gt;goes on-chain to timeout an offered HTLC or claim an accepted HTLC.&lt;br/&gt;&lt;br/&gt;Dust HTLC processing can be also exploited at `update_fee` reception.&lt;br/&gt;&lt;br/&gt;As the BOLT3&amp;#39;s fees computation encompasses the negotiated feerate from&lt;br/&gt;`update_fee` for the 2nd-stage HTLC fees to decide if the HTLC must be&lt;br/&gt;trimmed, the amount of balance at risk is a function of current mempool&lt;br/&gt;feerates.&lt;br/&gt;&lt;br/&gt;The maximum of funds at risk on a counterparty commitment is:&lt;br/&gt;&lt;br/&gt;counterparty&amp;#39;s `max_accepted_htlcs` * (`htlc_success_tx_kw` * opener&amp;#39;s&lt;br/&gt;`feerate_per_kw` &#43; counterparty&amp;#39;s `dust_limit_satoshis`) &#43; holder&amp;#39;s&lt;br/&gt;`max_accepted_htlcs` * (`htlc_timeout_tx_kw` * opener&amp;#39;s `feerate_per_kw` &#43;&lt;br/&gt;counterparty&amp;#39;s `dust_limit_satoshis`)&lt;br/&gt;&lt;br/&gt;If the opener is also the attacker, the negotiated feerate can be&lt;br/&gt;manipulated beyond the &amp;#34;honest&amp;#34; mempool feerates only upper bounded&lt;br/&gt;implementation-defined value (before fixes, LDK: 2 * high-feerate of our&lt;br/&gt;fee-estimator). If the opener is the victim, the negotiated feerate is&lt;br/&gt;still a safety concern in case of spontaneous mempool spikes.&lt;br/&gt;&lt;br/&gt;Note, `anchors_zero_htlc_fee` channels are not affected by the feerate&lt;br/&gt;inflation as the trimmed-to-dust fee computation mechanism for 2nd-stage&lt;br/&gt;HTLC is removed. They&amp;#39;re still at risk of the sum of the HTLCs under the&lt;br/&gt;dust limit being maliciously burned.&lt;br/&gt;&lt;br/&gt;# Solution&lt;br/&gt;&lt;br/&gt;A first mitigation is to verify the counterparty&amp;#39;s announced&lt;br/&gt;`dust_limit_satoshis` at channel opening (`open_channel`/`accept_channel`)&lt;br/&gt;reception and reject if it&amp;#39;s estimated too large (see #894)&lt;br/&gt;&lt;br/&gt;For LDK, we choose the value of 660 satoshis as it&amp;#39;s beyond the highest&lt;br/&gt;dust threshold enforced by Bitcoin Core (p2pkh: 546) with a margin of&lt;br/&gt;safety. Propagation of Lightning time-sensitive transactions shouldn&amp;#39;t be&lt;br/&gt;affected.&lt;br/&gt;&lt;br/&gt;A second mitigation is to define a new configurable limit&lt;br/&gt;`max_dust_htlc_exposure` and apply this one at incoming and outgoing of&lt;br/&gt;HTLC.&lt;br/&gt;&lt;br/&gt;For LDK, we choose the value of 5 000 000 milli-satoshis as we gauged this&lt;br/&gt;value as a substantial loss for our class of users. Setting this too low&lt;br/&gt;may prevent the sending or receipt of low-value HTLCs on high-traffic&lt;br/&gt;nodes. A node operator should fine-tune this value in function of what&lt;br/&gt;qualifies as an acceptable loss.&lt;br/&gt;&lt;br/&gt;We would like to ensure that the node isn&amp;#39;t suddenly exposed to&lt;br/&gt;significantly more trimmed balance if the feerate increases when we have&lt;br/&gt;several HTLCs pending which are near the dust limit.&lt;br/&gt;&lt;br/&gt;To achieve this goal, we introduce a new `dust_buffer_feerate` defined as&lt;br/&gt;the maximum of either 2530 sats per kWU or 125% of the current&lt;br/&gt;`feerate_per_kw` (implementation-defined values).&lt;br/&gt;&lt;br/&gt;Then, upon an incoming HTLC, if the HTLC&amp;#39;s `amount_msat` is inferior to the&lt;br/&gt;counterparty&amp;#39;s `dust_limit_satoshis` plus the HTLC-timeout fee at the&lt;br/&gt;`dust_buffer_feerate`. If the `amount_msat` plus the&lt;br/&gt;`dust_balance_on_counterparty_tx` is superior to `max_dust_htlc_exposure`,&lt;br/&gt;the HTLC should be failed once it&amp;#39;s committed.&lt;br/&gt;&lt;br/&gt;Upon an outgoing HTLC, if the HTLC&amp;#39;s `amount_msat` is inferior to the&lt;br/&gt;counterparty&amp;#39;s `dust_limit_satoshis`  plus the HTLC-success fee at the&lt;br/&gt;`dust_buffer_feerate`. If the `amount_msat` plus the&lt;br/&gt;`dust_balance_on_counterparty_tx` is superior to `max_dust_htlc_exposure`,&lt;br/&gt;the HTLC should not be sent and fail without forwarding.&lt;br/&gt;&lt;br/&gt;The check symmetry must also be applied on holder commitment transactions.&lt;br/&gt;See PR #919 for more details.&lt;br/&gt;&lt;br/&gt;A last mitigation is ensuring that at `update_fee` reception, the pending&lt;br/&gt;`dust_balance` at the new proposed feerate isn&amp;#39;t superior to&lt;br/&gt;`max_dust_htlc_exposure_msat`.&lt;br/&gt;&lt;br/&gt;# Background&lt;br/&gt;&lt;br/&gt;The dust limit is a base layer policy stopping the relay of a transaction&lt;br/&gt;if one of its outputs is under a given threshold. The goal of this policy&lt;br/&gt;is to prevent the pollution of the UTXO set with low-value outputs and as&lt;br/&gt;such increase the amount of work done by full-nodes.&lt;br/&gt;&lt;br/&gt;Lightning commitment transactions should be able to propagate at any point&lt;br/&gt;during the channel lifetime to unilaterally enforce on-chain a balance. A&lt;br/&gt;Lightning commitment transaction with one of its outputs below the dust&lt;br/&gt;limit would fail to relay and thus jeopardizes funds safety.&lt;br/&gt;&lt;br/&gt;To prevent this, BOLT2 requires counterparties to announce a&lt;br/&gt;`dust_limit_satoshis` during channel opening (at&lt;br/&gt;`open_channel`/`accept_channel` exchange). This `dust_limit_satoshis` must&lt;br/&gt;be under the same party&amp;#39;s `channel_reserve_satoshis`. This value is static&lt;br/&gt;for the channel lifetime.&lt;br/&gt;&lt;br/&gt;During commitment signatures exchange, each counterparty&amp;#39;s limit is applied&lt;br/&gt;on each counterparty&amp;#39;s commitment (e.g A&amp;#39;s `dust_limit_satoshis` is applied&lt;br/&gt;on A&amp;#39;s commitment, though both A and B have to generate and sign the&lt;br/&gt;transaction). An output below this limit is trimmed to fees and won&amp;#39;t&lt;br/&gt;materialize on the commitment.&lt;br/&gt;&lt;br/&gt;The specification didn&amp;#39;t require that the `open_channel`/`accept_channel`&lt;br/&gt;receiver verify that the announced `dust_limit_satoshis` isn&amp;#39;t too large.&lt;br/&gt;&lt;br/&gt;The specification didn&amp;#39;t require that the sum of the dust HTLC committed as&lt;br/&gt;fees was verified against an upper bound.&lt;br/&gt;&lt;br/&gt;# Discovery&lt;br/&gt;&lt;br/&gt;Vulnerabilities around our dust HTLC processing have been known for years&lt;br/&gt;by some LN developers/researchers.&lt;br/&gt;&lt;br/&gt;During Q1 2019, private discussions on the Rust-Lightning-side (LDK before&lt;br/&gt;marketing rebranding) about potential safety risks around dust HTLC&lt;br/&gt;processing.&lt;br/&gt;&lt;br/&gt;In November 2019, Rusty Russell (c-lightning) opened an issue against the&lt;br/&gt;specification mentioning the lack of check of counterparty&amp;#39;s dust limit&lt;br/&gt;(#696).&lt;br/&gt;&lt;br/&gt;In May 2020, I published a high-level attack scenario &amp;#34;Miners Dust&lt;br/&gt;Inflation attacks on Lightning Network&amp;#34;, leveraging this lack.&lt;br/&gt;&lt;br/&gt;In February 2021, I did a test of the first vulnerability against LND&lt;br/&gt;software and successfully burnt the majority of the targeted node balance&lt;br/&gt;in fees. As it sounds to me like a check missing in the specification, I&lt;br/&gt;notified CL/LND/Eclair/LDK maintainers. Mitigations started to be developed&lt;br/&gt;on the LDK-side.&lt;br/&gt;&lt;br/&gt;In July 2021, in the context of `option_dusty_htlcs_uncounted` discussions,&lt;br/&gt;Eugene Spiegel (LND) reported on how to exploit the trimmed-to-dust&lt;br/&gt;mechanism at `update_fee` reception. Discussions followed on the best way&lt;br/&gt;to mitigate this new vector.&lt;br/&gt;&lt;br/&gt;During August 2021, mitigations were developed and released on the&lt;br/&gt;LDK-side. vulnerabilities were disclosed to other Lightning projects (Muun&lt;br/&gt;wallet, Electrum). From the LDK-side, a public disclosure date was proposed.&lt;br/&gt;&lt;br/&gt;Still during August 2021, the Bitcoin Core dust limit was actively&lt;br/&gt;discussed on the mailing list. Changes of this dust limit would have&lt;br/&gt;affected the ongoing development of the mitigations.&lt;br/&gt;&lt;br/&gt;While this report highlights the lack of well-defined communication process&lt;br/&gt;across Lightning teams,  developers from 3 different implementations have&lt;br/&gt;actively participated in the vulnerabilities diagnostic and mitigations&lt;br/&gt;development of those long-standing specification issues affecting the whole&lt;br/&gt;Lightning ecosystem.&lt;br/&gt;&lt;br/&gt;All mistakes and opinions are my own and please verify any information&lt;br/&gt;reported.&lt;br/&gt;&lt;br/&gt;# Timeline&lt;br/&gt;&lt;br/&gt;* 2021-04-19: Working exploit of the vulnerability against LND,&lt;br/&gt;CL/LND/Eclair/LDK maintainers notified&lt;br/&gt;* 2021-07-21: Finding by Eugene Siegel on how to exploit the&lt;br/&gt;trimmed-to-dust mechanism at `update_fee` reception&lt;br/&gt;* 2021-08-11: BOLT PR #894 opened by Bastien Teinturier, covering the lack&lt;br/&gt;of verification of counterparty per-HTLC `dust_limit_satoshis`&lt;br/&gt;* 2021-08-16: Mitigations developed in LDK, communication of a public&lt;br/&gt;disclosure date&lt;br/&gt;* 2021-08-26: Notification to Muun wallet, non-affected&lt;br/&gt;* 2021-08-27: Notification to Electrum wallet&lt;br/&gt;* 2021-10-04: Full Disclosure of CVEs&lt;br/&gt;* 2021-10-04: Submit BOLT PR #919 covering the remaining vulnerabilities&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20211004/9af032f2/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20211004/9af032f2/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:03:57Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqspfrankh7k38pwwxz0ggvnc75y7tsrfvlcynz2dh3ulc8gtxjz65qzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zvrkly8</id>
    
      <title type="html">📅 Original date posted:2021-08-09 📝 Original message: ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqspfrankh7k38pwwxz0ggvnc75y7tsrfvlcynz2dh3ulc8gtxjz65qzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zvrkly8" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsff5d523ramcxrt9nfdupa7vujq9sllxxafqal90wzy5rrnyawyrc2mg9sh&#39;&gt;nevent1q…g9sh&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-08-09&lt;br/&gt;📝 Original message:&lt;br/&gt;I&amp;#39;m pretty conservative about increasing the standard dust limit in any&lt;br/&gt;way. This would convert a higher percentage of LN channels capacity into&lt;br/&gt;dust, which is coming with a lowering of funds safety [0]. Of course, we&lt;br/&gt;can adjust the LN security model around dust handling to mitigate the&lt;br/&gt;safety risk in case of adversarial settings, but ultimately the standard&lt;br/&gt;dust limit creates a  &amp;#34;hard&amp;#34; bound, and as such it introduces a trust&lt;br/&gt;vector in the reliability of your peer to not goes&lt;br/&gt;onchain with a commitment heavily-loaded with dust-HTLC you own.&lt;br/&gt;&lt;br/&gt;LN node operators might be willingly to compensate this &amp;#34;dust&amp;#34; trust vector&lt;br/&gt;by relying on side-trust model, such as PKI to authenticate their peers or&lt;br/&gt;API tokens (LSATs, PoW tokens), probably not free from consequences for the&lt;br/&gt;&amp;#34;openness&amp;#34; of the LN topology...&lt;br/&gt;&lt;br/&gt;Further, I think any authoritative setting of the dust limit presents the&lt;br/&gt;risk of becoming ill-adjusted  w.r.t to market realities after a few months&lt;br/&gt;or years, and would need periodic reevaluations. Those reevaluations, if&lt;br/&gt;not automated, would become a vector of endless dramas and bikeshedding as&lt;br/&gt;the L2s ecosystems grow bigger...&lt;br/&gt;&lt;br/&gt;Note, this would also constrain the design space of newer fee schemes. Such&lt;br/&gt;as negotiated-with-mining-pool and discounted consolidation during low&lt;br/&gt;feerate periods deployed by such producers of low-value outputs.&lt;br/&gt;`&lt;br/&gt;Moreover as an operational point, if we proceed to such an increase on the&lt;br/&gt;base-layer, e.g to 20 sat/vb, we&amp;#39;re going to severely damage the&lt;br/&gt;propagation of any LN transaction, where a commitment transaction is built&lt;br/&gt;with less than 20 sat/vb outputs. Of course, core&amp;#39;s policy deployment on&lt;br/&gt;the base layer is gradual, but we should first give a time window for the&lt;br/&gt;LN ecosystem to upgrade and as of today we&amp;#39;re still devoid of the mechanism&lt;br/&gt;to do it cleanly and asynchronously (e.g dynamic upgrade or quiescence&lt;br/&gt;protocol [1]).&lt;br/&gt;&lt;br/&gt;That said, as raised by other commentators, I don&amp;#39;t deny we have a&lt;br/&gt;long-term tension between L2 nodes and full-nodes operators about the UTXO&lt;br/&gt;set growth, but for now I would rather solve this with smarter engineering&lt;br/&gt;such as utreexo on the base-layer side or multi-party shared-utxo or&lt;br/&gt;compressed colored coins/authentication smart contracts (e.g&lt;br/&gt;opentimestamp&amp;#39;s merkle tree in OP_RETURN) on the upper layers rather than&lt;br/&gt;altering the current equilibrium.&lt;br/&gt;&lt;br/&gt;I think the status quo is good enough for now, and I believe we would be&lt;br/&gt;better off to learn from another development cycle before tweaking the dust&lt;br/&gt;limit in any sense.&lt;br/&gt;&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;[0]&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-May/002714.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-May/002714.html&lt;/a&gt;&lt;br/&gt;[1] &lt;a href=&#34;https://github.com/lightningnetwork/lightning-rfc/pull/869&#34;&gt;https://github.com/lightningnetwork/lightning-rfc/pull/869&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Le dim. 8 août 2021 à 14:53, Jeremy &amp;lt;jlrubin at mit.edu&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; We should remove the dust limit from Bitcoin. Five reasons:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1) it&amp;#39;s not our business what outputs people want to create&lt;br/&gt;&amp;gt; 2) dust outputs can be used in various authentication/delegation smart&lt;br/&gt;&amp;gt; contracts&lt;br/&gt;&amp;gt; 3) dust sized htlcs in lightning (&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://bitcoin.stackexchange.com/questions/46730/can-you-send-amounts-that-would-typically-be-considered-dust-through-the-light&#34;&gt;https://bitcoin.stackexchange.com/questions/46730/can-you-send-amounts-that-would-typically-be-considered-dust-through-the-light&lt;/a&gt;)&lt;br/&gt;&amp;gt; force channels to operate in a semi-trusted mode which has implications&lt;br/&gt;&amp;gt; (AFAIU) for the regulatory classification of channels in various&lt;br/&gt;&amp;gt; jurisdictions; agnostic treatment of fund transfers would simplify this&lt;br/&gt;&amp;gt; (like getting a 0.01 cent dividend check in the mail)&lt;br/&gt;&amp;gt; 4) thinly divisible colored coin protocols might make use of sats as value&lt;br/&gt;&amp;gt; markers for transactions.&lt;br/&gt;&amp;gt; 5) should we ever do confidential transactions we can&amp;#39;t prevent it without&lt;br/&gt;&amp;gt; compromising privacy / allowed transfers&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The main reasons I&amp;#39;m aware of not allow dust creation is that:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1) dust is spam&lt;br/&gt;&amp;gt; 2) dust fingerprinting attacks&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1 is (IMO) not valid given the 5 reasons above, and 2 is preventable by&lt;br/&gt;&amp;gt; well behaved wallets to not redeem outputs that cost more in fees than they&lt;br/&gt;&amp;gt; are worth.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; cheers,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; jeremy&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; --&lt;br/&gt;&amp;gt; @JeremyRubin &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt; &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20210809/83985422/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20210809/83985422/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:03:14Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqs2azah9qhvtfhum2tx0lcd3vj4vvsfyd4xnncmts60sepllkdw5zgzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zdmrg9e</id>
    
      <title type="html">📅 Original date posted:2021-07-02 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqs2azah9qhvtfhum2tx0lcd3vj4vvsfyd4xnncmts60sepllkdw5zgzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zdmrg9e" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs8rehxv7ag5lrvynf55qacuf5ydn8ey9gv2tte29k0a9e29tquz6qwhadwu&#39;&gt;nevent1q…adwu&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-07-02&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Ryan,&lt;br/&gt;&lt;br/&gt;Thanks for starting this discussion, I agree it&amp;#39;s a good time for the&lt;br/&gt;Lightning development community to start this self-introspection on its own&lt;br/&gt;specification process :)&lt;br/&gt;&lt;br/&gt;First and foremost, maybe we could take a minute off to celebrate the&lt;br/&gt;success of the BOLT process and the road traveled so far ? What was a fuzzy&lt;br/&gt;heap of ideas on a whiteboard a few years ago has bloomed up to a living&lt;br/&gt;and pulsating distributed ecosystem of thousands of nodes all around the&lt;br/&gt;world. If the bet was to deliver on fast, instant, cheap, reasonably&lt;br/&gt;scalable, reasonably confidential Bitcoin payments, it&amp;#39;s a won one and&lt;br/&gt;that&amp;#39;s really cool.&lt;br/&gt;&lt;br/&gt;Retrospectively, it was a foolhardy bet for a wide diversity of factors.&lt;br/&gt;One could think about opinionated, early design choices deeply affecting&lt;br/&gt;protocol safety and efficiency of which the ultimate validity was still a&lt;br/&gt;function of fluky base layer evolutions [0]. Another could consider the&lt;br/&gt;communication challenges of softly aligning development teams on the common&lt;br/&gt;effort of designing and deploying from scratch a cryptographic protocol as&lt;br/&gt;sophisticated as Lightning. Not an easy task when you&amp;#39;re mindful about the&lt;br/&gt;timezones spread, the diversity of software engineering backgrounds and the&lt;br/&gt;differing schedules of priorities.&lt;br/&gt;&lt;br/&gt;So kudos to everyone who has played a part in the Lightning dev process.&lt;br/&gt;The OGs who started the tale, the rookies who jumped on the wagon on the&lt;br/&gt;way and today newcomers showing up with new seeds to nurture the ecosystem&lt;br/&gt;:)&lt;br/&gt;&lt;br/&gt;Now, I would say we more-or-less all agree that the current BOLT process&lt;br/&gt;has reached its limits. Both from private conservations across the teams&lt;br/&gt;but also frustrations expressed during the irc meetings in the past months.&lt;br/&gt;Or as a simple data point, the only meaningful spec object we did merge on&lt;br/&gt;the last 18 months is anchor output, it did consumes a lot of review and&lt;br/&gt;engineering bandwidth from contributors, took few refinement to finalize&lt;br/&gt;(`option_anchors_zero_fee_htlc_tx`) and I believe every implementations are&lt;br/&gt;still scratching their heads on a robust, default fee-bumping strategy.&lt;br/&gt;&lt;br/&gt;So if we agree about the BOLT process limitations, the next question to&lt;br/&gt;raise is how to improve it. Though there, as expressed in other replies,&lt;br/&gt;I&amp;#39;m more we&amp;#39;re not going to be able to do that much, as ultimately we&amp;#39;re&lt;br/&gt;upper bounded by a fast-pacing, always-growing, permissionless ecosystem of&lt;br/&gt;applications and experiments moving forward in baazar-style and&lt;br/&gt;lower-bounded by a decentralized process across teams allocating their&lt;br/&gt;engineering resources with different priorities or even exploring Lightning&lt;br/&gt;massive evolution stages in heterogenous, synergic directions.&lt;br/&gt;&lt;br/&gt;Breeding another specification process on top of Lightning sounds a good&lt;br/&gt;way forward. Though I believe it might be better to take time to operate&lt;br/&gt;the disentanglement nicely. If we take the list of ideas which could be&lt;br/&gt;part of such a process, one of them, dynamic commitments could make a lot&lt;br/&gt;of sense to be well-designed and well-supported by every implementation. In&lt;br/&gt;case of emergency fixes to deploy safer channel types, if you have to close&lt;br/&gt;all your channels with other implementations, on a holistic scale, it might&lt;br/&gt;cloak the mempools and spike the feerate, strickening safety of every other&lt;br/&gt;channel on the network. Yes we might have safety interdepencies between&lt;br/&gt;implementations :/&lt;br/&gt;&lt;br/&gt;And it&amp;#39;s also good to have thoughtful, well-defined specification bounds&lt;br/&gt;when you&amp;#39;re working on coordinated security disclosures to know who has&lt;br/&gt;implemented what and whom you should reach out when something is broken.&lt;br/&gt;&lt;br/&gt;Another orthogonal point to consider is the existence of already&lt;br/&gt;higher-layer protocol specifications such as the dlcspecs. Even if the&lt;br/&gt;ecosystem is still in the bootstrap phase for now, we already have a&lt;br/&gt;discussion to split between a &amp;#34;consensus&amp;#34; track and more optional features.&lt;br/&gt;I believe some features discussed there such as negotiation layer about&lt;br/&gt;premium fee to compensate unilateral fee-bumping responsibility risk could&lt;br/&gt;belong to such a new bLIPs process ?&lt;br/&gt;&lt;br/&gt;So here my thinking, as a BOLT contributor, what the common subset of&lt;br/&gt;problems we want to keep tackling down together in the coming years, what&lt;br/&gt;is the remaining subset we&amp;#39;re happy to be engage by a higher layer&lt;br/&gt;development community and how to draw both communication and software&lt;br/&gt;interfaces in-between ?&lt;br/&gt;&lt;br/&gt;Personally, I would be glad if we not extend the scope of the current BOLT&lt;br/&gt;coverage and focus more on fixing the known-issues, simplifying state&lt;br/&gt;machines, fixing oddities of channel policies announcements [1], writing&lt;br/&gt;down best practices on fee-bumping strategies, agreeing on channel types&lt;br/&gt;upgrades raw mechanisms, features discovery and if we want to innovate&lt;br/&gt;focus on taproot well-done integration which should keep us busy for few&lt;br/&gt;years, among others PTLC support, funding output taproot support,&lt;br/&gt;composable taptree for revokeable outputs, ...&lt;br/&gt;&lt;br/&gt;IHMO, if the BOLT process is officialized it will enter in a more boring&lt;br/&gt;phase, focused on safety/reliability/privacy fixes on the initial value&lt;br/&gt;proposition laid out above that&amp;#39;s really okay :)&lt;br/&gt;&lt;br/&gt;I know, it might be a passionate discussion to have among ourselves as&lt;br/&gt;everyone would like its pet project to benefit from the BOLT &amp;#34;boost&lt;br/&gt;spotlight&amp;#34;... Though in the long term we can also imagine bLIPs as a&lt;br/&gt;staging room with a formalized path for BOLT upgrade when it makes sense.&lt;br/&gt;Also, we shouldn&amp;#39;t expect a per-team position there as some of them are&lt;br/&gt;deliberately &amp;#34;bazaar&amp;#34; in themselves :)&lt;br/&gt;&lt;br/&gt;Further I really believe this question of interfaces and&lt;br/&gt;forward-flexibility across communities matters a lot. I would be glad if we&lt;br/&gt;can save us some passionate discussions a few years from now on the size of&lt;br/&gt;the onions, echo of the current discussion we have on the base layer,&lt;br/&gt;where, among a lot, the current mempool package limits might not fit every&lt;br/&gt;L2&amp;#39;s chain of pre-committed transactions.&lt;br/&gt;&lt;br/&gt;Of course, offering more flexibility might come at the price of security&lt;br/&gt;and privacy concerns, as the trampoline discussions raised it. Though in a&lt;br/&gt;permissionless system like Bitcoin, even with a lot of good will, it&amp;#39;s hard&lt;br/&gt;to prevent folks from harming themselves. Maybe we can promote best&lt;br/&gt;practices and design protocols and features combining both&lt;br/&gt;economic-optimality and safety ?&lt;br/&gt;&lt;br/&gt;W.r.t to the TLV types/features bits/message types namespace allocation&lt;br/&gt;issue, if it&amp;#39;s heavily re-used by this upper specification, I feel it can&lt;br/&gt;be still be handled by the BOLT community to minimize confusions risks,&lt;br/&gt;though with a super-dumb, automatic process ? As the experience did learn&lt;br/&gt;us in the past months, in Bitcoin, even standard slot allocation can be&lt;br/&gt;contentious.&lt;br/&gt;&lt;br/&gt;More personally, I feel it would be better if such a new specification&lt;br/&gt;process doesn&amp;#39;t completely share the same communication infrastructure as&lt;br/&gt;the BOLTs, like having them in the same repository. Otherwise it might&lt;br/&gt;spread the belief among public perception that those standards have been&lt;br/&gt;&amp;#34;blessed&amp;#34; in any way by LN devs and have been through the same thoroughness&lt;br/&gt;of design and review process. Or even switching the communication and&lt;br/&gt;standard maintenance on the author itself like Dave Harding&amp;#39;s rough&lt;br/&gt;proposal from a few months ago seems to suggest to me [2].&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;[0]&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2017-January/000652.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2017-January/000652.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;[1]&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2021-April/003005.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2021-April/003005.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;[2]&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-April/018868.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-April/018868.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Le ven. 2 juil. 2021 à 04:48, Michael Folkson &amp;lt;michaelfolkson at gmail.com&amp;gt; a&lt;br/&gt;écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; &amp;gt; The other thing bLIPs do is do away with the whole &amp;#34;human picks the&lt;br/&gt;&amp;gt; number of documents&amp;#34;, and &amp;#34;don&amp;#39;t assign your own number, you must wait&amp;#34;.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; So TL;DR BIPs and BOLTs sometimes require waiting for things (like&lt;br/&gt;&amp;gt; review and consensus) and there should be a new acronym and process&lt;br/&gt;&amp;gt; (&amp;#34;bLIPs&amp;#34;) to avoid us having to wait for things. I just think &amp;#34;bLIPs&amp;#34;&lt;br/&gt;&amp;gt; adds confusion e.g. should something be a bLIP or a BOLT? Does a bLIP&lt;br/&gt;&amp;gt; eventually become a BOLT when it is mature enough? This tendency to&lt;br/&gt;&amp;gt; fragment and introduce new acronyms and new processes should be&lt;br/&gt;&amp;gt; resisted imo. If a new process is introduced every time there is a&lt;br/&gt;&amp;gt; disagreement or perceived friction it just erodes the value of&lt;br/&gt;&amp;gt; existing processes and means they all get bypassed. Strengthen and&lt;br/&gt;&amp;gt; improve existing processes and only introduce a new one as an absolute&lt;br/&gt;&amp;gt; last resort.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Other than the minor frictions described above I don&amp;#39;t see why &amp;#34;bLIPs&amp;#34;&lt;br/&gt;&amp;gt; can&amp;#39;t just be draft BOLTs.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Adding a third BIP editor more involved with Lightning sounds like a&lt;br/&gt;&amp;gt; good idea.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Or alternatively if BOLTs were subsumed into BIPs I think Bastien&lt;br/&gt;&amp;gt; would be a great additional BIP editor to cover Lightning related BIPs&lt;br/&gt;&amp;gt; :) I think BOLTs being subsumed into BIPs would be nice but I&amp;#39;m&lt;br/&gt;&amp;gt; pessimistic it will happen. Like legislation and regulation in the&lt;br/&gt;&amp;gt; legacy financial system alphabet soups only expand they never get&lt;br/&gt;&amp;gt; simplified. Let&amp;#39;s at least resist alphabet soup expansion here.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Fri, Jul 2, 2021 at 9:01 AM Bastien TEINTURIER &amp;lt;bastien at acinq.fr&amp;gt;&lt;br/&gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; Will it actually add any more fragmentation that already exists? Due to&lt;br/&gt;&amp;gt; all&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; the extensibility we&amp;#39;ve added in the protocol, it&amp;#39;s already possible&lt;br/&gt;&amp;gt; for any&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; implementation to start to work on their own sub-protocols. This just&lt;br/&gt;&amp;gt; gives&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; them a new venue to at least _describe_ what they&amp;#39;re using.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; It&amp;#39;s only my 2 cents, but I&amp;#39;m afraid it will indeed add more&lt;br/&gt;&amp;gt; fragmentation, because&lt;br/&gt;&amp;gt; &amp;gt; the fact that there exists a bLIP for feature XXX will likely act as a&lt;br/&gt;&amp;gt; green light to&lt;br/&gt;&amp;gt; &amp;gt; deploy it faster instead of spending more time talking about it with the&lt;br/&gt;&amp;gt; community&lt;br/&gt;&amp;gt; &amp;gt; and thinking about potential issues, forward-compatibility, etc.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; But I agree with you that it also gives more freedom to experiment in&lt;br/&gt;&amp;gt; the real world,&lt;br/&gt;&amp;gt; &amp;gt; which helps find issues and correct them, paving the way for better&lt;br/&gt;&amp;gt; features for&lt;br/&gt;&amp;gt; &amp;gt; end users.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; It&amp;#39;s also likely the case that already implementations, or typically&lt;br/&gt;&amp;gt; forks&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; of implementations are already using &amp;#34;undocumented&amp;#34; TLVs or feature&lt;br/&gt;&amp;gt; bits in&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; the wild today.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; But today we&amp;#39;re usually very careful when we do that, and use numbers in&lt;br/&gt;&amp;gt; high ranges&lt;br/&gt;&amp;gt; &amp;gt; for these use-cases. In our case for example we use message type 35007&lt;br/&gt;&amp;gt; for our&lt;br/&gt;&amp;gt; &amp;gt; swap-in and we expect that to change once standardized, so we did extra&lt;br/&gt;&amp;gt; work to&lt;br/&gt;&amp;gt; &amp;gt; ensure we wouldn&amp;#39;t paint ourselves into a corner when switching to a&lt;br/&gt;&amp;gt; standard version.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; I think that if we have a centralized bLIP repo, we can take this&lt;br/&gt;&amp;gt; opportunity to safely&lt;br/&gt;&amp;gt; &amp;gt; assign &amp;#34;final&amp;#34; values for types and feature bits that are used by each&lt;br/&gt;&amp;gt; bLIP, and stronger&lt;br/&gt;&amp;gt; &amp;gt; guarantees that they will not conflict with another bLIP or BOLT. Of&lt;br/&gt;&amp;gt; course that doesn&amp;#39;t&lt;br/&gt;&amp;gt; &amp;gt; stop anyone from deploying a conflict, but their use of the same bits&lt;br/&gt;&amp;gt; won&amp;#39;t be documented&lt;br/&gt;&amp;gt; &amp;gt; so it shouldn&amp;#39;t be widely deployed, and browsing the BOLTs and bLIPs&lt;br/&gt;&amp;gt; should let anyone&lt;br/&gt;&amp;gt; &amp;gt; see what the &amp;#34;correct&amp;#34; meaning of those bits should be.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Cheers,&lt;br/&gt;&amp;gt; &amp;gt; Bastien&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Le jeu. 1 juil. 2021 à 22:43, Olaoluwa Osuntokun &amp;lt;laolu32 at gmail.com&amp;gt; a&lt;br/&gt;&amp;gt; écrit :&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; But they don&amp;#39;t address the first point at all, they instead work&lt;br/&gt;&amp;gt; around&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; it.  To be fair, I don&amp;#39;t think we can completely address that first&lt;br/&gt;&amp;gt; point:&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; properly reviewing spec proposals takes a lot of effort and accepting&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; complex changes to the BOLTs shouldn&amp;#39;t be done lightly.&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; I think this is a fair characterization that I agree with. I also agree&lt;br/&gt;&amp;gt; that&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; there isn&amp;#39;t really a way to fundamentally address it. The issue of&lt;br/&gt;&amp;gt; scarce&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; review resources is something just about any large open source project&lt;br/&gt;&amp;gt; needs&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; to deal with: everyone wants to make a PR, but no one wants to review&lt;br/&gt;&amp;gt; the&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; PRs of others, unless it scratches some tangential itch they may have.&lt;br/&gt;&amp;gt; IMO&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; it&amp;#39;s also the case that the problem/solution space of LN is so large,&lt;br/&gt;&amp;gt; that&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; it&amp;#39;s hard to expect every developer to review each new proposal that&lt;br/&gt;&amp;gt; comes&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; in, as they themselves have their own set of priorities (product,&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; businesses, protocol, personal, etc).&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; In the end though, I think when there&amp;#39;ve been critical items that&lt;br/&gt;&amp;gt; affect all&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; implementations and/or the existence of the protocol itself, developers&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; typically band together to commit resources to help a proposal move&lt;br/&gt;&amp;gt; forward.&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; One upcoming example of this will be the &amp;#34;base&amp;#34; taproot channel type&lt;br/&gt;&amp;gt; (the&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; design space is pretty large in that it even permits a new type of&lt;br/&gt;&amp;gt; symmetric&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; state revocation-based channel).&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt;  it will add fragmentation to the network, it will add maintenance&lt;br/&gt;&amp;gt; costs&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt;  and backwards-compatibility issues&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; Will it actually add any more fragmentation that already exists? Due to&lt;br/&gt;&amp;gt; all&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; the extensibility we&amp;#39;ve added in the protocol, it&amp;#39;s already possible&lt;br/&gt;&amp;gt; for any&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; implementation to start to work on their own sub-protocols. This just&lt;br/&gt;&amp;gt; gives&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; them a new venue to at least _describe_ what they&amp;#39;re using. As usual,&lt;br/&gt;&amp;gt; it&amp;#39;s&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; up to other implementations if they want to adopt it or not, or advise&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; against its use.&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt;  many bLIPs will be sub-optimal solutions to the problem they try to&lt;br/&gt;&amp;gt; solve&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt;  and some bLIPs will be simply insecure and may put users&amp;#39; funds at&lt;br/&gt;&amp;gt; risk&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt;  (L2 protocols are hard and have subtle issues that can be easily&lt;br/&gt;&amp;gt; missed)&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; This may be the case, but I guess at times it&amp;#39;s hard to know if&lt;br/&gt;&amp;gt; something is&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; objectively sub-optimal without further exploration of the design space,&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; which usually means either more people involved, or more time examining&lt;br/&gt;&amp;gt; the&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; problem. Ultimately, different wallets/implementations may also be&lt;br/&gt;&amp;gt; willing&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; to make different usability/security trade-offs. One example here is&lt;br/&gt;&amp;gt; zero&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; conf channels: they assume a greater degree of trust with the party&lt;br/&gt;&amp;gt; you&amp;#39;re&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; _accepting_ the channel from, as if you receive funds over the channel,&lt;br/&gt;&amp;gt; they&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; can be double spent away. However it&amp;#39;s undeniable that they improve the&lt;br/&gt;&amp;gt; UX&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; by reducing the amount of time a user needs to wait around before they&lt;br/&gt;&amp;gt; can&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; actually jump in and use LN.&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; In the end though, there&amp;#39;s no grand global committee that prevents&lt;br/&gt;&amp;gt; people&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; from deploying software they think is interesting or useful. In the long&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; run, I guess one simply needs to hope that bad ideas die out, or speak&lt;br/&gt;&amp;gt; out&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; against them to the public. As LN sits a layer above the base protocol,&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; widespread global consensus isn&amp;#39;t really required to make certain&lt;br/&gt;&amp;gt; classes of&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; changes, and you can&amp;#39;t stop people from experimenting on their own.&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; We can&amp;#39;t have collisions on any of these three things.&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; Yeah, collisions are def possible. IMO, this is where the interplay with&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; BOLTs comes in: BOLTs are the global feature bit/tlv/message&lt;br/&gt;&amp;gt; namespace.  A&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; bLIP might come with the amendment of BOLT 9 to define feature bits they&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; used. Of course, this should be done on a best effort basis, as even if&lt;br/&gt;&amp;gt; you&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; assign a bit for your idea, someone can just go ahead and deploy&lt;br/&gt;&amp;gt; something&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; else w/ that same bit, and they may never really intersect depending on&lt;br/&gt;&amp;gt; the&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; nature or how widespread the new feature is.&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; It&amp;#39;s also likely the case that already implementations, or typically&lt;br/&gt;&amp;gt; forks&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; of implementations are already using &amp;#34;undocumented&amp;#34; TLVs or feature&lt;br/&gt;&amp;gt; bits in&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; the wild today. I don&amp;#39;t know exactly which TLV type things like&lt;br/&gt;&amp;gt; applications&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; that tunnel messages over the network use, but afaik so far there&lt;br/&gt;&amp;gt; haven&amp;#39;t&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; been any disastrous collisions in the wild.&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; -- Laolu&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; On Thu, Jul 1, 2021 at 2:19 AM Bastien TEINTURIER &amp;lt;bastien at acinq.fr&amp;gt;&lt;br/&gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; Thanks for starting that discussion.&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; In my opinion, what we&amp;#39;re really trying to address here are the two&lt;br/&gt;&amp;gt; following&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; points (at least from the point of view of someone who works on the&lt;br/&gt;&amp;gt; spec and&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; an implementation):&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; - Implementers get frustrated when they&amp;#39;ve worked on something that&lt;br/&gt;&amp;gt; they think&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; is useful and they can&amp;#39;t get it into the BOLTs (the spec PR isn&amp;#39;t&lt;br/&gt;&amp;gt; reviewed,&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; it progresses too slowly or there isn&amp;#39;t enough agreement to merge it)&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; - Implementers expect other implementers to specify the optional&lt;br/&gt;&amp;gt; features they&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; ship: we don&amp;#39;t want to have to reverse-engineer a sub-protocol when&lt;br/&gt;&amp;gt; users&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; want our implementation to provide support for feature XXX&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; Note that these are two very different concerns.&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; bLIPs/SPARKS/BIPs clearly address the second point, which is good.&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; But they don&amp;#39;t address the first point at all, they instead work&lt;br/&gt;&amp;gt; around it.&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; To be fair, I don&amp;#39;t think we can completely address that first point:&lt;br/&gt;&amp;gt; properly&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; reviewing spec proposals takes a lot of effort and accepting complex&lt;br/&gt;&amp;gt; changes&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; to the BOLTs shouldn&amp;#39;t be done lightly.&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; I am mostly in favor of this solution, but I want to highlight that it&lt;br/&gt;&amp;gt; isn&amp;#39;t&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; only rainbows and unicorns: it will add fragmentation to the network,&lt;br/&gt;&amp;gt; it will&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; add maintenance costs and backwards-compatibility issues, many bLIPs&lt;br/&gt;&amp;gt; will be&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; sub-optimal solutions to the problem they try to solve and some bLIPs&lt;br/&gt;&amp;gt; will be&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; simply insecure and may put users&amp;#39; funds at risk (L2 protocols are&lt;br/&gt;&amp;gt; hard and have&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; subtle issues that can be easily missed). On the other hand, it allows&lt;br/&gt;&amp;gt; for real&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; world experimentation and iteration, and it&amp;#39;s easier to amend a bLIP&lt;br/&gt;&amp;gt; than the&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; BOLTs.&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; On the nuts-and-bolts (see the pun?) side, bLIPs cannot embrace a&lt;br/&gt;&amp;gt; fully bazaar&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; style of evolution. Most of them will need:&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; - to assign feature bit(s)&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; - to insert new tlv fields in existing messages&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; - to create new messages&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; We can&amp;#39;t have collisions on any of these three things. bLIP XXX cannot&lt;br/&gt;&amp;gt; use the&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; same tlv types as bLIP YYY otherwise we&amp;#39;re creating network&lt;br/&gt;&amp;gt; incompatibilities.&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; So they really need to be centralized, and we need a process to assign&lt;br/&gt;&amp;gt; these&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; and ensure they don&amp;#39;t collide. It&amp;#39;s not a hard problem, but we need to&lt;br/&gt;&amp;gt; be clear&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; about the process around those.&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; Regarding the details of where they live, I don&amp;#39;t have a strong&lt;br/&gt;&amp;gt; opinion, but I&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; think they must be easy to find and browse, and I think it&amp;#39;s easier&lt;br/&gt;&amp;gt; for readers&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; if they&amp;#39;re inside the spec repository. We already have PRs that use a&lt;br/&gt;&amp;gt; dedicated&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; &amp;#34;proposals&amp;#34; folder (e.g. [1], [2]).&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; Bastien&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; [1] &lt;a href=&#34;https://github.com/lightningnetwork/lightning-rfc/pull/829&#34;&gt;https://github.com/lightningnetwork/lightning-rfc/pull/829&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; [2] &lt;a href=&#34;https://github.com/lightningnetwork/lightning-rfc/pull/854&#34;&gt;https://github.com/lightningnetwork/lightning-rfc/pull/854&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; Le jeu. 1 juil. 2021 à 02:31, Ariel Luaces &amp;lt;arielluaces at gmail.com&amp;gt; a&lt;br/&gt;&amp;gt; écrit :&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; BIPs are already the Bazaar style of evolution that simultaneously&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; allows flexibility and coordination/interoperability (since anyone can&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; create a BIP and they create an environment of discussion).&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; BOLTs are essentially one big BIP in the sense that they started as a&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; place for discussion but are now more rigid. BOLTs must be followed&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; strictly to ensure a node is interoperable with the network. And BOLTs&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; should be rigid, as rigid as any widely used BIP like 32 for example.&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; Even though BOLTs were flexible when being drafted their purpose has&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; changed from descriptive to prescriptive.&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; Any alternatives, or optional features should be extracted out of&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; BOLTs, written as BIPs. The BIP should then reference the BOLT and the&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; required flags set, messages sent, or alterations made to signal that&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; the BIP&amp;#39;s feature is enabled.&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; A BOLT may at some point organically change to reference a BIP. For&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; example if a BIP was drafted as an optional feature but then becomes&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; more widespread and then turns out to be crucial for the proper&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; operation of the network then a BOLT can be changed to just reference&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; the BIP as mandatory. There isn&amp;#39;t anything wrong with this.&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; All of the above would work exactly the same if there was a bLIP&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; repository instead. I don&amp;#39;t see the value in having both bLIPs and&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; BIPs since AFAICT they seem to be functionally equivalent and BIPs are&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; not restricted to exclude lightning, and never have been.&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; I believe the reason this move to BIPs hasn&amp;#39;t happened organically is&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; because many still perceive the BOLTs available for editing, so&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; changes continue to be made. If instead BOLTs were perceived as more&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;#34;consensus critical&amp;#34;, not subject to change, and more people were&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; strongly encouraged to write specs for new lightning features&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; elsewhere (like the BIP repo) then you would see this issue of growing&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; BOLTs resolved.&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; Cheers&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; Ariel Lorenzo-Luaces&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; On Wed, Jun 30, 2021 at 1:16 PM Olaoluwa Osuntokun &amp;lt;laolu32 at gmail.com&amp;gt;&lt;br/&gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; That being said I think all the points that are addressed in&lt;br/&gt;&amp;gt; Ryan&amp;#39;s mail&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; could very well be formalized into BOLTs but maybe we just need&lt;br/&gt;&amp;gt; to rethink&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; the current process of the BOLTs to make it more accessible for&lt;br/&gt;&amp;gt; new ideas&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; &amp;gt; to find their way into the BOLTs?&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; I think part of what bLIPs are trying to solve here is promoting&lt;br/&gt;&amp;gt; more loosely&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; coupled evolution of the network. I think the BOLTs do a good job&lt;br/&gt;&amp;gt; currently of&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; specifying what _base_ functionality is required for a routing node&lt;br/&gt;&amp;gt; in a&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; prescriptive manner (you must forward an HTLC like this, etc).&lt;br/&gt;&amp;gt; However there&amp;#39;s&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; a rather large gap in describing functionality that has emerged&lt;br/&gt;&amp;gt; over time due&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; to progressive evolution, and aren&amp;#39;t absolutely necessary, but&lt;br/&gt;&amp;gt; enhance&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; node/wallet operation.&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; Examples of  include things like: path finding heuristics (BOLTs&lt;br/&gt;&amp;gt; just say you&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; should get from Alice to Bob, but provides no recommendations w.r.t&lt;br/&gt;&amp;gt; _how_ to do&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; so), fee bumping heuristics, breach retribution handling, channel&lt;br/&gt;&amp;gt; management,&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; rebalancing, custom records usage (like the podcast index&lt;br/&gt;&amp;gt; meta-data, messaging,&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; etc), JIT channel opening, hosted channels, randomized channel IDs,&lt;br/&gt;&amp;gt; fee&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; optimization, initial channel boostrapping, etc.&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; All these examples are effectively optional as they aren&amp;#39;t required&lt;br/&gt;&amp;gt; for base&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; node operation, but they&amp;#39;ve organically evolved over time as node&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; implementations and wallet seek to solve UX and operational&lt;br/&gt;&amp;gt; problems for&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; their users. bLIPs can be a _descriptive_ (this is how things can&lt;br/&gt;&amp;gt; be done)&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; home for these types of standards, while BOLTs can be reserved for&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; _prescriptive_ measures (an HTLC looks like this, etc).&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; The protocol as implemented today has a number of extensions (TLVs,&lt;br/&gt;&amp;gt; message&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; types, feature bits, etc) that allow implementations to spin out&lt;br/&gt;&amp;gt; their own&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; sub-protocols, many of which won&amp;#39;t be considered absolutely&lt;br/&gt;&amp;gt; necessary for node&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; operation. IMO we should embrace more of a &amp;#34;bazaar&amp;#34; style of&lt;br/&gt;&amp;gt; evolution, and&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; acknowledge that loosely coupled evolution allows participants to&lt;br/&gt;&amp;gt; more broadly&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; explore the design space, without the constraints of &amp;#34;it isn&amp;#39;t a&lt;br/&gt;&amp;gt; thing until N&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; of us start to do it&amp;#34;.&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; Historically, BOLTs have also had a rather monolithic structure.&lt;br/&gt;&amp;gt; We&amp;#39;ve used&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; the same 11 or so documents for the past few years with the size of&lt;br/&gt;&amp;gt; the&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; documents swelling over time with new exceptions, features,&lt;br/&gt;&amp;gt; requirements,&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; etc. If you were hired to work on a new codebase and saw that&lt;br/&gt;&amp;gt; everything is&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; defined in 11 &amp;#34;functions&amp;#34; that have been growing linearly over&lt;br/&gt;&amp;gt; time, you&amp;#39;d&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; probably declare the codebase as being unmaintainable. By having&lt;br/&gt;&amp;gt; distinct&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; documents for proposals/standards, bLIPs (author documents really),&lt;br/&gt;&amp;gt; each new&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; standard/proposal is able to be more effectively explained,&lt;br/&gt;&amp;gt; motivated, versionsed,&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; etc.&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; -- Laolu&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; On Wed, Jun 30, 2021 at 7:35 AM René Pickhardt via Lightning-dev &amp;lt;&lt;br/&gt;&amp;gt; lightning-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt; Hey everyone,&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt; just for reference when I was new here (and did not understand the&lt;br/&gt;&amp;gt; processes well enough) I proposed a similar idea (called LIP) in 2018 c.f.:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2018-July/001367.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2018-July/001367.html&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt; I wonder what exactly has changed in the reasoning by roasbeef&lt;br/&gt;&amp;gt; which I will repeat here:&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; We already have the equiv of improvement proposals: BOLTs.&lt;br/&gt;&amp;gt; Historically&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; new standardization documents are proposed initially as issues&lt;br/&gt;&amp;gt; or PR&amp;#39;s when&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; ultimately accepted. Why do we need another repo?&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt; As far as I can tell there was always some form of (invisible?)&lt;br/&gt;&amp;gt; barrier to participate in the BOLTs but there are also new BOLTs being&lt;br/&gt;&amp;gt; offered:&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt; * BOLT 12:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/lightningnetwork/lightning-rfc/pull/798&#34;&gt;https://github.com/lightningnetwork/lightning-rfc/pull/798&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt; * BOLT 14:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/lightningnetwork/lightning-rfc/pull/780&#34;&gt;https://github.com/lightningnetwork/lightning-rfc/pull/780&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt; and topics to be included like:&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt; * dual funding&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt; * splicing&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt; * the examples given by Ryan&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt; I don&amp;#39;t see how a new repo would reduce that barrier - Actually I&lt;br/&gt;&amp;gt; think it would even create more confusion as I for example would not know&lt;br/&gt;&amp;gt; where something belongs. That being said I think all the points that are&lt;br/&gt;&amp;gt; addressed in Ryan&amp;#39;s mail could very well be formalized into BOLTs but maybe&lt;br/&gt;&amp;gt; we just need to rethink the current process of the BOLTs to make it more&lt;br/&gt;&amp;gt; accessible for new ideas to find their way into the BOLTs? One thing that I&lt;br/&gt;&amp;gt; can say from answering lightning-network questions on stackexchange is that&lt;br/&gt;&amp;gt; it would certainly help if the BOLTs where referenced  on lightning.network&lt;br/&gt;&amp;gt; web page and in the whitepaper as the place to be if one wants to learn&lt;br/&gt;&amp;gt; about the Lightning Network&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt; with kind regards Rene&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt; On Wed, Jun 30, 2021 at 4:10 PM Ryan Gentry via Lightning-dev &amp;lt;&lt;br/&gt;&amp;gt; lightning-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; Hi all,&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; The recent thread around zero-conf channels [1] provides an&lt;br/&gt;&amp;gt; opportunity to discuss how the BOLT process handles features and best&lt;br/&gt;&amp;gt; practices that arise in the wild vs. originating within the process itself.&lt;br/&gt;&amp;gt; Zero-conf channels are one of many LN innovations on the app layer that&lt;br/&gt;&amp;gt; have struggled to make their way into the spec. John Carvalho and Bitrefill&lt;br/&gt;&amp;gt; launched Turbo channels in April 2019 [2], Breez posted their solution to&lt;br/&gt;&amp;gt; the mailing list for feedback in August 2020 [3], and we know at least&lt;br/&gt;&amp;gt; ACINQ and Muun (amongst others) have their own implementations. In an ideal&lt;br/&gt;&amp;gt; world there would be a descriptive design document that the app layer&lt;br/&gt;&amp;gt; implementers had collaborated on over the years that the spec group could&lt;br/&gt;&amp;gt; then pick up and merge into the BOLTs now that the feature is deemed&lt;br/&gt;&amp;gt; spec-worthy.&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; Over the last couple of months, we have discussed the idea of&lt;br/&gt;&amp;gt; adding a BIP-style process (bLIPs? SPARKs? [4]) on top of the BOLTs with&lt;br/&gt;&amp;gt; various members of the community, and have received positive feedback from&lt;br/&gt;&amp;gt; both app layer and protocol devs. This would not affect the existing BOLT&lt;br/&gt;&amp;gt; process at all, but simply add a place for app layer best practices to be&lt;br/&gt;&amp;gt; succinctly described and organized, especially those that require&lt;br/&gt;&amp;gt; coordination. These features are being built outside of the BOLT process&lt;br/&gt;&amp;gt; today anyways, so ideally a bLIP process would bring them into the fold&lt;br/&gt;&amp;gt; instead of leaving them buried in old ML posts or not documented at all.&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; Some potential bLIP ideas that people have mentioned include:&lt;br/&gt;&amp;gt; each lnurl variant, on-the-fly channel opens, AMP, dynamic commitments,&lt;br/&gt;&amp;gt; podcast payment metadata, p2p messaging formats, new pathfinding&lt;br/&gt;&amp;gt; heuristics, remote node connection standards, etc.&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; If the community is interested in moving forward, we&amp;#39;ve started a&lt;br/&gt;&amp;gt; branch [5] describing such a process. It&amp;#39;s based on BIP-0002, so not trying&lt;br/&gt;&amp;gt; to reinvent any wheels. It would be great to have developers from various&lt;br/&gt;&amp;gt; implementations and from the broader app layer ecosystem volunteer to be&lt;br/&gt;&amp;gt; listed as editors (basically the same role as in the BIPs).&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; Looking forward to hearing your thoughts!&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; Best,&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; Ryan&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; [1]&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2021-June/003074.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2021-June/003074.html&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; [2]&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://www.coindesk.com/bitrefills-thor-turbo-lets-you-get-started-with-bitcoins-lightning-faster&#34;&gt;https://www.coindesk.com/bitrefills-thor-turbo-lets-you-get-started-with-bitcoins-lightning-faster&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; [3]&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-August/002780.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-August/002780.html&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; [4] bLIP = Bitcoin Lightning Improvement Proposal and SPARK =&lt;br/&gt;&amp;gt; Standardization of Protocols at the Request of the Kommunity (h/t fiatjaf)&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; [5]&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/ryanthegentry/lightning-rfc/blob/blip-0001/blips/blip-0001.mediawiki&#34;&gt;https://github.com/ryanthegentry/lightning-rfc/blob/blip-0001/blips/blip-0001.mediawiki&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt; --&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt; &lt;a href=&#34;https://www.rene-pickhardt.de&#34;&gt;https://www.rene-pickhardt.de&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; &amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; &amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; --&lt;br/&gt;&amp;gt; Michael Folkson&lt;br/&gt;&amp;gt; Email: michaelfolkson at gmail.com&lt;br/&gt;&amp;gt; Keybase: michaelfolkson&lt;br/&gt;&amp;gt; PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20210702/6d3cd8a3/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20210702/6d3cd8a3/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:02:54Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqs93cu5940d7yax5pav26slmne64kvrcjtuce2fdmfrmrhcwaautxszypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24z63uscf</id>
    
      <title type="html">📅 Original date posted:2021-06-21 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqs93cu5940d7yax5pav26slmne64kvrcjtuce2fdmfrmrhcwaautxszypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24z63uscf" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsffpgens9cfger8fzfe2u4qwe94qes8wpe2lnfwjqa3dan6mq6ewskmzkl5&#39;&gt;nevent1q…zkl5&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-06-21&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Dave,&lt;br/&gt;&lt;br/&gt;&amp;gt; That might work for current LN-penalty, but I&amp;#39;m not sure it works for&lt;br/&gt;eltoo.&lt;br/&gt;&lt;br/&gt;Well, we have not settled yet on the eltoo design but if we take the later&lt;br/&gt;proposal in date [0], signing the update transaction with&lt;br/&gt;SIGHGASH_ANYPREVOUT lets you attach non-interactively a single-party&lt;br/&gt;controlled input at broadcast-time. Providing the input amount is high&lt;br/&gt;enough to bump the transaction feerate over network mempools, it should&lt;br/&gt;allow the tx to propagate across network mempools and that way solve the&lt;br/&gt;pre-signed feerate problem as defined in the post ?&lt;br/&gt;&lt;br/&gt;&amp;gt;  If Bitcoin Core can rewrite the blind CPFP fee bump transaction&lt;br/&gt;&amp;gt; to refer to any prevout, that implies anyone else can do the same.&lt;br/&gt;&amp;gt; Miners who were aware of two or more states from an eltoo channel would&lt;br/&gt;&amp;gt; be incentivized to rewrite to the oldest state, giving them fee revenue&lt;br/&gt;&amp;gt; now and ensuring fee revenue in the future when a later state update is&lt;br/&gt;&amp;gt; broadcast.&lt;br/&gt;&lt;br/&gt;Yep, you can add a per-participant key to lockdown the transaction and&lt;br/&gt;avoid any in-flight malleability ? I think this is discussed in the &amp;#34;A&lt;br/&gt;Stroll through Fee-Bumping Techniques&amp;#34; thread.&lt;br/&gt;&lt;br/&gt;&amp;gt; If the attacker using pinning is able to reuse their attack at no cost,&lt;br/&gt;&amp;gt; they can re-pin the channel again and force the honest user to pay&lt;br/&gt;&amp;gt; another anyprevout bounty to miners.&lt;br/&gt;&lt;br/&gt;This is also true with package-relay where your counterparty, with a better&lt;br/&gt;knowledge of network mempools, can always re-broadcast a CPFP-bumped&lt;br/&gt;malicious package ? Under this assumption, I think you should always be&lt;br/&gt;ready to bump our honest package.&lt;br/&gt;&lt;br/&gt;Further, for the clarity of the discussion, can you point to which pinning&lt;br/&gt;scenario you&amp;#39;re thinking of or if it&amp;#39;s new under SIGHASH_ANYPREVOUT,&lt;br/&gt;describe it ?&lt;br/&gt;&lt;br/&gt;&amp;gt; Repeat this a bunch of times and the honest user has now spent more on&lt;br/&gt;fees than their balance from the&lt;br/&gt;closed channel.&lt;br/&gt;&lt;br/&gt;And sadly, as this concern also exists in case of a miner-harvesting attack&lt;br/&gt;against LN nodes, a concern that Gleb and I expressed more than a year ago&lt;br/&gt;in a public post [1], a good L2 client should always upper bound its&lt;br/&gt;fee-bumping reserve. I&amp;#39;ve a short though-unclear note on this notion of&lt;br/&gt;fee-bumping upper to warn other L2 engineers  in &amp;#34;On Mempool Funny Games&lt;br/&gt;against Multi-Party Funded Transactions&amp;#34;&lt;br/&gt;&lt;br/&gt;Please read so:&lt;br/&gt;&lt;br/&gt;&amp;#34;A L2 client, with only a view of its mempool at best, won&amp;#39;t understand why&lt;br/&gt; the transaction doesn&amp;#39;t confirm and if it&amp;#39;s responsible for the&lt;br/&gt; fee-bumping, it might do multiple rounds of feerate increase through CPFP,&lt;br/&gt; in vain. As the fee-bumping algorithm is assumed to be known if the victim&lt;br/&gt; client is open source code, the attacker can predict when the fee-bumping&lt;br/&gt; logic reaches its upper bound.&amp;#34;&lt;br/&gt;&lt;br/&gt;Though thanks for the recall! I should log dynamic-balances in RL&amp;#39;s&lt;br/&gt;`ChannelMonitorUpdate` for our ongoing implementation of anchor, updating&lt;br/&gt;my TODO :p&lt;br/&gt;&lt;br/&gt;&amp;gt; Even if my analysis above is wrong, I would encourage you or Matt or&lt;br/&gt;someone to write up this anyprevout idea in more detail and distribute&lt;br/&gt;it before you promote it much more.&lt;br/&gt;&lt;br/&gt;That&amp;#39;s a really fair point, as a lot of the reasoning was based on private&lt;br/&gt;discussion with Matt. Though as SIGHASH_ANYPREVOUT isn&amp;#39;t advocated for&lt;br/&gt;community consensus and those things take time, should just take a few&lt;br/&gt;hours of my time.&lt;br/&gt;&lt;br/&gt;&amp;gt; Even if every protocol based on presigned transactions can magically&lt;br/&gt;allow dynamically adding inputs and modifying outputs for fees, and we&lt;br/&gt;also have a magic perfect transaction replacement protocol,&lt;br/&gt;&lt;br/&gt;&amp;#34;“Any sufficiently advanced technology is indistinguishable from magic.”&lt;br/&gt;Arthur C. Clarke&lt;br/&gt;&lt;br/&gt;Wit apart, that might be the outcome with careful bitcoin protocol&lt;br/&gt;development, where technical issues are laid out in a best effort (of&lt;br/&gt;mine!) and spread to the Bitcoin community on the most public bitcoin&lt;br/&gt;communication channel ?&lt;br/&gt;&lt;br/&gt;And humbly, on all those L2 issues I did change my opinion, as I&amp;#39;ve written&lt;br/&gt;so much explicitly in this thread post by pointing to an older post of mine&lt;br/&gt;(&amp;#34;Advances in Bitcoin Contracting : Uniform Policy and Package Relay&amp;#34;).&lt;br/&gt;This reversal, partially motivated by a lot of discussion with folks,&lt;br/&gt;including yourself, initiated since at least mid last year.&lt;br/&gt;&lt;br/&gt;&amp;gt; package relay is still fundamentally useful for CPFP fee bumping very low&lt;br/&gt;&amp;gt; feerate transactions received from an external party.  E.g. Alice pays&lt;br/&gt;&amp;gt; Bob, mempool min feerates increase and Alice&amp;#39;s transaction is dropped,&lt;br/&gt;&amp;gt; Bob still wants the money, so he submits a package with Alice&amp;#39;s&lt;br/&gt;&amp;gt; transaction plus his own high feerate spend of it.&lt;br/&gt;&lt;br/&gt;I think this point would be a reverse of our p2p design where we are now&lt;br/&gt;making the sender responsible for the receiver quality of its mempool&lt;br/&gt;feerate ? This question has never been clear up during the years-long&lt;br/&gt;discussion of package-relay design [1].&lt;br/&gt;&lt;br/&gt;Though referring to the thread post and last week&amp;#39;s transaction-relay&lt;br/&gt;workshop, I did point out that package-relay might serve in the long-term&lt;br/&gt;as a mempool-sync mechanism to prevent potential malicious mempool&lt;br/&gt;partitions [2].&lt;br/&gt;&lt;br/&gt;&amp;gt; Package relay is a clear improvement now, and one I expect to be&lt;br/&gt;permanent for as long as we&amp;#39;re using anything like the current protocol&lt;br/&gt;&lt;br/&gt;Again, reading my post, I did point out that we might keep the &amp;#34;lower half&amp;#34;&lt;br/&gt;of package-relay and deprecate only the higher part of it as we have more&lt;br/&gt;feerate-efficient fee-bumping primitive available. If  it sounds too much&lt;br/&gt;of a release engineering effort to synchronize on the scale of an&lt;br/&gt;ecosystem, think about the ongoing deprecation of Tor V2.&lt;br/&gt;&lt;br/&gt;Further, you did express a far less assertive opinion during last Tuesday&lt;br/&gt;transaction-relay workshops, to which a lot of folks attended, where you&lt;br/&gt;pointed it might not be a good idea for L2s to make more assumptions on&lt;br/&gt;non-normative:&lt;br/&gt;&lt;br/&gt;&amp;#34;harding&amp;gt; I do think we should be using miners profit incentive more for&lt;br/&gt;stuff rather than trying to normalize mempool policy (which not entirely&lt;br/&gt;possible), e.g. things like&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-April/002664.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-April/002664.html&lt;/a&gt;&lt;br/&gt;&amp;#34;&lt;br/&gt;&lt;br/&gt;Arguing for package-relay &amp;#34;permanence&amp;#34; moves in the contrary decision IMHO ?&lt;br/&gt;&lt;br/&gt;&amp;gt; I don&amp;#39;t think it&amp;#39;s appropriate to be creating timelines like this that&lt;br/&gt;depend on the work of a large number of contributors who I don&amp;#39;t believe&lt;br/&gt;&lt;br/&gt;Thanks Dave, this is your opinion and I respect this. I&amp;#39;ll let any&lt;br/&gt;participant of this mailing list make an opinion on its own, following&lt;br/&gt;their private judgement. It might be based from a lot of different factors,&lt;br/&gt;e.g &amp;#34;trusting the experts&amp;#34; or gathering diverse in-field authorities&amp;#39;&lt;br/&gt;opinions or reasoning from scratch based on raw, public facts.&lt;br/&gt;&lt;br/&gt;Though might I ask you on which information sources are you finding your&lt;br/&gt;belief ? I&amp;#39;m curious if you&amp;#39;re aware of any contributors who feel entitled&lt;br/&gt;to be consulted in a decentralized development process...&lt;br/&gt;&lt;br/&gt;For the records, I did consult no one. As even in the technical circle that&lt;br/&gt;would have been a lot of open source projects teams to reach out : LND,&lt;br/&gt;c-ligtning, Eclair, coin-teleport, revault, sapio, btcsuite, bcoin,&lt;br/&gt;libbitcoin, wasabi&amp;#39;s coinjoin, samourai wallet&amp;#39;s coinjoin, ...&lt;br/&gt;&lt;br/&gt;I was lazy, I just shot a mail :p&lt;br/&gt;&lt;br/&gt;W.r.t to Greg&amp;#39;s 4-year old&amp;#39;s piece, I&amp;#39;ll let him express his opinion on how&lt;br/&gt;the expressed framework applies to my post, the Bitcoin dev stage has grown&lt;br/&gt;a lot since then. What was making sense when you had like ~20 Bitcoin dev&lt;br/&gt;with 90% of the technical knowledge doesn&amp;#39;t scale when you have multiple&lt;br/&gt;second-layers specifications of which you have multiple implementations&lt;br/&gt;teams, some of them  decentralized and spread through different&lt;br/&gt;countries/timezones, IMHO.&lt;br/&gt;&lt;br/&gt;Though, Dave if you strongly hold your opinion on my behavior, I would&lt;br/&gt;invite you to do this intellectual work by yourself.&lt;br/&gt;&lt;br/&gt;Browsing quickly through Greg&amp;#39;s piece, a lot of the reasoning is based on&lt;br/&gt;FOSS experience from Linux/Juniper, which to the best of my knowledge are&lt;br/&gt;centralized software projects ?&lt;br/&gt;&lt;br/&gt;Note, also Paul Storzc&amp;#39;s post has the simple phrase :&lt;br/&gt;&lt;br/&gt;&amp;#34;I emphasized concrete numbers, and concrete dates&amp;#34;&lt;br/&gt;&lt;br/&gt;I believe my post doesn&amp;#39;t have such numbers and concrete dates ?&lt;br/&gt;&lt;br/&gt;Presence of Core version numbers are motivated as clear signalling for L2&lt;br/&gt;developpers to update their backend in case of undocumented, subtle policy&lt;br/&gt;changes slipping in the codebase. Let&amp;#39;s minimize CVE-2020-26895&lt;br/&gt;style-of-bugs across the ecosystem :/&lt;br/&gt;&lt;br/&gt;Finally, the presence of timelines in this post is also a gentle call for&lt;br/&gt;the Bitcoin ecosystem to act on those safety holes, of which the&lt;br/&gt;seriousness has been underscored by a lot of contributors in the past,&lt;br/&gt;especially for the pre-signed feerate problem and even before I was in the&lt;br/&gt;Bitcoin stage.&lt;br/&gt;&lt;br/&gt;So better to patch them before they do manifest in the wild, and folks&lt;br/&gt;start to bleed coins.  What you learn from practicing security research,&lt;br/&gt;the lack of action can be harmful :/&lt;br/&gt;&lt;br/&gt;&amp;gt; Stuff will get done when it gets done.&lt;br/&gt;&lt;br/&gt;Don&amp;#39;t forget bugs might slip in but that&amp;#39;s fine if you have the skilled&lt;br/&gt;folks around to catch them :)&lt;br/&gt;&lt;br/&gt;And yes I really care about Lightning, and all those cute new L2 protocols&lt;br/&gt;fostering in the community :)&lt;br/&gt;&lt;br/&gt;Finally, you know Dave, I&amp;#39;m just spreading ideas.&lt;br/&gt;&lt;br/&gt;If those ideas are sound and folks love them, awesome! They&amp;#39;re free to use,&lt;br/&gt;study, share and modify them to build better systems.&lt;br/&gt;&lt;br/&gt;If I&amp;#39;m wrong, like I&amp;#39;ve been in the past, like I might be today and like&lt;br/&gt;I&amp;#39;ll be in the future, I hope they will be patient to teach me back and&lt;br/&gt;we&amp;#39;ll learn.&lt;br/&gt;&lt;br/&gt;Hacker ethos :) ?&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;[0]&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-January/002448.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-January/002448.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;[1] &lt;a href=&#34;https://github.com/bitcoin/bitcoin/issues/14895&#34;&gt;https://github.com/bitcoin/bitcoin/issues/14895&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;[2]&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-February/002569.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-February/002569.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Le sam. 19 juin 2021 à 09:38, David A. Harding &amp;lt;dave at dtrt.org&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; On Fri, Jun 18, 2021 at 06:11:38PM -0400, Antoine Riard wrote:&lt;br/&gt;&amp;gt; &amp;gt; 2) Solving the Pre-Signed Feerate problem : Package-Relay or&lt;br/&gt;&amp;gt; &amp;gt; SIGHASH_ANYPREVOUT&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; For Lightning, either package-relay or SIGHASH_ANYPREVOUT should be able&lt;br/&gt;&amp;gt; to&lt;br/&gt;&amp;gt; &amp;gt; solve the pre-signed feerate issue [3]&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; [...]&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; [3] I don&amp;#39;t think there is a clear discussion on how SIGHASH_ANYPREVOUT&lt;br/&gt;&amp;gt; &amp;gt; solves pinnings beyond those LN meetings logs:&lt;br/&gt;&amp;gt; &amp;gt; &lt;a href=&#34;https://gnusha.org/lightning-dev/2020-06-08.log&#34;&gt;https://gnusha.org/lightning-dev/2020-06-08.log&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; For anyone else looking, the most relevant line seems to be:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   13:50 &amp;lt; BlueMatt&amp;gt; (sidenote: sighash_no_input is *really* elegant here&lt;br/&gt;&amp;gt;   - assuming a lot of complicated logic in core to do so, you could&lt;br/&gt;&amp;gt;   imagine blind-cpfp-bumping *any* commitment tx without knowing its&lt;br/&gt;&amp;gt;   there or which one it is all with one tx.......in theory)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; That might work for current LN-penalty, but I&amp;#39;m not sure it works for&lt;br/&gt;&amp;gt; eltoo.  If Bitcoin Core can rewrite the blind CPFP fee bump transaction&lt;br/&gt;&amp;gt; to refer to any prevout, that implies anyone else can do the same.&lt;br/&gt;&amp;gt; Miners who were aware of two or more states from an eltoo channel would&lt;br/&gt;&amp;gt; be incentivized to rewrite to the oldest state, giving them fee revenue&lt;br/&gt;&amp;gt; now and ensuring fee revenue in the future when a later state update is&lt;br/&gt;&amp;gt; broadcast.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If the attacker using pinning is able to reuse their attack at no cost,&lt;br/&gt;&amp;gt; they can re-pin the channel again and force the honest user to pay&lt;br/&gt;&amp;gt; another anyprevout bounty to miners.  Repeat this a bunch of times and&lt;br/&gt;&amp;gt; the honest user has now spent more on fees than their balance from the&lt;br/&gt;&amp;gt; closed channel.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Even if my analysis above is wrong, I would encourage you or Matt or&lt;br/&gt;&amp;gt; someone to write up this anyprevout idea in more detail and distribute&lt;br/&gt;&amp;gt; it before you promote it much more.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; package-relay sounds a reasonable, temporary &amp;#34;patch&amp;#34;.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Even if every protocol based on presigned transactions can magically&lt;br/&gt;&amp;gt; allow dynamically adding inputs and modifying outputs for fees, and we&lt;br/&gt;&amp;gt; also have a magic perfect transaction replacement protocol, package&lt;br/&gt;&amp;gt; relay is still fundamentally useful for CPFP fee bumping very low&lt;br/&gt;&amp;gt; feerate transactions received from an external party.  E.g. Alice pays&lt;br/&gt;&amp;gt; Bob, mempool min feerates increase and Alice&amp;#39;s transaction is dropped,&lt;br/&gt;&amp;gt; Bob still wants the money, so he submits a package with Alice&amp;#39;s&lt;br/&gt;&amp;gt; transaction plus his own high feerate spend of it.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Package relay is a clear improvement now, and one I expect to be&lt;br/&gt;&amp;gt; permanent for as long as we&amp;#39;re using anything like the current protocol.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; # Deployment timeline&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; So what I believe as a rough deployment timeline.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I don&amp;#39;t think it&amp;#39;s appropriate to be creating timelines like this that&lt;br/&gt;&amp;gt; depend on the work of a large number of contributors who I don&amp;#39;t believe&lt;br/&gt;&amp;gt; you&amp;#39;ve consulted.  For details on this point of view, please see&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2017-July/014726.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2017-July/014726.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Stuff will get done when it gets done.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; -Dave&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20210621/7d375a2a/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20210621/7d375a2a/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:02:36Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsx3e0m9u6660thqzm689rvkpejk8wh5c5rynz7qqfzjflwnt424pszypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zkc23vw</id>
    
      <title type="html">📅 Original date posted:2021-06-18 📝 Original message: &amp;gt; ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsx3e0m9u6660thqzm689rvkpejk8wh5c5rynz7qqfzjflwnt424pszypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zkc23vw" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs9pwtwqw6eyxcx840upf55tfn6ned2wysudkm5ac0tftc7697kg3sjed7gm&#39;&gt;nevent1q…d7gm&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-06-18&lt;br/&gt;📝 Original message:&lt;br/&gt;&amp;gt; That&amp;#39;s a question I hope we&amp;#39;ll gather feedback during next Thursday&amp;#39;s&lt;br/&gt;transaction relay workshops.&lt;br/&gt;&lt;br/&gt;As someone kindly pointed out to me, workshop is happening Tuesday, June&lt;br/&gt;22th. Not Thursday, mistake of mine :/&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Le ven. 18 juin 2021 à 18:11, Antoine Riard &amp;lt;antoine.riard at gmail.com&amp;gt; a&lt;br/&gt;écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It&amp;#39;s a big chunk, so if you don&amp;#39;t have time browse parts 1 and 2 and share&lt;br/&gt;&amp;gt; your 2 sats on the deployment timeline :p&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This post recalls some unsolved safety holes about Lightning, how&lt;br/&gt;&amp;gt; package-relay or SIGHASH_ANYPREVOUT can solve the first one, how a mempool&lt;br/&gt;&amp;gt; hardening can solve the second one, few considerations on package-relay&lt;br/&gt;&amp;gt; design trade-offs and propose a rough deployment timeline.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1) Lightning Safety Holes : Pre-Signed Feerate and Tx-Pinning (to skip if&lt;br/&gt;&amp;gt; you&amp;#39;re a LN dev)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; As of today, Lightning is suffering from 2 safety holes w.r.t to&lt;br/&gt;&amp;gt; base-layer interactions, widely discussed among ln devs.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The first one, the pre-signed feerate issue with future broadcasted&lt;br/&gt;&amp;gt; time-sensitive transactions is laid out clearly in Matt Corallo&amp;#39;s &amp;#34;CPFP&lt;br/&gt;&amp;gt; Carve-Out Fee-Prediction Issues in Contracting Applications (eg Lightning)&amp;#34;&lt;br/&gt;&amp;gt; [0]. This issue might provoke loss of funds, even in non-adversarial&lt;br/&gt;&amp;gt; settings, i.e a Lightning routing hub not being able to settle backward&lt;br/&gt;&amp;gt; onchain a successful HTLC during occurrences of sudden mempool congestion.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; As blockspace demand increases with an always growing number of&lt;br/&gt;&amp;gt; onchain/offchain bitcoin users, coupling effects are more likely to happen&lt;br/&gt;&amp;gt; and this pre-signed feerate issue is going to become more urgent to solve&lt;br/&gt;&amp;gt; [1]. For e.g, few percentiles of increases in feerate being overpriced by&lt;br/&gt;&amp;gt; Lightning routing hubs to close &amp;#34;fractional-reserve&amp;#34; backed anchor&lt;br/&gt;&amp;gt; channels, driving mempools congestions, provoking anchor channels&lt;br/&gt;&amp;gt; fee-bumping reserves becoming even more under-provisioned and thus close&lt;br/&gt;&amp;gt; down, etc.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The second issue, malicious transaction pinnings, is documented in Bastien&lt;br/&gt;&amp;gt; Teinturier&amp;#39;s &amp;#34;Pinning Attacks&amp;#34; [2]. AFAIK, there is a rough consensus among&lt;br/&gt;&amp;gt; devs on the conceptual feasibility of such a class of attacks against a LN&lt;br/&gt;&amp;gt; node, though so far we have not seen them executed in the wild and I&amp;#39;m not&lt;br/&gt;&amp;gt; aware of anyone having realized them in real-world conditions. Note, there&lt;br/&gt;&amp;gt; is a variety of attack scenarios to consider which is function of a wide&lt;br/&gt;&amp;gt; matrix (channel types, LN implementation&amp;#39;s `update_fee` policy, LN&lt;br/&gt;&amp;gt; implementation&amp;#39;s `cltv_delta` policy, mempool congestion feerate groups,&lt;br/&gt;&amp;gt; routing hubs or end nodes) Demoing against deployed LN implementations with&lt;br/&gt;&amp;gt; default settings has been on my todo for a while, though a priori One&lt;br/&gt;&amp;gt; Scenario To Exploit Them All doesn&amp;#39;t fit well.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Side-note, as a LN operator, if you&amp;#39;re worried about those security risks,&lt;br/&gt;&amp;gt; you can bump your `cltv_delta`/`cltv_expiry_delta` to significantly coarse&lt;br/&gt;&amp;gt; the attacks.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I think there is an important point to underscore. Considering the state&lt;br/&gt;&amp;gt; of knowledge we have today, I believe there is no strong interdependency&lt;br/&gt;&amp;gt; between solving pre-signed feerate and tx-pinning with the same mechanism&lt;br/&gt;&amp;gt; from a safety/usability standpoint. Or last such mechanism can be deployed&lt;br/&gt;&amp;gt; by stages.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 2) Solving the Pre-Signed Feerate problem : Package-Relay or&lt;br/&gt;&amp;gt; SIGHASH_ANYPREVOUT&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; For Lightning, either package-relay or SIGHASH_ANYPREVOUT should be able&lt;br/&gt;&amp;gt; to solve the pre-signed feerate issue [3]&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; One of the interesting points recalled during the first transaction relay&lt;br/&gt;&amp;gt; workshops was that L2s making unbounded security assumptions on&lt;br/&gt;&amp;gt; non-normative tx-relay/mempool acceptance rules sounds a wrong direction&lt;br/&gt;&amp;gt; for the Bitcoin ecosystem long-term, and more prone to subtle bugs/safety&lt;br/&gt;&amp;gt; risks across the ecosystem.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I did express the contrary, public opinion a while back [4]. That said, I&lt;br/&gt;&amp;gt; start to agree it&amp;#39;s wiser ecosystem-wise to keep those non-normatives rules&lt;br/&gt;&amp;gt; as only a groundwork for weaker assumptions than consensus ones. Though it&lt;br/&gt;&amp;gt; would be nice for long-term L2s stability to consider them with more care&lt;br/&gt;&amp;gt; than today in our base-layer protocol development process [4]&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On this rational, I now share the opinion it&amp;#39;s better long-term to solve&lt;br/&gt;&amp;gt; the pre-signed feerate problem with a consensus change such as&lt;br/&gt;&amp;gt; SIGHASH_ANYPREVOUT rather than having too much off-chain coins relying on&lt;br/&gt;&amp;gt; the weaker assumptions offered by bitcoin core&amp;#39;s tx-relay/mempool&lt;br/&gt;&amp;gt; acceptance rules, and far harder to replicate and disseminate across the&lt;br/&gt;&amp;gt; ecosystem.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; However, if SIGHASH_ANYPREVOUT is Things Done Right(tm), should we discard&lt;br/&gt;&amp;gt; package-relay ?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Sadly, in the worst-case scenario we might never reach consensus again&lt;br/&gt;&amp;gt; across the ecosystem and Taproot is the last softfork. Ever :/ *sad violons&lt;br/&gt;&amp;gt; and tissues jingle*&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; With this dilemma in mind, it might be wise for the LN/L2 ecosystems to&lt;br/&gt;&amp;gt; have a fall-back plan to solve their safety/usability issues and&lt;br/&gt;&amp;gt; package-relay sounds a reasonable, temporary &amp;#34;patch&amp;#34;.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Even if package-relay requires serious engineering effort in Bitcoin Core&lt;br/&gt;&amp;gt; to avoid introducing new DoSes, swallowing well the complexity increase in&lt;br/&gt;&amp;gt; critical code paths such as the mempool/p2p stack and a gentle API design&lt;br/&gt;&amp;gt; for our friends the L2 devs, I believe it&amp;#39;s worthy the engineering&lt;br/&gt;&amp;gt; resources cost. From-my-completely-biased-LN-dev viewpoint :p&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In the best-case scenario, we&amp;#39;ll activate SIGHASH_ANYPREVOUT and better&lt;br/&gt;&amp;gt; fee-bumping primitives softforks [5] slowly strip off the &amp;#34;L2 fee-bumping&lt;br/&gt;&amp;gt; primitive&amp;#34; semantic from &amp;#34;package-relay&amp;#34;, friendly nudge the L2 ecosystem&lt;br/&gt;&amp;gt; to seat their fee-bumping on safer, consensus assumptions and maybe keep&lt;br/&gt;&amp;gt; the p2p packages to improve on the malicious mempool-partitions-side or as&lt;br/&gt;&amp;gt; a replacement of our orphan logic.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 3) Solving Tx-Pinnings : Hardening the Mempool against Tx-Relay Jammings&lt;br/&gt;&amp;gt; attacks&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Current Mempool anti-DoS rules have been mostly designed at a time where&lt;br/&gt;&amp;gt; the shared-utxo model with competing time-sensitive transactions was still&lt;br/&gt;&amp;gt; an idea on the whiteboard. The last few years have revealed those anti-DoS&lt;br/&gt;&amp;gt; rules as a source of security vulnerabilities for Lightning and a research&lt;br/&gt;&amp;gt; concern for L2s still in the early-phase of deployment [6].&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Beyond real-world pinning exercises against production software as a&lt;br/&gt;&amp;gt; complement of the current pinning attacks research, it would be better to&lt;br/&gt;&amp;gt; agree on a common L2 attacker model before to modify widely-relied subset&lt;br/&gt;&amp;gt; of the mempool, such as the replace-by-fee logic or the in-mempool package&lt;br/&gt;&amp;gt; limits [7]. One risk of uncareful changes in this area would be to solve a&lt;br/&gt;&amp;gt; pinning vector for a L2-alice but introduce a new vuln for a L2-bob.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I believe the first part of such a revamp could hopefully land somehow&lt;br/&gt;&amp;gt; next year. Though, IMHO, in the years to come, we&amp;#39;ll have to do more hard&lt;br/&gt;&amp;gt; reasoning to ensure the mempool supports advanced Bitcoin protocols (e.g&lt;br/&gt;&amp;gt; OP_CTV congestion tree,  CoinPool, interactive cut-through, ...)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Note the opinion I raised above on quality of assumptions on mempool&lt;br/&gt;&amp;gt; behavior, even if we harden it on the base-layer side,  L2s should be&lt;br/&gt;&amp;gt; well-aware the product is shipped with a guarantee limitation :p&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 4) Considerations on Package-Relay Design&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Package relay relies on at least two cleanly separate components (awesome,&lt;br/&gt;&amp;gt; if we schedule to deprecate the higher half in the future!)&lt;br/&gt;&amp;gt; * &amp;#34;the higher half&amp;#34; : extension of the mempool logic, with a new&lt;br/&gt;&amp;gt; package-level policy, not strictly intersecting with the tx-level policy&lt;br/&gt;&amp;gt; * &amp;#34;the lower half&amp;#34; : at least three different designs, receiver initiated,&lt;br/&gt;&amp;gt; sender-initiated and relay-initiated&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; One open design question for the &amp;#34;higher half&amp;#34; is the package-size of the&lt;br/&gt;&amp;gt; acceptance logic, which is ultimately a function of the L2 ecosystem state.&lt;br/&gt;&amp;gt; Do we have deployed or in deployment phase L2 protocols with a need for&lt;br/&gt;&amp;gt; more than 2-stage and if yes what API bounds do they expect ? That&amp;#39;s a&lt;br/&gt;&amp;gt; question I hope we&amp;#39;ll gather feedback during next Thursday&amp;#39;s transaction&lt;br/&gt;&amp;gt; relay workshops. IMO, such package API should come out with a specification&lt;br/&gt;&amp;gt; on which L2-community can be gathered and public consensus established. For&lt;br/&gt;&amp;gt; the same communications reasons towards downstream projects, we have a&lt;br/&gt;&amp;gt; BIP125 standard. And especially in this case the bitcoin core protocol&lt;br/&gt;&amp;gt; development process should carefully listen to the needs of actual L2&lt;br/&gt;&amp;gt; users. Also, a lot of those L2 devs, they don&amp;#39;t speak C&#43;&#43; :)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; One could imagine those mempool standards as &amp;#34;perishable&amp;#34; contracts&lt;br/&gt;&amp;gt; between a base-layer implementation and the upper layers, with ultimately&lt;br/&gt;&amp;gt; the full-node implementation reserving itself the right to deprecate them,&lt;br/&gt;&amp;gt; maybe with a lengthy-warning period ?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Beyond that, I believe there is another remaining interdependency between&lt;br/&gt;&amp;gt; &amp;#34;the lower half&amp;#34; design and L2s behaviors, namely bandwidth waste in case&lt;br/&gt;&amp;gt; of a high-frequency of package redundancy. Let&amp;#39;s say if a package is&lt;br/&gt;&amp;gt; composed of {A, B}, and the package broadcaster fee-bump, triggering the&lt;br/&gt;&amp;gt; transformation to {A, B&amp;#39;}, A bandwidth at first propagation is going to be&lt;br/&gt;&amp;gt; wasted. Note, if we assume a dynamic fee-market, this package rebroadcast&lt;br/&gt;&amp;gt; behavior should be common across the ecosystem. Though ultimately, the&lt;br/&gt;&amp;gt; seriousness of this issue is going to be a function of the number of&lt;br/&gt;&amp;gt; Lightning nodes relying on base-layer tx-relay and the number of fee-bumped&lt;br/&gt;&amp;gt; onchain operations per Lightning node.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I believe it would be great to come up with simulations on this front,&lt;br/&gt;&amp;gt; just to avoid silently nullifying all the tedious, small improvements which&lt;br/&gt;&amp;gt; have been done in the last years to minimize bitcoin core node&amp;#39;s bandwidth.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Another alternative would be to come with a cost-effective&lt;br/&gt;&amp;gt; package-replacement policy, so likely more complexity. But might it not&lt;br/&gt;&amp;gt; make sense to not economically outlaw Lightning nodes with a small fee&lt;br/&gt;&amp;gt; budget ?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Lastly, there is a consideration to have around anti-DoS measures we&amp;#39;ll&lt;br/&gt;&amp;gt; have to deploy for package-relay. Too easy, and that&amp;#39;s a security concern&lt;br/&gt;&amp;gt; for the base-layer, too hard, and that&amp;#39;s introducing yet-another tx-relay&lt;br/&gt;&amp;gt; jamming vector against L2, this time at the p2p layer (though won&amp;#39;t be the&lt;br/&gt;&amp;gt; first time [8]&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In any-case we should carefully consider the upgradeability of&lt;br/&gt;&amp;gt; package-relay v.0, like if we upgrade some components of it such as package&lt;br/&gt;&amp;gt; format or package-announcement scheme.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; So yeah why not early 0.24 ? Maybe a bit too short with all those p2p&lt;br/&gt;&amp;gt; questions to clear up among core devs. Ideally, we would land in the&lt;br/&gt;&amp;gt; beginning/middle of the cycle to have time for beta-testing on the L2-side&lt;br/&gt;&amp;gt; and share feedback.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Though ultimately, this question of p2p design belongs to the bitcoin core&lt;br/&gt;&amp;gt; dev process.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # Deployment timeline&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; So what I believe as a rough deployment timeline.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * &amp;#34;package-relay&amp;#34; in bitcoin core, early 0.24 or 0.25: a Core&amp;#39;s release&lt;br/&gt;&amp;gt; cycle offered to the LN/L2 ecosystem to integrate/exercise/provide feedback&lt;br/&gt;&amp;gt; on package API&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * &amp;#34;mempool hardening&amp;#34; in bitcoin core, early 0.26 or 0.27, a Core&amp;#39;s&lt;br/&gt;&amp;gt; release cycle offered to the whole Bitcoin ecosystem to adapt their Bitcoin&lt;br/&gt;&amp;gt; clients, maybe with a boolean setting to smooth the new policy deployment&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * SIGHASH_ANYPREVOUT softfork in the coming year(s), opt-in of any LN/L2&lt;br/&gt;&amp;gt; implementation to migrate its fee-bumping backend on top of it&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * &amp;#34;optimized/multi-party fee-bumping primitive&amp;#34; softfork (one of tx&lt;br/&gt;&amp;gt; mutation/sigash_iomap/sponsorship proposals) softfork in the coming decade,&lt;br/&gt;&amp;gt; friendly uplift of the L2 ecosystem&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Glad to answer any unclarity or uncorrectness of mine :)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; Antoine,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [0] see&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2018-November/016518.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2018-November/016518.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [1] &amp;#34;The Coupling Principle states that as things get larger, they often&lt;br/&gt;&amp;gt; exhibit increased interdependence between components&amp;#34;.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [2] see&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/t-bast/lightning-docs/blob/master/pinning-attacks.md&#34;&gt;https://github.com/t-bast/lightning-docs/blob/master/pinning-attacks.md&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [2] see &amp;#34;Advances in Bitcoin Contracting : Uniform Policy and Package&lt;br/&gt;&amp;gt; Relay&amp;#34;&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2020-July/018063.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2020-July/018063.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [3] I don&amp;#39;t think there is a clear discussion on how SIGHASH_ANYPREVOUT&lt;br/&gt;&amp;gt; solves pinnings beyond those LN meetings logs:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://gnusha.org/lightning-dev/2020-06-08.log&#34;&gt;https://gnusha.org/lightning-dev/2020-06-08.log&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [4] And I believe such great example has been done with this recent change&lt;br/&gt;&amp;gt; proposed for bitcoin core addr-relay policy:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/21528#issuecomment-809906430&#34;&gt;https://github.com/bitcoin/bitcoin/pull/21528#issuecomment-809906430&lt;/a&gt;,&lt;br/&gt;&amp;gt; where the PR author did bear the burden of reaching out potentially&lt;br/&gt;&amp;gt; affected downstream projects.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [5] Like one of tx_mutation/sighash_iomap/sponsorship proposal proposed in&lt;br/&gt;&amp;gt; the thread &amp;#34;A Stroll through Fee-Bumping Techniques: Input-based vs&lt;br/&gt;&amp;gt; Child-Pay-for-Parent&amp;#34; :&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-May/019031.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-May/019031.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [6] For a discussion about fee-bumping issues for L2s extended beyond LN&lt;br/&gt;&amp;gt; see the analysis of the Revault protocol :&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://arxiv.org/pdf/2102.09392.pdf&#34;&gt;https://arxiv.org/pdf/2102.09392.pdf&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [7] As a WIP towards establishing an attacker model, see &amp;#34;Secure&lt;br/&gt;&amp;gt; Fee-Bumping for L2s&amp;#34;&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://bitcoin-problems.github.io/problems/fee-bumping.html&#34;&gt;https://bitcoin-problems.github.io/problems/fee-bumping.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [8] Tx-relay rules as a concern for second-layers has been raised early&lt;br/&gt;&amp;gt; on, at least during p2p segwit review&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/bitcoin/bitcoin/issues/8279&#34;&gt;https://github.com/bitcoin/bitcoin/issues/8279&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20210618/c61cd0b8/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20210618/c61cd0b8/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:02:35Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqs9pwtwqw6eyxcx840upf55tfn6ned2wysudkm5ac0tftc7697kg3szypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zpad07m</id>
    
      <title type="html">📅 Original date posted:2021-06-18 📝 Original message: Hi, ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqs9pwtwqw6eyxcx840upf55tfn6ned2wysudkm5ac0tftc7697kg3szypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zpad07m" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqswz89j0q90y5gummymkv0yl9th92fce095xqzp9dqsrspcp6k3hwgevcaaz&#39;&gt;nevent1q…caaz&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-06-18&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi,&lt;br/&gt;&lt;br/&gt;It&amp;#39;s a big chunk, so if you don&amp;#39;t have time browse parts 1 and 2 and share&lt;br/&gt;your 2 sats on the deployment timeline :p&lt;br/&gt;&lt;br/&gt;This post recalls some unsolved safety holes about Lightning, how&lt;br/&gt;package-relay or SIGHASH_ANYPREVOUT can solve the first one, how a mempool&lt;br/&gt;hardening can solve the second one, few considerations on package-relay&lt;br/&gt;design trade-offs and propose a rough deployment timeline.&lt;br/&gt;&lt;br/&gt;1) Lightning Safety Holes : Pre-Signed Feerate and Tx-Pinning (to skip if&lt;br/&gt;you&amp;#39;re a LN dev)&lt;br/&gt;&lt;br/&gt;As of today, Lightning is suffering from 2 safety holes w.r.t to base-layer&lt;br/&gt;interactions, widely discussed among ln devs.&lt;br/&gt;&lt;br/&gt;The first one, the pre-signed feerate issue with future broadcasted&lt;br/&gt;time-sensitive transactions is laid out clearly in Matt Corallo&amp;#39;s &amp;#34;CPFP&lt;br/&gt;Carve-Out Fee-Prediction Issues in Contracting Applications (eg Lightning)&amp;#34;&lt;br/&gt;[0]. This issue might provoke loss of funds, even in non-adversarial&lt;br/&gt;settings, i.e a Lightning routing hub not being able to settle backward&lt;br/&gt;onchain a successful HTLC during occurrences of sudden mempool congestion.&lt;br/&gt;&lt;br/&gt;As blockspace demand increases with an always growing number of&lt;br/&gt;onchain/offchain bitcoin users, coupling effects are more likely to happen&lt;br/&gt;and this pre-signed feerate issue is going to become more urgent to solve&lt;br/&gt;[1]. For e.g, few percentiles of increases in feerate being overpriced by&lt;br/&gt;Lightning routing hubs to close &amp;#34;fractional-reserve&amp;#34; backed anchor&lt;br/&gt;channels, driving mempools congestions, provoking anchor channels&lt;br/&gt;fee-bumping reserves becoming even more under-provisioned and thus close&lt;br/&gt;down, etc.&lt;br/&gt;&lt;br/&gt;The second issue, malicious transaction pinnings, is documented in Bastien&lt;br/&gt;Teinturier&amp;#39;s &amp;#34;Pinning Attacks&amp;#34; [2]. AFAIK, there is a rough consensus among&lt;br/&gt;devs on the conceptual feasibility of such a class of attacks against a LN&lt;br/&gt;node, though so far we have not seen them executed in the wild and I&amp;#39;m not&lt;br/&gt;aware of anyone having realized them in real-world conditions. Note, there&lt;br/&gt;is a variety of attack scenarios to consider which is function of a wide&lt;br/&gt;matrix (channel types, LN implementation&amp;#39;s `update_fee` policy, LN&lt;br/&gt;implementation&amp;#39;s `cltv_delta` policy, mempool congestion feerate groups,&lt;br/&gt;routing hubs or end nodes) Demoing against deployed LN implementations with&lt;br/&gt;default settings has been on my todo for a while, though a priori One&lt;br/&gt;Scenario To Exploit Them All doesn&amp;#39;t fit well.&lt;br/&gt;&lt;br/&gt;Side-note, as a LN operator, if you&amp;#39;re worried about those security risks,&lt;br/&gt;you can bump your `cltv_delta`/`cltv_expiry_delta` to significantly coarse&lt;br/&gt;the attacks.&lt;br/&gt;&lt;br/&gt;I think there is an important point to underscore. Considering the state of&lt;br/&gt;knowledge we have today, I believe there is no strong interdependency&lt;br/&gt;between solving pre-signed feerate and tx-pinning with the same mechanism&lt;br/&gt;from a safety/usability standpoint. Or last such mechanism can be deployed&lt;br/&gt;by stages.&lt;br/&gt;&lt;br/&gt;2) Solving the Pre-Signed Feerate problem : Package-Relay or&lt;br/&gt;SIGHASH_ANYPREVOUT&lt;br/&gt;&lt;br/&gt;For Lightning, either package-relay or SIGHASH_ANYPREVOUT should be able to&lt;br/&gt;solve the pre-signed feerate issue [3]&lt;br/&gt;&lt;br/&gt;One of the interesting points recalled during the first transaction relay&lt;br/&gt;workshops was that L2s making unbounded security assumptions on&lt;br/&gt;non-normative tx-relay/mempool acceptance rules sounds a wrong direction&lt;br/&gt;for the Bitcoin ecosystem long-term, and more prone to subtle bugs/safety&lt;br/&gt;risks across the ecosystem.&lt;br/&gt;&lt;br/&gt;I did express the contrary, public opinion a while back [4]. That said, I&lt;br/&gt;start to agree it&amp;#39;s wiser ecosystem-wise to keep those non-normatives rules&lt;br/&gt;as only a groundwork for weaker assumptions than consensus ones. Though it&lt;br/&gt;would be nice for long-term L2s stability to consider them with more care&lt;br/&gt;than today in our base-layer protocol development process [4]&lt;br/&gt;&lt;br/&gt;On this rational, I now share the opinion it&amp;#39;s better long-term to solve&lt;br/&gt;the pre-signed feerate problem with a consensus change such as&lt;br/&gt;SIGHASH_ANYPREVOUT rather than having too much off-chain coins relying on&lt;br/&gt;the weaker assumptions offered by bitcoin core&amp;#39;s tx-relay/mempool&lt;br/&gt;acceptance rules, and far harder to replicate and disseminate across the&lt;br/&gt;ecosystem.&lt;br/&gt;&lt;br/&gt;However, if SIGHASH_ANYPREVOUT is Things Done Right(tm), should we discard&lt;br/&gt;package-relay ?&lt;br/&gt;&lt;br/&gt;Sadly, in the worst-case scenario we might never reach consensus again&lt;br/&gt;across the ecosystem and Taproot is the last softfork. Ever :/ *sad violons&lt;br/&gt;and tissues jingle*&lt;br/&gt;&lt;br/&gt;With this dilemma in mind, it might be wise for the LN/L2 ecosystems to&lt;br/&gt;have a fall-back plan to solve their safety/usability issues and&lt;br/&gt;package-relay sounds a reasonable, temporary &amp;#34;patch&amp;#34;.&lt;br/&gt;&lt;br/&gt;Even if package-relay requires serious engineering effort in Bitcoin Core&lt;br/&gt;to avoid introducing new DoSes, swallowing well the complexity increase in&lt;br/&gt;critical code paths such as the mempool/p2p stack and a gentle API design&lt;br/&gt;for our friends the L2 devs, I believe it&amp;#39;s worthy the engineering&lt;br/&gt;resources cost. From-my-completely-biased-LN-dev viewpoint :p&lt;br/&gt;&lt;br/&gt;In the best-case scenario, we&amp;#39;ll activate SIGHASH_ANYPREVOUT and better&lt;br/&gt;fee-bumping primitives softforks [5] slowly strip off the &amp;#34;L2 fee-bumping&lt;br/&gt;primitive&amp;#34; semantic from &amp;#34;package-relay&amp;#34;, friendly nudge the L2 ecosystem&lt;br/&gt;to seat their fee-bumping on safer, consensus assumptions and maybe keep&lt;br/&gt;the p2p packages to improve on the malicious mempool-partitions-side or as&lt;br/&gt;a replacement of our orphan logic.&lt;br/&gt;&lt;br/&gt;3) Solving Tx-Pinnings : Hardening the Mempool against Tx-Relay Jammings&lt;br/&gt;attacks&lt;br/&gt;&lt;br/&gt;Current Mempool anti-DoS rules have been mostly designed at a time where&lt;br/&gt;the shared-utxo model with competing time-sensitive transactions was still&lt;br/&gt;an idea on the whiteboard. The last few years have revealed those anti-DoS&lt;br/&gt;rules as a source of security vulnerabilities for Lightning and a research&lt;br/&gt;concern for L2s still in the early-phase of deployment [6].&lt;br/&gt;&lt;br/&gt;Beyond real-world pinning exercises against production software as a&lt;br/&gt;complement of the current pinning attacks research, it would be better to&lt;br/&gt;agree on a common L2 attacker model before to modify widely-relied subset&lt;br/&gt;of the mempool, such as the replace-by-fee logic or the in-mempool package&lt;br/&gt;limits [7]. One risk of uncareful changes in this area would be to solve a&lt;br/&gt;pinning vector for a L2-alice but introduce a new vuln for a L2-bob.&lt;br/&gt;&lt;br/&gt;I believe the first part of such a revamp could hopefully land somehow next&lt;br/&gt;year. Though, IMHO, in the years to come, we&amp;#39;ll have to do more hard&lt;br/&gt;reasoning to ensure the mempool supports advanced Bitcoin protocols (e.g&lt;br/&gt;OP_CTV congestion tree,  CoinPool, interactive cut-through, ...)&lt;br/&gt;&lt;br/&gt;Note the opinion I raised above on quality of assumptions on mempool&lt;br/&gt;behavior, even if we harden it on the base-layer side,  L2s should be&lt;br/&gt;well-aware the product is shipped with a guarantee limitation :p&lt;br/&gt;&lt;br/&gt;4) Considerations on Package-Relay Design&lt;br/&gt;&lt;br/&gt;Package relay relies on at least two cleanly separate components (awesome,&lt;br/&gt;if we schedule to deprecate the higher half in the future!)&lt;br/&gt;* &amp;#34;the higher half&amp;#34; : extension of the mempool logic, with a new&lt;br/&gt;package-level policy, not strictly intersecting with the tx-level policy&lt;br/&gt;* &amp;#34;the lower half&amp;#34; : at least three different designs, receiver initiated,&lt;br/&gt;sender-initiated and relay-initiated&lt;br/&gt;&lt;br/&gt;One open design question for the &amp;#34;higher half&amp;#34; is the package-size of the&lt;br/&gt;acceptance logic, which is ultimately a function of the L2 ecosystem state.&lt;br/&gt;Do we have deployed or in deployment phase L2 protocols with a need for&lt;br/&gt;more than 2-stage and if yes what API bounds do they expect ? That&amp;#39;s a&lt;br/&gt;question I hope we&amp;#39;ll gather feedback during next Thursday&amp;#39;s transaction&lt;br/&gt;relay workshops. IMO, such package API should come out with a specification&lt;br/&gt;on which L2-community can be gathered and public consensus established. For&lt;br/&gt;the same communications reasons towards downstream projects, we have a&lt;br/&gt;BIP125 standard. And especially in this case the bitcoin core protocol&lt;br/&gt;development process should carefully listen to the needs of actual L2&lt;br/&gt;users. Also, a lot of those L2 devs, they don&amp;#39;t speak C&#43;&#43; :)&lt;br/&gt;&lt;br/&gt;One could imagine those mempool standards as &amp;#34;perishable&amp;#34; contracts between&lt;br/&gt;a base-layer implementation and the upper layers, with ultimately the&lt;br/&gt;full-node implementation reserving itself the right to deprecate them,&lt;br/&gt;maybe with a lengthy-warning period ?&lt;br/&gt;&lt;br/&gt;Beyond that, I believe there is another remaining interdependency between&lt;br/&gt;&amp;#34;the lower half&amp;#34; design and L2s behaviors, namely bandwidth waste in case&lt;br/&gt;of a high-frequency of package redundancy. Let&amp;#39;s say if a package is&lt;br/&gt;composed of {A, B}, and the package broadcaster fee-bump, triggering the&lt;br/&gt;transformation to {A, B&amp;#39;}, A bandwidth at first propagation is going to be&lt;br/&gt;wasted. Note, if we assume a dynamic fee-market, this package rebroadcast&lt;br/&gt;behavior should be common across the ecosystem. Though ultimately, the&lt;br/&gt;seriousness of this issue is going to be a function of the number of&lt;br/&gt;Lightning nodes relying on base-layer tx-relay and the number of fee-bumped&lt;br/&gt;onchain operations per Lightning node.&lt;br/&gt;&lt;br/&gt;I believe it would be great to come up with simulations on this front, just&lt;br/&gt;to avoid silently nullifying all the tedious, small improvements which have&lt;br/&gt;been done in the last years to minimize bitcoin core node&amp;#39;s bandwidth.&lt;br/&gt;&lt;br/&gt;Another alternative would be to come with a cost-effective&lt;br/&gt;package-replacement policy, so likely more complexity. But might it not&lt;br/&gt;make sense to not economically outlaw Lightning nodes with a small fee&lt;br/&gt;budget ?&lt;br/&gt;&lt;br/&gt;Lastly, there is a consideration to have around anti-DoS measures we&amp;#39;ll&lt;br/&gt;have to deploy for package-relay. Too easy, and that&amp;#39;s a security concern&lt;br/&gt;for the base-layer, too hard, and that&amp;#39;s introducing yet-another tx-relay&lt;br/&gt;jamming vector against L2, this time at the p2p layer (though won&amp;#39;t be the&lt;br/&gt;first time [8]&lt;br/&gt;&lt;br/&gt;In any-case we should carefully consider the upgradeability of&lt;br/&gt;package-relay v.0, like if we upgrade some components of it such as package&lt;br/&gt;format or package-announcement scheme.&lt;br/&gt;&lt;br/&gt;So yeah why not early 0.24 ? Maybe a bit too short with all those p2p&lt;br/&gt;questions to clear up among core devs. Ideally, we would land in the&lt;br/&gt;beginning/middle of the cycle to have time for beta-testing on the L2-side&lt;br/&gt;and share feedback.&lt;br/&gt;&lt;br/&gt;Though ultimately, this question of p2p design belongs to the bitcoin core&lt;br/&gt;dev process.&lt;br/&gt;&lt;br/&gt;# Deployment timeline&lt;br/&gt;&lt;br/&gt;So what I believe as a rough deployment timeline.&lt;br/&gt;&lt;br/&gt;* &amp;#34;package-relay&amp;#34; in bitcoin core, early 0.24 or 0.25: a Core&amp;#39;s release&lt;br/&gt;cycle offered to the LN/L2 ecosystem to integrate/exercise/provide feedback&lt;br/&gt;on package API&lt;br/&gt;&lt;br/&gt;* &amp;#34;mempool hardening&amp;#34; in bitcoin core, early 0.26 or 0.27, a Core&amp;#39;s release&lt;br/&gt;cycle offered to the whole Bitcoin ecosystem to adapt their Bitcoin&lt;br/&gt;clients, maybe with a boolean setting to smooth the new policy deployment&lt;br/&gt;&lt;br/&gt;* SIGHASH_ANYPREVOUT softfork in the coming year(s), opt-in of any LN/L2&lt;br/&gt;implementation to migrate its fee-bumping backend on top of it&lt;br/&gt;&lt;br/&gt;* &amp;#34;optimized/multi-party fee-bumping primitive&amp;#34; softfork (one of tx&lt;br/&gt;mutation/sigash_iomap/sponsorship proposals) softfork in the coming decade,&lt;br/&gt;friendly uplift of the L2 ecosystem&lt;br/&gt;&lt;br/&gt;Glad to answer any unclarity or uncorrectness of mine :)&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Antoine,&lt;br/&gt;&lt;br/&gt;[0] see&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2018-November/016518.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2018-November/016518.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;[1] &amp;#34;The Coupling Principle states that as things get larger, they often&lt;br/&gt;exhibit increased interdependence between components&amp;#34;.&lt;br/&gt;&lt;br/&gt;[2] see&lt;br/&gt;&lt;a href=&#34;https://github.com/t-bast/lightning-docs/blob/master/pinning-attacks.md&#34;&gt;https://github.com/t-bast/lightning-docs/blob/master/pinning-attacks.md&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;[2] see &amp;#34;Advances in Bitcoin Contracting : Uniform Policy and Package&lt;br/&gt;Relay&amp;#34;&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2020-July/018063.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2020-July/018063.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;[3] I don&amp;#39;t think there is a clear discussion on how SIGHASH_ANYPREVOUT&lt;br/&gt;solves pinnings beyond those LN meetings logs:&lt;br/&gt;&lt;a href=&#34;https://gnusha.org/lightning-dev/2020-06-08.log&#34;&gt;https://gnusha.org/lightning-dev/2020-06-08.log&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;[4] And I believe such great example has been done with this recent change&lt;br/&gt;proposed for bitcoin core addr-relay policy:&lt;br/&gt;&lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/21528#issuecomment-809906430&#34;&gt;https://github.com/bitcoin/bitcoin/pull/21528#issuecomment-809906430&lt;/a&gt;, where&lt;br/&gt;the PR author did bear the burden of reaching out potentially affected&lt;br/&gt;downstream projects.&lt;br/&gt;&lt;br/&gt;[5] Like one of tx_mutation/sighash_iomap/sponsorship proposal proposed in&lt;br/&gt;the thread &amp;#34;A Stroll through Fee-Bumping Techniques: Input-based vs&lt;br/&gt;Child-Pay-for-Parent&amp;#34; :&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-May/019031.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-May/019031.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;[6] For a discussion about fee-bumping issues for L2s extended beyond LN&lt;br/&gt;see the analysis of the Revault protocol :&lt;br/&gt;&lt;a href=&#34;https://arxiv.org/pdf/2102.09392.pdf&#34;&gt;https://arxiv.org/pdf/2102.09392.pdf&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;[7] As a WIP towards establishing an attacker model, see &amp;#34;Secure&lt;br/&gt;Fee-Bumping for L2s&amp;#34;&lt;br/&gt;&lt;a href=&#34;https://bitcoin-problems.github.io/problems/fee-bumping.html&#34;&gt;https://bitcoin-problems.github.io/problems/fee-bumping.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;[8] Tx-relay rules as a concern for second-layers has been raised early on,&lt;br/&gt;at least during p2p segwit review&lt;br/&gt;&lt;a href=&#34;https://github.com/bitcoin/bitcoin/issues/8279&#34;&gt;https://github.com/bitcoin/bitcoin/issues/8279&lt;/a&gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20210618/4f640fc7/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20210618/4f640fc7/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:02:34Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsfntrqgjgsalmc0y3jt0msmmxmll4y0qsaczdj95uppmarep3ey9qzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24z38ts6k</id>
    
      <title type="html">📅 Original date posted:2021-04-23 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsfntrqgjgsalmc0y3jt0msmmxmll4y0qsaczdj95uppmarep3ey9qzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24z38ts6k" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqst5t7xtx63j2dht58gep98jlrg57dcak592napptufsnlmg2z2mzcakp5jg&#39;&gt;nevent1q…p5jg&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-04-23&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Jeremy,&lt;br/&gt;&lt;br/&gt;Yes dates are floating for now. After Bitcoin 2021, sounds a good idea.&lt;br/&gt;&lt;br/&gt;Awesome, I&amp;#39;ll be really interested to review again an improved version of&lt;br/&gt;sponsorship. And I&amp;#39;ll try to sketch out the sighash_no-input fee-bumping&lt;br/&gt;idea which was floating around last year during pinnings discussions. Yet&lt;br/&gt;another set of trade-offs :)&lt;br/&gt;&lt;br/&gt;Le ven. 23 avr. 2021 à 11:25, Jeremy &amp;lt;jlrubin at mit.edu&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; I&amp;#39;d be excited to join. Recommend bumping the date  to mid June, if that&amp;#39;s&lt;br/&gt;&amp;gt; ok, as many Americans will be at Bitcoin 2021.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I was thinking about reviving the sponsors proposal with a 100 block lock&lt;br/&gt;&amp;gt; on spending a sponsoring tx which would hopefully make less controversial,&lt;br/&gt;&amp;gt; this would be a great place to discuss those tradeoffs.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Fri, Apr 23, 2021, 8:17 AM Antoine Riard &amp;lt;antoine.riard at gmail.com&amp;gt;&lt;br/&gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Hi,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; During the lastest years, tx-relay and mempool acceptances rules of the&lt;br/&gt;&amp;gt;&amp;gt; base layer have been sources of major security and operational concerns for&lt;br/&gt;&amp;gt;&amp;gt; Lightning and other Bitcoin second-layers [0]. I think those areas require&lt;br/&gt;&amp;gt;&amp;gt; significant improvements to ease design and deployment of higher Bitcoin&lt;br/&gt;&amp;gt;&amp;gt; layers and I believe this opinion is shared among the L2 dev community. In&lt;br/&gt;&amp;gt;&amp;gt; order to make advancements, it has been discussed a few times in the last&lt;br/&gt;&amp;gt;&amp;gt; months to organize in-person workshops to discuss those issues with the&lt;br/&gt;&amp;gt;&amp;gt; presence of both L1/L2 devs to make exchange fruitful.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Unfortunately, I don&amp;#39;t think we&amp;#39;ll be able to organize such in-person&lt;br/&gt;&amp;gt;&amp;gt; workshops this year (because you know travel is hard those days...) As a&lt;br/&gt;&amp;gt;&amp;gt; substitution, I&amp;#39;m proposing a series of one or more irc meetings. That&lt;br/&gt;&amp;gt;&amp;gt; said, this substitution has the happy benefit to gather far more folks&lt;br/&gt;&amp;gt;&amp;gt; interested by those issues that you can fit in a room.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; # Scope&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I would like to propose the following 4 items as topics of discussion.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; 1) Package relay design or another generic L2 fee-bumping primitive like&lt;br/&gt;&amp;gt;&amp;gt; sponsorship [0]. IMHO, this primitive should at least solve mempools spikes&lt;br/&gt;&amp;gt;&amp;gt; making obsolete propagation of transactions with pre-signed feerate, solve&lt;br/&gt;&amp;gt;&amp;gt; pinning attacks compromising Lightning/multi-party contract protocol&lt;br/&gt;&amp;gt;&amp;gt; safety, offer an usable and stable API to L2 software stack, stay&lt;br/&gt;&amp;gt;&amp;gt; compatible with miner and full-node operators incentives and obviously&lt;br/&gt;&amp;gt;&amp;gt; minimize CPU/memory DoS vectors.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; 2) Deprecation of opt-in RBF toward full-rbf. Opt-in RBF makes it trivial&lt;br/&gt;&amp;gt;&amp;gt; for an attacker to partition network mempools in divergent subsets and from&lt;br/&gt;&amp;gt;&amp;gt; then launch advanced security or privacy attacks against a Lightning node.&lt;br/&gt;&amp;gt;&amp;gt; Note, it might also be a concern for bandwidth bleeding attacks against L1&lt;br/&gt;&amp;gt;&amp;gt; nodes.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; 3) Guidelines about coordinated cross-layers security disclosures.&lt;br/&gt;&amp;gt;&amp;gt; Mitigating a security issue around tx-relay or the mempool in Core might&lt;br/&gt;&amp;gt;&amp;gt; have harmful implications for downstream projects. Ideally, L2 projects&lt;br/&gt;&amp;gt;&amp;gt; maintainers should be ready to upgrade their protocols in emergency in&lt;br/&gt;&amp;gt;&amp;gt; coordination with base layers developers.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; 4) Guidelines about L2 protocols onchain security design. Currently&lt;br/&gt;&amp;gt;&amp;gt; deployed like Lightning are making a bunch of assumptions on tx-relay and&lt;br/&gt;&amp;gt;&amp;gt; mempool acceptances rules. Those rules are non-normative, non-reliable and&lt;br/&gt;&amp;gt;&amp;gt; lack documentation. Further, they&amp;#39;re devoid of tooling to enforce them at&lt;br/&gt;&amp;gt;&amp;gt; runtime [2]. IMHO, it could be preferable to identify a subset of them on&lt;br/&gt;&amp;gt;&amp;gt; which second-layers protocols can do assumptions without encroaching too&lt;br/&gt;&amp;gt;&amp;gt; much on nodes&amp;#39;s policy realm or making the base layer development in those&lt;br/&gt;&amp;gt;&amp;gt; areas too cumbersome.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I&amp;#39;m aware that some folks are interested in other topics such as&lt;br/&gt;&amp;gt;&amp;gt; extension of Core&amp;#39;s mempools package limits or better pricing of RBF&lt;br/&gt;&amp;gt;&amp;gt; replacement. So l propose a 2-week concertation period to submit other&lt;br/&gt;&amp;gt;&amp;gt; topics related to tx-relay or mempools improvements towards L2s before to&lt;br/&gt;&amp;gt;&amp;gt; propose a finalized scope and agenda.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; # Goals&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; 1) Reaching technical consensus.&lt;br/&gt;&amp;gt;&amp;gt; 2) Reaching technical consensus, before seeking community consensus as it&lt;br/&gt;&amp;gt;&amp;gt; likely has ecosystem-wide implications.&lt;br/&gt;&amp;gt;&amp;gt; 3) Establishing a security incident response policy which can be applied&lt;br/&gt;&amp;gt;&amp;gt; by dev teams in the future.&lt;br/&gt;&amp;gt;&amp;gt; 4) Establishing a philosophy design and associated documentations (BIPs,&lt;br/&gt;&amp;gt;&amp;gt; best practices, ...)&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; # Timeline&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; 2021-04-23: Start of concertation period&lt;br/&gt;&amp;gt;&amp;gt; 2021-05-07: End of concertation period&lt;br/&gt;&amp;gt;&amp;gt; 2021-05-10: Proposition of workshop agenda and schedule&lt;br/&gt;&amp;gt;&amp;gt; late 2021-05/2021-06: IRC meetings&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; As the problem space is savagely wide, I&amp;#39;ve started a collection of&lt;br/&gt;&amp;gt;&amp;gt; documents to assist this workshop : &lt;a href=&#34;https://github.com/ariard/L2-zoology&#34;&gt;https://github.com/ariard/L2-zoology&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; Still wip, but I&amp;#39;ll have them in a good shape at agenda publication, with&lt;br/&gt;&amp;gt;&amp;gt; reading suggestions and open questions to structure discussions.&lt;br/&gt;&amp;gt;&amp;gt; Also working on transaction pinning and mempool partitions attacks&lt;br/&gt;&amp;gt;&amp;gt; simulations.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; If L2s security/p2p/mempool is your jam, feel free to get involved :)&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt;&amp;gt; Antoine&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; [0] For e.g see optech section on transaction pinning attacks :&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://bitcoinops.org/en/topics/transaction-pinning/&#34;&gt;https://bitcoinops.org/en/topics/transaction-pinning/&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; [1]&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2020-September/018168.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2020-September/018168.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; [2] Lack of reference tooling make it easier to have bug slip in like&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-October/002858.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-October/002858.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20210423/b87b1ec8/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20210423/b87b1ec8/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:02:21Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsqk0q957lp42tq495n4f3nkhsgnyt22zmvnd0dntra96v0542njjszypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24z2c24jf</id>
    
      <title type="html">📅 Original date posted:2021-04-23 📝 Original message: Hi, ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsqk0q957lp42tq495n4f3nkhsgnyt22zmvnd0dntra96v0542njjszypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24z2c24jf" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsxma3hzukg225q622cpeq5fw22w5dnxnaj7egz0y8rtswa4wf4nac7cj3xk&#39;&gt;nevent1q…j3xk&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-04-23&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi,&lt;br/&gt;&lt;br/&gt;During the lastest years, tx-relay and mempool acceptances rules of the&lt;br/&gt;base layer have been sources of major security and operational concerns for&lt;br/&gt;Lightning and other Bitcoin second-layers [0]. I think those areas require&lt;br/&gt;significant improvements to ease design and deployment of higher Bitcoin&lt;br/&gt;layers and I believe this opinion is shared among the L2 dev community. In&lt;br/&gt;order to make advancements, it has been discussed a few times in the last&lt;br/&gt;months to organize in-person workshops to discuss those issues with the&lt;br/&gt;presence of both L1/L2 devs to make exchange fruitful.&lt;br/&gt;&lt;br/&gt;Unfortunately, I don&amp;#39;t think we&amp;#39;ll be able to organize such in-person&lt;br/&gt;workshops this year (because you know travel is hard those days...) As a&lt;br/&gt;substitution, I&amp;#39;m proposing a series of one or more irc meetings. That&lt;br/&gt;said, this substitution has the happy benefit to gather far more folks&lt;br/&gt;interested by those issues that you can fit in a room.&lt;br/&gt;&lt;br/&gt;# Scope&lt;br/&gt;&lt;br/&gt;I would like to propose the following 4 items as topics of discussion.&lt;br/&gt;&lt;br/&gt;1) Package relay design or another generic L2 fee-bumping primitive like&lt;br/&gt;sponsorship [0]. IMHO, this primitive should at least solve mempools spikes&lt;br/&gt;making obsolete propagation of transactions with pre-signed feerate, solve&lt;br/&gt;pinning attacks compromising Lightning/multi-party contract protocol&lt;br/&gt;safety, offer an usable and stable API to L2 software stack, stay&lt;br/&gt;compatible with miner and full-node operators incentives and obviously&lt;br/&gt;minimize CPU/memory DoS vectors.&lt;br/&gt;&lt;br/&gt;2) Deprecation of opt-in RBF toward full-rbf. Opt-in RBF makes it trivial&lt;br/&gt;for an attacker to partition network mempools in divergent subsets and from&lt;br/&gt;then launch advanced security or privacy attacks against a Lightning node.&lt;br/&gt;Note, it might also be a concern for bandwidth bleeding attacks against L1&lt;br/&gt;nodes.&lt;br/&gt;&lt;br/&gt;3) Guidelines about coordinated cross-layers security disclosures.&lt;br/&gt;Mitigating a security issue around tx-relay or the mempool in Core might&lt;br/&gt;have harmful implications for downstream projects. Ideally, L2 projects&lt;br/&gt;maintainers should be ready to upgrade their protocols in emergency in&lt;br/&gt;coordination with base layers developers.&lt;br/&gt;&lt;br/&gt;4) Guidelines about L2 protocols onchain security design. Currently&lt;br/&gt;deployed like Lightning are making a bunch of assumptions on tx-relay and&lt;br/&gt;mempool acceptances rules. Those rules are non-normative, non-reliable and&lt;br/&gt;lack documentation. Further, they&amp;#39;re devoid of tooling to enforce them at&lt;br/&gt;runtime [2]. IMHO, it could be preferable to identify a subset of them on&lt;br/&gt;which second-layers protocols can do assumptions without encroaching too&lt;br/&gt;much on nodes&amp;#39;s policy realm or making the base layer development in those&lt;br/&gt;areas too cumbersome.&lt;br/&gt;&lt;br/&gt;I&amp;#39;m aware that some folks are interested in other topics such as extension&lt;br/&gt;of Core&amp;#39;s mempools package limits or better pricing of RBF replacement. So&lt;br/&gt;l propose a 2-week concertation period to submit other topics related to&lt;br/&gt;tx-relay or mempools improvements towards L2s before to propose a finalized&lt;br/&gt;scope and agenda.&lt;br/&gt;&lt;br/&gt;# Goals&lt;br/&gt;&lt;br/&gt;1) Reaching technical consensus.&lt;br/&gt;2) Reaching technical consensus, before seeking community consensus as it&lt;br/&gt;likely has ecosystem-wide implications.&lt;br/&gt;3) Establishing a security incident response policy which can be applied by&lt;br/&gt;dev teams in the future.&lt;br/&gt;4) Establishing a philosophy design and associated documentations (BIPs,&lt;br/&gt;best practices, ...)&lt;br/&gt;&lt;br/&gt;# Timeline&lt;br/&gt;&lt;br/&gt;2021-04-23: Start of concertation period&lt;br/&gt;2021-05-07: End of concertation period&lt;br/&gt;2021-05-10: Proposition of workshop agenda and schedule&lt;br/&gt;late 2021-05/2021-06: IRC meetings&lt;br/&gt;&lt;br/&gt;As the problem space is savagely wide, I&amp;#39;ve started a collection of&lt;br/&gt;documents to assist this workshop : &lt;a href=&#34;https://github.com/ariard/L2-zoology&#34;&gt;https://github.com/ariard/L2-zoology&lt;/a&gt;&lt;br/&gt;Still wip, but I&amp;#39;ll have them in a good shape at agenda publication, with&lt;br/&gt;reading suggestions and open questions to structure discussions.&lt;br/&gt;Also working on transaction pinning and mempool partitions attacks&lt;br/&gt;simulations.&lt;br/&gt;&lt;br/&gt;If L2s security/p2p/mempool is your jam, feel free to get involved :)&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;[0] For e.g see optech section on transaction pinning attacks :&lt;br/&gt;&lt;a href=&#34;https://bitcoinops.org/en/topics/transaction-pinning/&#34;&gt;https://bitcoinops.org/en/topics/transaction-pinning/&lt;/a&gt;&lt;br/&gt;[1]&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2020-September/018168.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2020-September/018168.html&lt;/a&gt;&lt;br/&gt;[2] Lack of reference tooling make it easier to have bug slip in like&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-October/002858.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-October/002858.html&lt;/a&gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20210423/98e1f2cc/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20210423/98e1f2cc/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:02:20Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsghduezq27eg8hrlk3wx6hmvyj3z9xctsrkc5z0ek6u6dmxj5lsgszypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zfu682u</id>
    
      <title type="html">📅 Original date posted:2021-02-15 📝 Original message: &amp;gt; ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsghduezq27eg8hrlk3wx6hmvyj3z9xctsrkc5z0ek6u6dmxj5lsgszypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zfu682u" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsftghr4amjmuusxstapqwax39yhf6ekk6a95c3th3a7k4zgmss7nq03cy4w&#39;&gt;nevent1q…cy4w&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-02-15&lt;br/&gt;📝 Original message:&lt;br/&gt;&amp;gt; The risk of hitting the chain that you mention can be factored into this&lt;br/&gt;&amp;gt; base part as well. The hold fee rate would then be defined in the form (2&lt;br/&gt;&amp;gt; sat &#43; 1%) per minute.&lt;br/&gt;&lt;br/&gt;I think this works if the base fee is paid at HTLC commitment lock-in.&lt;br/&gt;Otherwise, you&amp;#39;re still exposed to the chain-hit risk, the channel might&lt;br/&gt;break at any time and the timevalues of the pending forward HTLC set will&lt;br/&gt;be lost. Note, it&amp;#39;s likely the hedge to be probabilistic as you won&amp;#39;t make&lt;br/&gt;HTLC receivers pay for the effective timevalue but only a fragment computed&lt;br/&gt;from the expected outgoing HTLC traffic during channel lifetime.&lt;br/&gt;&lt;br/&gt;A smart channel relay policy will discount chain-hit risks for stable&lt;br/&gt;links, incentivizing your counterparties to be good peers.&lt;br/&gt;&lt;br/&gt;&amp;gt; Is this the same concern as above or slightly different? Or do you mean&lt;br/&gt;&amp;gt; clock differences between the endpoints of a channel? For that, I&amp;#39;d think&lt;br/&gt;&amp;gt; that there needs to be some tolerance to smooth out disagreements. But&lt;br/&gt;yes,&lt;br/&gt;&amp;gt; in general as long as a node is getting a positive amount, it is probably&lt;br/&gt;&amp;gt; okay to tolerate a few rounding errors here and there.&lt;br/&gt;&lt;br/&gt;This is slightly different concern, HTLC settlement may happen at different&lt;br/&gt;wall clock time periods between downstream/upstream.&lt;br/&gt;&lt;br/&gt;Let&amp;#39;s say a HTLC is relayed across Alice, Bob, Caroll. The HTLC is&lt;br/&gt;successfully settled at N between Bob and Caroll, with N the number of&lt;br/&gt;minutes since htlc lock-in. Caroll pays N * `hold_fee_rate` to Bob. As&lt;br/&gt;upstream settlement isn&amp;#39;t atomic, it happens at N&#43;1. Bob pays N *&lt;br/&gt;`hold_fee_rate` to Alice. Bob loss 1 * `hold_fee_rate`.&lt;br/&gt;&lt;br/&gt;For normal operations, I concede it should happen rarely enough for this&lt;br/&gt;being an edge-case.&lt;br/&gt;&lt;br/&gt;&amp;gt; Yes, that is a good point. But I do think that it is reasonable that a&lt;br/&gt;node&lt;br/&gt;&amp;gt; that can go offline doesn&amp;#39;t charge a hodl fee. Those nodes aren&amp;#39;t&lt;br/&gt;generally&lt;br/&gt;&amp;gt; forwarding htlcs anyway, so it would just be for their own outgoing&lt;br/&gt;&amp;gt; payments. Without charging a hodl fee for outgoing payments, they risk&lt;br/&gt;that&lt;br/&gt;&amp;gt; their channel peer delays the htlc for free. So they should choose their&lt;br/&gt;&amp;gt; peers carefully. It seems that at the moment mobile nodes are often&lt;br/&gt;&amp;gt; connected to a known LSP already, so this may not be a real problem.&lt;br/&gt;&lt;br/&gt;I think the reasoning holds for mobile clients not charging hold fees. Most&lt;br/&gt;of the time, your LSP doesn&amp;#39;t have an interest to delay your HTLC, better&lt;br/&gt;to succeed/fail quickly to release the liquidity to potentially earn fees&lt;br/&gt;on another payment. The only case might be when all the outgoing liquidity&lt;br/&gt;of your LSPs are already near-busy and they have to select between your&lt;br/&gt;HTLC to forward and the one from another spoke. Minding this, hold fees&lt;br/&gt;charged by mobile clients might be a way to prioritize their payments.&lt;br/&gt;&lt;br/&gt;&amp;gt; All of this indeed also implies that nodes that do charge hold fees, need&lt;br/&gt;&amp;gt; to make sure to stay online. Otherwise peers may close channels with them&lt;br/&gt;&amp;gt; because they are unreliable and charging for their own outage.&lt;br/&gt;&lt;br/&gt;And this is the point where it becomes tricky. A malicious upstream node&lt;br/&gt;mimic offliness to inflate its due hold fee. Considering the long-term&lt;br/&gt;protocol trend to pour the unilateral closing fee burden on the&lt;br/&gt;counterparty deciding to go onchain, it won&amp;#39;t be economical to do so if the&lt;br/&gt;extorted hold fees is inferior to channel closing onchain fees. So you&lt;br/&gt;might have this cat-and-mouse game play many times until it&amp;#39;s obvious for a&lt;br/&gt;channel scoring logic that this peer is malicious and the channel must be&lt;br/&gt;closed. In-between the accumulated hold fees might have been superior to&lt;br/&gt;the cost of channel opening...&lt;br/&gt;&lt;br/&gt;I can really see a sophisticated attacker able to escape such channel&lt;br/&gt;blacklist heuristics.&lt;br/&gt;&lt;br/&gt;&amp;gt; Yes, we should be careful not to outlaw micropayments. But I don&amp;#39;t think&lt;br/&gt;&amp;gt; the hold fees as described above do this. Because the fees are modeled as&lt;br/&gt;&amp;gt; close to the real costs as possible, it can only be fair? Tiny amounts&lt;br/&gt;that&lt;br/&gt;&amp;gt; settle quickly should need only very small hold fees. But if the tiny&lt;br/&gt;&amp;gt; amount gets stuck for a week and occupies an htlc slot in each of its 25&lt;br/&gt;&amp;gt; hops through multi-btc wumbo channels, yes, than it should be costly?&lt;br/&gt;&lt;br/&gt;I agree that any packet which holds liquidity for a while should cover slot&lt;br/&gt;costs and timevalue, even if the value transferred is in fine inferior to&lt;br/&gt;the final hold fees. In that case, it should be up to the original sender&lt;br/&gt;to arbitrate between its expected traffic and the opportunity to open a&lt;br/&gt;channel to shorten its payment paths.&lt;br/&gt;&lt;br/&gt;Still, a &amp;#34;very small hold fees&amp;#34; might scope a lot of use-cases, which are&lt;br/&gt;hard to care about because they might not exist yet. Compared to leveraging&lt;br/&gt;a resource (channel UTXOs) which is already assumed to be owned by&lt;br/&gt;Lightning users.&lt;br/&gt;&lt;br/&gt;Le dim. 14 févr. 2021 à 13:05, Joost Jager &amp;lt;joost.jager at gmail.com&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; I&amp;#39;ve made a first attempt at projecting this idea onto the existing spec:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/lightningnetwork/lightning-rfc/pull/843&#34;&gt;https://github.com/lightningnetwork/lightning-rfc/pull/843&lt;/a&gt;. This may also&lt;br/&gt;&amp;gt; clarify some of the questions that haven&amp;#39;t been answered yet.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Joost&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Fri, Feb 12, 2021 at 2:29 PM Antoine Riard &amp;lt;antoine.riard at gmail.com&amp;gt;&lt;br/&gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Hi Joost,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Thanks for working on this and keeping raising awareness about channel&lt;br/&gt;&amp;gt;&amp;gt; jamming.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; In this post I&amp;#39;d like to present a variation of bidirectional upfront&lt;br/&gt;&amp;gt;&amp;gt; payments that uses a time-proportional hold fee rate to address the&lt;br/&gt;&amp;gt;&amp;gt; limitation above. I also tried to come up with a system that aims &amp;gt; relate&lt;br/&gt;&amp;gt;&amp;gt; the fees paid more directly to the actual costs incurred and thereby reduce&lt;br/&gt;&amp;gt;&amp;gt; the number of parameters.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Not considering hold invoices and other long-term held packets was one of&lt;br/&gt;&amp;gt;&amp;gt; my main concerns in the previous bidirectional upfront payments. This new&lt;br/&gt;&amp;gt;&amp;gt; &amp;#34;hodl_fee_rate&amp;#34; is better by binding the hold fee to the effectively&lt;br/&gt;&amp;gt;&amp;gt; consumed timelocked period of the liquidity and not its potential maximum.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; That said, routing nodes might still include the risk of hitting the&lt;br/&gt;&amp;gt;&amp;gt; chain in the computation of their `hodl_fee_rate` and the corresponding&lt;br/&gt;&amp;gt;&amp;gt; cost of having onchain timelocked funds. Given that HTLC deltas are&lt;br/&gt;&amp;gt;&amp;gt; decreasing along the path, it&amp;#39;s more likely that `hodl_fee_rate` will be&lt;br/&gt;&amp;gt;&amp;gt; decreasing along the path. Even in case of lawfully solved hodl HTLC,&lt;br/&gt;&amp;gt;&amp;gt; routing nodes might be at loss for having paid a higher hold_fee on their&lt;br/&gt;&amp;gt;&amp;gt; upstream link than received on the downstream one.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Is assuming increasing `hodl_fee_rate` along a payment path at odds with&lt;br/&gt;&amp;gt;&amp;gt; the ordering of timelocks ?&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; But this would also mean that anyone can send out an htlc and collect&lt;br/&gt;&amp;gt;&amp;gt; hold fees unconditionally. Therefore routing nodes advertise on the network&lt;br/&gt;&amp;gt;&amp;gt; their `hold_grace_period`. When routing nodes accept an htl&amp;gt; to forward,&lt;br/&gt;&amp;gt;&amp;gt; they&amp;#39;re willing to pay hold fees for it. But only if they added a delay&lt;br/&gt;&amp;gt;&amp;gt; greater than `hold_grace_period` for relaying the payment and its response.&lt;br/&gt;&amp;gt;&amp;gt; If they relayed in a timely fashion, they exp&amp;gt; ect the sender of the htlc&lt;br/&gt;&amp;gt;&amp;gt; to cover those costs themselves. If the sender is also a routing node, the&lt;br/&gt;&amp;gt;&amp;gt; sender should expect the node before them to cover it. Of course, routing&lt;br/&gt;&amp;gt;&amp;gt; nodes can&amp;#39;t be trusted. So in&amp;gt; practice we can just as well assume that&lt;br/&gt;&amp;gt;&amp;gt; they&amp;#39;ll always try to claim from the prior node the maximum amount in&lt;br/&gt;&amp;gt;&amp;gt; compensation.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Assuming `hodl_fee_rate` are near-similar along the payment path, you&lt;br/&gt;&amp;gt;&amp;gt; have a concern when the HTLC settlement happens at period N on the outgoing&lt;br/&gt;&amp;gt;&amp;gt; link and at period N&#43;1 on the incoming link due to clock differences. In&lt;br/&gt;&amp;gt;&amp;gt; this case, a routing node will pay a higher `hodl_fee_rate` than received.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I think this is okay, that&amp;#39;s an edge case, only leaking a few sats.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; A more concerning one is when the HTLC settlement happens at period N on&lt;br/&gt;&amp;gt;&amp;gt; the outgoing link and your incoming counterparty goes offline. According to&lt;br/&gt;&amp;gt;&amp;gt; the HTLC relay contract, the `hodl_fee_rate` will be inflated until the&lt;br/&gt;&amp;gt;&amp;gt; counterparty goes back online and thus the routing node is at loss. And&lt;br/&gt;&amp;gt;&amp;gt; going offline is a really lawful behavior for mobile clients, even further&lt;br/&gt;&amp;gt;&amp;gt; if you consider mailbox-style of HTLC delivery (e.g Lightning Rod). You&lt;br/&gt;&amp;gt;&amp;gt; can&amp;#39;t simply label such counterparty as malicious.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; And I don&amp;#39;t think counterparties can trust themselves about their&lt;br/&gt;&amp;gt;&amp;gt; onliness to suspend the `hodl_fee_rate` inflation. Both sides have an&lt;br/&gt;&amp;gt;&amp;gt; interest to equivocate, the HTLC sender to gain a higher fee, the HTLC&lt;br/&gt;&amp;gt;&amp;gt; relayer to save the fee while having received one on the incoming link ?&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; Even though the proposal above is not fundamentally different from what&lt;br/&gt;&amp;gt;&amp;gt; was known already, I do think that it adds the flexibility that we need to&lt;br/&gt;&amp;gt;&amp;gt; not take a step back in terms of functionality (fair prici&amp;gt; ng for hodl&lt;br/&gt;&amp;gt;&amp;gt; invoices and its applications). Plus that it simplifies the parameter set.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Minding the concerns raised above, I think this proposal is an&lt;br/&gt;&amp;gt;&amp;gt; improvement and would merit a specification draft, at least to ease further&lt;br/&gt;&amp;gt;&amp;gt; reasoning on its economic and security soundness. As a side-note, we&amp;#39;re&lt;br/&gt;&amp;gt;&amp;gt; working further on Stake Certificates, which I believe is better for&lt;br/&gt;&amp;gt;&amp;gt; long-term network economics by not adding a new fee burden on payments. We&lt;br/&gt;&amp;gt;&amp;gt; should be careful to not economically outlaw micropayments. If we think&lt;br/&gt;&amp;gt;&amp;gt; channel jamming is concerning enough in the short-term, we can deploy a&lt;br/&gt;&amp;gt;&amp;gt; bidirectional upfront payment-style of proposal now and consider a better&lt;br/&gt;&amp;gt;&amp;gt; solution when it&amp;#39;s technically mature.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Antoine&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Le jeu. 11 févr. 2021 à 10:25, Joost Jager &amp;lt;joost.jager at gmail.com&amp;gt; a&lt;br/&gt;&amp;gt;&amp;gt; écrit :&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Hi ZmnSCPxj,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Not quite up-to-speed back into this, but, I believe an issue with using&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; feerates rather than fixed fees is &amp;#34;what happens if a channel is forced&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; onchain&amp;#34;?&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Suppose after C offers the HTLC to D, the C-D channel, for any reason,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; is forced onchain, and the blockchain is bloated and the transaction&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; remains floating in mempools until very close to the timeout of C-D.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; C is now liable for a large time the payment is held, and because the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; C-D channel was dropped onchain, presumably any parameters of the HTLC&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; (including penalties D owes to C) have gotten fixed at the time the channel&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; was dropped onchain.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; The simplicity of the fixed fee is that it bounds the amount of risk&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; that C has in case its outgoing channel is dropped onchain.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; The risk is bound in both cases. If you want you can cap the variable&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; fee at a level that isn&amp;#39;t considered risky, but it will then not fully&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; cover the actual cost of the locked-up htlc. Also any anti-DoS fee could&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; very well turn out to be insignificant to the cost of closing and reopening&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; a channel with the state of the mempool these days.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Joost&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20210215/2bab1be3/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20210215/2bab1be3/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:02:05Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqs9h32jmn5uhtz4lve6gr6q6fpad4u4rcvjf9wse9wws8hd86dfvtqzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zxhur7k</id>
    
      <title type="html">📅 Original date posted:2021-02-12 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqs9h32jmn5uhtz4lve6gr6q6fpad4u4rcvjf9wse9wws8hd86dfvtqzypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zxhur7k" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsz2wkexjnum2nmgape4a0gfktxs997r7awg4a2uu5tvwdl6k333mswgfecv&#39;&gt;nevent1q…fecv&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-02-12&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Joost,&lt;br/&gt;&lt;br/&gt;Thanks for working on this and keeping raising awareness about channel&lt;br/&gt;jamming.&lt;br/&gt;&lt;br/&gt;&amp;gt; In this post I&amp;#39;d like to present a variation of bidirectional upfront&lt;br/&gt;payments that uses a time-proportional hold fee rate to address the&lt;br/&gt;limitation above. I also tried to come up with a system that aims &amp;gt; relate&lt;br/&gt;the fees paid more directly to the actual costs incurred and thereby reduce&lt;br/&gt;the number of parameters.&lt;br/&gt;&lt;br/&gt;Not considering hold invoices and other long-term held packets was one of&lt;br/&gt;my main concerns in the previous bidirectional upfront payments. This new&lt;br/&gt;&amp;#34;hodl_fee_rate&amp;#34; is better by binding the hold fee to the effectively&lt;br/&gt;consumed timelocked period of the liquidity and not its potential maximum.&lt;br/&gt;&lt;br/&gt;That said, routing nodes might still include the risk of hitting the chain&lt;br/&gt;in the computation of their `hodl_fee_rate` and the corresponding cost of&lt;br/&gt;having onchain timelocked funds. Given that HTLC deltas are decreasing&lt;br/&gt;along the path, it&amp;#39;s more likely that `hodl_fee_rate` will be decreasing&lt;br/&gt;along the path. Even in case of lawfully solved hodl HTLC, routing nodes&lt;br/&gt;might be at loss for having paid a higher hold_fee on their upstream link&lt;br/&gt;than received on the downstream one.&lt;br/&gt;&lt;br/&gt;Is assuming increasing `hodl_fee_rate` along a payment path at odds with&lt;br/&gt;the ordering of timelocks ?&lt;br/&gt;&lt;br/&gt;&amp;gt; But this would also mean that anyone can send out an htlc and collect&lt;br/&gt;hold fees unconditionally. Therefore routing nodes advertise on the network&lt;br/&gt;their `hold_grace_period`. When routing nodes accept an htl&amp;gt; to forward,&lt;br/&gt;they&amp;#39;re willing to pay hold fees for it. But only if they added a delay&lt;br/&gt;greater than `hold_grace_period` for relaying the payment and its response.&lt;br/&gt;If they relayed in a timely fashion, they exp&amp;gt; ect the sender of the htlc&lt;br/&gt;to cover those costs themselves. If the sender is also a routing node, the&lt;br/&gt;sender should expect the node before them to cover it. Of course, routing&lt;br/&gt;nodes can&amp;#39;t be trusted. So in&amp;gt; practice we can just as well assume that&lt;br/&gt;they&amp;#39;ll always try to claim from the prior node the maximum amount in&lt;br/&gt;compensation.&lt;br/&gt;&lt;br/&gt;Assuming `hodl_fee_rate` are near-similar along the payment path, you have&lt;br/&gt;a concern when the HTLC settlement happens at period N on the outgoing link&lt;br/&gt;and at period N&#43;1 on the incoming link due to clock differences. In this&lt;br/&gt;case, a routing node will pay a higher `hodl_fee_rate` than received.&lt;br/&gt;&lt;br/&gt;I think this is okay, that&amp;#39;s an edge case, only leaking a few sats.&lt;br/&gt;&lt;br/&gt;A more concerning one is when the HTLC settlement happens at period N on&lt;br/&gt;the outgoing link and your incoming counterparty goes offline. According to&lt;br/&gt;the HTLC relay contract, the `hodl_fee_rate` will be inflated until the&lt;br/&gt;counterparty goes back online and thus the routing node is at loss. And&lt;br/&gt;going offline is a really lawful behavior for mobile clients, even further&lt;br/&gt;if you consider mailbox-style of HTLC delivery (e.g Lightning Rod). You&lt;br/&gt;can&amp;#39;t simply label such counterparty as malicious.&lt;br/&gt;&lt;br/&gt;And I don&amp;#39;t think counterparties can trust themselves about their onliness&lt;br/&gt;to suspend the `hodl_fee_rate` inflation. Both sides have an interest to&lt;br/&gt;equivocate, the HTLC sender to gain a higher fee, the HTLC relayer to save&lt;br/&gt;the fee while having received one on the incoming link ?&lt;br/&gt;&lt;br/&gt;&amp;gt; Even though the proposal above is not fundamentally different from what&lt;br/&gt;was known already, I do think that it adds the flexibility that we need to&lt;br/&gt;not take a step back in terms of functionality (fair prici&amp;gt; ng for hodl&lt;br/&gt;invoices and its applications). Plus that it simplifies the parameter set.&lt;br/&gt;&lt;br/&gt;Minding the concerns raised above, I think this proposal is an improvement&lt;br/&gt;and would merit a specification draft, at least to ease further reasoning&lt;br/&gt;on its economic and security soundness. As a side-note, we&amp;#39;re working&lt;br/&gt;further on Stake Certificates, which I believe is better for long-term&lt;br/&gt;network economics by not adding a new fee burden on payments. We should be&lt;br/&gt;careful to not economically outlaw micropayments. If we think channel&lt;br/&gt;jamming is concerning enough in the short-term, we can deploy a&lt;br/&gt;bidirectional upfront payment-style of proposal now and consider a better&lt;br/&gt;solution when it&amp;#39;s technically mature.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;Le jeu. 11 févr. 2021 à 10:25, Joost Jager &amp;lt;joost.jager at gmail.com&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi ZmnSCPxj,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Not quite up-to-speed back into this, but, I believe an issue with using&lt;br/&gt;&amp;gt;&amp;gt; feerates rather than fixed fees is &amp;#34;what happens if a channel is forced&lt;br/&gt;&amp;gt;&amp;gt; onchain&amp;#34;?&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Suppose after C offers the HTLC to D, the C-D channel, for any reason, is&lt;br/&gt;&amp;gt;&amp;gt; forced onchain, and the blockchain is bloated and the transaction remains&lt;br/&gt;&amp;gt;&amp;gt; floating in mempools until very close to the timeout of C-D.&lt;br/&gt;&amp;gt;&amp;gt; C is now liable for a large time the payment is held, and because the C-D&lt;br/&gt;&amp;gt;&amp;gt; channel was dropped onchain, presumably any parameters of the HTLC&lt;br/&gt;&amp;gt;&amp;gt; (including penalties D owes to C) have gotten fixed at the time the channel&lt;br/&gt;&amp;gt;&amp;gt; was dropped onchain.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The simplicity of the fixed fee is that it bounds the amount of risk that&lt;br/&gt;&amp;gt;&amp;gt; C has in case its outgoing channel is dropped onchain.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The risk is bound in both cases. If you want you can cap the variable fee&lt;br/&gt;&amp;gt; at a level that isn&amp;#39;t considered risky, but it will then not fully cover&lt;br/&gt;&amp;gt; the actual cost of the locked-up htlc. Also any anti-DoS fee could very&lt;br/&gt;&amp;gt; well turn out to be insignificant to the cost of closing and reopening a&lt;br/&gt;&amp;gt; channel with the state of the mempool these days.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Joost&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20210212/846ce794/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20210212/846ce794/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:02:04Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsf5j82qqqrfckevwyx2mp2cjke36p4wlfj0u9dyk53y7l88fsygyczypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zn9fyca</id>
    
      <title type="html">📅 Original date posted:2020-12-01 📝 Original message: Hello ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsf5j82qqqrfckevwyx2mp2cjke36p4wlfj0u9dyk53y7l88fsygyczypjgt0zkjca4rjgy85y9tn9f778uh5xwzddpjhplj60p3jj55r24zn9fyca" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqszst40vher8va27tjlay6arht9w640r7fwp6zy95qnyyxy292vc9qvetqdr&#39;&gt;nevent1q…tqdr&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2020-12-01&lt;br/&gt;📝 Original message:&lt;br/&gt;Hello Zeeman,&lt;br/&gt;&lt;br/&gt;If I understand well the &amp;#34;point-to-point property&amp;#34; is the following : you&lt;br/&gt;can authenticate  an incoming HTLC traffic from your neighbors owing to&lt;br/&gt;their expensive channels.&lt;br/&gt;&lt;br/&gt;My concern with this approach relies on the fact that a routing node isn&amp;#39;t&lt;br/&gt;decisionary of the HTLC traffic going through itself. Thus its outgoing&lt;br/&gt;traffic might be far superior to its locked channel utxos and it will have&lt;br/&gt;to compensate HTLC receiver for the difference. You&amp;#39;re back to some fees&lt;br/&gt;mechanism for everyone to do its account.&lt;br/&gt;&lt;br/&gt;The interesting property with stake certificates is to overlay the&lt;br/&gt;liquidity effective user with the HTLC sender. This last one should care&lt;br/&gt;about using liquidity resources reasonably, not the routing nodes.&lt;br/&gt;&lt;br/&gt;IMO, the more interesting point you&amp;#39;re underscoring is that we shouldn&amp;#39;t&lt;br/&gt;bind a HTLC traffic volume to a channel size. E.g you have a small channel&lt;br/&gt;but a high HTLC traffic spread through the day and that&amp;#39;s lawful. What we&lt;br/&gt;may consider is a stake certificate/point-to-point control only relying on&lt;br/&gt;utxo uniqueness, and not the amount locked. If a utxo-authenticated&lt;br/&gt;HTLC-traffic is far beyond the median, just blacklist the utxo, thus&lt;br/&gt;forcing a utxo spend (and bearing onchain fees) by any liquidity abuser.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;&lt;br/&gt;Antoine&lt;br/&gt;&lt;br/&gt;Le mar. 1 déc. 2020 à 07:11, ZmnSCPxj via Lightning-dev &amp;lt;&lt;br/&gt;lightning-dev at lists.linuxfoundation.org&amp;gt; a écrit :&lt;br/&gt;&lt;br/&gt;&amp;gt; Good morning LL, and list,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; That&amp;#39;s a very interesting point. If we were to be able to prevent loop&lt;br/&gt;&amp;gt; attacks by the sender proving the path is well formed (without revealing&lt;br/&gt;&amp;gt; who they are or any of the other hops) would this be an alternative&lt;br/&gt;&amp;gt; solution?&lt;br/&gt;&amp;gt; &amp;gt; It seems to me that disabling loop attacks might be much easier than&lt;br/&gt;&amp;gt; stake certificates.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Loop attacks are not about loops, it only requires that the start and end&lt;br/&gt;&amp;gt; of a payment are controlled by the same entity.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Multiple nodes on the LN may be owned by the same entity.&lt;br/&gt;&amp;gt; Nodes, individually as nodes, are trivially cheap and just need 32 bytes&lt;br/&gt;&amp;gt; of entropy from a `/dev/random` near you.&lt;br/&gt;&amp;gt; It is the channels themselves, requiring actual funds, high uptime, and&lt;br/&gt;&amp;gt; not being a dick to your counterparty, that are fairly expensive.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Thus, a &amp;#34;loop attack&amp;#34; need not involve a loop per se --- a single entity&lt;br/&gt;&amp;gt; can run any number of nodes with small numbers of channels each, and&lt;br/&gt;&amp;gt; thereby grief the network.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Stake certificates make the node itself expensive, so a single entity&lt;br/&gt;&amp;gt; running a number of nodes cannot perform such loop attacks, since it would&lt;br/&gt;&amp;gt; require entities expensively allocating funds for each node.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On the other hand, if channels are expensive, then a node with channels is&lt;br/&gt;&amp;gt; expensive.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-November/002890.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2020-November/002890.html&lt;/a&gt;&lt;br/&gt;&amp;gt; , which contains the &amp;#34;Z consideration&amp;#34; you were alluding to, I note that&lt;br/&gt;&amp;gt; the &amp;#34;point-to-point property&amp;#34; is already proven by the ***existing***&lt;br/&gt;&amp;gt; Lightning network without an additional ZK cryptographic proof.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; So let me invert that logic and present an even more extreme position:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * There are two griefing attacks:&lt;br/&gt;&amp;gt;   * Loop attacks, which are deliberate malicious attacks to lock up funds&lt;br/&gt;&amp;gt; of competitors in order to redirect forwarding towards the attacker.&lt;br/&gt;&amp;gt;   * Accidental &amp;#34;attacks&amp;#34;, which are accidental due to incompetence, where&lt;br/&gt;&amp;gt; a forwarding node accidentally goes offline and causes payments to be&lt;br/&gt;&amp;gt; locked up for long periods and making everyone on the network cry when&lt;br/&gt;&amp;gt; HTLCs time out and things have to be dropped onchain.&lt;br/&gt;&amp;gt; * The point-to-point property, which is already proven by the&lt;br/&gt;&amp;gt; ***existing*** Lightning network, is already sufficient to prevent loop&lt;br/&gt;&amp;gt; attacks, leaving only accidental incompetence-based &amp;#34;attacks&amp;#34;.&lt;br/&gt;&amp;gt;   * Or: the ***existing*** Lightning Network ***already*** proves the&lt;br/&gt;&amp;gt; point-to-point property presented by t-bast, and that property is&lt;br/&gt;&amp;gt; ***already*** sufficient to prevent the loop attacks.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; So, maybe we should instead focus on mitigating the effects of the&lt;br/&gt;&amp;gt; incompetence-based non-attacks [such as this proposal](&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/ElementsProject/lightning/issues/2632#issuecomment-736438980&#34;&gt;https://github.com/ElementsProject/lightning/issues/2632#issuecomment-736438980&lt;/a&gt;),&lt;br/&gt;&amp;gt; instead of attempting to defend against the mirage of loop attacks.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I could be utterly wrong here though.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Regards,&lt;br/&gt;&amp;gt; ZmnSCPxj&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20201201/e432323a/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20201201/e432323a/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:01:38Z</updated>
  </entry>

</feed>