# Hashtag - unstoppable domains research
## CNS (crypto name service)
- unstoppable domains is built on CNS, a crypto name service
- cns domains are issued as an erc721 token
## CNS Architechture
- **Registry**
- a map from domain name to wallet owner address and a resolver address
- there is only one registry contract
- white listed minters are allowed to mint second level domains
- can mint new domains
- can't control domain ownership e.g. approve or transfer domains)
- domain owners
- transfer domain ownership
- set new resolvers
- mint new subdomains
- burn domains
- domain ownership five functionalities available for a domain owner
- minting - domain owner is assigned to newly minted domain
- transferring
- transfer nft that keeps resolution settings
- transfer nft the rests resolution settings
- setting approved addresses
- gives another address the control over a domain
- same powers as domain owner
- burning
- burns a domain
- clears all associated metadata and domain records
-
- **Resolver**
- smart contract that is used for resolving domains
- storage of domain records
- cryptocurrency addresses
- chat IDs
- IPFS hashes
- maps domain namehashes to key value pair dictionaries of records
- many versions of resolver contracts
- in practice a all wallet specific domains are handled by the same resolver contract
- [IResolver](https://github.com/unstoppabledomains/dot-crypto/blob/master/contracts/IResolver.sol) interface contract sets the basic funciontality that should be available for the Resolver contract
- [NameHashing](https://docs.unstoppabledomains.com/getting-started/domain-registry-essentials/namehashing/#Resolution-CLI) is utilized to make domains identifiable described in [EIP-137](https://https://docs.unstoppabledomains.com/getting-started/domain-registry-essentials/namehashing/#Resolution-CLI)
- **ProxyReader**
- consolidates resolving of domain and records through registry and resolver into one operation that is called by resolution libs
- get domain resolver address from registry
- get records from resolver
-
## UNS components
- contains only one single smart contract
- **Registry**
## notes
- Resolution Library or code is used for generating namehashes of domains
- Most likely need a public facing api for interacting with smart contracts
- affiliate system should be included
- token system for resolving their domainnames
- polygon, ethereum
- take a look at DAO
- contracts first
- tokennomics
- 25% of sold goes to liquidity pool
- ddns
- dns network
- wallet ?
## questions for the client
- how is the resolving of hashtag domains currently achieved?
- also what kind of resoltion do you want to achieve with the hashtag ?
- only smart contract resolution ?
- or network resolution as well ?
- do you have a list record types you want to store on the scs?
- https://github.com/zkWallet/zkWallet-docs