description |
---|
Use VRF to get a 🎲 random "⚔️ strength" for each NFT as it is minted... |
Author: Austin Griffith****
Source code: https://github.com/scaffold-eth/scaffold-eth-examples/tree/chainlink-vrf-nft
Intended audience: Beginners/Intermediate
Topics: Scaffold-eth basics, NFTs, Chainlink
required: Node plus Yarn and Git
git clone https://github.com/scaffold-eth/scaffold-eth-examples.git buyer-mints-nft
cd buyer-mints-nft
git checkout buyer-mints-nft
yarn install
yarn start
in a second terminal window:
cd simple-nft-example
yarn chain
✏️ Edit the artwork manifest
artwork.js
with all of your art, then upload it to IPFS:
in a third terminal window:
cd simple-nft-example
yarn upload
yarn deploy
📱 Open http://localhost:3000 to see the app
Your artwork from artwork.json
(if uploaded and deployed correctly) should show a gallery of possible NFTS to mint:
💦 Use the faucet wallet icon in the bottom left of the frontend to give your address $1000 in testnet ETH.
🎲 This repo uses Chainlink's VRF on Rinkby.
First call
getRandomNumber()
from thedebug contracts
tab:
Wait for the
randomResult
to get set:
Finally, mint from the
gallery
tab and your NFT will have atokenStrength
:
🎫 Try to "Mint" an NFT:
👛 Open an incognito window and navigate to http://localhost:3000 (You'll notice it has a new wallet address).
⛽️ Grab some gas for each account using the faucet:
🎟 Send an NFT to the incognito window just to make sure it works.
🕵🏻♂️ Inspect the Debug Contracts
tab to figure out what address is the owner
of YourCollectible
?
💼 Edit your deployment script deploy.js
in packages/hardhat/scripts
🔏 Edit your smart contract YourCollectible.sol
in packages/hardhat/contracts
📝 Edit your frontend App.jsx
in packages/react-app/src
🔑 Create wallet links to your app with yarn wallet
and yarn fundedwallet
⬇️ Installing a new package to your frontend? You need to cd packages/react-app
and then yarn add PACKAGE
🛰 Ready to deploy to a testnet?
Change the
defaultNetwork
inpackages/hardhat/hardhat.config.js
🔐 Generate a deploy account with yarn generate
👛 View your deployer address using yarn account
(You'll need to fund this account. Hint: use an instant wallet to fund your account via QR code)
📝 Triple check your artwork.json
file and run:
yarn upload
👨🎤 Deploy your NFT smart contract:
yarn deploy
✏️ Edit your frontend
App.jsx
inpackages/react-app/src
to change thetargetNetwork
to wherever you deployed your contract:
You should see the correct network in the frontend:
An instant wallet running on xDAI insired by xdai.io.
🐟 Open Sea
Add your contract to OpenSea ( create -> submit NFTs -> "or add an existing contract" )
(It can take a while before they show up, but here is an example:)
https://testnets.opensea.io/assets/0xc2839329166d3d004aaedb94dde4173651babccf/1
🔍 Etherscan Contract Verification
run
yarn flatten > flat.txt
(You will need to clean up extra junk at the top and bottom of flat.txt. Sorry, rookie stuff here.)
copy the contents of
flat.txt
to the block explorer and select compilerv0.6.7
andYes
toOptimization
(200 runs if anyone asks)
🔶 Infura
You will need to get a key from infura.io and paste it into
constants.js
inpackages/react-app/src
:
⚙️ build and upload your frontend and share the url with your friends...
# build it:
yarn build
# upload it:
yarn surge
Join the telegram [support chat 💬](https://t.me/joinchat/KByvmRe5wkR-8F_zz6AjpA) to ask questions and find others building with 🏗 scaffold-eth!
yarn s3
===================================================== [⏫ back to the top ⏫](https://github.com/austintgriffith/scaffold-eth#-scaffold-eth)
yarn ipfs
👩❤️👨 Share your public url with a friend and ask them to buy a collectible