-
Notifications
You must be signed in to change notification settings - Fork 2
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
Identify each node client with libp2p UserAgent #3
Comments
go-waku: waku-org/go-waku#348 |
@kaiserd Any thoughts on this re privacy? @alrevuelta we are explicitly excluding the version is this correct? Also note that this is only useful when connecting directly to a node. However, it could be useful to investigate odd behaviour encountered when monitoring our own nodes. |
@fryorcraken Yes, version and other sensitive information are not displayed, just if it's nim/go/rust/js. Its also a parameter than can be easily overridden with a config flag, so if anyone is really concerned, they can easily change it. This follows what nimbus is doing with their ethereum client, and it really helps the Ethereum network to know the so-called client diversity. I believe at some point this can come in very handy. Agree that we only get this information after connecting to a node, but the As discussed in waku-org/nwaku#1010 exposing the version is a no go for some of the stakeholders, so it won't be displayed, but note that in the protocol we advertise some kind of version, which ofc can't be avoided, i.e. |
At first glance, I do not see any directly exploitable issues. I'd not publish the user-agent, but I do not have strong arguments against it. Potential implications I can think of right now:
|
@kaiserd Thanks for the input. imho the benefits of having this information totally outweigh the cons, as explained above in the |
IMO, I think the tradeoff is acceptable here if (a) we exclude any version information and (b) the setting is easily overridable in config - both of which this issue and implementations adhere to. |
This further reduces the anonymity set of nodes that do not override. (Just to be aware of, not arguing strongly against the proposal.) |
Yep good point, but assuming that only a very small subset uses the flag. |
waku-rs: bernardoaraujor/waku-rs#3 |
I am not sure I see a benefit in setting a permanent, overridable flag here.
Same than first point User agent in Ethereum beacon node makes sense to help each different team measure their market share. Client diversity is important for Ethereum for sustainability and robustness. I don't think this is the case for Waku. I would prefer if we expose an API to override the default user agent value while keep the current user agent value as it is (or/end override it to Once the API is exposed, I would actually like to encourage Status client team to set the |
Isn't this a metric useful to know the state of the network? Not saying 1% is good or bad, but can help us raise the issue in the community. Difficult to configure? bad performance? missing features? It's not about taking a specific decision, is about awareness.
Of course, we won't delay the solution. But a bug is not fixed immediately. And during the time the bug is present in the networking, knowing the amount/share of clients it affects, is useful imho. For this use case having the release v.x.y.z of each client in the userAgent would be really useful, and it's something that really helps the Ethereum network when forking. But it was agreed that the version is too much and was discarded.
As we scale and onboard new operators I think it's also the case for Waku. Beyond client diversity (Ethereum aims for 20% share of each) in our case perhaps we don't care about an equal share for each client, but having this kind of overview of whats in the network is useful. Same as knowing the amount of peers, their location, etc.
In the proposed solution, the user agent agent can be configured with a cli flag, but I would like to insist that the default value is different for each client. Anyone is free to overide it with just one flag.
Perhaps this goes against what was discussed in #1242. I think it's too specific. Regardless, I think it's out of scope for this and I would not try to enforce it, up to them. |
Thanks everyone! Only |
Let's close, as the three main clients have been updated. |
sorry everyone! feel free to close it, I'll report here when I implement it. |
Background
Since we have multiple
waku
implementations that will eventually coexist in the same network, it really comes in handy to be able to identify the so-called "client diversity" (a term taken from the Ethereum community). This metric allows having an idea of the number of nodes of each type that the network contains:nwaku
,js-waku
,go-waku
andwaku-rs
.This metric can be used to estimate how diverse the network is, and can help in decision making:
nwaku
, while being the reference implementation?Solution
In order to be able to estimate the diversity, it's suggested that each implementation advertises its
client-id
using theuserAgent
field from libp2p (i.e..withAgentVersion(agentString)
fornim-libp2p
), whereclient-id
is:nwaku
js-waku
go-waku
waku-rs
Some nuances:
Tracking issues
go-waku
go-waku#348Acceptance
cc @fryorcraken @richard-ramos @jm-clius @bernardoaraujor
The text was updated successfully, but these errors were encountered: