Je pars du principe que vous connaissez la blockchain et l'adresse du contrat, mais du coup...
Comment savoir si ce dernier est bien vérifié ? Et qu'est-ce que “vérifier son contrat” ?
4/22
> Un contrat vérifié ? Kesako ?
Vérifier un contrat c'est rendre le code de ce dernier accessible à tous !
Pas de surprise avec un contrat vérifié, vous pouvez lire le code pour vous assurer qu'il n'y a pas de fonction étrange qui pourrait laisser croire à un scam/rug...
5/22
Mais attention, un contrat non vérifié n'est pas spécialement un redflag ! Parfois ne pas montrer le code au grand public peut protéger (un peu) de certaines attaques.
Mais il permet surtout de garder la propriété de votre code, personne ne pourra le lire!
6/22
Pour résumer :
Contrat vérifié -> Transparence et accessibilité.
Contrat non vérifié -> Code non lisible (mais pas spécialement négatif).
7/22
> Comment voir si un contrat est vérifié ?
Pour ça on se rend sur l'explorateur de block de notre blockchain avec l'adresse du contrat. Je vais prendre @HiveFiveNFT en exemple.
On se rend sur #Snowtrace à l'adresse du contrat :
@HiveFiveNFT Voici ce qu'on voit en arrivant sur la page du contrat :
Et d'un coup d'œil nous pouvons voir que le contrat est bel et bien vérifié car il possède la petite pastille verte ✅ de vérification au niveau de l'onglet "contrat" !
⬇️
9/22
@HiveFiveNFT Et si on se rend dans l'onglet "Contrat" > "Code" on peut lire l'entièreté du code du contrat.
Tips : Un très bon exercice pour les devs en formation -> lire les contrats des projets qui se sont bien déroulés !
Les deux onglets intéressants sont "Read Contract" & "Write Contract".
Le premier permet d'appeler toutes les fonctions de lecture, sans même se connecter à MM ou autre, et donc sans payer de gas !
Regardons ça ⬇️
11/22
@HiveFiveNFT On a accès à toutes les fonctions publiques/externes et on va pouvoir les appeler.
Exemple avec la fonction "ownerOf()" qui retourne l'adresse qui possède un NFT en fonction d'un ID.
Ici on rentre l'ID 577, puis on clique sur "query"... et voilà l'adresse ! (C'est moi)
12/22
@HiveFiveNFT Pas plus compliqué que ça pour les fonctions de lecture !
C'est sympa de pouvoir parcourir les différentes fonctions dans un premier temps. Il faut être curieux et tester, on est sur de la lecture donc impossible de faire une bêtise.
La première chose à faire est de se connecter...l'avantage de passer par le contrat, c'est que vous pouvez vous connecter via Wallet Connect si la dApp ne supporte que MM par exemple !
On clique sur le bouton et on se connecte simplement !
14/22
@HiveFiveNFT Et une fois connecté je peux voir avec quelle adresse je suis !
Comme pour la lecture, j'ai accès à toutes les fonctions publiques/externes du contrat.
Attention, certaines sont présentes mais ne sont appelables que par le propriétaire du contrat.
15/22
@HiveFiveNFT Mais ne vous inquiétez pas, MM saura vous dire que vous ne pouvez pas appeler la fonction parce qu’elle est vouée à échouer.
Par exemple, si j'essaie de retirer les fonds du contrat sans être propriétaire, MM m'indique bien que la transaction va échouer.
16/22
@HiveFiveNFT Revenons à un cas pratique... concours des 1000 abonnés, je vous fais gagner un NFT de HiveFive... mais comment le transférer ?
Et bien ici via le contrat !
On regarde comment faire cela
⬇️
17/22
@HiveFiveNFT On utilise la fonction standard d'#ERC721 "safeTransferFrom" avec :
from : mon adresse to : l'adresse du gagnant du concours (abonne-toi ahah) tokenId : l'ID du NFT à envoyer
On clique sur "write"... MM s'ouvre... on valide la transaction...
Notre objectif est de rajouter et modifier certaines caractéristiques :
• Ajouter des étapes de vente.
• Ajouter une vente en whitelist avec un arbre de Merkle.
• Un prix de vente de 0.01 ether en vente publique.
• Un prix de vente de 0.005 ether en whitelist.
2/21
Avant de continuer, si ce n'est pas déjà le cas, je vous conseille fortement de suivre mon premier thread sur la première étape de développement du contrat.
Il permet de poser les bases nécessaires pour comprendre ce qui suit !
Pour commencer, n'oubliez pas d'aller lire / appliquer tout ce qu'on a apprit dans le dernier thread sur comment développer un smart contract ERC721, vous pouvez le retrouver ici :
Notre objectif est de réaliser un contrat ERC721 qui a pour caractéristiques :
• Une supply (nombre de NFT) de 100.
• Un prix de 0.00001 ether (🐀).
• Permettre de mint plusieurs NFTs d’un coup.
• Permettre de récupérer l’argent du smart contract par le propriétaire
2/18
Je vous conseille fortement de suivre directement ce thread avec le code que j’ai déployé sur mon Github :