-
Notifications
You must be signed in to change notification settings - Fork 0
Mepsss/foundry-nft-f23
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
##probably slightly broken ## error when converting base64 svg stuff, in tokenURI instead of data/Image still gettign date/application, too lazy to fix so far # Foundry NFT This is a section of the Cyfrin Foundry Solidity Course. *[⭐️ (7:40:56) | Lesson 11: Foundry NFT](https://www.youtube.com/watch?v=sas02qSFZ74&t=27656s)* We go through creating 2 different kinds of NFTs. 1. An IPFS Hosted NFT 2. An SVG NFT (Hosted 100% on-chain) - [Foundry NFT](#foundry-nft) - [Getting Started](#getting-started) - [Requirements](#requirements) - [Quickstart](#quickstart) - [Usage](#usage) - [Start a local node](#start-a-local-node) - [Deploy](#deploy) - [Deploy - Other Network](#deploy---other-network) - [Testing](#testing) - [Test Coverage](#test-coverage) - [Deployment to a testnet or mainnet](#deployment-to-a-testnet-or-mainnet) - [Scripts](#scripts) - [Base64](#base64) - [Estimate gas](#estimate-gas) - [Formatting](#formatting) - [Thank you!](#thank-you) # Getting Started ## Requirements - [git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) - You'll know you did it right if you can run `git --version` and you see a response like `git version x.x.x` - [foundry](https://getfoundry.sh/) - You'll know you did it right if you can run `forge --version` and you see a response like `forge 0.2.0 (816e00b 2023-03-16T00:05:26.396218Z)` ## Quickstart ``` git clone https://github.com/Cyfrin/foundry-nft-f23 cd foundry-nft-f23 forge install forge build ``` # Usage ## Start a local node ``` make anvil ``` ## Deploy This will default to your local node. You need to have it running in another terminal in order for it to deploy. ``` make deploy ``` ## Deploy - Other Network [See below](#deployment-to-a-testnet-or-mainnet) ## Testing We talk about 4 test tiers in the video. 1. Unit 2. Integration 3. Forked 4. Staging This repo we cover #1 and #3. ``` forge test ``` or ``` forge test --fork-url $SEPOLIA_RPC_URL ``` ### Test Coverage ``` forge coverage ``` # Deployment to a testnet or mainnet 1. Setup environment variables You'll want to set your `SEPOLIA_RPC_URL` and `PRIVATE_KEY` as environment variables. You can add them to a `.env` file, similar to what you see in `.env.example`. - `PRIVATE_KEY`: The private key of your account (like from [metamask](https://metamask.io/)). **NOTE:** FOR DEVELOPMENT, PLEASE USE A KEY THAT DOESN'T HAVE ANY REAL FUNDS ASSOCIATED WITH IT. - You can [learn how to export it here](https://metamask.zendesk.com/hc/en-us/articles/360015289632-How-to-Export-an-Account-Private-Key). - `SEPOLIA_RPC_URL`: This is url of the goerli testnet node you're working with. You can get setup with one for free from [Alchemy](https://alchemy.com/?a=673c802981) Optionally, add your `ETHERSCAN_API_KEY` if you want to verify your contract on [Etherscan](https://etherscan.io/). 1. Get testnet ETH Head over to [faucets.chain.link](https://faucets.chain.link/) and get some tesnet ETH. You should see the ETH show up in your metamask. 2. Deploy (IPFS NFT) ``` make deploy ARGS="--network sepolia" ``` 3. Deploy (SVG NFT) ``` make deploySvg ARGS="--network sepolia" ``` ## Scripts After deploy to a testnet or local net, you can run the scripts. Using cast deployed locally example: ``` cast send <RAFFLE_CONTRACT_ADDRESS> "enterRaffle()" --value 0.1ether --private-key <PRIVATE_KEY> --rpc-url $SEPOLIA_RPC_URL ``` or, to create a ChainlinkVRF Subscription: ``` make createSubscription ARGS="--network sepolia" ``` ## Base64 To get the base64 of an image, you can use the following command: ``` echo "data:image/svg+xml;base64,$(base64 -i ./images/dynamicNft/happy.svg)" ``` Then, you can get the base64 encoding of the json object by placing the imageURI into `happy_image_uri.json` then running: ``` echo "data:application/json;base64,$(base64 -i ./images/dynamicNft/happy_image_uri.json)" ``` ## Estimate gas You can estimate how much gas things cost by running: ``` forge snapshot ``` And you'll see and output file called `.gas-snapshot` # Formatting To run code formatting: ``` forge fmt ```
About
basic IPFS NFT + SVG Mood NFT that can switch mood
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published