Déployer un smart contract Solidity avec Remix et Metamask

2

Après avoir développé sur solidity avec Remix, nous allons voir comment déployer notre contrat sur la blockchain Ethereum.

Installer Metamask

Tout d’abord nous souhaitons interagir avec la blockchain réelle sans devoir télécharger l’ensemble des blocs, ce que nous pouvons faire par l’intermédiaire de l’extension Metasmask pour navigateur (chrome et firefox) que vous pouvez télécharger ici : https://metamask.io/

Une fois téléchargé, sur Google Chrome, cliquer sur ‘Ajouter à Chrome’:

Vous devrez ensuite accepter les conditions d’utilisation :

A la création de votre portefeuille virtuel, une suite de mot qui constitue une phrase de sécurité s’affiche, vous devriez simplement l’écrire sur une feuille et la garder précieusement, ce sera le seul moyen de récupérer votre compte si vous perdez votre mot de passe. Ne la conservez pas non plus sous forme numérique :

Une fois connecté vous verrez votre adresse Ethereum et le solde en Ether de votre compte, qui devrait être à zéro.

Cliquez en haut à gauche de la fenêtre de l’extension pour sélectionner le réseau ‘Ropsten’, la blockchain de test.

Déployer son contrat intelligent dans la blockchain Ethereum depuis Remix

Récupérer des ethers gratuits sur Ropsten

Maintenant que notre contrat est développé et que notre passerelle vers la blockchain est connectée, nous allons le déployer.

Nous allons tout d’abord récupérer quelques Ethers gratuits à dépenser sur Ropsten. En étant connecté à votre compte sur Metamask, rendez vous sur cette adresse : https://faucet.metamask.io/
Cliquez sur ‘request 1 ether from faucet’

Vous verrez plus bas dans la page dans le bloc ‘transactions’ une adresse sous la forme ‘0x9539f7088…’ , il s’agit de l’adresse de la transaction en cours.

Utilisation de Etherscan.io pour suivre des transactions

Cliquez sur le lien présent dans le bloc transaction, vous arriverez sur le site Etherscan.io qui permet de voir les transactions, adresses etc..

Par exemple, sur l’adresse https://ropsten.etherscan.io/tx/0x9539f7088fc2ab3f603f48f5be140d279677ab29850a30fdb32c16cc47abc6fe vous verrez la transaction utilisée pour ce tutorial ou l’adresse From contient l’adresse du Faucet qui transmet l’Ether gratuit, et dans ‘To’ mon adresse.

Etherscan permet aussi de voir toutes les transactions pour une adresse, par exemple vous verrez toutes les transactions tests de ce tutorial ici :
https://ropsten.etherscan.io/address/0x52AFE3D3D38dF16662729127950DEE63F702F281

Déploiement depuis Remix

Maintenant que Metamask est configuré et connecté, retournez sur Remix pour retrouver notre contrat. Pour rappel, voici le code complet du contrat créé dans le tutoriel précédent (attention voir après les modifications récentes pour la nouvelle version de Solidity) :

pragma solidity ^0.4.0;

contract Message {

    string public lemessage;
    event MessageModifie(string _nouveaumessage);

    function Message(string _messageoriginal) public {

        lemessage = _messageoriginal;

    }

   function definirMessage(string _nouveaumessage) public{

       lemessage = _nouveaumessage;

       MessageModifie(_nouveaumessage);

   }

    function voirMessage() public view returns (string){  

        return lemessage;

    }

}

Modification du 17/12/2018

Le code précédent a été modifié pour tenir compte de la nouvelle version de Solidity avec plusieurs changements majeurs:
– On déclare désormais solidity en 0.5 au début du code
– Le constructeur ne plus porter le même nom que la fonction, il est déclaré par « constructor »
– Les variables en paramètres doivent préciser le mode de stockage, à savoir ici « memory » (voir les modes de stockage en solidity )

pragma solidity 0.5;

contract Message {

    string public lemessage;
    event MessageModifie(string _nouveaumessage);

    constructor(string memory _messageoriginal) public {

        lemessage = _messageoriginal;

    }

   function definirMessage(string memory _nouveaumessage) public{

       lemessage = _nouveaumessage;

       emit MessageModifie(_nouveaumessage);

   }

    function voirMessage() public view returns (string memory){  

        return lemessage;

    }

}

Compilez le, puis dans l’onglet Run, dans la partie Environnement, sélectionnez ‘Injected Web3 (Ropsten)’ (il devrait l’être par défaut si vous rechargez la page après vous être connecté à Metamask).

Ensuite, dans le champ texte à gauche du bouton ‘Create’, entrez le premier message du contrat, et cliquez sur ‘Create’, si tout se passe bien, une fenêtre Metamask vous demandera de confirmer la transaction :

Cliquez sur Submit pour valider, et patientez quelques secondes.

Toujours dans l’onglet Run, vous verrez apparaître en bas de la colonne de droite votre contrat avec son adresse que vous pouvez copier en cliquant sur l’icône feuille à droite :

Cela vous permettra de la coller dans le champ de recherche de Etherscan pour suivre toutes les transactions liés au contrat, par exemple pour le contrat du tuto :
https://ropsten.etherscan.io/address/0x7886dee4630af223a57eeee059267213c5a66a29

Utilisez ensuite la fonction definirMessage en entrant un nouveau message, Metamask vous demandera de confirmer à nouveau la transaction en échange de quelques ETH.

Vous retrouverez alors l’historique de toutes les transactions sur la page Etherscan, vos messages sont et ne pourront plus être effacés de la blockchain, en tout cas si vous utilisez votre contrat dans la vrai blockchain.

2 Commentaires

  1. Bonjour, bravo pour ce tuto que tu as fait! je suis heureux de pouvoir faire enfin un smart contract et son déploiement. Je m’étais initier au langage solidity par le biais d’un jeux « CryptoZombies » et j’étais bloqué lors du déploiement entre remix et MetaMask et cela depuis 1 an.

    Merci pour tes efforts et ton travail!

LAISSER UN COMMENTAIRE

Please enter your comment!
Please enter your name here

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.