aikoz Profile picture
Apr 16 • 14 tweets • 5 min read
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 ! Image
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)

Fin de l'explication on va continuer notre projet
4/ On reprend donc le projet du thread 5, ils se suivent tous depuis le thread 1 ou on l'a fait from scratch pour ceux qui veulent suivre le tuto depuis le début )

Dans un premier temps on va créer notre token ERC20.
5/ On import la lib openzeppelin de l'ERC20 puis on créer notre contrat en indiquant qu'il est un ERC20.
Ensuite on fait un constructor pour créer l'ERC20, le premier paramètre c'est le nom complet et le deuxieme c'est son initial (celui que vous voyez sur metamask)
6/ J'ai fais une fonction external nommé wonCombat qui mint du token au gagnant( et oui mint c'est pas que pour les erc721) à une certaine adresse. (screen 1)

Puis je créer l'interface, je prend donc seulement la déclaration de la fonction.

ça ressemble donc à ça
(screen 2) ImageImage
7/ Je vais donc ensuite importer l'interface dans mon contrat ERC721 et créer une instance de celui ci ( screen 1)
C'est vachement utile dans les projet pour améliorer ses contrats.

Je vais ensuite faire un setter de celui ci et faire un semblant de fonction de combat.(screen 2) ImageImage
8/ La fonction combat prend 2 id et récupère les stats des joueurs.

Puis il regarde qui a la plus grande force et si c'est l'id 1 ça appel la fonction de notre contrat ERC20 pour mint à l'adresse du proprio de l'id 1.
Sinon si il perd c'est la mĂŞme mais pour le proprio de l'id 2
9/ On va donc tester tout ça, tout d'abord on va se simplifier la tache et presque tout faire par notre fichier de test.

On va donc déployer nos 2 contrat à la suite ( n°1 pour l'erc20 et n°2 pour l'erc721)

Puis on va relier nos 2 contrat ( via l'interface) n°3 Image
10/ Ah oui pourquoi le toString dans le n°3?

Car avec ether.js quand on appel la fonction de contrat, ce qui nous est renvoyé n'est pas compris par le js car par les int ça renvoie un bignumber et non un int
Pour cela il faut faire parseInt pour les int
toString pour les string
11/ On lance notre contrat puis via l'adresse du token généré on va l'ajouter sur notre wallet M ( via import token ).

et hop on voit qu'on en as 0

maintenant on va vérifier notre contrat erc721( thread n°2 pour rappel). Image
12/ Une fois vérifier on se rend sur notre etherscan et on va appeler la fonction fight en passant nos 2 perso ( si vous voulez vous pouvez mint des perso sur plusieurs wallet et vous verrez que ça fonctionne en multi) Image
13/ Et tadamm la fonction est opérationnelle
On à bien reçu nos tokens ERC20. Image
14/ Dans le prochain thread on va voir comment sécuriser notre contrat pour que la portée des fonctions soit bonnes

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with aikoz

aikoz Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @Aikoz93

Apr 13
1/ [Thread] Projet solidity partie 5đź’»:
Aujourd'hui on va upload les metadata de nos nft
2/ Tout d'abord les metadata d'un nft c'est quoi?

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
Read 14 tweets
Apr 13
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
Read 11 tweets
Apr 11
1/ [Thread] Projet solidity partie 4đź’»:

Aujourd'hui on va créer un constructor et voir à quoi ça sert puis pour finir nos players vont devenir des #nft via l'implémentation du contrat ERC721 Image
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. Image
Read 13 tweets
Apr 7
1/ [Thread] Projet solidity partie 3đź’» :

Maintenant qu'on a vu comment bien utiliser l'environnement de test, on va pouvoir commencer à apprendre les particularités de #Solidity.

Aujourd'hui on va comprendre les modifiers et le mapping Image
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: ⏬ Image
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
Read 14 tweets
Apr 6
1/ [thread]
Yop suite au thread d'hier on va maintenant apprendre à mettre notre contrat en ligne et à le vérifier sur #hardhat !
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 Image
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 Image
Read 20 tweets
Apr 6
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
Read 20 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us on Twitter!

:(