Allow resolution of .eth names via .eth.link#6448
Conversation
There was a problem hiding this comment.
This PR would add support for ENS at /ipns/example.eth, however now I am having some concerns if patching /ipns/{fqdn} is worth merging given potential problems and known limitations:
-
This works only for
.eth, which means it does not give us ENS support for all the other TLDs imported via DNSSEC -
It may cause problem in the future if
.ethbecomes a real TLD owned by Ethiopia. -
Prior discussions we had ended with consensus that resolvers other than "real" DNS should get own namespaces (cc @Stebalien mentioning ENS in ipfs/notes#302 (comment))
What if we use /ens instead of /ipns?
- Do not change
/ipns//ipns/example.eth.linkwill still work thanks to regular DNSLink
- Add
/ensnamespace as a copy of/ipnsthat does all DNSLink lookups via EthDNS - Support self-hosted resolvers out of the box
- Let user choose custom resolver in config under
Ens.Nameservers - If
Ens.Nameserversis empty or missing, default to ones provided by ENS project
- Let user choose custom resolver in config under
This is aligned with existing plan to use EthDNS for ENS lookups
and comes with pretty cool set of additional features:
- Removes the problem with Ethiopia country code
- Enables resolution of all TLDs imported to ENS via DNSSEC 🚀 ✨
- Enables true decetralization: people could use custom EthDNS resolver (running on localhost or LAN)
Thoughts?
@parkan @Stebalien @ipfs/wg-web-browsers ipfs/notes#348 ipfs/notes#286 ipfs/notes#302 (comment) ipfs/specs#198
Personally I think the idea of adding the resolution protocol to the path is overly proscriptive. It would also, in my mind, slow the transition to using ENS. If paths are out there that already use There is an argument this could cause problems if DNS and ENS diverge, but this can be resolved by explicitly defining primacy (e.g. records in ENS will always override those in DNS). |
|
@mcdee I agree that I also like the idea of overriding DNS servers via config of go-ipfs (we should support both array of hostnames at Sidenote:
@Stebalien would it be acceptable to merge this PR as a temporary measure? Rationale: |
Stebalien
left a comment
There was a problem hiding this comment.
LGTM. This seems like a minimal base that's:
- Trivial to maintain.
- Unlike to conflict with a future change.
|
Longer comment:
I agree that the DNS namespace shouldn't necessarily be tied to the DNS protocol.
We can make that decision when we get there. |
|
Wanted to surface here the comment by @Stebalien at multiformats/multicodec#136 (review) regarding how the IPNS multicodec should not be used for things other than IPNS. In general, people should also not expect that the syntax |
Note: We're going to support that indefinitely as we don't break links. However, there's no reason to introduce the same confusion when encoding them into a compact binary format. |
|
@Stebalien added suitable tests. Regarding the |
Have you talked to the IETF? That's how |
|
@aschmahmann would you like to continue our discussion here? |
There was a problem hiding this comment.
Ok, we had various discussions since then, and given the surgical scope of this PR and the fact that:
Regarding the
.ethdomain: ICANN have put all of the 3-character ccTLDs in limbo for the moment, with the idea that countries may want them one day (ignoring the fact that they all have 2-character ccTLDs and some of them are already used, but hey) so.ethis unavailable to us.
And:
.etis the country code top-level domain (ccTLD) for Ethiopia.
@Stebalien I feel its ok to merge this.
tl;dr this PR unlocks use of /ipns/ipfs.enstest.eth and custom code can be removed if .eth becomes real TLD st some point in the future.
|
@lidel thanks for writing up the decision. |
|
@Stebalien just for the record: will this be released in v0.5.0, correct? v0.4.22: $ curl http://127.0.0.1:8080/ipns/ipfs.enstest.eth/
ipfs resolve -r /ipns/ipfs.enstest.eth/: not a valid proquint string
$ ipfs name resolve /ipns/ipfs.enstest.eth
Error: not a valid proquint stringmaster is 👌 $ ipfs name resolve /ipns/ipfs.enstest.eth.link
/ipfs/QmRAQB6YaCyidP37UdDnjFY5vQuiBrcqdyoW1CuDgwxkD4
$ ipfs name resolve /ipns/ipfs.enstest.eth
/ipfs/QmRAQB6YaCyidP37UdDnjFY5vQuiBrcqdyoW1CuDgwxkD4 |
|
Yes. |
.eth TLD is not recognised by mainstream DNS, however ENS provides DNS compatibility service at .eth.link This change enables resolution of ENS names ending with .eth on systems that have regular DNS set up More context at the go-ipfs counterpart: ipfs/kubo#6448 License: MIT Signed-off-by: Marcin Rataj <lidel@lidel.org>
.eth TLD is not recognised by mainstream DNS, however ENS provides DNS compatibility service at .eth.link This change enables resolution of ENS names ending with .eth on systems that have regular DNS set up More context at the go-ipfs counterpart: ipfs/kubo#6448 License: MIT Signed-off-by: Marcin Rataj <lidel@lidel.org>
|
this doesn’t seem to be the issue
https://github.com/ipfs/go-ipfs/blob/b15edf287df6f7d8d99f7b7befb548469579a20c/namesys/namesys.go#L54 I’m having a bit of trouble figuring out what’s calling what but this would be consistent with the failure of the gateway to load .eth names via Host: header (works fine via /ipns/foo.eth) |
As per https://github.com/protocol/collab-ens/issues/5 this PR handles the situation where IPNS names ending in
.ethare unresolvable due to.ethnot being a recognised TLD.It does so by changing such names to end in
.eth.link, which will be resolvable by the EthDNS nameserver to obtain data from the relevant ENS records on-chain in Ethereum.