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

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




  <entry>
    <id>https://njump.me/nevent1qqsz3vraef7jgrf7hh4kql06y62ppg0ty9lf0yhqnnvvh4fkjqpt8pqzypftvq7vw5nmvuw3vd4y3zpgzgaw0eta4hh7cw6pst0h7y6ys4pxu3xdnra</id>
    
      <title type="html">📅 Original date posted:2022-06-29 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsz3vraef7jgrf7hh4kql06y62ppg0ty9lf0yhqnnvvh4fkjqpt8pqzypftvq7vw5nmvuw3vd4y3zpgzgaw0eta4hh7cw6pst0h7y6ys4pxu3xdnra" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs258077lrltmr7z8v4lj3rkzn7932k9h63wa8pslaarqxyvs0ch6qzl9nw7&#39;&gt;nevent1q…9nw7&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-06-29&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Michael,&lt;br/&gt;&lt;br/&gt;Thanks for the transcript and the questions, especially those you asked in Gleb&amp;#39;s original Erlay presentation.&lt;br/&gt;&lt;br/&gt;I tried to cover a lot of ground in only 30 minutes and the finer points may have suffered. The most significant difference in concern between bitcoin transaction relay and lightning gossip may be one of privacy: Source nodes of Bitcoin transactions have an interest in privacy (avoid trivially triangulating the source.) Lightning gossip is already signed by and linked to a node ID - the source is completely transparent by nature. The lack of a timing concern would allow for a global sketch where it would have been infeasible for Erlay (among other reasons such as DoS.)&lt;br/&gt;&lt;br/&gt;&amp;gt; Why are hash collisions a concern for Lightning gossip and not for Erlay? Is it not a DoS vector for both?&lt;br/&gt;&lt;br/&gt;If lightning gossip were encoded for minisketch entries with the short_channel_id, it would create a unique fingerprint by default thanks to referencing the unique funding transaction on chain - no hashing required. This was Rusty&amp;#39;s original concept and what I had been proceeding with. However, given the ongoing privacy discussion and desire to eventually decouple lightning channels from their layer one funding transaction (gossip v2), I think we should prepare for a future in which channels are not explicitly linked to a SCID. That means hashing just as in Erlay and the same DoS vector would be present. Salting with a per-peer shared secret works here, but the solution is driven back toward inventory sets.&lt;br/&gt;&lt;br/&gt;&amp;gt; It seems you are leaning towards per-peer sketches with inventory sets (like Erlay) rather than global sketches.&lt;br/&gt;&lt;br/&gt;​&lt;br/&gt;Yes. There are pros and cons to each method, but most critically, this would be compatible with eventual removal of the SCID.&lt;br/&gt;&lt;br/&gt;&amp;gt; Erlay falls back to flooding if the set reconciliation algorithm doesn&amp;#39;t work which I&amp;#39;m assuming you&amp;#39;ll do with Lightning gossip.&lt;br/&gt;&lt;br/&gt;Fallback will take some consideration (Erlay&amp;#39;s bisect is an elegant feature), but yes, flooding is still the ultimate fallback.&lt;br/&gt;&lt;br/&gt;&amp;gt; I was also surprised to hear that channel_update made up 97 percent of gossip messages. Isn&amp;#39;t it recommended that you don&amp;#39;t make too changes to your channel as it is likely to result in failed routed payments and being dropped as a routing node for future payments? It seems that this advice isn&amp;#39;t being followed if there are so many channel_update messages being sent around. I almost wonder if Lightning implementations should include user prompts like &amp;#34;Are you sure you want to update your channel given this may affect your routing success?&amp;#34; :)&lt;br/&gt;&lt;br/&gt;Running the numbers, I currently see 15,761 public nodes on the network and 148,295 half channels. Those each need refreshed gossip every two weeks. By default that would result in 90% channel updates. That we&amp;#39;re seeing roughly three times as many channel updates vs node announcements compared to what&amp;#39;s strictly required is maybe not that surprising. I agree, there would be a benefit to nodes taking a more active role in tracking calls to broadcast gossip.&lt;br/&gt;&lt;br/&gt;Thanks,&lt;br/&gt;Alex&lt;br/&gt;&lt;br/&gt;------- Original Message -------&lt;br/&gt;On Wednesday, June 29th, 2022 at 6:09 AM, Michael Folkson &amp;lt;michaelfolkson at protonmail.com&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Thanks for this Alex.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Here&amp;#39;s a transcript of your recent presentation at Bitcoin&#43;&#43; on Minisketch and Lightning gossip:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://btctranscripts.com/bitcoinplusplus/2022/2022-06-07-alex-myers-minisketch-lightning-gossip/&#34;&gt;https://btctranscripts.com/bitcoinplusplus/2022/2022-06-07-alex-myers-minisketch-lightning-gossip/&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Having followed Gleb&amp;#39;s work on using Minisketch for Erlay in Bitcoin Core [0] for a while now I was especially interested in how the challenges of using Minisketch for Lightning gossip (node_announcement, channel_announcement, channel_update messages) would differ to the challenges of using Minisketch for transaction relay on the base layer.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I guess one of the major differences is full nodes are trying to verify a block every 10 minutes (on average) and so there is a sense of urgency to get the transactions of the next block to be mined. With Lightning gossip unless you are planning to send a payment (or route a payment) across a certain route you are less concerned about learning about the current state of the network urgently. If a new channel pops up you might choose not to route through it regardless given its &amp;#34;newness&amp;#34; and its lack of track record of successfully routing payments. There are parts of the network you care less about (if they can&amp;#39;t help you get to your regular destinations say) whereas with transaction relay you have to care about all transactions (paying a sufficient fee rate).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;#34;The problem that Bitcoin faced with transaction relay was pretty similar but there are a few differences.For one, any time you introduce that short hash function that produces a 64 bit fingerprint you have to be concerned with collisions between hash functions. Someone could potentially take advantage of that and grind out a hash that would resolve to the same fingerprint.&amp;#34;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Could you elaborate on this? Why are hash collisions a concern for Lightning gossip and not for Erlay? Is it not a DoS vector for both?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It seems you are leaning towards per-peer sketches with inventory sets (like Erlay) rather than global sketches. This makes sense to me and seems to be moving in a direction where your peer connections are more stable as you are storing data on what your peer&amp;#39;s understanding of the network is. There could even be centralized APIs which allow you to compare your current understanding of the network to the centralized service&amp;#39;s understanding. (Of course we don&amp;#39;t want to have to rely on centralized services or bake them into the protocol if you don&amp;#39;t want to use them.) Erlay falls back to flooding if the set reconciliation algorithm doesn&amp;#39;t work which I&amp;#39;m assuming you&amp;#39;ll do with Lightning gossip.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I was also surprised to hear that channel_update made up 97 percent of gossip messages. Isn&amp;#39;t it recommended that you don&amp;#39;t make too changes to your channel as it is likely to result in failed routed payments and being dropped as a routing node for future payments? It seems that this advice isn&amp;#39;t being followed if there are so many channel_update messages being sent around. I almost wonder if Lightning implementations should include user prompts like &amp;#34;Are you sure you want to update your channel given this may affect your routing success?&amp;#34; :)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Thanks&lt;br/&gt;&amp;gt; Michael&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; P.S. Are we referring to &amp;#34;routing nodes&amp;#34; as &amp;#34;forwarding nodes&amp;#34; now? I&amp;#39;ve noticed &amp;#34;forwarding nodes&amp;#34; being used more recently on this list.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [0]: &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/21515&#34;&gt;https://github.com/bitcoin/bitcoin/pull/21515&lt;/a&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 [protonmail.com](&lt;a href=&#34;http://protonmail.com/&#34;&gt;http://protonmail.com/&lt;/a&gt;)&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; ------- Original Message -------&lt;br/&gt;&amp;gt; On Thursday, April 14th, 2022 at 22:00, Alex Myers &amp;lt;alex at endothermic.dev&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Hello lightning developers,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I’ve been investigating set reconciliation as a means to reduce bandwidth and redundancy of gossip message propagation. This builds on some earlier work from Rusty using the minisketch library [1]. The idea is that each node will build a sketch representing it’s own gossip set. Alice’s node will encode and transmit this sketch to Bob’s node, where it will be merged with his own sketch, and the differences produced. These differences should ideally be exactly the latest missing gossip of both nodes. Due to size constraints, the set differences will necessarily be encoded, but Bob’s node will be able to identify which gossip Alice is missing, and may then transmit exactly those messages.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; This process is relatively straightforward, with the caveat that the sets must otherwise match very closely (each sketch has a maximum capacity for differences.) The difficulty here is that each node and lightning implementation may have its own rules for gossip acceptance and propagation. Depending on their gossip partners, not all gossip may propagate to the entire network.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Core-lightning implements rate limiting for incoming channel updates and node announcements. The default rate limit is 1 per day, with a burst of 4. I analyzed my node’s gossip over a 14 day period, and found that, of all publicly broadcasting half-channels, 18% of them fell afoul of our spam-limiting rules at least once. [2]&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Picking several offending channel ids, and digging further, the majority of these appear to be flapping due to Tor or otherwise intermittent connections. Well connected nodes may be more susceptible to this due to more frequent routing attempts, and failures resulting in a returned channel update (which otherwise might not have been broadcast.)A slight relaxation of the rate limit resolves the majority of these cases.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; A smaller subset of channels broadcast frequent channel updates with minor adjustments to htlc_maximum_msat and fee_proportional_millionths parameters. These nodes appear to be power users, with many channels and large balances. I assume this is automated channel management at work.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Core-Lightning has updated rate-limiting in the upcoming release to achieve a higher acceptance of incoming gossip, however, it seems that a broader discussion of rate limits may now be worthwhile. A few immediate ideas:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; - A common listing of current default rate limits across lightning network implementations.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; - Internal checks of RPC input to limit or warn of network propagation issues if certain rates are exceeded.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; - A commonly adopted rate-limit standard.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; My aim is a set reconciliation gossip type, which will use a common, simple heuristic to accept or reject a gossip message. (Think one channel update per block, or perhaps one per block_height &amp;lt;&amp;lt; 5.) See my github for my current draft. [3] This solution allows tighter consensus, yet suffers from the same problem as original anti-spam measures – it remains somewhat arbitrary. I would like to start a conversation regarding gossip propagation, channel_update and node_announcement usage, and perhaps even bandwidth goals for syncing gossip in the future (how about a million channels?) This would aid in the development of gossip set reconciliation, but could also benefit current node connection and routing reliability more generally.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Thanks,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Alex&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; [1] &lt;a href=&#34;https://github.com/sipa/minisketch&#34;&gt;https://github.com/sipa/minisketch&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; [2] &lt;a href=&#34;https://github.com/endothermicdev/lnspammityspam/blob/main/sampleoutput.txt&#34;&gt;https://github.com/endothermicdev/lnspammityspam/blob/main/sampleoutput.txt&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; [3] &lt;a href=&#34;https://github.com/endothermicdev/lightning-rfc/blob/gossip-minisketch/07-routing-gossip.md#set-reconciliation&#34;&gt;https://github.com/endothermicdev/lightning-rfc/blob/gossip-minisketch/07-routing-gossip.md#set-reconciliation&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/20220629/0f3f5ed9/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20220629/0f3f5ed9/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:06:29Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsd8ghw0jxnu9deseaj94r7m3tvu2gd60xe96ncz9vpqaeg5m2xsjczypftvq7vw5nmvuw3vd4y3zpgzgaw0eta4hh7cw6pst0h7y6ys4pxux4fmun</id>
    
      <title type="html">📅 Original date posted:2022-05-27 📝 Original message: &amp;gt; ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsd8ghw0jxnu9deseaj94r7m3tvu2gd60xe96ncz9vpqaeg5m2xsjczypftvq7vw5nmvuw3vd4y3zpgzgaw0eta4hh7cw6pst0h7y6ys4pxux4fmun" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsvctl5wdn6hlftxyrevhetkw8cnq6gkph8n2aey3ghnh7vat0m0zcs7se6t&#39;&gt;nevent1q…se6t&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-05-27&lt;br/&gt;📝 Original message:&lt;br/&gt;&amp;gt; &amp;gt; The update contains a block number. Let&amp;#39;s say we allow an update every&lt;br/&gt;&amp;gt; &amp;gt; 100 blocks. This must be &amp;lt;= current block height (and presumably, newer&lt;br/&gt;&amp;gt; &amp;gt; than height - 2016).&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; If you send an update number 600000, and then 600100, it will propagate.&lt;br/&gt;&amp;gt; &amp;gt; 600099 will not.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Ah, this is an additional proposal on top, and requires a gossip &amp;#34;hard fork&amp;#34;, which means your new&lt;br/&gt;&amp;gt; protocol would only work for taproot channels, and any old/unupgraded channels will have to be&lt;br/&gt;&amp;gt; propagated via the old mechanism. I&amp;#39;d kinda prefer to be able to rip out the old gossip sync code&lt;br/&gt;&amp;gt; sooner than a few years from now :(.&lt;br/&gt;&lt;br/&gt;I viewed it as a soft fork, where if you want to use set reconciliation, anything added to the set would be subject to a constricted ruleset - in this case the gossip must be accompanied by a blockheight tlv (or otherwise reference a blockheight) and it must not replace a message in the current 100 block range.&lt;br/&gt;&lt;br/&gt;It doesn&amp;#39;t necessarily have to reference blockheight, but that would simplify many edge cases.  The key is merely that a node is responsible for limiting it&amp;#39;s own gossip to a predefined interval, and it must be easily verifiable for any other nodes building and reconciling sketches.  Given that we have access to a timechain, this just made the most sense.&lt;br/&gt;&lt;br/&gt;&amp;gt; &amp;gt; If some nodes have 600000 and others have 600099 (because you broke the&lt;br/&gt;&amp;gt; &amp;gt; ratelimiting recommendation, and propagated both approx the same&lt;br/&gt;&amp;gt; &amp;gt; time), then the network will split, sure.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Right, so what do you do in that case, though? AFAIU, in your proposed sync mechanism if a node does&lt;br/&gt;&amp;gt; this once, you&amp;#39;re stuck with all of your gossip reconciliations with every peer &amp;#34;wasting&amp;#34; one&lt;br/&gt;&amp;gt; difference &amp;#34;slot&amp;#34; for a day or however long it takes before the peer does a sane update. In my&lt;br/&gt;&amp;gt; proposed alternative it only appears once and then you move on (or maybe once more on startup, but&lt;br/&gt;&amp;gt; we can maybe be willing to take on some extra cost there?).&lt;br/&gt;&lt;br/&gt;This case may not be all that difficult. Easiest answer is you offer a spam proof to your peer.  Send both messages, signed by the offending node as proof they violated the set reconciliation rate limit, then remove both from your sketch. You may want to keep the evidence it in your data store, at least until it&amp;#39;s superceded by the next valid update, but there&amp;#39;s no reason it must occupy a slot of the sketch.  Meanwhile, feel free to use the message as you wish, just keep both out of the sketch. It&amp;#39;s not perfect, but the sketch capacity is not compromised and the second incidence of spam should not propagate at all. (It may be possible to keep one, but this is the simplest answer.)&lt;br/&gt;&lt;br/&gt;&amp;gt; Heh, I&amp;#39;m surprised you&amp;#39;d complain about this - IIUC your existing gossip storage system keeps this&lt;br/&gt;&amp;gt; as a side-effect so it&amp;#39;d be a single integer for y&amp;#39;all :p. In any case, if it makes the protocol a&lt;br/&gt;&amp;gt; chunk more efficient I don&amp;#39;t see why its a big deal to keep track of the set of which invoices have&lt;br/&gt;&amp;gt; changed recently, you could even make it super efficient by just saying &amp;#34;anything more recent than&lt;br/&gt;&amp;gt; timestamp X except a few exceptions that we got with some lag against the update timestamp&amp;#34;.&lt;br/&gt;&lt;br/&gt;The benefit of a single global sketch is less overhead in adding additional gossip peers, though looking at the numbers, sketch decoding time seems to be the more significant driving factor than rebuilding sketches (when they&amp;#39;re incremental.) I also like maximizing the utility of the sketch by adding the full gossip store if possible.&lt;br/&gt;&lt;br/&gt;I still think getting the rate-limit responsibility to the originating node would be a win in either case. It will chew into sketch capacity regardless.&lt;br/&gt;&lt;br/&gt;-Alex&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;------- Original Message -------&lt;br/&gt;On Thursday, May 26th, 2022 at 5:19 PM, Matt Corallo &amp;lt;lf-lists at mattcorallo.com&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On 5/26/22 1:25 PM, Rusty Russell wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Matt Corallo lf-lists at mattcorallo.com writes:&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; I agree there should be some rough consensus, but rate-limits are a locally-enforced thing, not a&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; global one. There will always be races and updates you reject that your peers dont, no matter the&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; rate-limit, and while I agree we should have guidelines, we can&amp;#39;t &amp;#34;just make them the same&amp;#34; - it&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; &amp;gt; both doesn&amp;#39;t solve the problem and means we can&amp;#39;t change them in the future.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; Sure it does! It severly limits the set divergence to race conditions&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; (down to block height divergence, in practice).&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; Huh? There&amp;#39;s always some line you draw, if an update happens right on the line (which they almost&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; certainly often will because people want to update, and they&amp;#39;ll update every X hours to whatever the&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; rate limit is), then ~half the network will accept the update and half won&amp;#39;t. I don&amp;#39;t see how you&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; solve this problem.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; The update contains a block number. Let&amp;#39;s say we allow an update every&lt;br/&gt;&amp;gt; &amp;gt; 100 blocks. This must be &amp;lt;= current block height (and presumably, newer&lt;br/&gt;&amp;gt; &amp;gt; than height - 2016).&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; If you send an update number 600000, and then 600100, it will propagate.&lt;br/&gt;&amp;gt; &amp;gt; 600099 will not.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Ah, this is an additional proposal on top, and requires a gossip &amp;#34;hard fork&amp;#34;, which means your new&lt;br/&gt;&amp;gt; protocol would only work for taproot channels, and any old/unupgraded channels will have to be&lt;br/&gt;&amp;gt; propagated via the old mechanism. I&amp;#39;d kinda prefer to be able to rip out the old gossip sync code&lt;br/&gt;&amp;gt; sooner than a few years from now :(.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; If some nodes have 600000 and others have 600099 (because you broke the&lt;br/&gt;&amp;gt; &amp;gt; ratelimiting recommendation, and propagated both approx the same&lt;br/&gt;&amp;gt; &amp;gt; time), then the network will split, sure.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Right, so what do you do in that case, though? AFAIU, in your proposed sync mechanism if a node does&lt;br/&gt;&amp;gt; this once, you&amp;#39;re stuck with all of your gossip reconciliations with every peer &amp;#34;wasting&amp;#34; one&lt;br/&gt;&amp;gt; difference &amp;#34;slot&amp;#34; for a day or however long it takes before the peer does a sane update. In my&lt;br/&gt;&amp;gt; proposed alternative it only appears once and then you move on (or maybe once more on startup, but&lt;br/&gt;&amp;gt; we can maybe be willing to take on some extra cost there?).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; Maybe. What&amp;#39;s a &amp;#34;non-update&amp;#34; based sketch? Some huge percentage of&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; &amp;gt; gossip is channel_update, so it&amp;#39;s kind of the thing we want?&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; Oops, maybe we&amp;#39;re on very different pages, here - I mean doing sketches based on &amp;#34;the things that&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; I received since the last sync, ie all the gossip updates from the last hour&amp;#34; vs doing sketches&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; based on &amp;#34;the things I have, ie my full gossip store&amp;#34;.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; But that requires state. Full store requires none, keeping it&lt;br/&gt;&amp;gt; &amp;gt; super-simple&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Heh, I&amp;#39;m surprised you&amp;#39;d complain about this - IIUC your existing gossip storage system keeps this&lt;br/&gt;&amp;gt; as a side-effect so it&amp;#39;d be a single integer for y&amp;#39;all :p. In any case, if it makes the protocol a&lt;br/&gt;&amp;gt; chunk more efficient I don&amp;#39;t see why its a big deal to keep track of the set of which invoices have&lt;br/&gt;&amp;gt; changed recently, you could even make it super efficient by just saying &amp;#34;anything more recent than&lt;br/&gt;&amp;gt; timestamp X except a few exceptions that we got with some lag against the update timestamp&amp;#34;.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Better, the state is global, not per-peer, and a small fraction of the total state of the gossip&lt;br/&gt;&amp;gt; store anyway, so its not like its introducing some new giant or non-constant-factor blowup.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Matt
    </content>
    <updated>2023-06-09T13:06:05Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqs0ghmqy5t96x4qa60lx4sf7hlgxsaqswmzwxtj5fdw2pjv8hglpagzypftvq7vw5nmvuw3vd4y3zpgzgaw0eta4hh7cw6pst0h7y6ys4pxugny273</id>
    
      <title type="html">📅 Original date posted:2022-04-22 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqs0ghmqy5t96x4qa60lx4sf7hlgxsaqswmzwxtj5fdw2pjv8hglpagzypftvq7vw5nmvuw3vd4y3zpgzgaw0eta4hh7cw6pst0h7y6ys4pxugny273" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsgfqt60xqe60sngwpsm0wg89qcahsy5zvkkmxlt5qr9yd0k6nc6jcd4ykkm&#39;&gt;nevent1q…ykkm&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-04-22&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Matt,&lt;br/&gt;&lt;br/&gt;Appreciate your responses. Hope you&amp;#39;ll bear with me as I&amp;#39;m a bit new to this.&lt;br/&gt;&lt;br/&gt;&amp;gt; Instead of trying to make sure everyone’s gossip acceptance matches exactly, which as you point it seems like a quagmire, why not (a) do a sync on startup and (b) do syncs of the *new* things.&lt;br/&gt;&lt;br/&gt;I&amp;#39;m not opposed to this technique, and maybe it ends up as a better solution. The rationale for not going full Erlay approach was that it&amp;#39;s far less overhead to maintain a single sketch than to maintain a per-peer sketch and associated state for every gossip peer. In this way there&amp;#39;s very little cost to adding additional gossip peers, which further encourages propagation and convergence of the gossip network.&lt;br/&gt;&lt;br/&gt;IIUC Erlay&amp;#39;s design was concerned for privacy of originating nodes. Lightning gossip is public by nature, so I&amp;#39;m not sure we should constrain ourselves to the same design route without trying the alternative first.&lt;br/&gt;&lt;br/&gt;&amp;gt; if we&amp;#39;re gonna add a minisketch-based sync anyway, please lets also use it for initial sync after restart&lt;br/&gt;&lt;br/&gt;This was out of the scope of what I had in mind, but I will give this some thought. I could see how a block_height reference coupled with set reconciliation could provide some better options here. This may not be all that difficult to shoe-horn in.&lt;br/&gt;&lt;br/&gt;Regardless of single sketch or per-peer set reconciliation, it should be easier to implement with tighter rules on rate-limiting. (Keep in mind, the node&amp;#39;s graph can presumably be updated independently of the gossip it rebroadcasts if desired.) As a thought experiment, if we consider a CLN-LDK set reconciliation, and that each node is gossiping with 5 other peers in an evenly spaced frequency, we would currently see 42.8 commonly accepted channel_updates over an average 60s window along with 11 more updates which LDK accepts and CLN rejects (spam.)[1] Assuming the other 5 peers have shared 5/6ths of this gossip before the CLN/LDK set reconciliation, we&amp;#39;re left with CLN seeing 7 updates to reconcile, while LDK sees 18. Already we&amp;#39;ve lost 60% efficiency due to lack of a common rate-limit heuristic.&lt;br/&gt;&lt;br/&gt;I understand gossip traffic is manageable now, but I&amp;#39;m not sure it will be that long before it becomes an issue. Furthermore, any particular set reconciliation technique would benefit from a simple common rate-limit heuristic, not to mention originating nodes, who may not currently realize their channel updates are being rejected by a portion of the network due to differing criteria across implementations.&lt;br/&gt;&lt;br/&gt;Thanks,&lt;br/&gt;Alex&lt;br/&gt;&lt;br/&gt;[1] &lt;a href=&#34;https://github.com/endothermicdev/lnspammityspam/blob/main/sampleoutput.txt&#34;&gt;https://github.com/endothermicdev/lnspammityspam/blob/main/sampleoutput.txt&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;------- Original Message -------&lt;br/&gt;On Thursday, April 21st, 2022 at 3:47 PM, Matt Corallo lf-lists at mattcorallo.com wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; On 4/21/22 1:31 PM, Alex Myers wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Hello Bastien,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Thank you for your feedback. I hope you don&amp;#39;t mind I let it percolate for a while.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Eclair doesn&amp;#39;t do any rate-limiting. We wanted to &amp;#34;feel the pain&amp;#34; before adding&lt;br/&gt;&amp;gt;&amp;gt; anything, and to be honest we haven&amp;#39;t really felt it yet.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I understand the “feel the pain first” approach, but attempting set reconciliation has forced me to&lt;br/&gt;&amp;gt;&amp;gt; confront the issue a bit early.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; My thoughts on sync were that set-reconciliation would only be used once a node had fully synced&lt;br/&gt;&amp;gt;&amp;gt; gossip through traditional means (initial_routing_sync / gossip_queries.) There should be many&lt;br/&gt;&amp;gt;&amp;gt; levers to pull in order to help maintain sync after this. I&amp;#39;m going to have to experiment with them&lt;br/&gt;&amp;gt;&amp;gt; a bit before I can claim they are sufficient, but I&amp;#39;m optimistic.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Please, no. initial_routing_sync was removed from most implementations (it sucks) and gossip queries&lt;br/&gt;&amp;gt; is broken in at least five ways. May we can recover it by adding yet more extensions but if we&amp;#39;re&lt;br/&gt;&amp;gt; gonna add a minisketch-based sync anyway, please lets also use it for initial sync after restart&lt;br/&gt;&amp;gt; (unless you have no channels at all, in which case lets maybe revive initial_routing_sync...)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Matt&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/20220422/59ffd174/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20220422/59ffd174/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:05:53Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsqaw5nprfaqp0kht0esfn98mmy7nsl234eyuhr5f2f5ck090p047gzypftvq7vw5nmvuw3vd4y3zpgzgaw0eta4hh7cw6pst0h7y6ys4pxu0ajshy</id>
    
      <title type="html">📅 Original date posted:2022-04-21 📝 Original message: Hello ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsqaw5nprfaqp0kht0esfn98mmy7nsl234eyuhr5f2f5ck090p047gzypftvq7vw5nmvuw3vd4y3zpgzgaw0eta4hh7cw6pst0h7y6ys4pxu0ajshy" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs9efuszewymznf4s3shn4jvyw4rek2vesfc3ptx2r5u4ej8p24dwsen628m&#39;&gt;nevent1q…628m&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-04-21&lt;br/&gt;📝 Original message:&lt;br/&gt;Hello Bastien,&lt;br/&gt;&lt;br/&gt;Thank you for your feedback. I hope you don&amp;#39;t mind I let it percolate for a while.&lt;br/&gt;&lt;br/&gt;&amp;gt; Eclair doesn&amp;#39;t do any rate-limiting. We wanted to &amp;#34;feel the pain&amp;#34; before adding&lt;br/&gt;&amp;gt; anything, and to be honest we haven&amp;#39;t really felt it yet.&lt;br/&gt;&lt;br/&gt;I understand the “feel the pain first” approach, but attempting set reconciliation has forced me to confront the issue a bit early.&lt;br/&gt;&lt;br/&gt;My thoughts on sync were that set-reconciliation would only be used once a node had fully synced gossip through traditional means (initial_routing_sync / gossip_queries.) There should be many levers to pull in order to help maintain sync after this. I&amp;#39;m going to have to experiment with them a bit before I can claim they are sufficient, but I&amp;#39;m optimistic.&lt;br/&gt;&lt;br/&gt;&amp;gt; One thing that may help here from an implementation&amp;#39;s point of view is to avoid&lt;br/&gt;&amp;gt; sending a disabled channel update every time a channel goes offline. What&lt;br/&gt;&amp;gt; eclair does to avoid spamming is to only send a disabled channel update when&lt;br/&gt;&amp;gt; someone actually tries to use that channel. Of course, if people choose this&lt;br/&gt;&amp;gt; offline node in their route, you don&amp;#39;t have a choice and will need to send a&lt;br/&gt;&amp;gt; disabled channel update, but we&amp;#39;ve observed that many channels come back&lt;br/&gt;&amp;gt; online before we actually need to use them, so we&amp;#39;re saving two channel updates&lt;br/&gt;&amp;gt; (one to disable the channel and one to re-enable it). I think all implementations&lt;br/&gt;&amp;gt; should do this. Is that the case today?&lt;br/&gt;&amp;gt; We could go even further, and when we receive an htlc that should be relayed&lt;br/&gt;&amp;gt; to an offline node, wait a bit to give them an opportunity to come online instead&lt;br/&gt;&amp;gt; of failing the htlc and sending a disabled channel update. Eclair currently doesn&amp;#39;tdo that, but it would be very easy to add.&lt;br/&gt;&lt;br/&gt;Core-Lightning also delays sending disabled channel updates in an effort to minimize unnecessary gossip. I hadn’t considered an additional delay before failing an htlc on a disabled channel. That will be interesting to explore in the context of transient disconnects of Tor v3 nodes.&lt;br/&gt;&lt;br/&gt;I like the idea of a block_height in the channel update tlv. That would be sufficient to enable a simple rate-limit heuristic for this application anyway. Allowing leeway for the chain tip is no problem. I would also expect most implementations to hold a couple updates in reserve, defaulting to predated updates when available. This would allow a “burst” functionality similar to the current LND/CLN rate-limit, but the responsibility is now placed on the originating node to provide that allowance.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;&lt;br/&gt;Alex&lt;br/&gt;&lt;br/&gt;------- Original Message -------&lt;br/&gt;On Friday, April 15th, 2022 at 2:15 AM, Bastien TEINTURIER &amp;lt;bastien at acinq.fr&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Good morning Alex,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I’ve been investigating set reconciliation as a means to reduce bandwidth&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; and redundancy of gossip message propagation.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cool project, glad to see someone working on it! The main difficulty here will&lt;br/&gt;&amp;gt; indeed be to ensure that the number of differences between sets is bounded.&lt;br/&gt;&amp;gt; We will need to maintain a mechanism to sync the whole graph from scratch&lt;br/&gt;&amp;gt; for new nodes, so the minisketch diff must be efficient enough otherwise nodes&lt;br/&gt;&amp;gt; will just fall back to a full sync way too often (which would waste a lot of&lt;br/&gt;&amp;gt; bandwidth).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Picking several offending channel ids, and digging further, the majority of these&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; appear to be flapping due to Tor or otherwise intermittent connections.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; One thing that may help here from an implementation&amp;#39;s point of view is to avoid&lt;br/&gt;&amp;gt; sending a disabled channel update every time a channel goes offline. What&lt;br/&gt;&amp;gt; eclair does to avoid spamming is to only send a disabled channel update when&lt;br/&gt;&amp;gt; someone actually tries to use that channel. Of course, if people choose this&lt;br/&gt;&amp;gt; offline node in their route, you don&amp;#39;t have a choice and will need to send a&lt;br/&gt;&amp;gt; disabled channel update, but we&amp;#39;ve observed that many channels come back&lt;br/&gt;&amp;gt; online before we actually need to use them, so we&amp;#39;re saving two channel updates&lt;br/&gt;&amp;gt; (one to disable the channel and one to re-enable it). I think all implementations&lt;br/&gt;&amp;gt; should do this. Is that the case today?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; We could go even further, and when we receive an htlc that should be relayed&lt;br/&gt;&amp;gt; to an offline node, wait a bit to give them an opportunity to come online instead&lt;br/&gt;&amp;gt; of failing the htlc and sending a disabled channel update. Eclair currently doesn&amp;#39;t&lt;br/&gt;&amp;gt; do that, but it would be very easy to add.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; - A common listing of current default rate limits across lightning network implementations.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Eclair doesn&amp;#39;t do any rate-limiting. We wanted to &amp;#34;feel the pain&amp;#34; before adding&lt;br/&gt;&amp;gt; anything, and to be honest we haven&amp;#39;t really felt it yet.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; which will use a common, simple heuristic to accept or reject a gossip message.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; (Think one channel update per block, or perhaps one per block_height &amp;lt;&amp;lt; 5.)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I think it would be easy to come to agreement between implementations and&lt;br/&gt;&amp;gt; restrict channel updates to at most one every N blocks. We simply need to add&lt;br/&gt;&amp;gt; the `block_height` in a tlv in `channel_update` and then we&amp;#39;ll be able to actually&lt;br/&gt;&amp;gt; rate-limit based on it. Given how much time it takes to upgrade most of the&lt;br/&gt;&amp;gt; network, it may be a good idea to add the `block_height` tlv now in the spec,&lt;br/&gt;&amp;gt; and act on it later? Unless your work requires bigger changes in channel update&lt;br/&gt;&amp;gt; in which case it will probably be a new message.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Note that it will never be completely accurate though, as different nodes can&lt;br/&gt;&amp;gt; have different blockchain tips. My nodes may be one or two blocks late compared&lt;br/&gt;&amp;gt; to the node that emits the channel update. We need to allow a bit of leeway there.&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; Le jeu. 14 avr. 2022 à 23:06, Alex Myers &amp;lt;alex at endothermic.dev&amp;gt; a écrit :&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Hello lightning developers,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I’ve been investigating set reconciliation as a means to reduce bandwidth and redundancy of gossip message propagation. This builds on some earlier work from Rusty using the minisketch library [1]. The idea is that each node will build a sketch representing it’s own gossip set. Alice’s node will encode and transmit this sketch to Bob’s node, where it will be merged with his own sketch, and the differences produced. These differences should ideally be exactly the latest missing gossip of both nodes. Due to size constraints, the set differences will necessarily be encoded, but Bob’s node will be able to identify which gossip Alice is missing, and may then transmit exactly those messages.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; This process is relatively straightforward, with the caveat that the sets must otherwise match very closely (each sketch has a maximum capacity for differences.) The difficulty here is that each node and lightning implementation may have its own rules for gossip acceptance and propagation. Depending on their gossip partners, not all gossip may propagate to the entire network.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Core-lightning implements rate limiting for incoming channel updates and node announcements. The default rate limit is 1 per day, with a burst of 4. I analyzed my node’s gossip over a 14 day period, and found that, of all publicly broadcasting half-channels, 18% of them fell afoul of our spam-limiting rules at least once. [2]&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Picking several offending channel ids, and digging further, the majority of these appear to be flapping due to Tor or otherwise intermittent connections. Well connected nodes may be more susceptible to this due to more frequent routing attempts, and failures resulting in a returned channel update (which otherwise might not have been broadcast.)A slight relaxation of the rate limit resolves the majority of these cases.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; A smaller subset of channels broadcast frequent channel updates with minor adjustments to htlc_maximum_msat and fee_proportional_millionths parameters. These nodes appear to be power users, with many channels and large balances. I assume this is automated channel management at work.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Core-Lightning has updated rate-limiting in the upcoming release to achieve a higher acceptance of incoming gossip, however, it seems that a broader discussion of rate limits may now be worthwhile. A few immediate ideas:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; - A common listing of current default rate limits across lightning network implementations.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; - Internal checks of RPC input to limit or warn of network propagation issues if certain rates are exceeded.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; - A commonly adopted rate-limit standard.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; My aim is a set reconciliation gossip type, which will use a common, simple heuristic to accept or reject a gossip message. (Think one channel update per block, or perhaps one per block_height &amp;lt;&amp;lt; 5.) See my github for my current draft. [3] This solution allows tighter consensus, yet suffers from the same problem as original anti-spam measures – it remains somewhat arbitrary. I would like to start a conversation regarding gossip propagation, channel_update and node_announcement usage, and perhaps even bandwidth goals for syncing gossip in the future (how about a million channels?) This would aid in the development of gossip set reconciliation, but could also benefit current node connection and routing reliability more generally.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Thanks,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Alex&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; [1] &lt;a href=&#34;https://github.com/sipa/minisketch&#34;&gt;https://github.com/sipa/minisketch&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; [2] &lt;a href=&#34;https://github.com/endothermicdev/lnspammityspam/blob/main/sampleoutput.txt&#34;&gt;https://github.com/endothermicdev/lnspammityspam/blob/main/sampleoutput.txt&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; [3] &lt;a href=&#34;https://github.com/endothermicdev/lightning-rfc/blob/gossip-minisketch/07-routing-gossip.md#set-reconciliation&#34;&gt;https://github.com/endothermicdev/lightning-rfc/blob/gossip-minisketch/07-routing-gossip.md#set-reconciliation&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;-------------- 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/20220421/a2ddf84f/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20220421/a2ddf84f/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:05:52Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsy6nzc4alzfqh5jtzkjjmpu6tr6kq56z3m6edary6rgufagkkeflczypftvq7vw5nmvuw3vd4y3zpgzgaw0eta4hh7cw6pst0h7y6ys4pxu9qk55s</id>
    
      <title type="html">📅 Original date posted:2022-04-14 📝 Original message: Hello ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsy6nzc4alzfqh5jtzkjjmpu6tr6kq56z3m6edary6rgufagkkeflczypftvq7vw5nmvuw3vd4y3zpgzgaw0eta4hh7cw6pst0h7y6ys4pxu9qk55s" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsfpj9z9zfapyvsxwfq3a4sad3k6m0ypg4kcl8l2uy2ycted2fmw8sdk89zy&#39;&gt;nevent1q…89zy&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-04-14&lt;br/&gt;📝 Original message:&lt;br/&gt;Hello lightning developers,&lt;br/&gt;&lt;br/&gt;I’ve been investigating set reconciliation as a means to reduce bandwidth and redundancy of gossip message propagation. This builds on some earlier work from Rusty using the minisketch library [1]. The idea is that each node will build a sketch representing it’s own gossip set. Alice’s node will encode and transmit this sketch to Bob’s node, where it will be merged with his own sketch, and the differences produced. These differences should ideally be exactly the latest missing gossip of both nodes. Due to size constraints, the set differences will necessarily be encoded, but Bob’s node will be able to identify which gossip Alice is missing, and may then transmit exactly those messages.&lt;br/&gt;&lt;br/&gt;This process is relatively straightforward, with the caveat that the sets must otherwise match very closely (each sketch has a maximum capacity for differences.) The difficulty here is that each node and lightning implementation may have its own rules for gossip acceptance and propagation. Depending on their gossip partners, not all gossip may propagate to the entire network.&lt;br/&gt;&lt;br/&gt;Core-lightning implements rate limiting for incoming channel updates and node announcements. The default rate limit is 1 per day, with a burst of 4. I analyzed my node’s gossip over a 14 day period, and found that, of all publicly broadcasting half-channels, 18% of them fell afoul of our spam-limiting rules at least once. [2]&lt;br/&gt;&lt;br/&gt;Picking several offending channel ids, and digging further, the majority of these appear to be flapping due to Tor or otherwise intermittent connections. Well connected nodes may be more susceptible to this due to more frequent routing attempts, and failures resulting in a returned channel update (which otherwise might not have been broadcast.)A slight relaxation of the rate limit resolves the majority of these cases.&lt;br/&gt;&lt;br/&gt;A smaller subset of channels broadcast frequent channel updates with minor adjustments to htlc_maximum_msat and fee_proportional_millionths parameters. These nodes appear to be power users, with many channels and large balances. I assume this is automated channel management at work.&lt;br/&gt;&lt;br/&gt;Core-Lightning has updated rate-limiting in the upcoming release to achieve a higher acceptance of incoming gossip, however, it seems that a broader discussion of rate limits may now be worthwhile. A few immediate ideas:&lt;br/&gt;&lt;br/&gt;- A common listing of current default rate limits across lightning network implementations.&lt;br/&gt;&lt;br/&gt;- Internal checks of RPC input to limit or warn of network propagation issues if certain rates are exceeded.&lt;br/&gt;&lt;br/&gt;- A commonly adopted rate-limit standard.&lt;br/&gt;&lt;br/&gt;My aim is a set reconciliation gossip type, which will use a common, simple heuristic to accept or reject a gossip message. (Think one channel update per block, or perhaps one per block_height &amp;lt;&amp;lt; 5.) See my github for my current draft. [3] This solution allows tighter consensus, yet suffers from the same problem as original anti-spam measures – it remains somewhat arbitrary. I would like to start a conversation regarding gossip propagation, channel_update and node_announcement usage, and perhaps even bandwidth goals for syncing gossip in the future (how about a million channels?) This would aid in the development of gossip set reconciliation, but could also benefit current node connection and routing reliability more generally.&lt;br/&gt;&lt;br/&gt;Thanks,&lt;br/&gt;&lt;br/&gt;Alex&lt;br/&gt;&lt;br/&gt;[1] &lt;a href=&#34;https://github.com/sipa/minisketch&#34;&gt;https://github.com/sipa/minisketch&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;[2] &lt;a href=&#34;https://github.com/endothermicdev/lnspammityspam/blob/main/sampleoutput.txt&#34;&gt;https://github.com/endothermicdev/lnspammityspam/blob/main/sampleoutput.txt&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;[3] &lt;a href=&#34;https://github.com/endothermicdev/lightning-rfc/blob/gossip-minisketch/07-routing-gossip.md#set-reconciliation&#34;&gt;https://github.com/endothermicdev/lightning-rfc/blob/gossip-minisketch/07-routing-gossip.md#set-reconciliation&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/20220414/daf0c088/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20220414/daf0c088/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:05:51Z</updated>
  </entry>

</feed>