authoritative dns server for the tana.network zone. handles subdomain routing for deployed contracts and custom domain resolution.
when you deploy a website to tana, it gets a subdomain at {contractId}.tana.network. tana-dns answers these dns queries for these subdomains, pointing them to the edge servers that execute the smart contract code.
for users who want prettier urls, tana-dns also supports custom domains. point your domain's nameservers to tana, and we'll route traffic to your contract.
dns queries arrive over udp. tana-dns checks if the query is for something we know about:
query: anything.tana.network
-> return edge server IPs (instant, no lookup needed)
query: custom-domain.com
-> check with tana-api if this domain is registered
-> if yes, return edge server IPs
-> if no, return NXDOMAIN
the key insight: 99% of queries are for *.tana.network subdomains, which require zero database lookups. custom domain queries hit the api, but those are rare and cacheable.
users register custom domains through the dashboard:
authoritative dns server for the tana.network zone. handles subdomain routing for deployed contracts and custom domain resolution.
when you deploy a website to tana, it gets a subdomain at {contractId}.tana.network. tana-dns answers these dns queries for these subdomains, pointing them to the edge servers that execute the smart contract code.
for users who want prettier urls, tana-dns also supports custom domains. point your domain's nameservers to tana, and we'll route traffic to your contract.
dns queries arrive over udp. tana-dns checks if the query is for something we know about:
query: anything.tana.network
-> return edge server IPs (instant, no lookup needed)
query: custom-domain.com
-> check with tana-api if this domain is registered
-> if yes, return edge server IPs
-> if no, return NXDOMAIN
the key insight: 99% of queries are for *.tana.network subdomains, which require zero database lookups. custom domain queries hit the api, but those are rare and cacheable.
users register custom domains through the dashboard: