# From NFT 1.0 to NFT 2.0: A Review of the Evolution of Non-Fungible Tokens
## 1 Introduction  
One of the most groundbreaking ideas in the Web3 space and the metaverse is the non-fungible token (NFT). As their name suggests, NFTs are blockchain tokens that are distinguishable one from the other, and therefore can be used to represent the property of a unique digital or physical asset. Their popularity is growing, rapidly reaching a global scale, with millions of active traders [1] and a market volume worth billions of USD yearly [2]. Whilst initially proposed for the art industry as a means to represent the ownership of unique pieces of art with provably scarce traits, they have found applications in many fields, for example, as tools to prevent the unauthorised forwarding of private content [3] or the tokenisation of metaverse goods [4] and lands [5]; as a way to model an in-game character [6]; or as proof of purchase of expensive cars or clothes [7]. NFTs can be uniquely identified by the address of the smart contract that manages the collection and a unique identifier. Each token also has some associated metadata that describe the asset whose property is being represented by the token. Typically, metadata are organised according to JavaScript Object Notation (JSON), and include a name, description, a link that points to the location where a media file is stored, and a series of traits that describe the asset. The media file can be a picture, a video, a website, a piece of code, or any arbitrary data [8]. Metadata are an important aspect of the NFTs, as they are used by NFT marketplaces to describe the characteristics of each NFT and to compute the rarity of a token [9]. In the first generation of NFTs, known as _static_ NFTs or NFT 1.0, the metadata were defined when the token was generated and could not be changed afterwards. An example is the Boring Ape NFT, which contains only the Boring Ape picture, and its traits as a JSON object and cannot be changed (An example of the metadata associated with a Bored Ape NFT: [[https://ipfs.io/ipfs/Qme9](https://ipfs.io/ipfs/Qme9) SiSnHpPnmXmspMjwiXyN6 zS4E9 zccariGR3 jxcaWtq/0]([https://ipfs.io/ipfs/Qme9](https://ipfs.io/ipfs/Qme9) SiSnHpPnmXmspMjwiXyN6 zS4E9 zccariGR3 jxcaWtq/0), accessed on 23 May 2023). Having static metadata is great for artwork and collectible NFTs. However, to build a robust and open NFT system that goes beyond artwork and collectibles, many attributes in the metadata need to be updated. For example, players' performance in games can affect their character levels. Looking beyond static images and simple collectibles is crucial to truly enhance user experience with NFTs. From healthcare and passports to real estate and art verification, the endless possibilities of NFTs are slowly emerging. However, for NFTs to truly shine and realise their potential, application builders must reimagine what these tokens represent. Indeed, they should focus more on the users' needs and on real-world applications so that people will fully benefit from this technology. For this reason, NFTs have kept evolving, and lately, an evolution of the technology, called NFT 2.0, has been proposed. NFT 2.0, also known as _dynamic_ NFTs, introduces the possibility to interact with NFTs, compose and enhance them, update their metadata, and add a degree of randomness in order to widen the scope of their application; enable new use cases, such as video games, dynamic collectibles and ID cards; and improve the user experience. Dynamic NFTs, as the name suggests, refer to a type of NFT that changes its behaviour according to certain external circumstances or inputs supplied by the owners. While in the earlier version of NFT technology, NFTs could not be altered once generated, in NFT 2.0, the dynamism feature has been introduced, which has made the NFTs interactive and more engaging by providing them with special commands that help in modifying the nature of the tokens. NFTs can interact with the protocol in the way specified in the smart contract, and the metadata contain all the key data that defines the asset.