Works to uncover in this project:
- Creating a ERC-721 and ERC-1155 contract with Brownie and OpenZeppelin. Deployed on Sepolia Testnet.
- Generating NFT metadata and pinning files into IPFS (pinata)
There are 3 types of NFT collectibles:
- Simple Collectible (
scripts/simple_collectible/
)- A simple ERC-721 where users manually defined the Token URI everytime they mint a token.
- There is no verification method on this collectible, therefore anyone can mint the token and impose any URI on it freely.
- Advanced Collectible (
scripts/advanced_collectible/
) - Puppies Demo on OpenSea testnet- An ERC-721 token that will randomly choose an image (in
img/
) using VRF Coordinator V2 everytime a token is minted. - The scripts are capable of generating the suitable metadata for each minted token, automatically pin it to IPFS, and set the token URI.
- Only owner and approved (available in
ERC721URIStorage
) senders that can set the token URI.
- An ERC-721 token that will randomly choose an image (in
- Multi Collectible (
scripts/advanced_collectible/
) - Puppies Multi Token on OpenSea testnet- An ERC-1155 token that will randomly choose which token will be minted everytime a user tries to create a collectible.
- All the available assets should be pinned to IPFS before deployment, since the contract does not use URI storage.
- Token URI will be automatically generated using the initialized base URI and token's contract ID.
- The mint function,
createCollectible()
, ispayable
and the paid ETH amount will be used to determine the amount of NFT tokens to be minted according to the selected collection ID. - The token base URI can be updated after deployment by the owner only.