Awesome, thanks Alex. Just one follow up.
> 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.
And the rationale for each channel needing refreshed gossip every 2 weeks is to
inform the network that the channel is still active (i.e. not disabled) and its
parameters haven't changed?
(I did look it up in BOLT 7 [0] but it wasn't clear to me that a channel would
be assumed to be inactive/disabled if there wasn't a channel_update for 2
weeks.)
That seems a lot of gossip to me if the recommended behavior of routing nodes
is to maintain ~100 percent uptime and only when absolutely necessary change
the parameters of the channel. I guess the alternative of significantly less
gossip messages and a potential uptick in failed routes would be worse though.
[0]:
https://github.com/lightning/bolts/blob/master/07-routing-gossip.md#rationale-4
--
Michael Folkson
Email: michaelfolkson at [protonmail.com](http://protonmail.com/)
Keybase: michaelfolkson
PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3
------- Original Message -------
On Wednesday, June 29th, 2022 at 7:07 PM, Alex Myers <a...@endothermic.dev>
wrote:
> Hi Michael,
>
> Thanks for the transcript and the questions, especially those you asked in
> Gleb's original Erlay presentation.
>
> 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.)
>
>> Why are hash collisions a concern for Lightning gossip and not for Erlay? Is
>> it not a DoS vector for both?
>
> 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'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.
>
>> It seems you are leaning towards per-peer sketches with inventory sets (like
>> Erlay) rather than global sketches.
>
>
> Yes. There are pros and cons to each method, but most critically, this would
> be compatible with eventual removal of the SCID.
>
>> Erlay falls back to flooding if the set reconciliation algorithm doesn't
>> work which I'm assuming you'll do with Lightning gossip.
>
> Fallback will take some consideration (Erlay's bisect is an elegant feature),
> but yes, flooding is still the ultimate fallback.
>
>> I was also surprised to hear that channel_update made up 97 percent of
>> gossip messages. Isn't it recommended that you don'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'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 "Are you sure you want to update your channel given this may
>> affect your routing success?" :)
>
> 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're seeing roughly
> three times as many channel updates vs node announcements compared to what'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.
>
> Thanks,
> Alex
>
> ------- Original Message -------
> On Wednesday, June 29th, 2022 at 6:09 AM, Michael Folkson
> <michaelfolk...@protonmail.com> wrote:
>
>> Thanks for this Alex.
>>
>> Here's a transcript of your recent presentation at Bitcoin++ on Minisketch
>> and Lightning gossip:
>>
>> https://btctranscripts.com/bitcoinplusplus/2022/2022-06-07-alex-myers-minisketch-lightning-gossip/
>>
>> Having followed Gleb'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.
>>
>> 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 "newness" and its lack of track record
>> of successfully routing payments. There are parts of the network you care
>> less about (if they can'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).
>>
>> "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."
>>
>> 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?
>>
>> 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'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's understanding. (Of
>> course we don't want to have to rely on centralized services or bake them
>> into the protocol if you don't want to use them.) Erlay falls back to
>> flooding if the set reconciliation algorithm doesn't work which I'm assuming
>> you'll do with Lightning gossip.
>>
>> I was also surprised to hear that channel_update made up 97 percent of
>> gossip messages. Isn't it recommended that you don'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'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 "Are you sure you want to update your channel given this may
>> affect your routing success?" :)
>>
>> Thanks
>> Michael
>>
>> P.S. Are we referring to "routing nodes" as "forwarding nodes" now? I've
>> noticed "forwarding nodes" being used more recently on this list.
>>
>> [0]: https://github.com/bitcoin/bitcoin/pull/21515
>>
>> --
>> Michael Folkson
>> Email: michaelfolkson at [protonmail.com](http://protonmail.com/)
>> Keybase: michaelfolkson
>> PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3
>>
>> ------- Original Message -------
>> On Thursday, April 14th, 2022 at 22:00, Alex Myers <a...@endothermic.dev>
>> wrote:
>>
>>> Hello lightning developers,
>>>
>>> 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.
>>>
>>> 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.
>>>
>>> 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]
>>>
>>> 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.
>>>
>>> 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.
>>>
>>> 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:
>>>
>>> - A common listing of current default rate limits across lightning network
>>> implementations.
>>>
>>> - Internal checks of RPC input to limit or warn of network propagation
>>> issues if certain rates are exceeded.
>>>
>>> - A commonly adopted rate-limit standard.
>>>
>>> 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 << 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.
>>>
>>> Thanks,
>>>
>>> Alex
>>>
>>> [1] https://github.com/sipa/minisketch
>>>
>>> [2]
>>> https://github.com/endothermicdev/lnspammityspam/blob/main/sampleoutput.txt
>>>
>>> [3]
>>> https://github.com/endothermicdev/lightning-rfc/blob/gossip-minisketch/07-routing-gossip.md#set-reconciliation
_______________________________________________
Lightning-dev mailing list
Lightning-dev@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev