-
Notifications
You must be signed in to change notification settings - Fork 492
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
BOLT07: prune if oldest channel_update is > 2 weeks old #767
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ACK, this is clearly something we need to do! EDIT: see my next comment, unfortunately the real world doesn't seem to play so nicely with this :/
I ran the same kind of computation last week and just re-ran it, but in my case it's a 25% reduction in the number of channels. Is there another pruning heuristic you added on top to get to 40% (like rejecting some incoming channel_update
s)? Otherwise you may be missing 15% of valid channels in the network somehow...
By disappear do you mean goes offline or stays online but inactive? If he goes offline, y'alls should not be sending any If you meant stays online but inactive, unfortunately it looks like in practice it's not working correctly. But in any case, I definitely don't want to prune those channels. Maybe a safer spec addition would be to require that in a channel A <-> B, B shouldn't send a Maybe the real issue is a bug that prevents nodes from correctly sending their regular I think many of us need to be testing what channels that proposal would prune on their node, and verify that these are channels that really should be pruned. |
This is what I'd expect to happen: channel is unusable, don't update after the last disable message, and cause the channel to slowly be forgotten. Why would yalls continue to send updates? If the channel becomes active again at a later time, it should send an announcement followed by an update so everybody learns about its existence again. Eagerly pruning around nodes mistakenly sending channel updates seems weird. For example a node may never activate its side of the channel with an update because it doesn't have outgoing capacity, that doesn't mean the channel as a whole is unusable. |
imo 'oldest channel update' is unclear -- do you mean 'either node's most-recent channel_update' is older than 2 weeks? |
I dont have super strong feelings about the actual logic, but the text in BOLT 7 needs significant tweaks for this. "SHOULD base |
I wouldn't be surprised if some of the existing propagation issues are related to poorly synced clocks |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM 🗿
ACK dc43078 |
See lightning/bolts#767 Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Changelog-Changed: Protocol: channels now pruned after two weeks unless both peers refresh it (see lightning-rfc#767)
See lightning/bolts#767 Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Changelog-Changed: Protocol: channels now pruned after two weeks unless both peers refresh it (see lightning-rfc#767)
See lightning/bolts#767 Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Changelog-Changed: Protocol: channels now pruned after two weeks unless both peers refresh it (see lightning-rfc#767)
See lightning/bolts#767 Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Changelog-Changed: Protocol: channels now pruned after two weeks unless both peers refresh it (see lightning-rfc#767)
This PR modifies the recommended pruning requirements to use the oldest
channel_update
's timestamp rather than the latest. The rationale is thatusing the latest timestamp inadvertently retrains channels for which only
one side of the channel continues to send fresh
channel_update
s.Consider a new node that makes a channel to y'alls, but then disappears.
The current pruning strategy will keep the channel in its routing table
because y'alls continues to send fresh
channel_update
s, but the channelis actually unusable because the other party is never online. The new strategy
will remove these low-success nodes/channels from the routing table and
only keep channels where both endpoints have indicated recent activity.
This reduces the number of channels in the public graph by 25% at the time
of writing.
EDIT: updated stats, see relevant network stats