EIPs and ERCs for NFTs: The Ultimate (Not-Too-Technical) Guide
The Human-Readable Version of Ethereum's Confusing Standards
EIPs, ERCs, NFTs: What Are They and Why Does It Matter?
“Blockchain,” “Smart Contracts,” “Non-Fungible Tokens”
There is a lot of jargon in crypto, and things can start to feel overwhelming in a hurry. We will be building some Ethereum basics, so if setting up a wallet is still on your todo list and/or you feel you could use a refresher, do check out the Beginner’s Guide series to quickly get caught up on the essentials. 👇
If you’ve ever bought or sold a cryptocurrency or an NFT, the tokens you transacted work as expected because they were built according to specific standards. In fact, you might have seen a couple acronyms pop up:
“EIP,” which stands for “Ethereum Improvement Proposal”’
“ERC,” which stands for “Ethereum Request for Comments”
Both play key roles in the Ethereum blockchain ecosystem, and in this article, we will cover everything you need to know about them, and NFTs as we know them today wouldn’t exist without them.
💻 > In my best efforts to keep this article useful to all readers, I'll keep the technical details in their own little sections. 🤓👍
Coordination: Something That Human Beings Simultaneously Excel In and Suck At
Coordination has always been a challenge for us as a species, particularly at scale. Technology has expanded our ability to connect and collaborate with each other worldwide, and we are constantly coming up new ways to improve how we do things. To work at a global scale, collaboration requires clear communication across multiple communities.
When we have millions of players trying to work together on overlapping interests, a shared set of standards and protocols becomes essential, whether it is between countries (i.e. the United Nations) or people (i.e. the internet). Protocols used by web developers and internet apps (i.e. TCP/IP for email, HTTP for web browsers, REST for web apps, etc.) are clear and open to the public - a shared set of rules is required to make network communication possible. ⚡
On Ethereum, base-level code (including smart contracts for your favorite NFTs) is built according to a list of specifications (ERCs). Very much in line with the open source movement, all code is public and reviewable (i.e. on GitHub repositories) . This means that all developers, from enterprise-level engineers to individual hobbyists, have equal access to the same benefits of blockchain technology (computation and security). This is a significant departure from Web 2.0 platforms which, though built on open standards, are often siloed, centralized, and require permission to access and build on (i.e. social media giants).
Today, we are witnessing the merging of open-source code, standards, and infrastructure, and whether you are aware of it or not, everything you see and do on the Ethereum blockchain was built using ERCs and EIPs.
ERC: Ethereum Request for Comments
An ERC is a human-readable document that Ethereum developers must comply with when creating smart contracts for their tokens (including NFTs). The standards set typically focus on specific areas, such as the transfer of ownership or conventions when writing code. They ensure that anyone (anywhere) in the Ethereum ecosystem receives the same predictable, consistent use of their tokens and dApps. As a simple analogy, it’s kind of like how two soccer teams agree to play by the same rules for a match. ⚽
Once an ERC standard is created, developers will create their code (or update existing code) to follow the rules. On. that note, it’s worth noting that smart contracts on the Ethereum network are immutable: they cannot be updated once deployed, so new versions of contracts might be need to be created for existing projects (i.e. for CryptoPunks to be compatible with the Ethereum standard for NFTs, Wrapped CryptoPunks were created).
💻 >
Developers are defining novel ways to update only certain sections of their projects but still work with immutable code, such as
EIP-2535 - The Diamond Standard
design pattern for Solidity contracts. Though it requires a lot of early foresight and for the project to prioritize abstraction and modularity 🤓, developers could avoid the dreaded scenario of having to redeploy an entire project.
EIP: Ethereum Improvement Proposal
An EIP is an ERC proposal submitted for public review by the Ethereum developer community. Every ERC in use today started off as an EIP.
If the community agrees to the items put forth in the proposal, it will be accepted and adopted as a new ERC standard.
If not, the proposal is revised to address the concerns put forward, and then resubmitted to be reviewed again.
If the proposal is no longer relevant (i.e. another proposal is accepted that more or less addresses the same concerns), the EIP is withdrawn.
EIPs that gain traction give developers time to prepare for upcoming changes that they might need to adopt. For the community as a whole, it gives us a glimpse of what could affect the way we use Ethereum down the line (even if you’re not a shadowy super-coder).
💻 > At the time of writing this, Ethereum is transitioning from PoW (Proof of Work) to PoS (Proof of Stake) consensus, which should address many of the UX, environmental, cost, and scalability issues with the current network. EIP-1559's recent adoption on Mainnet was a major step towards achieving this - you can learn more about it here.
Things to remember:
Most EIPs expand on standards set by existing ERCs
The Must-Know ERCs
Before we get to focus on what this all means for NFTs (I mean, that’s why we’re all here, right? 😁), we’ll briefly touch on two foundational ERCs that anyone (and everyone) on Ethereum uses (whether they know it or not).
The Two Foundational Ethereum ERCs:
ERC-20 💰
The (fungible) token standard applies to the majority of tokens in circulation on Ethereum. It is the foundation on which many other ERCs and EIPs are built on, and any token you can send or receive (fungible tokens, in particular) must adopt the ERC-20 standard for it to be compatible with wallets and exchanges.
💻 > The ETH you hold in your Ethereum wallet is not actually an ERC-20 token, because it is the native currency of Ethereum itself! To swap it like an ERC-20 token, wETH ("wrapped” ETH) is often used under the hood (out of sight for the user in most cases).
ERC-165 ⚖
The Standard Interface Detection is a requirement that all ERCs and EIPs must abide by. Unlike most other ERCs, this one is kind of “meta.” It standardizes the way smart contracts themselves interact with each other and ensures that each token clearly states what ERC(s) are used. Compatibility is pretty much built-in to ERC-165-compliant code, which means developers don’t need to dig through endless code repositories to know what’s going on, and that users can get expected results with minimal errors.
💻 > If you are a smart contract developer, ERC-165 is required reading, as well as the more recent EIP-1559. 📚
The Two Most Important ERCs for NFTs
ERC-721 🖼
The non-fungible token standard is likely the one you’ll see most often in the NFT space. ERC-721 is the foundation for all NFTs on Ethereum today (and for the foreseeable future). It ensures many of the essential properties for something to be classified as an NFT, such as uniqueness and transferability.
Axiom Zen, the technology company that owns Dapper Labs (one of the largest dApp companies in the space), pioneered NFTs with a little project called CryptoKitties 😻 that took the Ethereum community by storm back in 2017. CryptoKitties is a collectible virtual pet game in which users can own and breed cute cartoon cats. In the early days. of Ethereum, this is all it took to pass as a game 😐, but since then, the team has proven itself and has continued to support the project, enabling players to do a lot more with their kitties on dApps such as The Kitty Verse. 🥰
The Dapper Labs team actually created and proposed EIP-721 in January 2018, which would go on to be ERC-721. The final document, which refers to non-fungible tokens as “deeds” (guess that term never took off for whatever reason 🥀), lays out the most important characteristics of any NFT:
There can be only one ⚔
Each NFT smart contract is assigned a unique ID that can never be changed (also, remember that unlike fungible ERC-20 tokens, NFTs are indivisible).Ownership is transferrable 📜
Built on many of the same or similar requirements of ERC-20 tokens, this ensures that we are able to send, receive, and hold NFTs.
ERC-721 also gives the option for something called metadata (data about the data) to be included, which opens up endless creative possibilities. Metadata has three components (“functions” in the smart contract) that can be customized in each NFT smart contract:
A descriptive name of the asset represented by the NFT
What the NFT is called (pretty self-explanatory). It can be set as an empty string (“”), but it has to be set as something.💻 > Set in the name() function in the smart contract.
An abbreviated name for the NFT
A shorthand name for the token, typically a three-six letter ticker symbol. While fungible cryptocurrency tokens often use shorthand symbols on exchanges, NFTs don’t make much use of this field.💻 > Set in the symbol() function in the smart contract.
An online link to data for the NFT
It’s important to note that most NFTs, especially in crypto-art, store important data (i.e. media files) “off-chain” (off the blockchain, separate from the NFT smart contract itself). In such cases, a path to the data on the internet, a.k.a. the URI (Uniform Resource Identifier) is provided. Also note that access to an NFT’s data could rely on third-party services (not ideal 🙁 ), so be sure to check. Thankfully, many NFTs today store their data on decentralized storage solutions, such as Arweave and IPFS.💻 > Set in the tokenURI() function in the smart contract. Note that metadata is not limited strictly to media files. Other web content types, such as JSON and applications, can also be referenced, which can be useful for generative art and game item NFTs.
There is also an option to set the total supply of the NFTs to something greater than one.
Wait…hang on 🤨❗
How can an NFT be non-fungible (a.k.a. unique) if there’s more than one?!
This was one of the first things that stood out to me when I found out that ERC-721 NFTs have this option. 🕵️♂️ It turns out that when more than one NFT is to be minted by the same smart contract, each token is given its own unique ID. For example, if my crypto-art NFT is part of a limited supply run of 12, each of those 12 tokens would have a different ID, and each could even have unique metadata assigned to it (i.e. unique graphics per token ID).
There are three customizable components for this, but the one we’re really interested in is:
The total supply of NFTs for the asset
This hardcodes the maximum supply of NFTs that can ever exist (includes both already-minted and yet-to-be-minted tokens).💻 >
Set in the totalSupply() function in the smart contract.
While the ERC-721 standard is foundational for many NFTs today, a modern set of protocols has been trending. With the aim of streamlining and enabling even more innovation in the NFT space, we’ll cover ERC-1155 next.
💻 > The smart contract interfaces referenced in this section were ERC721 (required), ERC721Metadata (optional), and ERC721Enumerable (optional) 💻
ERC-1155 🌐
The multi-token standard is the next-generation ERC for NFTs. It aims to address many of the shortcomings of both fungible ERC-20 tokens and non-fungible ERC-721 tokens, while simultaneously harnessing strengths in both. ERC-1155 creates several efficiencies, including cheaper, faster transfers, support for semi-fungibility (i.e. useful for mass-produced items in video games), and batch token transactions, just to name a few.
ERC-1155 was largely developed by the team at Enjin, a video game company that has become a leader in the entire NFT space. A year after it was initially proposed as an EIP in summer 2018, ERC-1155 was officially adopted as an Ethereum token standard in July 2019. Even though Enjin drafted the original proposal from the vantage point of a game company, their innovative vision gained attention from industries beyond gaming, such as real estate. 🏡
"ERC-1155: The Final Token Standard on Ethereum...enables you to create every type of asset, from currency and real estate to digital art and gaming items."
-Enjin, 2019 ERC-1155 blog post
That quote from the Enjin team promised quite a lot, but how has it delivered? Let’s break ERC-1155 down into a couple of key take-aways:
Cryptocurrencies and NFTs together in one smart contract
Any number of fungible and non-fungible tokens, each with its own unique token ID, can be represented within a single ERC-1155 smart contract. 🤯 Each token type is configurable with its own metadata, supply, and more, as if each was a separate ERC-20 or ERC-720 token with its own stand-alone smart contract.Even adding new token(s) is as easy as calling a function to add a new token ID to the list, and updating the off-chain metadata files as needed. Finally, because all the tokens are in a single contract, it is also easier to include functionality for atomic swaps, or peer-to-peer token transfers (i.e. players swapping tokens representing different in-game items directly, without the need of an exchange).
One transaction, multiple tokens
Batch transactions and operations affecting multiple tokens (of different token types) can be done in a single transaction. This significantly cuts down on transaction fees, time, and steps required to transfer multiple tokens that would otherwise each require separate transactions.Transactions involving just a single token are still very much possible on ERC-1155, and are, in fact, much cheaper than batch transactions. The Sandbox (a popular world-builder game built on NFTs) has an implementation of ERC-1155 for their NFTs that claims to enable creators to mint more than 1,500 types of assets at once in a single Ethereum block. 😲
💻 > Set in the transferSingle() and transferBatch() functions in the smart contract.
There are also some key functionality differences between ERC-1155 and its predecessor, ERC-721, that we’ll want to take note of:
Metadata must be provided as “JSON” data
The metadata file URI for ERC-1155 smart contracts must link to data file(s) using a text-based standard called “JSON” (JavaScript Object Notation). Further, these JSON file(s) must follow a required schema (framework of how to write the file) and though things can get pretty granular, it enables every token type to have unique data, and even supports different locales (likely a big concern for global distribution of media, like regionalization for video games).💻 > Set in the URI() function in the smart contract.
The token’s name and symbol are not set globally
Instead, each token type’s name, symbol, and arbitrary data is set in the JSON file(s).
💻 >
The interfaces referenced in this section were ERC1155 (required) and ERC1155Metadata_URI (optional)
Though a hybrid of ERC-721 and ERC-1155 is doable to facilitate backwards compatibility, it is recommended to adopt one or the other to avoid conflicts.
ERC-1155: Why It Matters for NFT Creators
If you’ve ever minted an NFT using a permission-free service like OpenSea.io or Rarible.com, or a curated one like SuperRare, chances are that the tokens you minted were done using the platform’s public marketplace contract. Though this does a good job of removing complexity for the average user, the fact remains that the minting contract is owned by the platform itself; not by the NFT creators.
What does this mean? Well, thankfully, you as the creator still retain ownership over your NFTs and can sell, transfer, and store them as you please. However, there are some noteworthy drawbacks:
Limited Customizability
Users at the mercy of what the marketplace contract lets you do (i.e. media format, what cryptocurrencies to transact with, etc.). The platform will also likely be taking a cut of sales for themselves.Royalty Restrictions
If the NFTs are programmed to distribute royalties to the creator(s) on secondary sales, it likely requires the transaction to be done using the original marketplace contract (i.e. NFTs created on SuperRare will not generate royalties OpenSea). This is because there is no EIP/ERC standard (yet) for NFT royalties, but as we’ll find out below, it’s in the works.
How does ERC-1155 Help Solve This?
Think of ERC-1155-compliant smart contracts as factories, vending machines and/or storefronts. If you own these, you have full ownership and control of what, how, and where you sell your wares. Those willing to eat the one-time cost of deploying their own smart contract are rewarded with full control over their new enterprise (#entrepreneur).
Not a smart contract developer? Platforms like Foundation (EIP-1155), Mintbase (EIP-1155), and Cargo (ERC-721) are a few alternatives that offer NFT minter contracts to individual creators. However, it seems that OpenSea and Rarible have felt the pressure to provide their users with more self-sovereign, empowering tools as well, and now offer the Collection Manager and the Rarible Protocol, respectively (note the Rarible Protocol links to “Rarible.org”, not “Rarible.com”, and still lacks a friendly, non-technical interface for average users).
💻 >
Zora and Rarible Protocol have great resources for deploying self-sovereign NFT contracts. Rarible Protocol is still in early development, but its community support and cross-chain features make it the most promising option, IMHO.
EIPs to Keep on an Eye On
We covered the major ERC standards you’re likely to come across today (and also likely to stand the test of time), and even just a bit of understanding puts you way ahead of 99% of other users out there, so a big shoutout to you for making it this far! 👏
As we know, things change quickly in the crypto space, so it’s important to keep an eye on what could happen in the future. Let’s take a peek next at which EIPs could impact NFTs on Ethereum really soon!
EIPs Coming Soon to an NFT Near You (Maybe)
EIP-998
The Composable Non-Fungible Token Standard is an ERC-721 extension that standardizes the way NFTs can own other tokens (ERC-20 and ERC-721 tokens). Transactions for any token(s) owned by EIP-998 NFTs require the approval of the owner of the top-level NFT. 👩💼▶📜▶📜▶💰 ✅
At the time of writing this, EIP-998 seems to be very close to being adopted as an ERC standard.
EIP-1523
A Standard for Insurance Policies as ERC-721 Non Fungible Tokens outlines how NFTs could be used in insurance policies tailored to the needs of each unique client.
EIP-1948
The Non-Fungible Data Token proposal aims to make on-chain ERC-721 metadata mutable (able to be changed) and allow for the modification of metadata when required.
EIP-2309
The ERC-721 Consecutive Transfer Extension is an optional upgrade to vanilla ERC-721 NFTs that would make it easier to create, transfer, and track batches of NFTs.
EIP-2615
The Non-Fungible Token with Mortgage and Rental Functions sets a framework for lending and backing collateralized loans using ERC-721 NFTs. Industries that rent out and issue debt against assets, such as real estate, could be highly streamlined using NFTs in the future. 🏠🏡
EIP-2981 👈📝
The ERC-721 Royalty Standard is an important, necessary standard to ensure that NFT creators rightfully receive revenue from secondary sales of their work, regardless of where the transaction takes place.
I strongly support the standardization of NFT royalties, and hope to see more revenue go directly to supporting creators and their communities, rather than the current models where the lion’s share goes to intermediaries. 👏
EIP-3601
The Fractional NFT and FT with Royalty Distribution System is a proposal to standardize the fractionalization of NFTs using FTs (fungible tokens).
💻 >
EIP-2535
The
Diamond Standard
💎 is actually applicable to all tokens (not just NFTs), but I included it because it would help future-proof Ethereum tokens if/when parts of the smart contract(s) would need to be updated, without requiring a new version of the entire smart contract to be deployed and users to migrate. That, and ERC-2535 already looks to be gaining adoption in current projects.
With the number of promising EIPs coming down the line, I’m sure we’ll revisit at least a couple of the ones covered here soon, possibly as full-on ERCs, given the attention and volume of NFT projects we’re seeing that utilize on-chain royalties and fractionalization especially.
The Web 1.0 Days of NFTs
When the HTML and web browsers brought visuals to the world of black and green screens to the “World-Wide Web,” an unstoppable trend of wide adoption began. Further standardization such as CSS (style sheets) and REST API protocols continued to advance the things we could see and do with the internet. Though early web protocols were pretty clunky by todays standards, we have continued to iterate and innovate upon them, and have seen static website articles and text-only chatrooms progress into the dynamic social media and video streaming experiences we enjoy today.
Today, NFT protocol standards like ERC-721 are mostly used on static pictures (“JPEG Summer” 🌞), but this just “Web 1.0” of the potential of NFTs. Things move fast in crypto, and given the number brilliant, creative minds in the space, imagine where we could be, even just a few months from now!
Whereas ERC-20 tokens are changing the future of finance (DeFi), ERC-721 and ERC-1155 are doing the same for pretty much everything else! This is just the start of the wide adoption of crypto via NFTs, and I really appreciate you for joining me for the ride. 🚀
As always, thank you so much for taking time to share this journey together with me into the world of NFTs. I hope you found the content helpful, and maybe even fun to read! 😁
If you would like to help support the NFT Droplets newsletter, please do Share this article with someone who would find it helpful.
If you’re not yet subscribed to NFT Droplets, enter your email below and be among the first to find out when fresh NFT articles get dropped (I promise that you will never get spammed, nor will your email ever be shared with anyone). ✅👇
If you have any questions, comments, or suggestions for future articles, please share your thoughts in the comments section below. 💬
⚠ Disclaimer ⚠
Cryptocurrencies and NFTs are a speculative asset class. Be aware of the risks involved and know that you could lose money. Everything I share references an opinion and is for information and entertainment purposes only. It is not intended to be investment advice. Please consult a licensed professional before making any investment decision.