Change flood de-duplication to be by NodeID (not address)#5341
Open
drebelsky wants to merge 1 commit into
Open
Change flood de-duplication to be by NodeID (not address)#5341drebelsky wants to merge 1 commit into
drebelsky wants to merge 1 commit into
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR changes Floodgate’s per-message de-duplication key from a peer address string (Peer::toString() / PeerBareAddress) to the peer’s authenticated NodeID, so multiple distinct peers that share the same public IP (and potentially the same advertised peer port) will still each receive flooded messages.
Changes:
- Track “peers told” as
std::set<NodeID>instead ofstd::set<std::string>inFloodgate::FloodRecord. - Use
Peer::getPeerID()consistently when recording / checking which peers have already seen a flooded item.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| src/overlay/Floodgate.h | Switch FloodRecord’s “told set” element type to NodeID. |
| src/overlay/Floodgate.cpp | Record and check flood de-duplication using Peer::getPeerID() instead of Peer::toString(). |
graydon
approved these changes
Jul 8, 2026
graydon
left a comment
Contributor
There was a problem hiding this comment.
Oh, well, if that's all it takes, haha.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Changes flood de-duplication to be done by peer node ids (which are unique for each connection we have) instead of addresses (which may not be unique since addresses are constructed using the peer port from the node, not the port they connected on). This way, we can properly flood to multiple nodes behind the same public IP (e.g., k8s nodes, nodes behind NAT, etc...). I believe the only situation where this change won't flood data where the previous version would is if a node disconnects and reconnects with the same key but different IP.