Contracts deployed and verified on Goerli testnet

deployer: 0xf3cc1a256989557484975e24a29c638fe756f6b1

Renderer.sol: 0x39A96415877d441d25aFB059AEf4218Db5C2256A

YourCollectible.sol: 0xcF7F46998A5808C0bB3fC323F39ddBEd0b53C902

Checkpoint 0: 📦 Install 📚

Want a fresh cloud environment? Click this to open a gitpod workspace, then skip to Checkpoint 1 after the tasks are complete.

Open in Gitpod

Required:

(⚠️ Don't install the linux package yarn make sure you install yarn with npm i -g yarn or even sudo npm i -g yarn!)

git clone https://github.com/scaffold-eth/scaffold-eth-challenges.git challenge-0-simple-nft
cd challenge-0-simple-nft
git checkout challenge-0-simple-nft
yarn install
yarn chain

in a second terminal window, start your 📱 frontend:

cd challenge-0-simple-nft
yarn start

in a third terminal window, 🛰 deploy your contract:

cd challenge-0-simple-nft
yarn deploy 

You can yarn deploy --reset to deploy a new contract any time.

📱 Open http://localhost:3000 to see the app


Checkpoint 1: ⛽️ Gas & Wallets 👛

⛽️ You'll need to get some funds from the faucet for gas.

image

🦊 At first, please don't connect MetaMask. If you already connected, please click logout:

image

🔥 We'll use burner wallets on localhost...

👛 Explore how burner wallets work in 🏗 scaffold-eth by opening a new incognito window and navigate it to http://localhost:3000. You'll notice it has a new wallet address in the top right. Copy the incognito browsers' address and send localhost test funds to it from your first browser:

image

👨🏻‍🚒 When you close the incognito window, the account is gone forever. Burner wallets are great for local development but you'll move to more permanent wallets when you interact with public networks.


Checkpoint 2: 🖨 Minting

✏️ Mint some NFTs! Click the MINT NFT button in the YourCollectables tab.

MintNFT

👀 You should see your collectibles start to show up:

nft3

👛 Open an incognito window and navigate to http://localhost:3000

🎟 Transfer an NFT to the incognito window address using the UI:

nft5

👛 Try to mint an NFT from the incognito window.

Can you mint an NFT with no funds in this address? You might need to grab funds from the faucet to pay the gas!

🕵🏻‍♂️ Inspect the Debug Contracts tab to figure out what address is the owner of YourCollectible?

🔏 You can also check out your smart contract YourCollectible.sol in packages/hardhat/contracts.

💼 Take a quick look at your deploy script 00_deploy_your_contract.js in packages/hardhat/deploy.

📝 If you want to make frontend edits, open App.jsx in packages/react-app/src.


Checkpoint 3: 💾 Deploy it! 🛰

🛰 Ready to deploy to a public testnet?!?

Change the defaultNetwork in packages/hardhat/hardhat.config.js to goerli

networkSelect

🔐 Generate a deployer address with yarn generate

nft7

👛 View your deployer address using yarn account

nft8

⛽️ Use a faucet like faucet.paradigm.xyz or goerlifaucet.com to fund your deployer address.

⚔️ Side Quest: Keep a 🧑‍🎤 punkwallet.io on your phone's home screen and keep it loaded with testnet eth. 🧙‍♂️ You'll look like a wizard when you can fund your deployer address from your phone in seconds.

🚀 Deploy your NFT smart contract:

yarn deploy

💬 Hint: You can set the defaultNetwork in hardhat.config.js to goerli OR you can yarn deploy --network goerli.


Checkpoint 4: 🚢 Ship it! 🚁

✏️ Edit your frontend App.jsx in packages/react-app/src to change the targetNetwork to NETWORKS.goerli:

image

You should see the correct network in the frontend (http://localhost:3000):

nft10

🦊 At this moment, you will need to connect the dapp to a browser wallet where you have some ether available to mint tokens. Again, you can use a faucet like [faucet.paradigm.xyz]. Keep in mind that the address you generated in the previous step to deploy the contract will likely be different from the one you have configured in your wallet.

🎫 Ready to mint a batch of NFTs for reals? Use the MINT NFT button.

MintNFT2

📦 Build your frontend:

yarn build

💽 Upload your app to surge:

yarn surge

(You could also yarn s3 or maybe even yarn ipfs?)

😬 Windows users beware! You may have to change the surge code in packages/react-app/package.json to just "surge": "surge ./build",

⚙ If you get a permissions error yarn surge again until you get a unique URL, or customize it in the command line.

⚠️ Run the automated testing function to make sure your app passes

yarn test

testOutput


Checkpoint 5: 📜 Contract Verification

Update the api-key in packages/hardhat/package.json file. You can get your key here.

Screen Shot 2021-11-30 at 10 21 01 AM

Now you are ready to run the yarn verify --network your_network command to verify your contracts on etherscan 🛰

It is okay if it says your contract is already verified. Copy the address of YourCollectable.sol and search it on goerli Etherscan to find the correct URL you need to submit this challenge.


⚔️ Side Quests

🐟 Open Sea

🐃 Want to see your new NFTs on Opensea? Head to Testnets Opensea

🎫 Make sure you have minted some NFTs on your Surge page, then connect to Opensea using that same wallet.

nft14

You can see your collection of shiny new NFTs on a testnet!

(It can take a while before they show up, but here is an example:) https://testnets.opensea.io/assets/0xc2839329166d3d004aaedb94dde4173651babccf/1

🔶 Infura

You will need to get a key from infura.io and paste it into constants.js in packages/react-app/src:

nft13


🏃 Head to your next challenge here.

💬 Meet other builders working on this challenge in the Challenge 0 telegram channel!!!

👉 Problems, questions, comments on the stack? Post them to the 🏗 scaffold-eth developers chat