Expérimentation Blockchain - Partie 2

Steve Grosbois

Publié le 7 février 2022 - 3 min de lecture

Si vous avez lu la première partie, vous êtes normalement un peu familiarisé avec quelques-uns des termes que nous allons utiliser pour expliquer nos deux premières expérimentations de développement de contrat intelligent.

Création d’un token ”Playmo”

Pour notre toute première expérimentation, nous avons voulu commencer par faire simple, car le but était ici d’explorer les langages, outils et frameworks disponibles dans ce domaine.

Truffle est un outil facilitant l’écriture et le déploiement de contrats intelligents sur les blockchains compatibles EVM comme celle d’Ethereum par exemple.

Cet outil nous a donc permis en premier lieu et en une ligne de commande de créer la structure de notre projet.

Vient ensuite l’écriture du code du contrat intelligent où il nous a fallu en apprendre un peu plus sur le langage Solidity et le framework qui semble faire consensus dans le milieu : OpenZeppelin

Ce framework fournit des classes et interfaces qu’il suffit d’étendre ou d’implémenter pour assurer une solidité et un respect des standards ERC.

Pour notre token, il nous a donc suffi d’étendre la classe ERC-20 en y précisant le nom, le symbole et la quantité de tokens et le tour était joué.

Facile de créer son token si on a toutes les cartes en main
Facile de créer son token si on a toutes les cartes en main

L’étape suivante consistait à compiler et tester notre nouveau token Playmo !

Ganache est un outil de la suite Truffle permettant de créer une blockchain de test en local et ainsi d’examiner le comportement de notre contrat.

Une autre ligne de commande et voilà notre contrat compilé et déployé sur notre blockchain hébergée sur notre poste de travail.

C’est alors qu’il nous faut tester d’envoyer quelques-uns de nos tokens d’une adresse à une autre avec un wallet !

Pour cela, nous avons utilisé le plus célèbre : Metamask qui se présente sous la forme d’un plugin chrome. Après l’avoir configuré pour interagir avec notre blockchain locale, on a pu vérifier que notre token se comportait normalement et que les transferts fonctionnaient correctement.

L’étape suivante consiste à se jeter dans le grand bain et le déployer sur une blockchain publique.

Du fait que ce premier token reste une expérience et pour des raisons de coût de déploiement, nous avons choisi de déployer ce contrat sur une blockchain de test publique, celle de Polygon nommée “Mumbai”.

Vous pouvez retrouver le contrat 0xA4fC48294D2cdf80297b3ac5Ded7b5847B26027f déployé sur l’explorateur Polyscan

On peut même vous envoyer quelques-uns de nos tokens Playmo si vous avez une adresse 😄

Création d’un NFT

Pour notre deuxième expérimentation, nous nous sommes attaqués à un sujet légèrement plus complexe mais totalement d’actualité puisqu’il s’agit des fameux NFT.

Ce coup-ci, nous avons utilisé la suite Hardhat qui s’est révélée plus simple et davantage dans l’air du temps que Truffle, au moins parce qu’on a réussi à l’utiliser avec une version plus récente de Solidity.

Nous avons gardé l’utilisation du framework OpenZeppelin en implémentant cette fois le standard ERC-721.

nft
Les contrats ERC-721 sont légèrement plus complexes que ceux des ERC-20

La création d’un NFT se fait en deux étapes, car il faut d’abord déployer le contrat permettant la création de notre collection de NFT, avant de générer les NFTs eux-mêmes.

Car contrairement aux tokens ERC-20 qui existent par l’intermédiraire du contrat les définissant, les NFTs de notre contrat doivent être générés “mintés” avec des metadonnées qui leur sont propres. Chaque token NFT de notre contrat est, en effet, différent des autres.

Ces metadonnées doivent respecter un standard afin de pouvoir être interprétées sur les différentes plateformes pouvant interagir avec. Elles se présentent sous la forme d’un fichier JSON qu’il va falloir héberger quelque part.

Si votre fichier JSON peut être accessible de manière classique avec le protocol HTTP, il est préférable de le stocker de manière décentralisée et d’en faire référence à travers le protocol IPFS.

Nous avons utilisé Pinata pour héberger le fichier JSON de metadonnées de notre NFT.

Une fois l’url IPFS de nos metadonnées connue, il nous suffit d’appeler la fonction mint(url) de notre contrat déjà déployé en lui passant cette url pour créer le premier NFT de notre collection.

Vous pouvez retrouver le contrat 0xb9b84a35cfc78d3ac11e4497f3198d1628672eaa de notre collection sur Polyscan.

Nous n’avons minté qu’un seul NFT pour le moment, et celui-ci, on le garde pour nous 😇

Et la suite ?

Nous avons des projets plus ambitieux dans ce domaine et il nous reste encore beaucoup de choses à apprendre et expérimenter.

Il ne fait nul doute qu’on en reparlera ici, donc restez à l’écoute.