ipfs / ipfs/specs

Document how to leverage /dnsaddr for peer/content/routing

Open
#543 5 comments 0 reactions 0 assignees View on GitHub
need/analysis need/community-input P3
Dominant language
HTML
Stars
1.2k
Forks
247
Avg merge
5d 21h
Merged PRs (30d)
4

Description

Related: https://github.com/ipfs/go-ipfs/issues/3926

Browsers have a few properties that can be exploited for use by IPFS:

- Users will visit many websites by themselves, typically visiting popular websites with good uptime.
- Browsers can resolve DNS by themselves (even using DNS-over-HTTPS).
- And related to this, websites have the option to create TXT records like `dnsaddr=/ip4/1.2.3.4/tcp/567/p2p/PeerID` so `/dnsaddr/domain.tld` can function.

This puts browsers in a unique position, browsers naturally discover many websites and thus many potential bootstrap nodes just from user behaviour, I propose encouraging browsers to exploit this behaviour to benefit IPFS bootstraping. Here's an example scenario to demonstrate:

1. A user goes to `https://website.tld` in their browser, this website happens to have TXT records which contain DNSAddr values.
2. The browser has a few options:
- Trust all - Add any DNSAddr values it finds to it's own bootstrap list.
- Trust whitelist - Have a whitelist of popular domains whose DNSAddr values are trusted by default (likely exposed in the GUI so users can expand the list).
- Trust user - Prompt the user, perhaps in the security padlock menu, if `https://website.tld`'s DNSAddr values should be saved.
3. If trusted, the browser will add the values found at `_dnsaddr.website.tld` to it's own bootstrap list.

This system provides resilience to bootstrap downtime and censorship by expanding the bootstrap list to include a wide selection of trusted entities, this also has the potential to reduce latency by contacting bootstraps which are geographically closer.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.