What is the difference between ERC-721, 1155, and 2309?

ERC stands for Ethereum Request for Comment. These are proposals submitted by members of the Ethereum community. Anyone can submit a proposal through the EIP (Ethereum Improvement Proposal) GitHub repo. There is a standard format and process for submitting EIPs but anyone can do it! ERC-721, 1155, and 2309 were each proposals submitted by community members who had ideas regarding how NFTs could be standardized. These standards define a common interface that programmers can implement to ensure that their NFTs are interoperable across platforms. Standardization means that each NFT implementation has common methods which NFT platforms like Cargo can use to determine who owns what and what information is tied to each NFT, like name, image, and description. Each standard has its own benefits and is valuable in its own right. This guide will go over those benefits and outline when you might choose one over the other.

ERC-721

The ERC-721 NFT standard was the first standardized interface for creating NFTs on the Ethereum blockchain and is still the most widely used and adopted standard. You can find the full definition here. Each 721 NFT is unique and is associated with a unique numeric identifier. Even though multiple 721 NFTs can have the same metadata associated with them (think name, or image) they are still unique in the sense that ownership of each is individually tracked. This ownership is tracked in the NFT smart contract. The smart contract must implement all the methods specified in the ERC-721 standard, but outside of those specified methods the smart contract can include any functionality that is required to support the project, or product.

The ERC-721 specification is great for creating and tracking unique NFTs, however it was realized early on that this standard would lead to issues in regards to scaling during the NFT creation process. Each NFT in the ERC-721 specification needs to be created individually. You could potentially implement a loop in your code to create a few NFTs at one time, but this is inefficient and does not help with Ethereum transaction fees when you need to make many NFTs. When gas prices are high on Ethereum it can cost $100+ to create one NFT! Imagine if you needed to create 1 million NFTs. The original ERC-721 specification makes this financially impractical on the Ethereum blockchain as it is now. These kind of issues are what inspired the ERC-1155 and ERC-2309 standards.

So when does it make sense to use this standard? Given the cost associated to creating many ERC-721 NFTs it doesn't make sense to use this standard when needing to mint unique NFTs en masse. However, if the minting process is one-off, then this NFT standard is perfectly suitable for that use case.

The limitations of the minting process are the same for the transfer process. If one collector transfers an ERC-721 NFT to another collector it has to be done in O(n) time n being the number of NFTs that need to be transferred.

ERC-1155

The ERC-1155 NFT standard was created by Enjin. The idea with ERC-1155 is that you can use a single smart contract to create many different types of NFTs. For example you could create NFTs representing game items like red swords, golden armor, and wooden shields all in a single smart contract. The difference between 1155 and 721 is that the ownership of the red swords, golden armor, and wooden shields are not individually tracked. Rather, there is a base ID representing the asset. For example the red swords could be represented by ID 1 and the armor represented by ID 2. Then it could be stated that there are 100 red swords in total. Each red sword is treated exactly the same as the other. So if a game player owns 5 red swords then this could be known by querying the players balance of ID #1 (the ID representing the red sword). We would learn that the player has a balance of 5. If the player transferred one sword to a friend then the player would now have a balance of 4 red swords and the friend would have a balance of 1 red sword. Again, we have no way of differentiating one red sword from another - like with could with ERC-721. All we know is the balance of total red swords someone may have.

This works great for things like games where there could be millions of the same item. This standard also works well when you need to transfer many of the same item. You can transfer all 100 of your red swords to someone else in a cost effective manner, because all you are doing is updating a balance and you don't have to update the ownership of individually tracked NFTs like you would have to using the ERC-721 standard.

One caveat of the ERC-1155 standard is that it is quite difficult to continuously monitor and track ownership of 1155 NFTs to display to users. To save on data being stored on-chain the 1155 standard specifies how you can use Ethereum logs to determine when a new NFT was created and information regarding that NFT, including things like the name and the image. This may be simpler to implement for a single ERC-1155 smart contract, but if a platform were to implement a solution to continuously monitor all 1155 ownership from all 1155 smart contracts it would be a time consuming and expensive process.

ERC-2309

The ERC-2309 standard was created by Cargo and is an extension to the original ERC-721 standard. This standard was created to solve the scalability issue when creating new NFTs using the ERC-721 standard. ERC-2309 provides a mechanism which allows you to create an unlimited amount of unique NFTs in one transaction. Using ERC-2309 you could create 100 red swords, but each of those red swords would now be individually tracked. Think of this as an ERC-721 power-up which provides a standard way for programmers to create many unique NFTs at one time and for platforms to respond and display correct data.

The ERC-2309 standard solves the NFT creation scalability issued of ERC-721. You no longer need to create NFTs in O(n) time, but you can now create NFTs in O(1), or constant time. Meaning you can create 1 or 1 million NFTs and the cost would be the same. ERC-2309 does not dictate how the minting process should or could be implemented, but rather provides a standardized event which can be used to learn about updated ownership information.

ERC-2309 does not solve the transfer scalability issues inherit to the original ERC-721 standard. While it is possible to transfer an unlimited amount of NFTs in constant time using this standard there is a caveat which is that the token IDs must be in a consecutive order.

Cargo's minting technology is built using the ERC-2309 standard.

​