Handshake & HNS Names


Handshake is a naming protocol that’s backward-compatible with the existing DNS system and has a deep integration in Skynet.
Please see the Handshake Names article in the Skynet Guide for an overview of Handshake Names, and how to get started with them.
For step-by-step instructions of deploying with Handshake, see Setting up a Handshake Name.

How Skynet Uses Handshake

Skynet uses Handshake as a human-readable naming layer. We do not resolve on their DNS A records, but rather just look for a TXT entry containing a skylink. Skynet Web Portals run full Handshake nodes and do not rely on any centralized services to obtain information about the blockchain.
Because we only rely on blockchain records, we do not support subdomains, secondary name servers, or any records you might set in the "Namebase nameserver DNS records" section on

Accepted Formats

Handshake DNS Using a Skylink
When setting a TXT record for your domain, use a skylink format starting with sia:// — this can be a Skylink directly referencing your web app, or a resolver skylink that can be updated to point at other skylinks. Updating a resolver skylink will propagate much faster than modifying your DNS records on the Handshake blockchain, a process which can take several hours. See Resolver Skylinks for more info.
Notice these formats differ from DNSLink. We are not using traditional DNS resolution, and DNSLink requires records on subdomains to function properly.
We still support setting skyns:// values for the TXT record, but recommend migrating to resolver skylinks. Since skynet-js 4.0-betawe no longer support the writing to the registry with the format used by skyns.
If you must use it, the URI format is skyns://<public-key>/<hashed-data-key> where the referenced registry entry points to the Skylink you wish to resolve using data encoding from skynet-js 3.0.

Testing an HNS Name

To determine where an HNS name is set to resolve, make a GET request to /skynet/hnsres/[hnsName]
An example can be seen here, or try using the widget below, which takes advantage of the skynet-js method client.resolveHns(hnsName)
Type Your HNS Name to Where a Web Portal Resolves It

Hosting at an HNS Name

If you want to use your TLD name for hosting a site, dLinks lets you setup a profile page that is deployed to and hosted on You can use the DNS settings it automatically sets up to point to any skylink or resolver skylink.
This Namebase documentation shows how to manually set the DNS records in the Namebase nameserver DNS records to use their Skynet resolver. Use _contenthash and a skylink for TXT records and as the value of an ALIAS record on the @ root or a CNAME record on your subdomain.
See the below example for dghelm/ and mirror.dghelm/ -- you can see these are distinct from which is set in Blockchain DNS records section.
A TLD and SLD each using Skynet-hosted Sites

Further Reading