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
\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.
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.
Contains an IPFS CID.
Contains an Arweave address
Contains a Solana naming service URL for redirection
A Solana public key (supersedes the parent owner public key)
An Ethereum public key
A Bitcoin public key
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.