feat(p2p): expose peer protocol version for backward compatibilities - #5539
Merged
Conversation
gacevicljubisa
approved these changes
Jul 20, 2026
martinconic
approved these changes
Jul 20, 2026
akrem-chabchoub
approved these changes
Jul 21, 2026
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.
Checklist
Description
This PR adds a new method to p2p.Stream: Version() that exposes the protocol version of the peer as already parsed semver.Version for easier validations. It can be used in p2p Handlers for backward compatibility checks. Since libp2p is configured to follow semver in a semantic way, not only formal, it is possilbe to have the backward compatibility with only increasing Minor or Patch numbers in the version string.
It looked to me that exposing the more granular versioning on protocols can provide greater isolation on compatibility checks compared to the bee version check. And libp2p is validating the protocol version making it more reliable compared to the version of the bee in the user-agent. Since every protocol has its version, and the validation is scoped to the p2p layer, protocol versions are covering the same scope as p2p connection user-agent string.
Open API Spec Version Changes (if applicable)
Motivation and Context (Optional)
Related Issue (Optional)
Screenshots (if appropriate):
AI Disclosure