The adadomains project is a blockchain based naming system developed on Cardano. Our goal is to provide a decentralized alternative to the traditional Domain Name System (DNS). Within our ecosystem, human-readable and easy to remember domains can resolve to different resources depending on the desired use-case:
- Cardano (or other cryptocurrency) wallet addresses
- regular or IPFS hosted websites
- socials or contact information
- custom attributes for third-party integrations
Each domain, for example
my-domain.ada, is represented as an NFT (non-fungible token) with the same name but without the
.ada suffix, i.e. just
my-domain in this example. This token resides at a permanent script address (a blockchain address that is locked by some smart contract). The UTXO (this stands for Unspent Transaction Output which is the basic element of the Cardano blockchain representing some value - you can read more about the Cardano model here) it belongs to contains an inline datum which stores all the data (attributes) associated with this domain. These attributes can be queried when we want to resolve the domain to a specific resource - this works either off-chain (from a browser, for example) or on-chain (from a smart contract which uses the domain UTXO as a reference input).
Domain ownership is also represented with an NFT of the same name,
my-domain, but with a different policy. The domain ownership token is located in the owner's wallet and can be freely traded as any other NFT. It serves as a proof of ownership - whoever owns it can make modifications to the domain, for example change domain attributes or mint subdomains.
Subdomains, for example
my-subdomain.my-domain.ada, work in the same way as domains. Their corresponding NFTs (of a different policy than domains) mark the designated UTXOs which store data in their datums.
Anyone with access to the Cardano blockchain can resolve domains (or subdomains) to their attributes.
The procedure is very simple:
- find the UTXO which contains the domain (or subdomain) NFT (the official policy IDs can be found here)
- read the desired attribute from the inline datum
Adadomains support usage in third-party applications by defining their own custom attributes.