How To Build Dynamic ERC-721 NFTs Using Three Chainlink Trust-Minimized Services

Dynamic NFTs are fun and interesting in their own right, but they are also useful for developing a better technical understanding of smart contract technology, improving software design skills, and learning how to use exciting new tools that are widely used in industry.

LaMelo Ball dynamic NFT
This NFT of NBA player LaMelo Ball changed after he won Rookie of the Year.

In this project we are going to build a dynamic NFT that doesn’t just update but does so randomly—its image will change based on the price of an asset, which will be obtained from Chainlink Price Feeds. The new image will be selected at random. If the price goes up, one of these images of a bull will appear.

Bull Dynamic NFTs
The three bull images for the dynamic NFTs.

If the price goes down, one of these images of a bear will be shown.

Bear Dynamic NFTs
The three bear images for the dynamic NFTs.

Either way, the actual image is chosen at random.

Achieving true randomness on blockchains, which are inherently deterministic because of the way their consensus algorithms work, is a very hard problem. But it is made easy with Chainlink VRF which is a provably fair and verifiable random number generator (RNG) that enables smart contracts to access random values without compromising security or usability.

The dynamic NFT will respond to market changes automatically, with no need for developers to check prices or trigger NFT changes. This is possible with the help of Chainlink Automation, which automates the project so that once your NFT is deployed, all you need to do is keep your VRF subscription and the Automation registry funded with LINK tokens. The smart contract execution and dynamic NFT selection is done in a decentralized manner that is verifiable and cryptographically secure.

Who This Is For

This project assumes that you have some prior coding knowledge, ideally in languages like JavaScript or Python. We write the smart contracts in Solidity, so if you have no prior experience with Solidity, you should check out the Road To Web3 program put together by Alchemy (this project was originally created for that series!). You can also find further educational resources here.

You can complete this entire project in the browser-based Remix code editor. You’ll find the Github repo for this project here—each branch in the repo represents a stage in the project.

Project Stages

Here are the stages for building the project:

  • Build the baseline ERC-721 token. We use the OpenZeppelin Wizard to generate audited library code for this. You can follow this step in the main branch of the reference repo.
  • Add the Chainlink Automation implementation and connect to a Chainlink Price Feed to track a specific asset’s price. You can follow this step in the price-feeds branch of the reference repo.
  • Add verifiable randomness so that our dynamic NFT image is chosen randomly from available NFT images. This bit is for you to do as a special assignment to build your skills! You can follow this step in the randomness branch of the reference repo.

Things You Will Learn

This project will teach you:

  • How to write, structure, and design Solidity smart contract code
  • The fundamentals of ERC-721non fungible tokens and their functionality
  • How to use essential tools like Remix, Open Zeppelin libraries, and three major Chainlink services
  • How smart contracts interact with each other

You can do this in one of two ways—you can code along with the video tutorial below or follow along with the extended written version of this dynamic NFT tutorial in Lesson 5 of Alchemy’s Road to Web3.

More possibilities!

After you’re done, you can expand your fancy smart contract skills even further by building out your own NFT Marketplace using Hardhat and Solidity. This tutorial shows you how to write the logic for a marketplace that allows users to list items, and then buy and sell them and withdraw their earnings.

If you’d like to go even deeper, check out How To Build Dynamic NFTs on Polygon, and how to Build, Deploy and Sell your own Dynamic NFT. You can also read more about how the player-fan experience has been redefined by the LaMelo Ball dNFTs.

Learn more about Chainlink by visiting chain.link or reading the documentation at docs.chain.link. You can also subscribe to the Chainlink Newsletter to stay up to date with everything in the Chainlink stack. To discuss an integration, reach out to an expert. If you’re looking for an end-to-end blockchain developer education, check out blockchain.education.

Need Integration Support?
Talk to an expert
Faucets
Get testnet tokens
Read the Docs
Technical documentation