# 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