Rusty Russell [ARCHIVE] on Nostr: 📅 Original date posted:2022-05-26 📝 Original message: Matt Corallo <lf-lists at ...
📅 Original date posted:2022-05-26
📝 Original message:
Matt Corallo <lf-lists at mattcorallo.com> writes:
>>> I agree there should be *some* rough consensus, but rate-limits are a locally-enforced thing, not a
>>> global one. There will always be races and updates you reject that your peers dont, no matter the
>>> rate-limit, and while I agree we should have guidelines, we can't "just make them the same" - it
>>> both doesn't solve the problem and means we can't change them in the future.
>>
>> Sure it does! It severly limits the set divergence to race conditions
>> (down to block height divergence, in practice).
>
> Huh? There's always some line you draw, if an update happens right on the line (which they almost
> certainly often will because people want to update, and they'll update every X hours to whatever the
> rate limit is), then ~half the network will accept the update and half won't. I don't see how you
> solve this problem.
The update contains a block number. Let's say we allow an update every
100 blocks. This must be <= current block height (and presumably, newer
than height - 2016).
If you send an update number 600000, and then 600100, it will propagate.
600099 will not.
If some nodes have 600000 and others have 600099 (because you broke the
ratelimiting recommendation, *and* propagated both approx the same
time), then the network will split, sure.
We could be fascist and penalize nodes which do this, but that's
overkill unless it actually happens a lot.
Nodes which want to keep an potential update "up their sleeve" will
backdate updates by 101 blocks (everyone should do this, in fact).
As I said, this has a problem with block height differences, but that's
explicitly included in the messages so you can ignore and wait if you
want. Again, may not be a problem in practice.
>> Maybe. What's a "non-update" based sketch? Some huge percentage of
>> gossip is channel_update, so it's kind of the thing we want?
>
> Oops, maybe we're on *very* different pages, here - I mean doing sketches based on "the things that
> I received since the last sync, ie all the gossip updates from the last hour" vs doing sketches
> based on "the things I have, ie my full gossip store".
But that requires state. Full store requires none, keeping it
super-simple
Though Alex has a idea for a "include even the expired entries" then
"regenerate every N blocks" which avoids the problem that each change is
two deltas (one remove, one add), at cost of some complexity.
Cheers,
Rusty.
Published at
2023-06-09 13:06:05Event JSON
{
"id": "8b098c916c041fa4635da3ac71d459969da18546c48b71b0d0df9f6eaac74773",
"pubkey": "13bd8c1c5e3b3508a07c92598647160b11ab0deef4c452098e223e443c1ca425",
"created_at": 1686315965,
"kind": 1,
"tags": [
[
"e",
"6f44fc36e4e07717b0ba01136a1c618064fe2a94c36ab961a35969fe16e02201",
"",
"root"
],
[
"e",
"4b02774f186fc1598f4f0e13edca2b2ebb167a2ad6693b9aaf971fda7940ae38",
"",
"reply"
],
[
"p",
"cd753aa8fbc112e14ffe9fe09d3630f0eff76ca68e376e004b8e77b687adddba"
]
],
"content": "📅 Original date posted:2022-05-26\n📝 Original message:\nMatt Corallo \u003clf-lists at mattcorallo.com\u003e writes:\n\u003e\u003e\u003e I agree there should be *some* rough consensus, but rate-limits are a locally-enforced thing, not a\n\u003e\u003e\u003e global one. There will always be races and updates you reject that your peers dont, no matter the\n\u003e\u003e\u003e rate-limit, and while I agree we should have guidelines, we can't \"just make them the same\" - it\n\u003e\u003e\u003e both doesn't solve the problem and means we can't change them in the future.\n\u003e\u003e \n\u003e\u003e Sure it does! It severly limits the set divergence to race conditions\n\u003e\u003e (down to block height divergence, in practice).\n\u003e\n\u003e Huh? There's always some line you draw, if an update happens right on the line (which they almost \n\u003e certainly often will because people want to update, and they'll update every X hours to whatever the \n\u003e rate limit is), then ~half the network will accept the update and half won't. I don't see how you \n\u003e solve this problem.\n\nThe update contains a block number. Let's say we allow an update every\n100 blocks. This must be \u003c= current block height (and presumably, newer\nthan height - 2016).\n\nIf you send an update number 600000, and then 600100, it will propagate.\n600099 will not.\n\nIf some nodes have 600000 and others have 600099 (because you broke the\nratelimiting recommendation, *and* propagated both approx the same\ntime), then the network will split, sure.\n\nWe could be fascist and penalize nodes which do this, but that's\noverkill unless it actually happens a lot.\n\nNodes which want to keep an potential update \"up their sleeve\" will\nbackdate updates by 101 blocks (everyone should do this, in fact).\n\nAs I said, this has a problem with block height differences, but that's\nexplicitly included in the messages so you can ignore and wait if you\nwant. Again, may not be a problem in practice.\n\n\u003e\u003e Maybe. What's a \"non-update\" based sketch? Some huge percentage of\n\u003e\u003e gossip is channel_update, so it's kind of the thing we want?\n\u003e\n\u003e Oops, maybe we're on *very* different pages, here - I mean doing sketches based on \"the things that \n\u003e I received since the last sync, ie all the gossip updates from the last hour\" vs doing sketches \n\u003e based on \"the things I have, ie my full gossip store\".\n\nBut that requires state. Full store requires none, keeping it\nsuper-simple\n\nThough Alex has a idea for a \"include even the expired entries\" then\n\"regenerate every N blocks\" which avoids the problem that each change is\ntwo deltas (one remove, one add), at cost of some complexity.\n\nCheers,\nRusty.",
"sig": "2b7c435765b0a6080e33dc40761ff85d5af0a3396f1ed4dcec9407c5e219dc7394ef776f341a5638dd57a03df056fbe6422a456cc8a5c6778d84295991230d70"
}