Vous êtes sur la page 1sur 8

Département Génie Electrique-Automatique

Rapport du Projet Tutoré

Modélisation des services IoT par Blockchain et


smart contract

Elaboré par : Mohamed Taki Eddine LTAIEF


Walid KAHLOUN
Encadré par : M. Ahmed ZOUINKHI
Introduction
Dans un monde en constante évolution, l’importance de comprendre et d’appliquer les technologies de
pointe telles que les contrats intelligents et la blockchain est devenue primordiale pour rester compétitif.

Objectifs du Projet
Le but de ce projet était de créer et déployer un smart contract sur le réseau de test Goerli en utilisant le
langage solidity.

Méthodologie
Pour atteindre cet objectif, nous avons utilisé plusieurs outils et technologies, notamment Metamask, Infura
et Remix.

Metamask
Metamask est une extension de navigateur qui permet aux utilisateurs d’interagir avec le réseau Ethereum
et de gérer leurs portefeuilles de cryptomonnaies. Nous avons installé Metamask, créé une phrase de
récupération et ajouté Goerli GoETH au portefeuille.

Goerli testnet faucet


Le Goerli Testnet Faucet est un service en ligne qui fournit de l'Ether de test (GoETH) sur le réseau de test
Goerli. Le réseau Goerli est un environnement de test pour le développement et le déploiement de contrats
intelligents basés sur la technologie Ethereum. Le faucet permet aux développeurs d'obtenir des fonds de
test pour leurs applications décentralisées et leurs contrats intelligents sans avoir à utiliser de l'Ether réel sur
le réseau principal. Les utilisateurs peuvent soumettre leur adresse Ethereum pour recevoir une allocation
d'Ether de test, facilitant ainsi le processus de développement, de test et de débogage avant le déploiement
sur le réseau principal d'Ethereum.

Cette ressource joue un rôle crucial dans le cycle de développement blockchain en offrant un moyen pratique
d'acquérir des fonds de test nécessaires pour évaluer et perfectionner les fonctionnalités des applications
blockchain dans un environnement simulé, sans exposer les utilisateurs aux coûts réels associés à l'utilisation
du réseau principal Ethereum.

Infura
Infura est un service tiers qui offre une interface simplifiée vers les nœuds du réseau Ethereum. Les nœuds
sont des ordinateurs qui font partie du réseau Ethereum et qui stockent une copie de toutes les transactions
passées sur la blockchain. En utilisant Infura, les développeurs peuvent éviter de gérer leurs propres nœuds
Ethereum et accéder facilement à des fonctionnalités telles que la lecture de données, la création de contrats
intelligents, et l'envoi de transactions.

Remix IDE
Remix est un environnement de développement intégré (IDE) en ligne conçu pour simplifier et faciliter le
processus de développement de contrats intelligents sur la blockchain Ethereum. Il offre une interface
utilisateur conviviale qui permet aux développeurs de créer, déployer et tester des contrats intelligents de
manière efficace. Voici quelques points clés sur Remix :

• IDE en ligne : Remix fonctionne entièrement dans le navigateur web, ce qui signifie qu'aucune installation
n'est nécessaire sur l'ordinateur local. Cela rend l'accès au développement de contrats intelligents rapide et
pratique.
• Prise en charge de Solidity : Solidity est le langage de programmation le plus couramment utilisé pour écrire
des contrats intelligents sur la blockchain Ethereum. Remix offre un support complet pour Solidity,
permettant aux développeurs de coder, compiler et déployer des contrats intelligents directement depuis
l'interface.
• Environnement de test intégré : Remix propose un environnement de test intégré qui permet aux
développeurs de tester leurs contrats intelligents dans des environnements de test tels que le réseau de test
Goerli ou d'autres réseaux de test Ethereum. Cela permet de détecter et de résoudre les erreurs avant de
déployer les contrats sur le réseau principal.
• Explorateur de contrats intelligents : Remix propose un explorateur de contrats intelligents qui facilite
l'interaction avec les contrats déjà déployés sur la blockchain. Les développeurs peuvent examiner l'état du
contrat, appeler des fonctions, et explorer les transactions associées.
• Intégration avec Infura : Remix peut être intégré avec des services tels qu'Infura, qui offre un accès simplifié
aux nœuds Ethereum. Cela permet aux développeurs de déployer et de tester leurs contrats intelligents sur
des réseaux Ethereum, y compris des réseaux de test comme Goerli.

Réalisation
1. Installation de Metamask : Installez l’extension Metamask sur votre navigateur. Créez un nouveau
portefeuille et notez votre phrase de récupération.

2. La création d'un budget sur le Goerli Testnet avec l'utilisation du faucet implique l'obtention d'Ether de test
(GoETH) pour simuler des transactions et tester des contrats intelligents sans dépenser de véritables ethers
sur le réseau principal d'Ethereum
• Accédez au Faucet : Rendez-vous sur le site du Goerli Testnet Faucet. Vous pouvez trouver le lien sur les
canaux officiels d'Ethereum ou du Goerli Testnet.
• Créez un compte sur le Faucet : Certains faucets peuvent nécessiter la création d'un compte. Suivez les
instructions pour vous inscrire au service.
• Obtenez une clé API : Si le faucet nécessite une clé API, assurez-vous de générer une clé API lors de votre
inscription. Cette clé API sera utilisée pour accéder au service de faucet.
• Connectez-vous à votre compte : Utilisez vos identifiants (adresse Ethereum et éventuellement la clé API)
pour vous connecter à votre compte sur le faucet.
• Sélectionnez le réseau Goerli : Assurez-vous de sélectionner le réseau Goerli, car le faucet peut prendre en
charge plusieurs réseaux de test Ethereum.
• Indiquez votre adresse Ethereum : Sur le site du faucet, indiquez l'adresse Ethereum pour laquelle vous
souhaitez recevoir des GoETH de test. Assurez-vous d'utiliser une adresse associée au réseau Goerli.
• Passez les éventuelles vérifications : Certains faucets peuvent nécessiter que vous passiez des vérifications,
comme la résolution de captchas ou d'autres mécanismes anti-abus.
• Demandez des GoETH de test : Une fois toutes les étapes précédentes terminées, soumettez la demande
pour recevoir des GoETH de test sur votre adresse.
• Attendez la confirmation : Il peut y avoir un délai avant que les GoETH de test n'arrivent sur votre adresse.
Attendez la confirmation que la transaction a été effectuée avec succès.

3. La création d'un compte sur Infura pour utiliser son interface avec Web3 implique plusieurs étapes. Voici un
guide général sur la procédure :
• Visitez le Site Web d'Infura : Rendez-vous sur le site web officiel d'Infura à l'adresse https://infura.io/.
• Inscription : Sur la page d'accueil, cherchez l'option d'inscription ou de création de compte. Cela peut être
sous la forme d'un bouton "Get Started" ou "Sign Up". Cliquez dessus.
• Remplissez le Formulaire : Vous serez probablement redirigé vers un formulaire d'inscription. Remplissez les
champs requis, cela pourrait inclure votre nom, adresse e-mail et la création d'un mot de passe.
• Validation de l'Adresse E-mail : Après avoir rempli le formulaire, Infura peut vous demander de valider votre
adresse e-mail. Consultez votre boîte de réception, trouvez l'e-mail de confirmation d'Infura et suivez les
instructions pour valider votre compte.
• Connexion à votre Compte : Une fois votre compte validé, connectez-vous avec vos identifiants (adresse e-
mail et mot de passe).
• Création d'un Projet : Après vous être connecté, créez un nouveau projet. Donnez un nom significatif à votre
projet, et choisissez le réseau Ethereum sur lequel vous souhaitez travailler (par exemple, Mainnet ou un
réseau de test comme Ropsten, Rinkeby, ou Goerli).
• Génération de la Clé API : Une fois votre projet créé, accédez à la section de gestion du projet et générez une
clé API. Cette clé API sera nécessaire pour accéder aux services d'Infura.
• Intégration avec Web3 : Utilisez votre clé API d'Infura dans votre application Web3. Vous pouvez l'intégrer en
utilisant cette clé comme point d'accès pour interagir avec les nœuds Ethereum gérés par Infura.

4. Remix IDE
Remix est un environnement de développement intégré (IDE) en ligne pour Ethereum, qui facilite la création,
le déploiement et le test de contrats intelligents. Voici un aperçu de certaines fonctionnalités et étapes
courantes que vous pouvez rencontrer en utilisant Remix IDE :
• Accès à Remix : Rendez-vous sur le site officiel de Remix IDE à l'adresse https://remix.ethereum.org/.
• Interface de Remix : Remix propose une interface utilisateur avec plusieurs panneaux, notamment l'éditeur
de code, le gestionnaire de fichiers, la console de sortie, et d'autres panneaux pour gérer les contrats
intelligents, les plugins, etc.
• Création d'un Nouveau Fichier : Utilisez le gestionnaire de fichiers pour créer un nouveau fichier Solidity
(l'extension de fichier est généralement .sol). C'est là où vous allez écrire votre code de contrat intelligent.
• Écriture du Contrat Intelligent : Utilisez l'éditeur de code pour écrire le code de votre contrat intelligent en
utilisant le langage Solidity. Remix offre des fonctionnalités telles que la coloration syntaxique,
l'autocomplétion et la vérification de la syntaxe.
• Compilation du Contrat : Utilisez l'onglet "Solidity Compiler" pour compiler votre contrat. Cela générera les
bytecode et l'ABI (Application Binary Interface) nécessaires pour déployer et interagir avec le contrat.
• Déploiement du Contrat : Passez à l'onglet "Deploy & Run Transactions" pour déployer votre contrat sur un
réseau Ethereum. Vous pouvez sélectionner différents environnements, y compris les réseaux de test tels
que Ropsten, Rinkeby, ou Goerli.
• Interaction avec le Contrat : Après le déploiement, vous pouvez interagir avec votre contrat en utilisant
l'interface générée dans l'onglet "Deploy & Run Transactions". Cela vous permet d'appeler des fonctions et
de voir les résultats.
• Débogage : Remix propose des outils de débogage qui vous permettent de suivre l'exécution de votre contrat,
d'inspecter les variables et de déboguer les erreurs éventuelles.
• Sauvegarde du Projet : Utilisez le gestionnaire de fichiers pour sauvegarder votre projet. Remix propose
également des fonctionnalités d'import/export pour faciliter le partage de projets.
• Extensions et Plugins : Remix prend en charge des extensions et plugins qui ajoutent des fonctionnalités
supplémentaires à l'IDE. Vous pouvez les trouver dans l'onglet "Plugin Manager".
Signification du code :
Ce code représente un contrat intelligent simple écrit en langage Solidity, qui peut être déployé sur la
blockchain Ethereum. Voici une explication ligne par ligne :

1. // SPDX-License-Identifier: MIT

Cette ligne spécifie la licence sous laquelle le contrat intelligent est publié. Ici, il est sous la licence MIT, qui
est une licence open source populaire.

2. pragma solidity ^0.8.2;

Cette déclaration spécifie la version du compilateur Solidity nécessaire pour compiler ce contrat. Dans ce cas,
le compilateur Solidity de la version 0.8.2 ou supérieure est requis.

3. contract DataContract {

C'est le début de la déclaration du contrat. Le contrat s'appelle DataContract.

4. mapping(string => string) private data;

C'est la déclaration d'une variable de type mapping (une structure de données dans Solidity) appelée data.
Ce mapping associe des chaînes de caractères (string) à d'autres chaînes de caractères. Il est privé (private),
ce qui signifie qu'il ne peut être accédé que depuis l'intérieur du contrat.

5. function setData(string memory index, string memory value) public {


Ceci est une fonction publique (public) appelée setData. Elle prend deux paramètres, index et value, qui sont
des chaînes de caractères en mémoire (memory). Cette fonction est utilisée pour définir des valeurs dans le
mapping data.

6. data[index] = value;

C'est la ligne de code à l'intérieur de la fonction setData. Elle assigne la valeur value à la clé index dans le
mapping data.

7. }

Fermeture de la fonction setData.

8. function getData(string memory index) public view returns (string memory) {

Ceci est une autre fonction publique appelée getData. Elle prend un paramètre index et retourne la valeur
associée à cette clé dans le mapping data.

9. return data[index];

C'est la ligne de code à l'intérieur de la fonction getData. Elle renvoie la valeur associée à la clé index dans le
mapping data.

10. }

Fermeture de la fonction getData.

11. }

Fermeture du contrat DataContract.


Conclusion
Ce projet a présenté l’implémentation d’un smart contract et d’une blockchain à l’aide de Metamask, Infura
et Remix.

Le smart contract a été écrit en Solidity, un langage dédié aux contrats intelligents sur la plateforme
Ethereum.

Le smart contract permet de stocker et de récupérer des données arbitraires dans une mapping associant
des chaînes de caractères à des chaînes de caractères.

Le smart contract a été compilé et déployé sur le réseau de test Goerli à l’aide de Remix et de Metamask,
une extension de navigateur qui permet d’interagir avec la blockchain Ethereum.

Le smart contract a été testé avec succès en utilisant les fonctions setData et getData fournies par Remix.

Ce projet a montré les bases de la programmation et de l’utilisation des smart contracts et de la blockchain,
qui sont des technologies prometteuses pour le développement d’applications décentralisées, sécurisées et
transparentes.

Vous aimerez peut-être aussi