Over the last few weeks both the crypto-sphere and the mainstream press have been abuzz with the latest blockchain craze — NFTs. But what even are they?
‘NFT’ stands for ‘Non-Fungible Token’ and they are non-fungible blockchain based assets which can have specific properties. Let’s break this down …
Fungibility vs Non-Fungibility
To understand the difference between a fungible and non-fungible asset, consider a pile of £1 coins and a pile of Pokemon cards. If you were asked to give someone £18, then you would select any 18 coins from the pile, confident in the knowledge that they each have the same value. However consider the situation where someone asks you to provide them with £18 worth of Pokemon cards. To do this you’d need to understand the value of each card; after all the price difference between a common Eevee and a 1999 First Edition Shadowless Holographic Charizard is around £160,000! The £1 coins are fungible — they are all interchangeable for the same amount, whereas the Pokemon cards are non-fungible.
Just like Pokemon cards, but existing on a blockchain, non-fungible tokens have different properties which derive their value. They are therefore a distinct asset class from fungible cryptocurrencies such as bitcoin, ether, lumens etc which are individually mutually interchangeable e.g this bitcoin is worth exactly the same as that bitcoin.
They exist on blockchains with the most popular network to launch an NFT being the Ethereum protocol. However there are also a number of other well known networks which support NFTs; Polygon (previously known as Matic), Tron, EOS, NEO, Near Protocol, Flow etc.
To understand the mechanics of an NFTs we are going to explore how they work under the hood on the Ethereum protocol.
Ethereum Contract Standards
The Ethereum blockchain has the native asset Ether (ETH), and it’s also possible to create other assets which can be transferred over the network. To create one of these assets you must first decide what properties and functionalities you require and then choose an appropriate framework to build under.
Until recently, the contract standard of choice was ERC20, and allowed for the creation of a fungible token with limited functionality. This suited many of the projects in the crypto-ecosystem who wanted their own token without the overhead of creating and maintaining their own blockchain. Due to the ease of creating an ERC20, the vast majority of tokens touted in the 2017/2018 ICO boom were of this variety and there are currently 366,987 ERC20 assets built on the Ethereum network. However, the limited functionality and customisation of ERC20s paired with continued innovation in the space meant that new frameworks were required.
Rise of the Non-Fungible Contract Standards
Whilst the ERC20 token standard allowed the creation of a digital version of our pound coins, it stopped short at being able to digitalise the Pokemon cards with their myriad of attributes and different values.
However in early 2018 the ERC721 token standard was launched on the Ethereum network and brought the ability to create non-fungible tokens.
This ability came from the introduction of two critical properties;
Unlike an ERC20 token which can be divided up to 18 decimal places (as prescribed in the contract), an ERC721 token is indivisible. As such, the token is either transferred in its entirely or not at all. So just as you cannot move 1/3rd of the Mona Lisa (without cutting the painting up!), you cannot transfer 1/3rd of an ERC721 asset.
The `tokenMetadata` field can contain a wealth of information about the token and its properties. For our digitalised Pokemon card it would be information such as; the type, HP, image, ability, name etc. This allows one ERC721 token to be distinct from another ERC721, and therefore hold a different value.
The first project to make use of these non-fungible properties was CryptoKitties, a digital cat collectable game where a cat’s cattributes (yes you read that right, it’s not a typo) gave it a value.
These cattributes as well as the name, image and description are stored within the token’s metadata. Whether this information is truly immutable is a debate for another day and depends whether it is stored on or offchain.
However one challenge with the ERC721 standard is that each ERC721 token (whether digital cat, blockchain based art or virtual piece of land) must be transferred independently, and so if someone is looking to move their collection of CryptoKitties on mass then they will incur hefty transactions fees. Furthermore, for an application which requires both fungible and non-fungible assets they are required to create a myriad of different tokens using different contract standards.
The ERC1155 standard which was proposed just a few months after ERC721 but is yet to be merged into the Ethereum codebase, looks to improve upon this with the introduction of a batching ability, support for both fungible and non-fungible tokens, and advanced functionality for renting, combining and destroying tokens. This could allow a single contract to create non-fungible Pokemon, with fungible energy and trainer cards, as well as lowering gas costs when batch moving these tokens from one account to another. With the recent increase in awareness and interest of non-fungible tokens, it’s likely we’ll see support and adoption for this token standard grow.
The final contract standard to be aware of with regards to non-fungible tokens is ERC988. This standard allows for the creation of composables — giving your CryptoKitty the ability to own a scratching post, or your Gotchi to wear a wizard hat, or your LAND to have a rollercoaster built on it. It effectively gives the right of an ERC721 (or ERC1155) to own something and so if you sell the ERC721 token then the associated ERC998 tokens are sold with it. As with the ERC1155 standard, this is not yet merged into the Ethereum codebase but many projects are already making use of it to enhance their applications.
So that’s how NFTs work under the hood — they’re primarily ERC721 tokens with unique metadata allowing for distinct valuations and the ability to immutably own and transfer ownership due to being built on top of the Ethereum (or other) protocol.