A Gamertag is an NFT representing a unique tag or name a player can own. A tag consists of a number of characters in lowercase between a minimum length of 3 and a maximum length of 12. Allowed chars are the letters a-z and the numbers 0-9, additionally, it is possible to use the symbols - (minus) or _ (underscore) a single time in the name as long as it is not the first or last character. It can be registered for a duration of years between a minimum and a maximum for a small fee as well as extended at any time during the duration. The fee is higher for very short and therefore rare Tags. Whenever a Gamertag expires, it is free for registration again. In order to avoid automatic snipers, it enters first into a renewal period which lasts for a defined number of hours. For every hour the registration price is increased for a certain cost, depending on the base cost per year. At first, the registration price will be at its highest, reducing in a linear fashion every hour until, at the end of this period, the price is back to its normal registration price. The tag can be registered at any point during this period, whenever the price is low enough for somebody to pay the markup at the time.
Additionally, there exists a list with reserved names in order to
<aside> 💡 Using this pricing approach there should exist clear regulations on what happens with earnings, how they are used, how they benefit players and the ecosystem in the long run, and how they are managed (maybe through a DAO).
</aside>
In order to keep Metadata on Layer 1 minimal and costs low, we only store the Gamertag ID and a link to the Gamertag Image representation as Blueprint data. The name itself does not need to be stored because we convert the unique Gamertag name to a unique Token ID in a revertable way using a special conversion table to convert from String to uint256 and back.
All mutable data is stored as off-chain Metadata on Immutable X and will be updated in patches in case any of it changes. Changes will be collected and an asset metadata refresh request will be sent every 15 minutes in case there are new changes or whenever the amount of changes reaches 1000. This way the max patch size of 1000, as well as the maximum request frequency of 5 per hour, will be respected.
Whenever a user requests to mint a new Gamertag we create a new mint request off-chain and store the signed request together with the required Metadata. The user can add multiple requests this way. The user is then forwarded in order to pay the necessary fees for the mint and the requested period. Only when the payment is confirmed we will add the mint requests to the current mint patch where all open requests are collected and in certain intervals together sent to the Immutable X API.
The core definition and boundaries as well as data for every NFT can be accessed directly through the DeQuest Gamertag API.
| Method | Description | Value Example |
|---|---|---|
| /minTagLength | Get the minimal allowed length of a Gamertag. | 3 |
| /maxTagLength | Get the maximal allowed length of a Gamertag. | 12 |
| /tagRegex | Get the regular expression defining the allowed content of a Gamertag. | [a-z0-9]+[-_]?[a-z0-9]+ |
| /totalTagRegex | Get the complete Regular Expression including length. | ^(?=.{3,12}$)[a-z0-9]+[-_]?[a-z0-9]+$ |
| /regPrice/{length} | Get the price for Gamertags of different lengths for a one-year duration. | 3 chars =512$ |
| 4 chars =128$ | ||
| 5+ chars =4$ | ||
| /minRegLength | Get the minimal registration duration for a Gamertag in years. | 1 |
| /maxRegLength | Get the maximal registration duration for a Gamertag in years. | 8 |
| /renewalPeriod | Get the period in hours over which the registration price is increased and slowly declines in a linear fashion after a Gamertag registration expired. | 336 |
| /renewalBonus/{length} | Get the cost for tags of different lengths for which the price of a Gamertag declines every hour over the duration of the renewal period until it reaches its normal price. | 3 chars =24$ |
| 4 chars =8$ | ||
| 5+ chars =2$ |