Existing NFT Standards Lack Extensibility

Zach Babb
5 min readAug 15, 2019

--

Non-Fungible tokens, or NFTs, burst onto the scene towards the end of 2017 with the ERC-721 standard and CryptoKitties. As a first entrant, CryptoKitties established there was some market for these NFTs, but since the initial rush the ERC-721 standard hasn’t quite fulfilled its promise as a source of increasing value for its holders. While some additional entrants have utilized the standard to introduce new NFTs, there seems to be something missing from current implementations of NFTs. I’d like to present this missing something as a problem with NFTs, something holding them back from more widespread adoption and use.

In ERC-721, each token is a 256-bit integer. This integer acts as an address which developers can then use to map behavior for their token. The problem is that simply having an address doesn’t capture the essence of collectible items. This is the big thing holding back NFTs from more widespread adoption, there’s no way of encoding collectability into the standard. Every implementation requires a unique mapping and that’s too onerous for most developers.

First, what is a non-fungible token? Fungibility is the property of a good whereby a unit of that good can be exchanged for another of the same unit of that good. For example gold is fungible because one ounce of gold is the same as any other ounce of gold. Money needs to be fungible by definition, one dollar is the same as every other dollar. A good becomes non-fungible when its units cannot be interchanged. For example houses are non-fungible because one house is different from all other houses, even if they have the same floor plan, their locations will differ making them unique.

When you read about fungibility, it’s usually presented as a binary — either something is fungible or it isn’t. But the real world is of course never so simple. There are a whole range of goods that are fungible in one respect and non-fungible in another. Take beer as an example. Beer manufacturers go to great lengths to ensure that each of their beers taste the same, that they would be fungible with each other. At the same time Beer manufacturers go to great lengths to ensure that their beer does not taste like any competitors’ making their beer non-fungible with other brands. Virtually everything we consume that’s branded falls into this category of fungible within/non-fungible without. For lack of a better term, let’s call these types of goods half-fungible.

Let’s take a look at collectible cards, and through that basically any kind of collectible. I hope you’ll agree that collectibles are a perfect example of a half-fungible good. Whether it’s Magic cards or beanie babies, one collectible is fungible with units of the same collectable (my Micky Mantle rookie card is the same as your Micky Mantle rookie card). At the same time one collectible is non-fungible with collectibles of a different type. This property is essential to collectibles as it’s how you establish rarity and scarcity among types. In the case of collectibles a unique address might be a detriment because it destroys the fungible aspect of the collectible.

Using plain old 256-bit integers seems like a missed opportunity in the non-fungible token space, and I think it’s the main reason we haven’t seen more widespread usage of the ERC-721 standard. It makes it so that every card needs a separate integer, that’s not every type of card, but every single card. Sure one developer could make a mapping for each card like this, but why go through that hassle? This protocol lacks extensibility. We are able to change the tokenization at the protocol level, so why don’t we?

An Extensible Protocol

At Planet Nine we think we have a better way to represent non-fungible tokens. We use 128-bit integers to pack information into our tokens. Unfortunately Ethereum didn’t quite have what we needed to build the platform we wanted so we’ve been implementing our non-fungible tokens off-chain in the Planet Nine ecosystem. Here’s how they work: the tokens are called Nineum. Each piece of Nineum is represented by a 128-bit integer. That integer is broken down as follows:

  • 8-bits for the universe of the token
  • 32-bits for the address of the token (think web addresses, but for tokens)
  • 48-bits for the flavor of the token (see below)
  • 8-bits for the year of the token
  • 32-bits for the ordinal of the token (1st, 2nd, 3rd, and so on)

Flavor is further broken down into:

  • 8-bits for the charge (positive, negative)
  • 8-bits for the direction (North, South, East, West, Up, Down)
  • 8-bits for the rarity (Common, Nine, Uncommon, Rare, Epic, Legendary, Mythical)
  • 8-bits for the size (Miniscule, Tiny, Small, Medium, Standard, Big, Large, Huge)
  • 8-bits for the texture (Soft, Bumpy, Satin, Rough, Gritty, Metallic, Plush, Woolen)
  • 8-bits for the shape (Sphere, Cylinder, Tetrahedron, Cube, Octahedron, Dodecahedron, Cone, Torus)
Nineum is broken down into extensible parts.

These “flavors” are just placeholder descriptors for Nineum. Developers can use those properties to mean whatever they want. For example a developer making an RPG could use the shape flavor to mean the Nineum represents body armor, wrist armor, head armor, foot armor, swords, spears, axes, or bows. The beauty of Nineum is that it encodes these flavors into its integer address and that allows developers to do meaningful things with Nineum across different contexts.

By encoding all of this information into the address of the non-fungible tokens, half-fungibility is easily achieved. Just check the relevant parts of the flavor of a piece of Nineum and you can see whether it’s a certain type or not. Addresses themselves are still unique, however, so if you need unique addresses Nineum can still fit the bill.

We think Nineum will set the new standard for how non-fungible tokens should work in the world. To read more about how they work in Planet Nine’s ecosystem check out the Planet Nine white paper. You can also download the app and start earning Nineum right now. If you’re a developer with an idea to use Nineum we’d love to hear from you, tweet at us or email us at greetings@planetnine.app.

--

--

Zach Babb

Zach is the CEO of Planet Nine (www.planetnine.app). Planet Nine is building a new digital economy for the future of microtransactions.