Designing a Name Service - Part 3: Name Distribution and Pricing
This article is also available as part of our Tezos Name Service publication on Medium. That’s where you can find our future articles on the topic as they become available, but we will post them here too for easy discussion.
A fair and affordable name distribution is needed to assure as few barriers as possible for our users. We believe that fairness can be built on free-market principles - that a fair price of a name approaches or equals the price on an open market.
This article assumes that everyone has an equal claim to every name. In one (Retaining Trademarks) of our following articles, we will explore the possibility of using external systems to retain trademarks or another kind of provable ownership of our users (individuals and companies). The principles outlined here would not apply to such a system.
The key distribution requirements are as follow:
- To promote fairness, price should reflect the market price.
- The system should disincentivize name squatting and flipping.
- Price should be as low as possible, given the previous two criteria are met.
- Minimal price (flat-fee) should be stable.
- The pricing scheme should be easy to understand.
Ownership vs. Rent
To prevent name flipping and squatting, the name should not be bought forever, but rather rented for a specific amount of time. The price of each name should discourage opportunistic buyers. A minimum rental period should be defined to achieve ownership stability.
In this article, we will generally operate under the rent model, i.e. names are not owned for an unlimited time, but rather rented from the top-level registrar.
The distribution models will try to explore the solutions based on the demand for a specific name. In case of a zero or individual interest in a name, there is no competition and it is fair to let the name be rented. When there is a higher demand, there needs to be a system in place to guarantee fairness.
A FIFS system is one of the easiest solutions to implement. It offers the fastest solution from reservation to usage - the first user requesting a name will get it and can use it right away. Unfortunately in distributed systems, it is harder to verify the first request (front-running). This makes FIFS problematic when the demand for a name is high. It usually assumes a flat fee model, where fees are constant or set by some approximation of the market price, for example, based on the length of the name (shorter the name, the more valuable it is).
The usage of FIFS during a higher demand period (i.e. at the initial launch) would cause an immense surge in transactions. The interest in most wanted names would cause a snowball effect in raising the fees. People would try to win the name registration by raising the transaction fee. This system would no longer be fair and would move the price from the registration system to transaction execution.
Lotteries offer a fair distribution of limited resources. They provide a solution for the initial high demand of most wanted names. Using lotteries implies the need for participant verification. Without that, one could join multiple times and gain an unfair advantage. Within the Tezos ecosystem, we are unfortunately not able to create a verification process that would ensure the lottery fairness. There is also no distributed random number generation capability as of now.
Auctions provide a good mechanism for finding a fair market price for any name. The market price is defined by the public interest. One downside to this approach is that they take a long time. The future owner must wait considerably longer before the name is ready for use. There are many auction types, but they are all part of one of the two groups (open vs sealed bid). The introduction to these types is described below.
Auction model could be used for the start-up phase as well as for the following part. But after the initial demand declines it doesn’t offer any advantages over a flat fee. Because of the low participation in future auctions, the buyer would always need to wait for the whole duration for no reason. No interest in a name would automatically mean a minimum price (flat-fee), but the name would be blocked for the auction duration.
Auction types are:
An open auction.
Open auction is the auction where the highest bidder wins. Because the system is so simple it is easy to implement. The system just tracks the highest bid and its bidder. After the auction finishes, the highest bidder pays the bid in exchange for the bought article. The downside of the known highest bid is that anyone can outbid it at the very last moment. The solution could be to auto-extend the auction duration after a last-minute bid. Unfortunately, this can lead to blocking the buy for a very long time.
A sealed-bid auction.
In a sealed-bid auction, nobody knows what the bids of the other participants are. Therefore the auction can have predefined duration. This type of auction is harder to implement but offers more advantages over the open auction.
To find a fair market price Vickery Auction could be used. This type was also picked by the Ethereum Name Service (ENS) team during their launch of ENS. Vickery auction is a sealed-bid auction where the winner (highest bidder) pays the second-highest bid. The Second-highest bid defines a market value, where two participants are willing to pay a certain amount.
Harberger’s tax system is based on a fact, that the asset’s (name’s) price is defined by its owner. Based on that price, the owner must pay a tax. Whenever somebody is willing to pay the full price, the owner must sell. This system can very well maintain the market price over time. The drawback is, that it is very demanding from the owner’s point of view. The owner must always keep the price updated otherwise he could lose the rented name. Also, a malicious entity can overpay for a name to divert the payments from the previous address to itself. For example, a cryptocurrency exchange would always need to overpay for its name to block the others from stealing it.
This system could be used for the second phase as well as for the initial distribution. That way there would be only one system in place. During the initial launch, the system would behave similarly to an auction. The first owner would pay a fee equal to a tax of his view on market value. Anyone else could pay the full price and take over his name reservation. Because of the reasons above it is not advisable to use Harberger’s tax.
Offering Based on Demand
When a renting scheme is applied, an owner should always have the priority to extend the reservation before its expiration. After a name expires, the TNS system should asses its value (public interest). Based on that the most suited distribution model should be used.
Following the interest, we can categorize any name into one of the following groups: popular over-time (i.e. wallet), popular only during a specific period (e.g. tezos-conf-2020), unpopular.
It is very probable that during the TNS launch the interest in renting names will be the highest. To prevent the surge in transactions TNS could employ a more sophisticated distribution model (Auction, Lottery, Harberger Tax). An alternative approach to get TNS sooner to mainnet in the meantime would be through a namespace restriction. In that case, TNS could register any name using FIFS distribution within a reserved namespace (e.g. gen.tez). The registered name, of course, couldn’t be the same as the requested one but would need to have some generated part that would ensure its uniqueness (alice-123.gen.tez).
The transition between these can either be defined by a specific period or by a measurable interest in renting names (i.e. number of bids). The disadvantage of this metric is in adding unnecessary complexity to the system and would be only used at the launch.
Offering After an Expiration
To approximate if there is an interest in a given name we could use several methods:
In case of no previous interest for a given period, the system would also offer FIFS registration as the cheapest and fastest method. Otherwise, TNS would assume that the registered name is popular and would start another auction upon any user’s interest.
This is an approach adopted by ENS, which assumes that the value of the name is defined by its length. We don’t subscribe to this theory, because there are many counter-examples (random Unicode string
Trends Oracle (i.e. Google Trends)
Based on the search data frequency, TNS could have a threshold set to distinguish any name as popular or unpopular. Decentralized oracles are not yet available on Tezos, but there are ongoing efforts in that area.
The minimum bid in an auction should be the same as a FIFS flat-fee price. These are in place only to disincentivize name squatting.
Priced in XTZ
The easiest way how to define a minimum price would be to set a fixed amount in tez (XTZ). This approach has no requirement outside of the Tezos ecosystem. The disadvantage is that the price of tez is volatile and therefore the reservation price in Fiat currency could change dramatically over time. This would go against fairness and name squatting protection principles. Unfortunately, it might be the only feasible solution for the launch.
Stable pricing with regard to a fiat currency (for example USD) would be beneficial. If a stable price in fiat currency (payable in XTZ) is used to reserve a name, it can guarantee the same conditions for users over time. For this we could use a Tezos stable coin or a decentralized oracle providing pricing based on a fiat rate.
Parametrization of Top-Level Pricing
We could store parameters in our contracts to allow some degree of price adjustments even after the contract is taken live, for example:
- the fiat currency our prices are fixed to,
- the base price in that currency,
- the initial distribution period,
- the period when popular name become unpopular, or
- rent-to-registration ratio, if we want to put an additional price tag on a new registration.
Fair pricing and finding the most suitable distribution model is a challenging task. As of this writing and with the current state of Tezos ecosystem in mind, a fair and feasible solution could be to use a blind auction for the starting period and after a while follow that with a FIFS flat-fee approach. The same approach would apply for renting previously used but expired names.
Join the Conversation
We are excited to start a discussion on this topic with the community! Do you have an opinion on distribution models and pricing schemes? Did we miss something? Let’s share ideas.
And if you want to chat, come join TNS Group on Telegram!