ipfs / ipfs/specs

dnslink:// URIs

Open
#549 1 comment 0 reactions 0 assignees View on GitHub
need/triage
Dominant language
HTML
Stars
1.2k
Forks
247
Avg merge
5d 21h
Merged PRs (30d)
4

Description

Since #544 we have specs for `ipfs://` and `ipns://` URIs.

`ipfs://` is quite straightforward but `ipns://` has always had a weird wrinkle in that the authority could be something you can resolve using a routing query for the IPNS namespace, or a DNS query for a TXT record as defined by https://dnslink.dev/

These are not the same thing, you cannot resolve an IPNS Record using DNSLink, nor can you resolve a TXT record via a routing query for the IPNS namespace.

We can't even parse the authority in the same way leading to janky looking constructs like:

```js
let authority

try {
authority = parseAsPublicKeyHash(url.hostname)
// hooray, it's probably an IPNS name
} catch {
// what is it? lol I don't know, maybe it's a domain name?
authority = parseAsDomainName(url.hostname)
}
```

Internally `@helia/verified-fetch` introduces a `dnslink://` URL protocol which simplifies handling and Helia has long separated resolution into the comparatively heavyweight (in terms of dependencies) [@helia/ipns](https://www.npmjs.com/package/@helia/ipns) and lightweight [@helia/dnslink](https://www.npmjs.com/package/@helia/dnslink) modules.

Perhaps DNSLink should be promoted to a first class citizen in the ecosystem and we should allow `dnslink://` URIs alongside `ipns://` and `ipfs://`?

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by reading the ipfs:// and ipns:// specifications from #544, then compare the dnslink:// handling in @helia/verified-fetch with the separate @helia/ipns and @helia/dnslink modules. Done means the issue’s open design question is resolved and the specification clearly defines whether dnslink:// is supported and how its authority is interpreted.

Written by the indexing model from the issue text.

Assessment

Domain
networking
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.