Dernière étape de notre contrat ERC721 ! Mais pas des moindres... la fonction de mint !
Elle doit regrouper pas mal de mécanismes pour gérer toutes les phases, nous allons la décortiquer !
Avant tout, si vous n'avez pas fait les jours précédents, vous pouvez récupérer le contrat à jour dans le dossier "contracts/Jour14".
La fonction de mint est la fonction que vont appeler les utilisateurs pour créer le NFT !
Comme nous utilisons une fonction unique, il faut qu'elle puisse gérer les différentes phases (whitelist/public), et les différentes restrictions qui vont avec !
Décortiquons ça ! 🔍
Mais avant, voici comme va fonctionner le mint :
Deux phases possibles, whitelist ou public.
En whitelist : 1 seul mint par personne.
En public : autant que souhaité (jusqu'au max supply).
Commençons par la définition.
La fonction "mint" est donc externe et payable car elle ne sera jamais appelée que depuis l'extérieur et elle doit pouvoir recevoir de l'argent.
Elle prend en argument la preuve de Merkle de la whitelist, ainsi que le nombre de NFT souhaité!
On définit un "require" qui empêche d'utiliser la fonction si nous ne sommes pas dans la phase de whitelist ou public.
On récupère le prix grâce à notre fonction "getCurrentPrice".
On récupère le nombre déjà minté en récupérant l'ID du dernier mint grâce à "_tokenIds.current".
Place à ce que nous devons faire en phase de whitelist :
Un require pour être sur que l'utilisateur est WL grâce à "isWhitelisted".
Un require pour être sur que l'utilisateur mint une seule fois.
Un require pour être sur que la supply "whitelist" n’est pas épuisée.
Pour finir avec les require :
Un pour être sur que le nombre de mint actuel + le nombre que souhaite acheter la personne ne dépasse pas la "maxSupply".
Un dernier pour être sur que la personne a bien envoyé assez d'argent, donc "prix x nombres de NFT" !
Une fois que tout est vérifié, il ne reste plus qu'à réaliser une boucle "for" qui va exécuter autant de fois que de NFT voulu les étapes suivantes :
- Récupération du token ID actuel
- Création du token
- Incrémentation (+1) du compteur "_tokenIds"
Puis on déclenche l'évent !
Et j'ai l'impression qu'on peut officiellement déclarer notre premier contrat ERC721 terminé !
Vous pouvez êtes fier de vous si vous avez tenu jusqu'ici (attention, ce n’est pas fini !)
Aujourd'hui, je vais vous montrer comment créer un contrat de NFT qui autorise le paiement en #stablecoin à la place de l'ether pour éviter la volatilité (👀).
Suivez ce thread pour apprendre comment mettre en place cette solution technique simplement.
🧵👇
Mise en situation :
Vous lancez une collection de NFT sur la blockchain #Ethereum... mais vous avez besoin d'un montant très précis, 100$ par NFT, pas plus, pas moins.
Et la se pose un problème, un mint en ether induit forcément la variation du cours...
Heureusement, il existe une solution à votre problème...
Avant tout, je vous conseille de lire le super thread de @TCryptomonnaies sur le projet.
Mais ce n'est pas tout, c'est moi qui ai développé le Smart Contrat, vous comprenez pourquoi je suis très heureux de pouvoir vous offrir ce free mint !
25 jours pour apprendre à développer des Smart Contracts en #Solidity 🔥
Jour 25 / 25 : Récap de l'aventure, et thread de mes 24 threads ! ❤️
Retweet et like ça t'a plu ! 💪
🧵
Avant tout, je tiens à re-remercier énormément @CryptoLidl pour les 25 vidéos illustratives du calendrier !
Il est disponible pour vous assister dans la création de contenu (support visuel, montage, etc.).
Si vous êtes intéressé, n'hésitez pas à le contacter via Twitter.
Je sais que le format Twitter n'est pas l'idéal pour beaucoup, ne vous inquiétez pas, je travaille à passer tout ceci en format article pour que cela soit bien plus simple à suivre/réaliser !