Développer un smart-contract avec Remix
Acheter Ethereum (ETH)
Publicité eToro
Pour réellement comprendre le fonctionnement des différents smart-contracts qui existent, et des blockchains sur lesquelles ils sont déployés, il est préférable d'en développer soi-même. Malgré les ressources et outils qui simplifient ce processus, développer un smart-contract n'est pas très aisé pour le néophyte, car il faut souvent télécharger et installer des logiciels externes pour parvenir à ses fins. Cependant, il existe un très bon site internet qui nous simplifie la tâche : il s'agit de l'environnement de développement Remix.
Vous pouvez utiliser Remix pour développer, compiler, déployer et tester des smart-contracts Ethereum. Cela permet de faciliter la découverte du développement blockchain puisque n'importe qui peut se lancer dans cette activité sur n'importe quel support. Malgré une interface peu digeste, les fonctionnalités sont nombreuses entre le choix du compilateur et le débogueur dans la fenêtre. Remix est un environnement de développement intégré très complet pour un format web.
C'est notamment un outil très pratique lors d'introductions au développement et de workshops blockchain. En revanche Remix a ses limites pour le développement d'applications décentralisées et autres projets d'envergure. Mais voyons ensemble les caractéristiques de ce site web bien particulier.
Qu'est ce que Remix ?
Nous avons vu rapidement ce à quoi Remix peut servir. Voici la liste des principales fonctionnalités que nous propose l'IDE :
- Une interface dans laquelle nous pouvons développer en Solidity.
- Un compilateur de notre choix pour nos smart-contracts.
- Un outil de récupération du code compilé des contrats pour les déployer.
- Un débogueur inclus pour analyser et corriger notre code.
- Une fonction d'analyse des transactions, des frais de gas etc.
- Un mode nuit.
- Un outil de déploiement sur une blockchain utilisant différents moyens.
- Une utilisation simplifiée des smart-contracts OpenZeppelin.
- Tout ça réuni sur une seule et même interface Web.
C'est assez intéressant, car il s'agit de nombreuses fonctionnalités pour une simple interface. On retrouve ce auquel on s'attend, à savoir les outils pour développer un smart-contract, pour compiler son code et éventuellement le déboguer. Mais il existe des fonctionnalités plus exotiques, comme le fait de pouvoir choisir en un clic le compilateur de notre choix par exemple. Et c'est très pratique, puisque cela permet de rapidement utiliser un ancien code ou celui d'un autre développeur lors de l'apprentissage par exemple. Mais également de voir les changements qu'a subi Solidity au fur et à mesure des mises à jour.
C'est donc un IDE web qui comporte de nombreuses fonctionnalités indispensables au développeur Solidity et plus généralement au développement de smart-contract. Il est complètement adapté aux débutants malgré son interface graphique pas forcément très claire au premier abord. Son utilisation évite l’installation de nombreux outils externes tels que Truffle, NodeJs ou encore d'autres que vous pouvez retrouver dans mon article sur les outils du développeur Ethereum.
Interface de Remix
Voici l'interface graphique du site Remix disponible à l'adresse https://remix.ethereum.org :
Je vous le concède, ce n'est pas l'interface la plus simple et compréhensible qui existe, mais je vais vous présenter les différentes parties de cette dernière :
1 - Le gestionnaire de fichiers
Il permet de travailler sur différents fichiers en même temps, mais également d'accéder à des contrats de la communauté, notamment ceux développés par OpenZeppelin.
2 - La zone de traitement de texte
C'est tout simplement un éditeur de texte qui vous permet d'écrire et modifier le code de vos contrats.
3 - Le terminal de développement
C'est une console qui accueillera vos commandes. Elle vous permet de interagir rapidement avec vos contrats et même l'ensemble du réseau Ethereum.
4 - Le choix du compilateur
Cette option très utile si vous souhaitez utiliser des anciens contrats. Vous avez donc accès à tout les compilateurs existants, et cela permet de réaliser des tests sur des contrats compilés avec différentes versions.
5 - Les paramètres de test
Cet onglet est très important pour le déploiement de vos contrats. Vous pourrez modifier des paramètres tels que le réseau sur lequel déployer le contrat, votre adresse et les frais de gas de la transaction. Mais également le ou les différents contrats que vous souhaitez déployer.
6 - Le choix d'analyse de déploiements et tests
Vous pouvez choisir ou non certaines fonctionnalités dans différentes catégories : sécurité, frais, général, ERC.
7 - Le menu de tests unitaires
Vous pouvez créer et utiliser des fichiers de tests unitaires afin d'interagir de façon automatique avec vos contrats.
8 - Le débogueur
Outil plus complexe pour les débutant, il n'est pas forcément essentiel, mais très utile pour suivre de manière très précise le fonctionnement de vos contrats.
9 - Les paramètres de Remix
C'est dans ce panel que vous pourrez personnaliser l'interface de Remix. Comme l'ajout de plugins extérieurs par exemple, ou le mode nuit. Vous pouvez également connecter votre compte Github pour directement récupérer votre code depuis la plateforme de partage.
10 - L'onglet support et communauté
Vous retrouverez des liens utiles vers la documentation, des espaces de discussions et d'autres ressources.
Vous pouvez retrouver sur l'image suivante toutes les fenêtres du dessus à l'aide des numéros correspondants :
Développement d'un smart-contract avec Remix
Voyons désormais comment développer un smart-contract en utilisant le site Remix. Nous allons créer un contrat très simple, juste pour montrer le fonctionnement de Remix et non de Solidity. Si vous ne comprenez pas tout, je vous conseille de consulter les différents articles que j'ai réalisé sur le développement de smart-contracts, ou comment apprendre Solidity.
Cliquez sur l'icône "+" en haut à gauche du navigateur afin de créer un nouveau fichier. J'appellerai ce fichier Cryptoast.sol pour ma part, mais vous pouvez le nommer comme bon vous semble.
Nous allons donc pouvoir développer un smart-contract en Solidity. Développons un contrat tout simple, qui stockera en mémoire un nombre, et qui possèdera une fonction retournant ce dernier. Nous ajoutons également une fonction qui permet de modifier la valeur de ce nombre en faisant appel à la fonction Set :
pragma solidity ^0.5.0; contract SimpleStorage { uint storedData; function set(uint x) public { storedData = x; } function get() public view returns (uint) { return storedData; } }
Vous pouvez désormais compiler ce contrat en utilisant un compilateur ayant une version supérieure à 5.0.0, ce qui ne devrait pas poser d'erreurs et une notification sous la forme bandeau de couleur verte vous le confirmera. Vous devriez avoir une interface désormais similaire à celle ci :
Déploiement d'un smart-contract avec Remix
Afin que nous faciliter le déploiement, nous allons utiliser l'extension de navigateur Metamask. Cela nous permet de générer des adresses Ethereum et de facilement se connecter aux différents réseaux disponibles. Si vous n'avez jamais utilisé Metamask, je vous conseille de suivre le tutoriel sur cet outil.
Ensuite il nous faudra nous rendre dans le menu run, noté n°5 dans la partie interface graphique. Il faut modifier l'option environnement, en sélectionnant l'option Injected Web3 puisque l'on utilise Metamask. Le compte devrait se mettre à jour de façon automatique avec celui de votre extension. Mon interface est désormais la suivante :
Metamask vous demandera une confirmation de la transaction, un pop-up apparaîtra sur votre écran, il vous suffira de cliquer sur le bouton submit :
Il vous suffira d'attendre la confirmation de la transaction, que vous pourrez suivre en cliquant sur le lien que la console vous affichera. Une fois la transaction validée, vous obtiendrez une confirmation comme ci-dessous :
Test du smart-contract
Ensuite, pour tester notre contrat directement sur Remix, il faudra nous rendre dans l'onglet Run. Remix nous permet de faire directement appel aux différentes fonctions des contrats que nous avons déployés. Vous devriez donc retrouver dans la partie deployed contracts les fonctions de votre contrat. En ce qui concerne mon exemple, on retrouve bien les deux fonctions get et set, ainsi qu'une fenêtre pour indiquer les paramètres si ces fonctions en possèdent.
Ici j'ai mis le nombre 42 en paramètre pour un appel de la fonction set. En appuyant sur le bouton rouge transact, Metamask va vous demander confirmation de la transaction via un pop-up. Une fois confirmé, la console de Remix affiche le lien vers le suivi de transaction, comme pour le déploiement du contrat. Une fois validé par le réseau, l'appel à la fonction est réalisé et nous récupérons donc le nombre stocké dans le contrat. La console affiche un récapitulatif de l'opération :
Nous avons donc pu facilement appeler une des fonctions de notre contrat fraîchement déployé sur le réseau. On retrouve de nombreuses informations très intéressantes, notamment sur les frais de la transaction, qui sont beaucoup plus faibles qu'un déploiement de contrat.
Notre contrat est donc parfaitement fonctionnel, même s'il n'est pas très évolué. N'hésitez pas à l'améliorer ou à développer vos propres contrats pour plus de fonctionnalités.
Voilà c'est tout pour cette présentation de Remix ! Un outil donc très performant pour son format, accessible sur un simple navigateur web. Évidemment ce n'est pas le plus pratique pour des projets d'envergures. En revanche c'est idéal pour débuter, mettre en place des ateliers avec des débutants dans la programmation de smart-contracts. Mais la gestion de plusieurs fichiers et l'intégration des contrats OpenZeppelin permettent désormais d'aller plus loin, ce qui fait que des projets moyens peuvent être développés en utilisant seulement Remix.
Merci pour cette belle présentation très édifiante qui donne l'essentiel pour débuter!