-
Notifications
You must be signed in to change notification settings - Fork 26
Open
Labels
P3Low: Not priority right nowLow: Not priority right nowneed/analysisNeeds further analysis before proceedingNeeds further analysis before proceedingneed/community-inputNeeds input from the wider communityNeeds input from the wider communityspecs
Description
Related: ipfs/kubo#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/PeerIDso/dnsaddr/domain.tldcan 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:
- A user goes to
https://website.tldin their browser, this website happens to have TXT records which contain DNSAddr values. - 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.
- If trusted, the browser will add the values found at
_dnsaddr.website.tldto 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.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
P3Low: Not priority right nowLow: Not priority right nowneed/analysisNeeds further analysis before proceedingNeeds further analysis before proceedingneed/community-inputNeeds input from the wider communityNeeds input from the wider communityspecs