Deployer un Smart Contract sur Ropsten un testnet d’Ethereum

Bookmark and Share

Dans mon post précédent j'avais exposé les étapes pour développer et tester un Smart Contract du prêt solidaire Daret dans l'IDE REMIX. L'objectif maintenant est de le deployer sur une vraie blockchain. C'était plus facile que je ne croyais.

Les étapes principales seront :

  1. Créer quelques comptes.

  2. Les alimenter en ETH sur une blockchain de test.

  3. Déployer le Smart Contract.

  4. Executer l'inscription, le paiment mensuel et vérifier le bon fonctionnement.

Sur la blockchain Ethereum principale (mainnet) l'ETH  correspond réellement à de l'argent, cela rendrait le test assez coûteux. Heureusement qu'il existe des "testnet" : des blockchain de test ou l'on peut obtenir des ETH gratuitement mais qui ne peuvent bien entendu pas être échagés contre de la devise classique. C'est ce que j'ai utilisé.

Créer des comptes de Blockchain (des adresses)

Pour cela il faut un logiciel spécial (dit wallet). J'installé l'extension de navigateur MetaMask pour cela. 

Pour cela :

  1. J'ai ouvert https://metamask.io

  2. Cliqué sur installer l'extension et fait l'installation.

  3. Un wizard guide pas à pas pour créer un premier compte.

  4. A la fin MetaMask va vous proposer d'alimenter votre compte en ETH sur des places de marché. On n'en a pas besoin pour le test, il suffit de fermer la fenêtre :

 

Par défaut MetaMask se met sur la blockchain principale (mainnet), pour tester, j'ai basculé sur "Ropsten Test Network" grâce au menu en haut à droit de la page MetaMask.

Enfin, pour créé des comptes additionnels il faut cliquer sur "Create account" dans le menu en haut à droite :

Obtenir de l'ETH de test sur les comptes de test :

  1. Il faut aller au le Faucet Ropsten sur https://faucet.ropsten.be/,

  2. MetaMask avait déjà renseigné l'adresse du compte actuellement actif.

  3. J'ai cliqué sur "Send me test ether" et mon premier compte a été alimenté après quelques secondes.

  4. Malheureusement, faucet ne permet d'obtenir qu'un seul ETH par jour. Pour alimenter mes comptes de test j'ai donc transféré 0.2 ETH depuis mon compte principal sur chacun des comptes de test en utilisant le bouton "SEND":

  5. Une astuce tout de même : il suffit de cliquer sur le champs "Recipient Address" pour que MetaMask list les comptes existants : donc pas la peine de copier manuellement les adresses :

Modification du Smart Contract

Dans le le Smart Contract du post précédent la participation était payée en unité d'ETH directement, Il est donc impossible de participer avec 0.2 ETH du coup, j'ai utilisé cette nouvelle version où la contribution mensuelle est en wei (un milliardième de milliardième d'ETH) : https://github.com/omarbenhamid/pret-daret-sur-etherium/blob/c37ed0bb79a79966af15b751eeaabb76a15b7743/daret.sol

Une autre modification est que, dans cette nouvelle version, il n'y a plus besoin d'appeler executerMoisCourrant : dès que toutes les contribution du mois sont reçues, la collecte est envoyée au bénéficiaire du mois, sans action de sa part.

Deploiement et test du Smart Contract:

Le déploiement et test du smart contract se fait exactement comme l'exemple précédent sauf :

  1. Il faut recharger Remix (actualiser la page dans le Browser pour reconnaitre metamask)

  2. Dans l'onglet Run choisir le runtime "injected by Web 3":

  3. Charger le code du Smart Contract dans le fichier daret.sol dans REMIX, comme décrit dans le post précédent.

  4. Ensuite saisir les paramètres et cliquer sur deployer :

    Noter le 2 suivi de 15 zeros qui correspond 2/1000 d'ETH (= 2 finney en langage ethereum), en effet le "wei" est une très très petite unité. Suivi de d'une virgule suivi de 3 qui est le deuxième paramètre du constructeur du contract qui dit : Daret se déclanche dès qu'il y a 3 participants.

  5. Une fenêtre MetaMask va apparaître, il faut y confirmer la transaction

  6. Sur MetaMask ou dans les traces Remix: attendez que la transaction soit validée.

Bravo ! Le smart contrat est déployée sur une vraie blockchain.

Executer les tests

En mode connecté à la blockchain, Remix fonctionne comme en mode normal sauf 2 points:

Le premier est que REMIX ne propose dans l'onglet Run qu'un seul compte : le compte actif dans MetaMask. Pour basculer entre les différents comptes il faut donc :

  1. Ouvrir MetaMask.

  2. Choisir le compte souhaité dans le menu en haut à droite:

  3. Revenir dans REMIX. Vous verrez alors que c'est le noveau compte qui est devenu actif.

Le second est que vous aurez la fenêtre de confirmation MetaMask à chaque transaction qui s'affichera pour confirmer.

À ceci près, j'ai pu rejouer les tests comme cela a été fait dans le post précédent en utilisant 2 finney au lieur de 1ETH pour chaque contribution.

En conclusion

C'était relativement faclie de déployer et utiliser le Smart Contract Daret sur le testnet Ropsten. L'étape suivante est donc de développer une DApp: une application érgonomique pour utiliser ce Smart Contract. A suivre donc …