DNS record specification

The Solana naming service is designed to be compatible with the semantics of DNS. This means that each domain name can hold a set of associated records, using deterministic key derivation to implement a key-value store.

In practice,let us consider the name foo.sol . If we want to find the domain's A record, containing an associated IPv4 address, then we can find it by querying \0A.foo.sol, with \0 the null character. The specification makes use of the null character prefix in order to differentiate between actual domains and records, which means that it is still possible to use the A.foo.sol with no collision. In addition to this, the special \0.foo.sol is reserved to hold the list of all currently initialized records for a given subdomain.

Envisioned use

In addition to typical dns records (A, AAAA, TXT, MX, etc.), the naming service records can also introduce brand new web3-specific types. The following table will be updated as new protocols are integrated.

Type

Description

IPFS

Contains an IPFS CID.

ARWV

Contains an Arweave address

SNS

Contains a Solana naming service URL for redirection

SOL

A Solana public key (supersedes the parent owner public key)

ETH

An Ethereum public key

BTC

A Bitcoin public key

Composability

Since records are functionally identical to subdomains, it is possible to transfer ownership of a particular SNS record to another user or even to a smart contract. This will be especially useful for domains managed by DAOs.