Skip to content
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

Consider avoiding DNS calls (going through Cloudlfare) to connect to seednodes #1443

Open
erciccione opened this issue May 25, 2024 · 0 comments

Comments

@erciccione
Copy link
Contributor

erciccione commented May 25, 2024

Firo-qt makes several DNS calls to seednodes every time it's launched, to bootstrap and join the Firo network.
These servers are owned by the Firo team and protected by CloudFlare:

firo/src/chainparams.cpp

Lines 345 to 353 in cf19353

vSeeds.push_back(CDNSSeedData("amsterdam.firo.org", "amsterdam.firo.org", false));
vSeeds.push_back(CDNSSeedData("australia.firo.org", "australia.firo.org", false));
vSeeds.push_back(CDNSSeedData("chicago.firo.org", "chicago.firo.org", false));
vSeeds.push_back(CDNSSeedData("london.firo.org", "london.firo.org", false));
vSeeds.push_back(CDNSSeedData("frankfurt.firo.org", "frankfurt.firo.org", false));
vSeeds.push_back(CDNSSeedData("newjersey.firo.org", "newjersey.firo.org", false));
vSeeds.push_back(CDNSSeedData("sanfrancisco.firo.org", "sanfrancisco.firo.org", false));
vSeeds.push_back(CDNSSeedData("tokyo.firo.org", "tokyo.firo.org", false));
vSeeds.push_back(CDNSSeedData("singapore.firo.org", "singapore.firo.org", false));

While seednodes are necessary, contacting them through DNS and more so, CloudFlare, has privacy implications. Cloudflare is used by the vast majority of internet services and are known for tracking users across websites/services. Every time a user fires up a firo-qt wallet, CloudFlare knows a request for a Firo seednode was made and from where. Basically, every time firo-qt is launched, CloudFlare knows the person behind that ip address is using Firo and the exact moment they launched the wallet. These are sensitive information.

A solution would be to directly call the IP addresses. This would avoid DNS calls entirely. I know Bitcoin used dns for seednodes (i don't know how they do now), but if there aren't strong reasons to do so, i'd avoid it.

I tried to run firo-qt by hardcoding the ip addresses of seednodes instead of using DNS and could connect to the network without issues or noticeable performance impact. I opened a pr with the changes in case we decide to go that way: #1442

On a related note i opened another issue, to discuss the diversification of seednodes: #1441

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant