๐Ÿ›—Domain Ownership, Token Management and Transfers

Ownership

Ownership of ZNS domains is split between two entities: the domain's record in the ZNSRegistry contract and the domain's token in the ZNSDomainToken contract with the owner in ZNSRegistry being the true, canonical domain owner that can override certain token operations. Each of these components can be assigned to the same address, or to two (but no more than two) different addresses:

  • Owner of the Name/Record/Hash - owner value in the record stored in ZNSRegistry. This value is used for access control in important domain management functions.

  • Owner of the Token - ownerOf(tokenId) in the ZNSDomainToken contract. This is a standard ERC-721 token ownership pattern, and represents ownership of the domain token's associated NFT.

This divide in ownership is done by ZNS to support smart contract systems and other use-cases on top of ZNS domains. Owners of any level of domain can implement their own smart contracts that manage subdomain distribution or any number of other functions. Owners can split ownership by setting a domain record owner in ZNSRegistry to a specific contract, while keeping the domain's NFT in a wallet. This can also be done with other accounts to allow separate entities or users to manage important domain functions -- as in a DAO structure -- without giving up actual ownership of the domain. Operators can be used for this use-case as well.

Domain token could potentially be "assigned" to an arbitrary account that could use it in other applications, while the canonical owner keeps his rights and can retrieve it or move it at any time.

Token Assignment

On top of al the standard ERC-721 transfer functions, ZNS also implements Token Assignment functions that allow a canonical owner of the domain record to freely transfer domain token from any wallet to any wallet without the current domain owner approval. ZNSRootRegistrar is responsible for this logic and is the only place where this could be invoked by the canonical domain owner. Since the record owner is canonical and supersedes any other ownership, it has rights to give token to any wallet and take it back at any time by himself without any participation of the account which currently holds the token.

This feature is available to any canonical domain owner (of record/hash in ZNSRegistry) and can serve multiple use-cases. Here are some of the simple examples:

  1. Employee accounts in a company. This is akin to having an email account per employee. The company wants to keep the right to issue and revoke any employee accounts upon hiring or leaving the company.

  2. Personal asset/wallet management. A user may want to keep their ownership in a cold wallet, but use certain features of ZERO or 3rd party applications that only use token ownership as an access key or for any other logic. One could send this token to their hot wallet address without risk, since their canonical owner account can always retrieve the token at any time.

This Token Assignment is performed NOT by the standard transfer methods on ZNSDomainToken, but by calling ZNSRootRegistrar.assignDomainToken() function.

Domain Token Sales, Purchases and Transfers

ZNS domain tokens are standard ERC-721 tokens -- NFTs -- meaning they are salable and transferrable like any other NFT on platforms and exchanges that support the ERC-721 standard. Both purchased and received (as from a transfer) ZNS domain tokens will automatically make you the new canonical owner of the domain in ZNSRegistry as well. In the event that the domain in question was registered via ZERO's stake-to-mint paradigm, the new owner will also inherit ownership of the stake.

Domains owners that have acquired a new domain via purchase or transfer will inherit all subdomain distribution rules from its previous owner, as well as pricing and payment configs and Resolver records. New subdomain owners can and should change these rules if desired; though existing children domains are fully emancipated and will remain unaffected by altering these configs, future child subdomains will. Please note that new owners of a parent domain will only be paid for new child subdomain registrations under their domain after they have set all the necessary distribution configs and set their specific beneficiary address that will receive the payments (see ).

Last updated