2/ Donc on va aller dans le fichier "hardhat.config.js" à la racine de notre dossier. On devrait avoir une page comme sur le screen.
là rien d'affolant on voit juste un json avec la version par défaut dans laquelle est compilé #solidity par hardhat est en 0.8.4
3/Sur le screen ci dessous on peut voir que j'ai rajouté plusieurs ligne, on va comprendre à quoi elles servent.
Donc tout d'abord on peut voir que pour la configuration de solidity j'ai modifié la version et rajouter le paramètres settings, je l'ai mis en enabled et en run:200
4/Le paramètre run est à configurer selon si c'est un contrat qui va être beaucoup utiliser ou beaucoup déployer, plus le nombre est bas plus le cout de déploiement est moindre mais le cout des fonctions vont l'être et inversement si le nombre est haut
La valeur par defaut = 200
5/ Ensuite on a le path pour modifier la valeur par défaut de différent fichier:
sources: dossier ou sont stocker les contrats qui vont être compilé
tests: dossier ou il y a un fichier de test unitaire
cache: là ou est stocké le cache
artifacts: là ou sont stocké les abi /!\
6/ Les abi sont importantes on verra après pourquoi.
Donc ensuite après le path on a la partie networks on peut voir que j'ai ajouté un réseau rinkeby (on va l'appeler via terminal après), elle a besoin de l'url de RPC ( celle que vous rentrez dans metamask pour add un réseau).
7/ Pour rinkeby c'est différent, il faut d'abord aller sur infora.io, s'inscrire et vous connectez.
à partir de là aller dans new project en haut à droite vous choisissez ethereum,
Ensuite vous aurez une case avec marqué "MAINNET"
Vous la remplacé par rinkeby.
Vous la copiez et la collé à côté à coté de url:
Ensuite pour l'accounts rien de plus simple vous allez sur metam@sk vous prenez votre clé privé et vous la collez dans le tableau.
9/ A partir de là on peut presque déployer notre contrat !
Mais avant ça il va nous falloir des ether sur rinkeby si vous n'en n'avez pas,
Rendez vous sur : faucets.chain.link/rinkeby
Vous connectez votre compte au site et vous faite une requête de eth
Vous devriez en recevoir 0.1
10/ On va maintenant déployer le contrat
Pour cela on va entrer dans le terminal:
npx hardhat run .\scripts\sample-script.js --network rinkeby
Et hop! Votre contrat est en ligne via rinkeby
11/ Vous pouvez voir que seul le débogage du fichier js marche et non celui sur le contrat qui ne fonctionne uniquement qu'en local.
12/ Sur la page nous constatons que les appels de fonction sont automatisés sur l'onglet transaction.
13/ Le soucis est sur la page contrat, nous ne voyons ni le code, ni l'onglet "read functions" and "write functions".
Pour afficher cela il nous faut valider le contrat.
Pour cela allez sur : etherscan.io
Créez vous un compte, aller dans les paramètre puis apy key
14/ Après l'avoir créé, retournez dans le fichier hardhat.config.js et collez le après etherscan.
Pour pouvoir utilisé etherscan il va nous falloir la librairies, pour l'avoir entrez cette commande dans le terminal:
npm i @nomiclabs/hardhat-etherscan
15/ Une fois téléchargé ajoutez: require('@nomiclabs/hardhat-etherscan'); en haut notre hardhat.config.js
16/ C'est bon on peut vérifier notre contrat,
Pour cela entrez cette commande
npx hardhat verify --network rinkeby XXXX
le XXXX est à changer par l'adresse de votre contrat précédemment créé.
Vous devriez voir apparaitre ceci :
17/ Si on va sur l'url donné nous pouvons voir que le code est accessible, et les appels de fonction via interface aussi !
Vous avez aussi l'abi en bas dans l'onglet "code"
18/ Bonus:
L'abi ça sert à quoi?
L'abi est un json ou sont renseigner les paramètres des fonctions etc.
C'est grâce à ça qu'on peut appeler nos fonction via le fichier sample-script.js, vérifier le contrat et le faire communiqué avec notre site.
19/ J'espere que ce second thread vous aura plus :)
J'hésite encore pour le sujet du prochain mais on va continuer d'apprendre des choses autours de ce projet, qui au fur et à mesure sera un projet 100% fonctionnel à la fin
• • •
Missing some Tweet in this thread? You can try to
force a refresh
1/[Thread] Projet #solidity partie 6💻:
Aujourd'hui on va créer un token #ERC20 ( une cryptomonnaie ), et faire en sorte d'en gagner quand on va faire combattre nos #nft !
2/ Avant de vous montrer comment faire je vais vous expliquer la notion d'interface.
Une interface c'est un fichier qui peut prendre toute les fonctions external d'un smart contract (A) on prend seulement la déclaration de la fonction et non le code à l'intérieur.
3/ Avec cette interface on va pouvoir l'import dans un autre smart contract(B) et appeler des fonctions du smart contract(A) depuis le smart contract(B)
Les metadata sont les données que le smart contract attribue à un nft, cela comprend l'image, le nom, les attributs du nft, etc
On va donc voir comment ça marche ci dessous
3/ Donc en reprenant notre contrat du thread partie 4, on avait pu créer des nft, on va donc implémenter la fonction tokenURI, cette fonction permet de récupérer le lien d'un fichier json ( ou le json sans passer par un fichier)
json: format de fichier pour passer des données
1/ [Thread]
Hier j'ai utilisé les fonctions sur le contrat depuis etherscan ( pour avoir des nft avec un id faible) sur @KujiraNoKonton car le site n'était dispo que pour les freemint pendant les 5 premières minutes, on va voir comment ça fonctionne en détail 🔽
2/ Donc comment je déjà pour savoir quel fonction je vais utiliser, je check les différentes fonctions de mint
étant donné que j'ai la wl regular, je sais que j'avais 3 mint à -10%, donc je regarde les lignes avec le numberMinted() et je vois que la fonction wlMint est limité à 3
3/ Je commence à bien analysé la fonction et les require pour voir si la tx comment faire passer la tx.
Donc déjà si on regarde la première ligne, on remarque qu'il faut que la variable public sale open soit à true, je vais check son état et bingo elle est à true
2/ Donc tout d'abord on va voir à quoi sert le constructor et comment l'implémenter.
Le constructor c'est une 'instance d'initialisation', pour faire simple c'est une sorte de fonction par laquelle lorsque le contrat est mis en ligne va obligatoirement passer dedans au début
3/ Pour que ça vous parle un peu plus j'ai créé un constructor prenant 2 paramètres et appelant 2 fois la fonction pour créer des players, lors de son exécution.
2/Donc on reprend le contrat qu'on a commencé au thread 1 ( sur les test et le débogage sur hardhat ).
On à du coup notre contrat qui doit ressembler à ça: ⏬
3/ A la ligne 14 nous pouvons voir un mapping, c'est en fait un tableau tout simple avec une clé qui relie une valeur.
Par exemple dans le mapping utilisé dans notre contrat nous pouvons voir qu'un nombre relie un player qui est une structure, on verra ça dans le prochain thread
1/Hello, voici un petit thread dans lequel je vais vous présenter comment faire du débogage avec hardhat et comment automatiser ses tests.
2/Tout d'abord Hardhat c'est quoi?
Hardhat est une librairie permettant d'upload des contrats ainsi qu'automatiser les tests.
3/Les prérequis:
Pour suivre ce tutoriel, vous n'aurez besoin que de node js ( et d'un ide comme visual studio code) .
Lien pour nodejs: nodejs.org/en/
Lien pour visual studio code: code.visualstudio.com