โFAQ
Why is ownership bipartite?
The bipartition of ZNS domains into an ERC-721 NFT and a record of the domain in ZNSRegistry
is a fundamental feature of the protocol. By allowing domain owners to delegate ownership of a domain's record to another account, ZNS enables those same domain owners to interact with third-parties -- like dApps or other smart contracts -- without requiring the domain's token to be in the same wallet as the account that is interacting. This allows users to perform actions like lending their domain to contracts for staking, allowing other users to operate domain management functions (as in a DAO), and so on, without losing the benefits given to them by the protocol or forfeiting 'true' ownership of the NFT.
What is an operator?
Operators are specific addresses that have been granted permission to modify a domain on its owner's behalf. This is done by naming the operator address in the domain's record in the ZNSRegistry
contract. Domain owners can grant an operator access to their domain's record at any point in time. This is typically done to allow third-party applications or other users the ability to manage a domain for an owner without requiring that owner forfeit their domain's NFT.
It's important to note that operators are assigned at an owner level, not a domain level. This means that if the domain is transferred to a new owner, both the old owner and their operators will lose access to it.
Many functions within ZNS use the onlyOwnerOrOperator
guard to restrict who is able to call that function. As mentioned above, ZNS domain ownership is divided into two part. If a domain's ERC-721 token is transferred to a new owner, the old owner will still own the domain record within the registry until the token's new owner calls to reclaim
that domain. Because the operator functionality relies on that domain record, an allowed operator of the old domain owner is still able to make modifications to the domain after selling it. Therefore, it is imperative that a domain token's new owner call to reclaim
that domain immediately.
The reclaim
call can be performed on a ZNS domain in ZERO's Explorer application, or directly on the contract in Etherscan.
What does it mean to reclaim a domain?
Domain reclamation entails taking back ownership of the domain's record as listed in ZNSRegistry
. To reclaim a domain requires ownership the domain's ERC-721 token from an account that is also not the owner of the domain's record (otherwise there would be no reason to reclaim the domain).
Any time a domains NFT is transferred from one account to another -- including sales on secondary marketplaces -- it is imperative that thew new owner call reclaim
on that domain immediately. If this is done done, the domain token's prior owner will still be listed as the domain's record owner in ZNSRegistry
, enabling them to continue serving as the domain's operator, who can make modifications to the domain.
What does it mean to revoke a domain?
Domain revocation entails forfeiting ownership of that domain and burning the associated NFT, rendering the domain available again for anyone to register. Domains and subdomains that were registered via ZERO's stake-to-mint paradigm will be refunded their stake amount (but not associated fees and gas costs) in full. Subdomains that were purchased via direct, one-time payments will not have that payment refunded if revoked.
Revocation of a parent domain with existing child subdomains will not impact those subdomains; once minted, subdomains are entirely emancipated from their parent domain. It will not be possible to mint new child subdomains under a revoked domain, however, until the parent domain is re-minted.
What is a domain hash?
A domain hash is a cryptographic hash function of that domain's label, not name. For example, the wilder.world
domain has a name of wilder.world
, but the label is specifically just world
.
For top level domains, or Worlds, there is no parent domain and so the domain hash is calculated as:
For subdomains, the parent domain hash exists and so the domain hash is instead calculated as:
What is a distribution configuration?
Distribution configurations specify three things:
The type of payment this domain accepts (STAKE vs. DIRECT)
The accessibility of this domain to have subdomains minted (LOCKED, OPEN, or MINTLIST)T
The
ZNSPricer
contract to use for this domain.
This configuration is given to the domain upon registration through either registerRootDomain
or registerSubdomain
Read more in Subdomain Distributionand Base Distribution Configuration.
What is a payment configuration?
Payment configurations specify what ERC-20 token a domain accepts as payment for subdomains. It also specifies the recipient direct payments or stakes fees for subdomain registrations under that domain.
This configuration is given to the domain on registration through via registerRootDomain
, registerSubdomain
, or through using the setPaymentConfig
call.
Read more in Base Distribution Configurationand Payments.
What is a price configuration?
Price configurations specify the necessary variables required by the ZNSPricer
contract used by ZNS's registrar. Custom contracts can be used in this configuration; if this contract is one of the two pricing contracts ZERO has created, then the configuration specifies either a single price for each domain regardless of that domain label's length for FixedPricer
. If the CurvedPricer
contract is used, the base length, maximum length, minimum price, and maximum price of a domain are part of the config. More information is available on these values and what they mean in Pricing.
Much of this configuration handled for the user when minting through ZERO's Explorer application.
Last updated