It's ALL Tokens - Part 5 - ERC-1155

Welcome to Issue #9!

And welcome to the newcomer who is building the dip with us!

Remember… Sharing Is Caring.

Don’t keep this newsletter a secret.

The Semi-Fungible Token Standard

ERC-1155 expands the utility of NFTs by combining the functionality of ERC-20s and ERC-721s into a single token standard. Let’s review…

ERC-20 - A single contract is used to create multiples of a token that all share the same TokenID (the contract address). Each coin is exactly the same and is fully fungible.

You can get a little more detail on ERC-20s here.

ERC-721 - A single contract defines a group of tokens. The contract address defines the group, but each token in the group gets a unique TokenID. Each Token is unique and non-fungible and, therefore, a true NFT.

I covered ERC-721’s in more depth here and here.

Best of Both Standards

With ERC-1155, one contract defines multiple groups of tokens. Each group is described by a unique TokenID.

If the group has only one token in it, it’s treated as an ERC-721. It is unique and non-fungible.

If the group contains multiple tokens, then the tokens in that group are treated like ERC-20s. Each token gets the same TokenID and any token from that group is completely interchangeable with the other tokens in the same group.

Built For Fun

I should probably provide a point by point rehash of all the capabilities of those other tokens.


This standard has gained the most traction with on-chain games. So let’s build a token model for a car racing game.

The Tokens

The assets used in the game are all NFTs. Let’s take look at what tokens we might use to describe the game.

  • Drivers

  • $FUEL

  • Cars

  • Cosmetic Upgrades

  • Performance Upgrades

Now let’s take a look at how we might use a single ERC-1155 smart contract to create all these tokens.


To play this game, you need to own a Driver NFT. Since each player of the game will have a different style of play, we want to make sure each driver is unique.

Let’s assume we’ve decided to limit play to 10,000 drivers.

To create our Driver NFTs we’ll need to put a single Driver in each one of the first 10,000 groups/TokenIDs. Since each TokenID is connected to a single Driver, each Driver is treated as an NFT.

At this point we’ve used TokenIDs 0-9999. Now let’s create a utility token that can be used as currency inside the game.


It takes energy to race a car. So were going to run this whole ecosystem on $FUEL.

$FUEL should behave as a fungible token, so we’ll need to assign the entire supply (let’s say 100 million) to the next available TokenID (number 10,000).


You gotta have a cars if you want to race. For the purposes of this game, we’re going to allow our drivers to choose between 6 different cars.

I know. This isn’t very realistic. When you build your racing game, you can add as many as you like.

Some cars are more common. Some, not so much. We represent this rarity by minting each type of car in differing quantities.

So we’ll create our Car tokens like this:

  • TokenID 10,001 → 10000 Ford Mustangs

  • TokenID 10,002 → 1000 Toyota Supras

  • TokenID 10,003 → 500 Chevy Corvettes

  • TokenID 10,004 → 250 - Porsche 911’s

  • TokenID 10,005 → 10 - Acura NSXs

  • TokenID 10,006 → 1 - Lamborghini Huracán (before they blew it up)

In this example each model of car is distinct from the others. So inside the game, each model can have its own set of specifications. The Corvettes are going to perform differently than the Acuras.

But, inside each model type, the individual car tokens are completely interchangeable. The game treats every Supra the same way. It can only tell it’s your Supra, because it’s in your wallet.

So each of the car models gets treated as a fungible token except the Lambo. It’s the only token assigned to that ID, so it’s a true NFT.

Cosmetic Upgrades

Since each car inside a model type is exactly the same, they create a blank canvas for a driver to express their style. No one wants to drive the same boring car as everyone else. So, much like Fortnite, our game will offer skins for the cars.

These could be as simple a basic paint job, or as ridiculous as turning your car into a galloping unicorn.

If we’re talking about paint, each color or design would get it’s own TokenID. The quantity of each would determine the rarity of the skin.

Performance Upgrades

Since all of the cars inside a model group are fungible, all the Mustang NFTs will perform the same way. But, if you add an Engine Upgrade Token to the wallet holding your Mustang, you might be able to outrun a Porsche.

There are thousands of real and imaginary ways to change the performance of a car. Each one will need it’s own TokenID, but inside that TokenID, you could create as many copies of the upgrade as you like.

The combination of upgrades is limitless. So each driver has the ability to build a truly unique car.

Bottom Line

The ability to mint multiple token types in a single transaction is the feature that sets ERC-1155s apart. But there are a few other features to consider.

  • 1155s are cheaper to move because the standard allows for batch transfers of tokens.

  • Just like ERC-721 NFTs, the creators of 1155s can code royalties into their tokens.

  • Shared TokenIDs can make token gating more difficult. So you’ll need to make each of your token groups distinct enough to sort them the way you like. As an alternative, you could use the combination of different token types to create a more exclusive gating structure.

ERC-1155 has struggled to gain mainstream adoption. But if your project requires a token model that is a little more complicated than a Social Token or a PFP Collection, it’s worth your time to take a look.

You might be interested…

… in this week’s Alpha

Getting Meta

Subscriber Count: 65

Total Alpha Claims: 17

I had a lot of fun writing this week’s issue. Please let me know if you enjoyed it.

Next week I’ll be exploring all the Web3 ways we could turn this game into an actual business.

Thank you for reading!

Was this newsletter shared with you?

If so, you can Subscribe here.