Graeme

Posted on Aug 31, 2021Read on Mirror.xyz

Loot

Loot is a project that allows anyone to mint an NFT representing a set of 8 adventurer-themed gear items. These items have scarcity characteristics that are randomly distributed.

It is called a "fair mint" project, because the contract does not sell the NFTs - they are free to mint. Only 8,000 tokens can be minted in total, and the creator has reserved 222 of them for themselves as a reward (these tokens have the same scarcity distribution as everyone else's). All tokens have already been claimed.

At the time of writing, over 9k ETH (~$30 million) of Loot volume has traded on OpenSea's secondary market, with a floor price of 5.5 ETH each - making it one of the highest market cap collectibles of all time.

Included with each token are 8 types of gear items:

  • Weapons
  • Chest Armor
  • Head Armor
  • Waist Armor
  • Foot Armor
  • Hand Armor
  • Necklaces
  • Rings

To produce randomized scarcity, each item may be augmented by a prefix or suffix based on a hash of your token ID. There is a 42% chance of a suffix, and an 8.7% chance of a prefix.

One prefix might be "Spirit Song", and a suffix might be "of Protection" - combining with a "Titanium Ring" item to form: “‘Spirit Song’ Titanium Ring of Protection” (which would be very rare). Here's what a full set might look like:

An example of Loot items

The names of the items are simply output as SVG in an image - as seen in the example above.

Claiming Tokens

There is no user interface for Loot, and there is no price to mint. People claim Loot by calling a function directly on the contract - usually through Etherscan.

Because the claim functionality does not have sybil resistance, it is easy to mint many tokens via a script. Anish Agnihotri wrote a script to do this (and likely has used it to claim many loot tokens), which is something to be aware of when considering the ownership distribution of this project.

Random Trait Attribution

Minting the NFT assigns the owner a token ID, and trait attribution happens deterministically whenever NFT's tokenURI method is called.

Trait randomization is random but deterministic. It uses a hashing function applied to the concatenation of the token's ID and the type of the item (e.g. "CHEST"), and converts this to an integer (uint256 in Solidity). Each type of item has an array of options, and this integer is used to pluck a random item from those arrays.

Once an item is found, a new random integer is produced, bounded between 0 and 21, by taking the modulus of the random number and 21. If the new number is greater than 14 (about 42% chance), then the item gets a special suffix. If it is greater or equal to 19 (about a 8.7% chance), then it gets a prefix. This creates special scarcity properties for each of the items!

Closing Thoughts

Some of the top creators in our industry have started creating interoperable games using Loot as a foundation. This is likely the start of a phenomenon in the NFT space.

It would be preferable to prevent sybil attacks when claiming - by only allowing one person to claim one token - since the distribution of ownership is certain to be extremely weighted towards a few technical or ETH-wealthy individuals.

This project has created life-changing wealth for many people who simply took the time to submit a simple Ethereum transaction. This points to the massive opportunity for everyone in space right now.