Discoveries
Things we learned while building NoDNS — the unexpected properties, emergent behaviors, and architectural insights.
The Zone-Agnostic Wire Format
Kind 11111 record tags contain no zone information. The wire format is purely about the record itself — type, name, data, and metadata. For $npub registrations, the same event applies to .nostr, .nodns.shop, or any zone running a NoDNS bot — zone assignment is infrastructure, not protocol.
["record", "A", "", "1.2.3.4", "", "", "", "", "", "", "3600"]
For $string registrations, zone awareness lives in the claim and delegation tags — e.g. ["claim", "alice", "nodns.shop", ...] explicitly references the zone to establish ownership. The record wire format itself stays zone-agnostic regardless of name class.
The .nostr TLD
The .nostr TLD supports only $npub.nostr — cryptographic ownership tied to the Nostr keypair. There is no $string.nostr because there is no consensus mechanism for string ownership in a decentralized namespace. Non-npub queries return NXDOMAIN.
Resolves via DNS-over-HTTPS at dns.nodns.shop/dns-queryor through a local resolver. We are the only publicly available NoDNS server — Arjen's nodns-nameserver is a local resolver.
DNS-over-HTTPS Resolver
Our public DoH endpoint at https://dns.nodns.shop/dns-query routes .nostr and dns4sats.xyz queries to our local Knot DNS. Everything else goes to Google and Cloudflare DoH upstreams.
Users can configure their system DNS to use this endpoint for one-click .nostr resolution. No browser extension, no special software — just point your DNS at us.
https://dns.nodns.shop/dns-query
Demo 1: TXT Record — “Liar!” vs “No you!”
The Bitcoin “Liar / No you” meme, rendered in DNS. A TXT record on truth.npub10mluej6gljwsjx5v4dnr54n9y0yzf8thwr2l60p3e94q72udh8ksz6uw6q.dns4sats.xyz returns different values depending on which resolver you ask.
Standard DNS (Google/Cloudflare) returns "Liar!"because the domain's authoritative path goes through Cloudflare, where we set that TXT record. NoDNS resolves from our VPS Knot DNS, which has the counter-record "No you!" — published by the Nostr keyholder.
Standard DNS (Cloudflare path)
dig truth.npub10ml...uw6q.dns4sats.xyz TXT @8.8.8.8 ;; ANSWER SECTION: truth.npub10ml...dns4sats.xyz. 300 IN TXT "Liar!"
NoDNS (Knot DNS on VPS)
dig truth.npub10ml...uw6q.dns4sats.xyz TXT @dns.nodns.shop ;; ANSWER SECTION: truth.npub10ml...dns4sats.xyz. 300 IN TXT "No you!"
Try it yourself — replace the truncated npub with the full one and query both resolvers.
Demo 2: Web — “Respect my authority” vs “Liar” “No you”
The same domain resolves to entirely different web pages depending on which DNS resolver you use. Standard DNS returns Cloudflare IPs (the registrar's page saying "Respect my authority"). NoDNS returns our VPS IP (the keyholder's page saying "Liar" — published by the Nostr keyholder).
Demo domain: npub10mluej6gljwsjx5v4dnr54n9y0yzf8thwr2l60p3e94q72udh8ksz6uw6q.dns4sats.xyz
Standard DNS (8.8.8.8)
Cloudflare Pages — “Respect my authority”
188.114.96.3NoDNS (dns.nodns.shop)
VPS — “Liar”
46.224.104.12Standard DNS (Cloudflare path)
dig npub10ml...uw6q.dns4sats.xyz A @8.8.8.8 ;; ANSWER SECTION: npub10ml...dns4sats.xyz. 300 IN A 188.114.96.3
NoDNS (Knot DNS on VPS)
dig npub10ml...uw6sats.xyz A @dns.nodns.shop ;; ANSWER SECTION: npub10ml...dns4sats.xyz. 300 IN A 46.224.104.12
Cloudflare is the registrar for dns4sats.xyz — their DNS returns their own IP. NoDNS resolves from Nostr-published records pointing to the VPS. Two completely different realities from one domain name.
Interactive Dual-Resolution Lookup
Run the lookups yourself right here. Switch between TXT and A record queries to see both demos in action.