Vous êtes sur la page 1sur 69

‫الجمهوريــــــــــــــــــــــة الجزائريـــــــــــة الديمقراطيـــــــــة الشعبيـــــــة‬

‫وزارة التعليـــــــــــم العـــــــــــالي و البحـــــــــث العلـــــــمي‬


‫جامعة وهران للعلوم والتكنولوجيا محمد بوضياف‬
‫كلية الرياضيات و االعالم االلي‬
République Algérienne Démocratique et Populaire
Ministère de l’Enseignement Supérieur Et de la Recherche Scientifique
Université des Sciences et de la Technologie d’Oran Mohamed BOUDIAF
Faculté des Mathématiques et Informatique

Département : Informatique

Application de la Blockchain dans les


Mémoire de fin d’études
Réseaux IoT
Pour l’obtention du diplôme
de Master

Domaine : Mathématiques – Informatique


Filière : Informatique
Spécialité : Réseaux et Systèmes Informatiques Distribuées (RSID)

Présenté le : 15 juin 2023


Par : Jury Nom et Prénom Grade Université

- TAMINE Lilia
- BELFERROUM Lynda
Président MEKKAKIA MAAZA Zoulikha Prof USTO

Encadrant MOSTEFA Fatima Zohra MCB USTO

Examinateur KIES Ali MCA USTO

2023/2024
REMERCIEMENTS

Nous tenons tout d’abord à remercier Dieu le tout puissant qui nous a donné la force
et la patience d’accomplir ce modeste travail.

Nos chaleureux remerciements à notre encadrante "MOSTEFA Fatima Zohra"


pour sa confiance, sa disponibilité, sa patience et son aide précieuse tout le long de
notre travail.

Nous exprimons nos remerciments les plus dévoués, à Monsieur KIES Ali pour son
aide et ses conseils.

Nos vifs remerciements à nos enseignants, Madame MEKKAKIA MAAZA


Zoulikha et Monsieur KIES Ali pour avoir accepté le jugement de notre projet de
fin d’études.

Nos remerciements également à tous ceux qui ont contribué de près ou de loin au bon
déroulement et à la réalisation de notre projet de fin d’études.

Enfin, nous ne pourrions terminer ces remerciements sans une pensée à l’ensemble de
nos enseignants et de l’administration du département d’informatique qui sont à
l’origine de notre savoir.

1
DÉDICACES

“ Je dédie ce travail a mon père TAMINE Tawfik et a BEN HABIB


Chahrazed qui m’ont soutenu tout au long de mon cursus et qui ont
tout fait pour ma réussite.

Je dédie ce travail a mon frère TAMINE Hicham Brahim qui a


toujours été là pour moi et qui a été d’un grand soutien.

Je dédie également ce travail à ma défunte mère qui


malheureusement nous a quitté trop tôt et qui j’espère sera fière de
l’étudiante et de la personne que je suis devenue.

Je dédie ce travail à ma grand-mère qui m’a toujours encouragé


pendant mes études.

Je dédie ce travail a toute ma famille et a toutes les personnes qui


ont contribué de près ou de loin a ma réussite.

Merci.


- TAMINE Lilia

2
DÉDICACES

“ Avec l’expression de ma reconnaissance, je dédie ce travail à mes


chers parents qui m’ont toujours poussé et motivé dans mes études.
Ce projet de fin d’étude représente donc l’aboutissement du soutien
et des encouragements qu’ils m’ont prodigués tout au long de ma
scolarité. Qu’ils en soient remerciés par cette modeste dédicace.

À ma chère mère
Aucune dédicace ne saurait exprimer mon respect, mon amour
éternel et ma considération pour les sacrifices que vous avez consenti
pour mon instruction et mon bien être. Je vous remercie pour tout le
soutien et l’amour que vous me portez depuis mon enfance et j’espère
que votre bénédiction m’accompagne toujours. Que ce modeste travail
soit l’exaucement de vos vœux tant formulés, le fruit de vos
innombrables sacrifices. Puisse Dieu, le Très Haut, vous accorder
santé, bonheur et longue vie.

À ma chère grand-mère
tu m’as soutenu et aidé et toujours avec moi dans mes moments
difficiles J’espère que Dieu te protégera pour moi.

À mon cher père


Tu as toujours été à mes côtés pour me soutenir et m’encourager.
Que ce travail traduit ma gratitude et mon affection.

À mon cher frère


puisse dieu vous donne santé, bonheur, courage et surtout réussite.

À toutes les personnes qui ont contribué de près ou de loin à ma


réussite.

Merci.


- BELFERROUM Lynda

3
RESUME

L’internet des objets est une technologie qui connaît une croissance indéniable. Elle
permet de connecter les différents objets entre eux et à internet. Cette technologie
touche différents domaines à savoir la santé, la domotique, l’industrie ou encore le
transport. Malgré tous les avantages que cette dernière présente reste vulnérable aux
attaques. C’est pour cette raison qu’il faut trouver un moyen de la sécuriser, d’où l’in-
troduction de la blockchain dans notre projet. En effet la blockchain est une base de
données distribuée qui assure l’anonymat et l’intégrité des données et des informations.
Le but de notre projet est de combiner ces deux technologies ensemble afin de profiter
des avantages de la blockchain pour l’IoT. Nous avons en premier lieu étudier l’IoT :sa
signification, ses caractéristiques, ses domaines d’utilisation. Dans ce même chapitre
nous avons défini les réseaux MANETs et les réseaux VANETs où nous nous sommes
concentrés sur ces deux technologies car nous avons essayé de combiner les VANETs
a la blockchain. En second lieu, nous nous sommes intéressés à la blockchain, à ses
domaines d’utilisation, ses caractéristiques et les services qu’elle offre à l’IoT. Ensuite,
nous avons définit la plateforme Hyperledger plus précisément Hyperledger Fabric qui
est une plateforme de blockchain dans laquelle nous avons la possibilité de lancer des
contrats intelligents. Nous avons expliqué en détails les étapes à suivre pour l’instal-
lation de ce framework, le déploiement et l’exécution de notre contrat intelligent qui
concerne les VANETs. Nous avons illustré les résultats obtenus pour chaque étape que
nous avons suivi pour la validation de notre Chaîne code.

Mots clés : IoT, VANET, MANET, Ad-hoc, Blockchain, Cross-Chain, Hyperledger


Fabric.

4
ABSTRACT

The Internet of Things (IoT) is an undeniable growing technology. It allows the


connection of various objects to each other and to the internet. This technology en-
compasses different domains such as healthcare, home automation, industry, and trans-
portation. Despite all the advantages it presents, IoT remains vulnerable to attacks.
That’s why it is necessary to find a way to secure it, hence the introduction of blo-
ckchain into our project. Blockchain is a distributed database that ensures data and
information anonymity and integrity. The goal of our project is to combine these two
technologies together to leverage the benefits of blockchain for IoT. Firstly, we studied
IoT, including its meaning, characteristics, and domains of application. In the same
chapter, we defined Mobile Ad-Hoc Networks (MANETs) and Vehicular Ad-Hoc Net-
works (VANETs), where we focused on these two technologies because we attempted
to combine VANETs with blockchain. Secondly, we explored blockchain, its domains
of application, characteristics, and the services it offers to IoT. Then, we defined the
Hyperledger platform, specifically Hyperledger Fabric, which is a blockchain platform
that allows us to launch smart contracts. We explained in detail the steps to follow for
the installation of this framework, the deployment, and execution of our smart contract
concerning VANETs. We illustrated the results obtained for each step we followed to
validate our “Chaîne code”.

Keywords : IoT, VANET, MANET, Ad-hoc, Blockchain, Cross-Chain, Hyperledger


Fabric.

5
‫ملخص‬

‫نموا ال يمكن إنكاره‪ .‬فهي تتيح ربط األجهزة المختلفة ببعضها البعض‬ ‫انترنت األشياء هي تقنية تشهد ً‬
‫وباإلنترنت‪ .‬هذه التكنولوجيا تمس مجاالت متنوعة مثل الصحة والمنزل الذكي والصناعة وحتى النقل‪.‬‬
‫على الرغم من جميع المزايا التي توفرها هذه التقنية‪ ،‬فإنها ال تزال عرضة للهجمات‪ .‬ولهذا السبب يجب‬
‫أن نجد وسيلة لتأمينها‪ ،‬لذلك اضفنا تقنية ‪ blockchain‬في مشروعنا‪ blockchain .‬هي قاعدة بيانات‬
‫موزعة تضمن سرية البيانات والمعلومات وتكاملها‪ .‬هدف مشروعنا هو دمج هاتين التقنيتين م ًعا لالستفادة‬
‫من مزايا ‪ blockchain‬في انترنت األشياء‪ .‬في البداية‪ ،‬قمنا بدراسة انترنت األشياء‪ :‬معناها وميزاتها‬
‫ومجاالت استخدامها‪ .‬في نفس الفصل‪ ،‬قمنا بتعريف شبكات األجهزة المتنقلة وشبكات السيارات المتصلة‬
‫حيث ركزنا على هاتين التقنيتين ألننا حاولنا دمج شبكات السيارات المتصلة مع تقنية ‪ .blockchain‬ثم‬
‫اهتممنا بتقنية ‪ blockchain‬ومجاالت استخدامها وميزاتها والخدمات التي تقدمها ألنترنت األشياء‪ .‬ثم قمنا‬
‫بتعريف منصة ‪ Hyperledger‬وتحديدًا ‪ Hyperledger Fabric‬التي هي منصة ‪ blockchain‬قابلة‬
‫للبرمجة تتيح لنا إطالق العقود الذكية‪ .‬شرحنا بالتفصيل الخطوات التي يجب اتباعها لتثبيت هذا اإلطار‬
‫وتنفيذ عقدنا الذكي الذي يتعلق بشبكات السيارات المتصلة‪ .‬قدمنا نتائج كل خطوة قمنا باتباعها للتحقق من‬
‫صحة ‪ Chaîne code‬الخاصة بنا‪.‬‬

‫الكلمات الرئيسية‪ :‬انترنت االشياء ‪ ،‬شبكة السيارات المتصلة‪ ،‬شبكة األجهزة المتنقلة‪،Ad-hoc ،‬‬
‫‪Hyperledger Fabric، Cross-Chain،Blockchain‬‬

‫‪6‬‬
TABLE DES MATIÈRES

chapitre 1 Internet of Things (IoT)

1.1 Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16

1.2 Internet of Things : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

1.3 Principes des IoT : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

1.4 Domaines d’applications de L’IoT :. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17

1.5 Caractéristique de l’Internet of Things : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

1.6 Composantes de l’IoT : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

1.7 Architecture de l’Internet of Things : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19


1.7.1 Architectures à trois couches : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.7.2 Architecture à cinq couches : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

1.7.3 Différence entre les deux architectures : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

1.8 Les Technologies de communication de base : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

1.9 Contrôle d’accès dans l’IoT : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

1.10 Avantages et inconvénients de L’IoT : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23


1.10.1 Avantages : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

1.10.2 Inconvénients : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

1.11 Mobile Ad-hoc Network : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

1.12 Vehicular Ad-hoc Networks : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25


1.12.1 Les Caractéristiques des VANETs : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

6
1.12.2 Les modes de communication dans les réseaux VANETs : . . . . . . . . . . . . . . . . . . . . . . . . . 25

1.12.3 Architecture des réseaux véhiculaires sans fil : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

1.13 Réseau Ad-hoc : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26


1.13.1 Les modes de communication dans les réseaux ad-hoc : . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.13.2 Les catégories de réseaux sans fils : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

1.14 Future de l’IoT : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

1.15 Conclusion : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

chapitre 2 Blockchain

2.1 Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .30

2.2 Définition de la Blockchain : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

2.3 Le fonctionnement de la blockchain : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

2.4 Composition d’une blockchain : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32


2.4.1 Les éléments du bloc : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

2.4.2 Structure de la blockchain : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

2.5 Importance de la blockchain : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

2.6 Types de blockchain : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

2.7 Les caractéristiques de la blockchain : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

2.8 Consensus : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

2.9 Transactions : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

2.10 Les domaines d’utilisation de la blockchain : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

2.11 Hachage : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.11.1 Définition : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

2.11.2 Algorithmes de hachages : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

2.12 Domaines d’utilisation des fonctions de hachage : . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

2.13 Smart contracts : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

2.14 Avantages et inconvénients de la blockchain : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42


2.14.1 Avantages : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.14.2 Inconvénients : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

7
2.15 Blockchain et Internet des objets : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

2.16 Les services offerts par la blockchain à l’iot : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

2.17 Cross-blockchain : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2.17.1 Protocoles de relais : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

2.17.2 Sidechain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

2.17.3 Le Schéma notarial : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44


2.17.4 Le Verrouillage par hachage : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

2.18 Difficultés de la technologie cross-chain : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

2.19 Conclusion : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

chapitre 3 Implémentation

3.1 Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .48

3.2 Performances du PC : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

3.3 Conception : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.3.1 Hyperledger : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

3.3.2 Hyperledger fabric : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49


3.3.3 Les éléments nécessaires pour installer Hyperledger Fabric : . . . . . . . . . . . . . . . . . . . . . . . 49

3.3.4 Contrôle d’accès dans Hyperledger Fabric : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

3.4 Notre approche : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

3.5 Implémentation et Résultats : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52


3.5.1 Installation de hyperledger fabric : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.5.2 Les commandes utilisées dans hyperledger fabric : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

3.6 Conclusion : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

8
TABLE DES FIGURES

1.1 Internet of Things. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17


1.2 Domaines d’application de l’IoT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.3 Architectures de l’IoT (A : trois couches) (B : cinq couches). . . . . . . . . . . . . . . . 20
1.4 Architecture de IoT à trois couches. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.5 Architecture de IoT à cinq couches. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.6 Les différentes technologies de communication. . . . . . . . . . . . . . . . . . . . . . . . 22
1.7 Les changements de topologie dans les réseaux mobiles Ad-hoc. . . . . . . . . . . . . . . 24
1.8 Future de l’IoT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

2.1 Illustration du réseau blockchain. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31


2.2 Mécanisme d’une Blockchain. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.3 Elément du bloc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.4 Structure de la blockchain. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.5 Exemple d’une structure de bloc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.6 Illustration de chaque type. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.7 Exemples des domaines de la blockchain. . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.8 Exemple d’un résultat d’une fonction de hachage d’un texte. . . . . . . . . . . . . . . . . 39
2.9 Représentation d’un smart contract. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.10 Blockchain et IoT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

3.1 Déploiement d’Hyperledger dans le Docker. . . . . . . . . . . . . . . . . . . . . . . . . . 50


3.2 Modèle du réseau. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.3 Importation et installation du dossier docker.service. . . . . . . . . . . . . . . . . . . . . 55
3.4 Mise à jour des fichiers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.5 Vérification de l’état du docker. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
3.6 Résultat de la création de la channel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
3.7 Vérification de la version de notre peer. . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.8 Résultat de l’installation du package sur le nœud. . . . . . . . . . . . . . . . . . . . . . . 58
3.9 Résultat de la récupération de l’Id. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
3.10 Résultat de la validation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

9
LISTE DES TABLEAUX

2.1 Exemple d’un type de blockchain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

3.1 Installation de l’outil Hyperledger Fabric. . . . . . . . . . . . . . . . . . . . . . . . . . . 53

10
LISTE DES SIGLES ET ACRONYMES

ABAC Attributs Based Access Control

AU Application Unit

CA Central Authority

DBFT Delegated Byzantine Fault Tolerance

DPoS Delegated Proof of Stake

DPoW Delayed Proof of Work

FBA Federated Byzantine Agreement

HTLC Hashed Timelock Contrat

IoT Internet of Things

IP Internet Protocol

M2M Machine-to-Machine

MANET Mobile Ad-hoc Network

MD5 Message Digest 5

OBU On Board Unit

PBFT Practical Byzantine Fault Tolerance

PBSCF-ITS A Public Blockchain-Basedsecure Communication Framework for Intelligent


Transportation Systems

PoA Proof of Authority

PoB Proof of Burn

PoBR Proof of Burn

PoC Proof of Capacity

PoET Proof of Elapsed Time

11
PoH Proof of History

PoI Proof of Importance

PoS Proof of Stake

PoW Proof of Work

RBAC Role Based Access Control

RFID Radio Frequency Identification

RP Ripple Protocol

RSU Road Side Units

SHA Secure Hash Algorithm

V2I Véhicule-to-Infrastructure

V2RSU Vehicules-to-Rsu

V2V Véhicule-to-Véhicule

VANETs Vehicular Ad-hoc Networks

WLAN Wireless local Area Network

WMAN Wireless Metropolitan Area Network

WPAN Wireless Personal Area Network

WSN Wireless Sensor Network

WWAN Wireless Wide Area Network

12
INTRODUCTION GÉNÉRALE

Internet a vu le jour au début des années 90 grâce au Word Wide Web et elle ne cesse
de se développer depuis. Il y a eu des progrès successifs avec notamment l’apparition
des smart phones, des ordinateurs performants et plus encore.

Jusqu’à présent cette avancée a permis de connecter nos objets du quotidien grâce
a ce qu’on appelle l’internet des objets. Cette dernière est devenue de plus en plus
populaire dans de nombreux secteurs que ce soit celui de la santé, de l’industrie, la
domotique ou le transport.
On peut se demander ce que signifie l’internet des objets. Pour répondre à cette ques-
tion c’est tout simplement un cadre dans lequel tous les objets ont une représentation
et une présence dans l’Internet. Plus spécifiquement, l’IoT vise à offrir de nouvelles
applications et de nouveaux services qui relient les mondes physiques et virtuels.

Cette technologie facilite et améliore la qualité de vie des personnes en rendant les
environnements plus intelligents et plus adaptés. Dans cette étude, nous allons plus
nous intéresser aux réseaux véhiculaires. Ces derniers sont des réseaux du type ad-hoc
mobile (MANET) où les nœuds mobiles sont des véhicules circulant sur des routes ou
des rues. Les VANETs sont des réseaux de communication sans fil qui prennent en
charge des applications telles que la sécurité routière, la navigation et d’autres services
routiers.
L’IoT peut être considéré comme étant notre présent et notre futur. Cependant, même
si elle offre beaucoup d’avantages et de facilités, elle possède plusieurs points de vul-
nérabilité parmi elles le manque de sécurité. En outre elle reste aussi vulnérable aux
différentes attaques.

Pour pallier à ces problèmes nous suggérons d’appliquer une autre technologie à
l’IoT qui est la blockchain. En effet, la blockchain s’est faite connaître en 2008 grâce à
la crypto monnaie plus précisément grâce au bitcoin qui a révolutionné le monde.
Elle est considérée comme étant une base de données distribuée qui offre plus de sécu-
rité. L’intégration de la blockchain à l’IoT ouvre de nouvelles perspectives aux appareils
connectés en permettant une communication plus sécurisée avec plus de transparence,
de confiance et de décentralisation. Notre mémoire sera constitué de trois chapitres :

Dans le chapitre I, nous allons définir l’internet des objets, connaître ses domaines,

13
ses caractéristiques en nous concentrons sur les réseaux mobiles et véhiculaires.
Par la suite, dans le chapitre II, nous allons détailler la technologie blockchain. Nous
allons expliquer la blockchain, sa structure, ses avantages vis avis de l’IoT et la raison
pour laquelle nous l’avons choisie. Nous allons également introduire une autre techno-
logie blockchain qui permettra l’interopérabilité entre les blockchains.
Pour finir, dans le chapitre III, nous allons introduire un nouvel environnement de
blockchain qui est l’Hyperledger Fabric et faire une simulation en déployant un smart
contract de type VANETs.

Nous terminerons ce mémoire sur avec une conclusion générale en proposant des
perspectives futures à notre projet.

14
CHAPITRE 1
INTERNET OF THINGS (IOT)

15
CHAPITRE 1. INTERNET OF THINGS (IOT)

1.1 Introduction
IoT est une technologie qui a connu une évolution exponentielle et continue en se perfectionnant
de jour en jour. Cette dernière relie les objets du quotidien à Internet, permettant ainsi de recueillir
et d’échanger des données. Les objets connectés peuvent être des appareils électroménagers, des
véhicules, des réseaux mobiles, des outils de santé, des bâtiments et bien d’autres choses encore.

L’IoT permet aux entreprises et aux particuliers de collecter des données en temps réel. Comme
exemple de technologie que nous allons aborder dans ce chapitre, les réseaux mobiles qui sont des
réseaux ad-hoc dont les nœuds sont souvent caractérisés par une mobilité constante.

Par la suite nous allons traiter les réseaux véhiculaires qui constituent une nouvelle forme de MA-
NET. Nous allons définir ces technologies en nous intéressons à leurs caractéristiques et à leurs
avantages.

1.2 Internet of Things :


IoT est un terme qui s’est répandu ces dernières années. Ce terme a été découvert en 1990.Il
fait la référence à la connexion de milliards d’objets et de personnes via l’Internet des objets.

Il peut être considéré comme l’un des outils les plus puissants avec les différentes techniques de
communication, telles que RFID, Bluetooth, Wi-Fi, Zigbee..etc.

Un objet connecté est un objet électronique qui possède une adresse IP capable d’échanger, de
communiquer et de modifier d’innombrables données via Internet.[1]
En fait, un objet connecté a la capacité d’interagir et d’interconnecter avec son environnement
physique.

L’IoT est considérée comme l’émergence du futur Internet.

1.3 Principes des IoT :


L’IoT est un ensemble d’innovations et de solutions technologiques récentes existantes. Chaque
objet de l’IoT est doté d’une identification électronique qui est capable de lire et d’envoyer des
données par des protocoles dans le réseau Internet.

L’IoT regroupe plusieurs éléments qui sont les capteurs, actionneurs. . .etc. Cependant, il est né-
cessaire de spécifier plusieurs élements de l’objet qui sont sa nature, sa fonction, sa localisation
dans l’espace, son histoire a fin de créer un lien entre le physique et le virtuel.

16
CHAPITRE 1. INTERNET OF THINGS (IOT)

Le but de ces dispositifs technologiques et de modéliser l’environnement réel pour le rendre


numérique.

Figure 1.1 – Internet of Things.

1.4 Domaines d’applications de L’IoT :


L’IoT est utilisé dans divers secteurs tel que l’agriculture, soins de santé, la domotique. . . etc

• Domotique : C’est un ensemble de technologies qui permet de gérer sa maison à distance


ou d’elle-même. Elle facilite énormément la vie des personnes.[2]

• Agriculture : Dans ce domaine, des réseaux de capteurs inter-connectés de l’IoT peuvent


être utilisés pour surveiller l’environnement des cultures. Cela conduit à de bons rendements
agricoles et facilite le travail des agriculteurs.[3]

• Véhicules intelligents : C’est un domaine qui connaît une très grande évolution grâce aux
caméras de recules ou aux détecteurs d’obstacles. Certains constructeurs sont allés encore
en testant des véhicules sans conducteurs (véhicules autonomes) ce qui pourrait diminuer les
accidents de la circulation.[4]

• Santé : Dans le domaine de la santé, l’IoT contribue à faire circuler les données et rapports
médicaux entre les professionnels de la santé et les patients grâce aux réseaux personnels.
Les capteurs médicaux surveilleront les constantes biologiques telles que la température cor-
porelle, la tension artérielle et l’activité respiratoire. Tout cela contribuera à faciliter la
surveillance des patients et en améliorant leur prise en charge médicale.[5]

• Sécurité et surveillance : Nous pouvons aussi faire intervenir l’IoT dans le domaine de
la sécurité des entreprises, des usines, des centres commerciaux, des parkings et autres lieux
publics. Le suivi et le contrôle en temps réel de ces espaces sera nettement amélioré.[3]

• Industriel : L’introduction de l’IoT dans le domaine industriel permettra un suivi complet


dans les chaînes de production. Cela se traduira par l’amélioration de la qualité des produits
et la lutte contre la contrefaçon, la fraude et la criminalité économique.[2]

17
CHAPITRE 1. INTERNET OF THINGS (IOT)

La figure (1.2) représente les domaines d’utilisation de l’IoT.

Figure 1.2 – Domaines d’application de l’IoT.

1.5 Caractéristique de l’Internet of Things :


Les caractéristiques fondamentales de l’IoT sont les suivantes :[6]

• Inter connectivité : En ce qui concerne l’IoT, tout peut être relié à l’infrastructure mon-
diale d’informations et de communications.

• Services liés aux objets : L’IoT est capable de fournir des services liés aux objets comme
la protection de la vie privée et la cohérence sémantique entre les objets physiques et les
objets virtuels qui leur sont associées.

• Hétérogénéité : Les dispositifs dans l’IoT sont hétérogènes comme basé sur différentes
plateformes matérielles et des réseaux. Ils peuvent interagir avec d’autres appareils ou pla-
teformes de service à travers différents réseaux.

• Changements dynamiques : L’état des dispositifs change dynamiquement, par exemple,


dormir et se réveiller, connecté et/ou déconnecté ainsi que le contexte des dispositifs, y
compris l’emplacement et la vitesse. De plus, le nombre d’appareils peut changer de façon
dynamique.

• Échelle énorme : Le nombre d’appareils qui doivent être gérés et qui communiquent entre
eux sera au moins d’un ordre de grandeur plus grand que les appareils connectés à l’Internet
actuel. La gestion des données générées et leur interprétation à des fins d’application seront
encore plus importantes.

18
CHAPITRE 1. INTERNET OF THINGS (IOT)

• Sécurité : Alors que nous profitons de l’IoT, nous ne devons pas oublier la sécurité. En tant
que créateurs et destinataires de l’IoT, nous devons concevoir pour la sécurité.

• Connectivité : La connectivité permet l’accessibilité et la compatibilité du réseau. L’ac-


cessibilité se fait sur un réseau alors que la compatibilité offre la capacité commune de
consommer et de produire des données.

1.6 Composantes de l’IoT :


L’objet connecté est d’abord un objet qui a une fonction mécanique et/ou électrique propre. Il
peut soit être conçu directement connectable, soit il est déjà existant et la connectivité est rajoutée
à posteriori.[7]

Les composants de l’IoT sont :

• Capteur : Les capteurs sont des dispositifs permettant de transformer une grandeur phy-
sique observée (température, luminosité, mouvement... etc) en une grandeur numérique uti-
lisable par des logiciels. Il existe une très grande variété de capteurs de tous types, les objets
connectés ont souvent la fonction de captation de ces grandeurs physiques sur leurs lieux
d’utilisation.

• Réseaux de capteurs : les capteurs sont équipés de dispositifs sans fil pour l’émission
et la réception de données. Cela ne suffit cependant pas à rendre un ensemble de capteurs
accessibles ou du moins de manière interopérable, transparente et simplifiée.
Pour cela, les capteurs doivent être positionnés de façon judicieuse pour pouvoir former un
réseau de capteurs performants. Ces éléments sont de très petits appareils, dotés de grandes
capacités de transmission sans fil.

• Énergie : La plus importante contrainte à laquelle sont soumis les réseaux de capteurs est
l’énergie. L’autonomie temporelle des nœuds s’évalue en termes d’années.

• Actionneurs : Les actionneurs sont des dispositifs qui transforment une donnée numérique
en phénomène physique pour créer une action, ils sont en quelque sorte l’inverse du capteur.

• Connectivité : La connectivité de l’objet est assurée par une petite antenne Radio Fré-
quence qui va permettre la communication de l’objet vers un ou plusieurs autres objets.

1.7 Architecture de l’Internet of Things :


Il n’y a pas de consensus unique sur l’architecture de l’IoT qui est universellement reconnu.
Différentes architectures ont été proposées par différents chercheurs.

19
CHAPITRE 1. INTERNET OF THINGS (IOT)

Parmi ces architectures deux d’entre elles sont illustrées en figures (1.3), (1.4) et (1.5).[8]

Figure 1.3 – Architectures de l’IoT (A : trois couches) (B : cinq couches).


[8]

1.7.1 Architectures à trois couches :


L’architecture la plus élémentaire est une architecture à trois couches comme le montre la
figure(1.4). Elle a été introduite au début de la recherche dans ce domaine. Elle comporte trois
couches :[8]

Figure 1.4 – Architecture de IoT à trois couches.


[9]

- Couche de perception.
- Couche réseau.
- Couche application.

20
CHAPITRE 1. INTERNET OF THINGS (IOT)

1.7.2 Architecture à cinq couches :


L’architecture en trois couches définit l’idée principale de l’IoT, mais elle n’est pas suffisante car
la recherche se concentre souvent sur des aspects plus fins et plus détaillés d’où l’introduction de
l’architecture à cinq couches (figure 1.5).[8]

- couche perception.
- couche transport.
- couche traitement.
- couche application.
- couche affaires.

Figure 1.5 – Architecture de IoT à cinq couches.


[9]

1.7.3 Différence entre les deux architectures :


Nous allons commencer par l’architecture a trois couche :[8]

* La couche application : elle est chargée de fournir des services spécifiques de l’application
à l’utilisateur. Elle définit diverses applications dans les quelles l’Internet des objets peut être
déployé, par exemple, les maisons intelligentes, les villes intelligentes et la santé intelligente.

* La couche réseau : cette couche est responsable de la connexion à d’autres objets intelli-
gents, périphériques réseaux et serveurs. Elle est également utilisée pour la transmission et
le traitement des données provenant des capteurs.

* La couche perception : c’est la couche physique. Elle possède des capteurs pour détecter
et recueillir des informations sur l’environnement. Elle détecte certains paramètres physiques
ou identifie d’autres objets intelligents dans l’environnement.

D’un autre côté dans l’architecture à cinq couches, la perception et l’application ont le même
rôle que dans l’architecture à trois couches sauf que, ce qui change dans l’architecture à cinq
couche est :[8]

* La couche de transport : elle transfère les données du capteur de la couche de perception


à la couche de traitement et vice versa via des réseaux tels que les réseaux sans fil,la 3G,
LAN, Bluetooth, RFID et NFC.

21
CHAPITRE 1. INTERNET OF THINGS (IOT)

* La couche de traitement : cette couche stocke, analyse et traite d’énormes quantités de


données provenant de la couche transport. Elle peut gérer et fournir un ensemble diversifié
de services aux couches inférieures.

* La couche métier : gère l’ensemble du système IoT, y compris les applications, les modèles
commerciaux et de profits, et la confidentialité des utilisateurs.

1.8 Les Technologies de communication de base :


Pour assurer la fonctionnalité de l’IoT, diverses technologies sont utilisées. Nous allons juste
aborder certaines technologies telles que : RFID, WSN et M2M qui sont exprimé en figure (1.6).[7]

• RFID : Ce concept regroupe toutes les technologies qui fonctionnent avec les ondes radio
afin de reconnaître automatiquement des objets ou des personnes.
Ces caractéristiques sont : stockage et récupération à distance d’informations.

• WSN : C’est un réseau coopératif où chaque nœud du réseau à un ensemble de caractéris-


tiques telles que : puissance de traitement, différents types de mémoire, Émetteurs-récepteurs,
alimentations, ainsi que divers capteurs et actionneurs.

• M2M : C’est la technologie de l’information combinée à la communication des objets intelli-


gents pour leur donner la possibilité d’interagir sans intervention avec le système d’informa-
tion d’un organisme ou d’une entreprise.La figure (1.6) représente les différentes technologie
de communication IoT.

Figure 1.6 – Les différentes technologies de communication.

22
CHAPITRE 1. INTERNET OF THINGS (IOT)

1.9 Contrôle d’accès dans l’IoT :


L’accès autorisé est une exigence qui se trouve dans tous les systèmes. Son but est de déterminer
qui peut accéder à quoi, de quelle manière, quand accéder et selon quelles règles. Il reste donc un
élément important pour la protection d’un système.

Dans le contrôle d’accès, deux types d’entités sont importantes. Ces deux dernières sont les dé-
tenteurs de données (ceux qui utilisent l’IoT) et les collecteurs de données (qui sont les objets qui
récoltent et envoient les données).

Il existe plusieurs méthodes pour assurer le contrôle d’accès, par exemple la solution RBAC. Cette
méthode utilise trois éléments pour prendre la décision sur le contrôle d’accès. Ces éléments sont :
l’utilisateur, le rôle et les permissions.

ABAC est une autre méthode de contrôle d’accès qui n’exige pas forcément une mise à jour des
politiques existantes pour autoriser l’accès aux nouvelles ressources. La décision du choix de la
méthode est prise selon les différentes entités qui demandent l’accès à une ressource. Elles peuvent
appartenir à l’entité ou peuvent dépendre de l’environnement.[10]

Récemment, la blockchain s’est imposée comme un bon moyen pour assurer le contrôle d’accès
au système.

1.10 Avantages et inconvénients de L’IoT :


1.10.1 Avantages :
- L’Iot permet la communication entre les différents appareils.
- Elle permet une meilleure gestion de l’information.
- Une meilleure gestion à distance. En effet, si par exemple un agriculteur a besoin d’arroser
son champ, il peut contrôler le débit grâce à des capteurs et des actionneurs sans qu’il ne se
déplace.

1.10.2 Inconvénients :
- Le coût de l’installation des dispositifs peut s’avérer être élevé.
- Le manque de sécurité. En effet l’IoT peut être une cible de certaines attaques.
- L’IoT souffre d’un manque de confidentialité car des fois les données collectées ou transmises
sont sensibles et ont besoin de confidentialité ce que l’IoT n’offre pas totalement.

23
CHAPITRE 1. INTERNET OF THINGS (IOT)

1.11 Mobile Ad-hoc Network :


MANET est un réseau dans lequel ses éléments communiquent dynamiquement entre eux via
un support sans fil (ad-hoc). Les nœuds de ce réseau sont souvent caractérisés par une mobilité
constante. Les MANETs peuvent être déployés pour assurer la communication dans des environne-
ments hostiles.[11]

Les MANETs peuvent être utilisés comme infrastructures de communication alternatives dans des
situations où les infrastructures de communication Conventionnelles sont détruites à cause d’une
catastrophe naturelle, ou encore accusé des attaques ennemies.[11]

Le réseau mobile MANET peut être déployé sans la nécessité de recourir à d’autres éléments supplé-
mentaires tels que le coût et le temps. Dans ce réseau, chaque nœud mobile joue un rôle de routeur
parallèlement à son travail ordinaire. Une autre application des MANETs est bien les VANETs.[11]

Nous pouvons citer comme caractéristiques des MANETs :[12]

- Bande passante limitée : parmi les caractéristiques des réseaux sans fil, nous avons l’utili-
sation d’un canal de communication partagé. Ce partage fait que la bande passante réservée
à un hôte reste modeste.

- Une topologie dynamique : les entités mobiles du réseau se déplacent d’une façon libre
et arbitraire, ce qui provoque le changement de topologie d’une manière rapide et aléatoire
à des instants imprévisibles. La figure(1.8) montre un exemple de changement de topologie.

Figure 1.7 – Les changements de topologie dans les réseaux mobiles Ad-hoc.

24
CHAPITRE 1. INTERNET OF THINGS (IOT)

- Contrainte d’énergie : les hôtes mobiles sont alimentés par des sources d’énergie auto-
nomes telles que les batteries ou d’autres sources consommables.

- L’absence d’infrastructure : En effet, dans les réseaux ad-hoc, les hôtes se chargent
d’établir et de maintenir la connectivité du réseau d’une manière continue. L’absence d’in-
frastructure et d’une administration centralisée le distingue des autres réseaux mobiles.

- Une sécurité physique limitée : les réseaux ad-hoc sont plus vulnérables par le problème
de sécurité que les autres réseaux filaires classiques.

- Nœud caché : ce phénomène est très particulier à l’environnement sans fil.

1.12 Vehicular Ad-hoc Networks :


Les VANETs sont un type spécialisé de réseau ad-hoc mobile (MANET). La communication
dans les VANETs se fait de trois façons. Une qui est la communication véhicule à véhicule, la
seconde véhicules à infrastructures, la dernière englobe les deux (hybride).[13]

1.12.1 Les Caractéristiques des VANETs :


Les réseaux VANETs sont caractérisés par :[13]

- Une forte mobilité des nœuds : En effet, ce qui rend la topologie du réseau fortement dyna-
mique.

- La capacité d’énergie et stockage : Les éléments des réseaux VANETs disposent suffisamment
d’énergie pour alimenter les différents équipements électroniques, ce n’est pas le cas pour les
réseaux MANETs ou les réseaux de capteurs.

- La sécurité et l’anonymat : l’importance des informations échangées via les communications


véhiculaires rend l’opération de sécurisation de ces réseaux nécessaire et importante.

- Topologie dynamique.

- Modélisation et prévision de la mobilité.

1.12.2 Les modes de communication dans les réseaux VANETs :


Mode de communication V2V :
Ce mode de communication fonctionne suivant une architecture décentralisée et représente un
cas particulier des MANETs. Il est basé sur la simple communication inter-véhicules ne nécessitant
pas une infrastructure.

En effet, un véhicule peut communiquer directement avec un autre véhicule s’ils se situent dans la
même zone radio, ou bien par le biais d’un protocole multi-sauts qui se charge de transmettre les
messages de bout en bout en utilisant les nœuds voisins qui les séparent comme des relais. Dans ce
mode, les supports de communication utilisés sont caractérisés par une petite latence et un grand
débit de transmission.[14]

25
CHAPITRE 1. INTERNET OF THINGS (IOT)

Les communications V2V sont très efficaces pour le transfert des informations concernant les ser-
vices liés à la sécurité routière, mais elles ne garantissent pas une connectivité permanente entre les
véhicules.[14]

Mode de communication de V2I :


Ce mode de communication permet une meilleure utilisation des ressources partagées et démul-
tiplie les services fournis (par exemple : accès à Internet, échange de données de voiture-à domicile,
communications de voiture-à-garage de réparation pour le diagnostique distant...etc) grâce à des
points d’accès RSU déployés aux bords des routes.

Ce mode est inadéquat pour les applications liées à la sécurité routière car les réseaux à infra-
structure ne sont pas performants quant aux délais d’acheminement.[14]

La communication hybride englobe les deux types de communications précédentes.

1.12.3 Architecture des réseaux véhiculaires sans fil :


L’architecture des réseaux VANETs peut être décrite par plusieurs entités. Trois principales
entités permettent d’établir la communication dans les réseaux VANETs :
[15]

• Noeud : Les nœuds sont les entités principales de ce type de réseau. Ce sont des véhicules
intelligents avec des technologies très avancées telles que le GPS, les caméras et autres équi-
pements. Dans la présente étude, les principaux appareils du nœud sont l’AU et l’OBU.
L’AU est un dispositif électronique installé dans les véhicules pour assurer les communica-
tions avec le CA, connecté à l’OBU afin d’exécuter des applications.

• l’OBU : C’est un dispositif installé dans les véhicules intelligents avec un ensemble de com-
posants logiciels pour calculer et afficher toutes les informations nécessaires de localisation,
partager et échanger des données.[15]

• RSU : ce sont des dispositifs installés au bord de la route jouant le rôle d’un point d’accès
afin d’assurer les communications avec l’infrastructure et échanger les informations relatives
à l’état du trafic routier avec les utilisateurs de la route.[15]

• CA : il représente l’autorité de confiance. Il joue le rôle d’un serveur qui assure la sécurité
en vérifiant l’identité des participants pour faire, il émet, gère et stocke certaines données tel
que les certificats numériques et les clés de communication.[15]

1.13 Réseau Ad-hoc :


Un réseau ad hoc est une collection d’hôtes équipé par des interfaces sans fil qui peuvent com-
muniquer entre elles sans aucune administration centralisée. Cela nécessite l’utilisation d’une tech-
nologie de communication sans fil comme le Wifi, le Bluetooth, etc. A l’opposé des réseaux filaires
où uniquement certains nœuds dits "routeurs" sont responsables de l’acheminement des données
dans un réseau ad-hoc. Tous les nœuds sont à la fois routeurs et terminaux. Le choix des nœuds
qui vont assurer une session de communication dans un réseau ad-hoc se fait dynamiquement selon
la connectivité du réseau, d’où l’appellation "Ad-hoc".[16]

26
CHAPITRE 1. INTERNET OF THINGS (IOT)

1.13.1 Les modes de communication dans les réseaux ad-hoc :


La communication dans les réseaux ad-hoc se réalise en utilisant plusieurs modes qui sont :

• La communication point à point : C’est une communication où le nœud envoie le paquet


à un seul autre nœud.

• La communication multipoints (multicast) : C’est lorsqu’un nœud envoie un paquet à


plusieurs nœud du réseau en même temps.

• La communication Broadcast : C’est quand le paquet est envoyé à tous les nœuds du
réseau.

1.13.2 Les catégories de réseaux sans fils :


On distingue généralement plusieurs catégories de réseaux sans fils selon le périmètre géogra-
phique permettant une connectivité.[12]

• WPAN : Il concerne les réseaux sans fils de faible portée de l’ordre de quelques dizaines de
mètres.

• WLAN : Les WLANs couvrent l’équivalent d’un réseau local d’entreprise. Sa portée est
d’environ une centaine de mètres.

• WMAN : Les WMANs sont basés sur la norme IEEE 802.16.

• WWAN : Connu sous le nom de réseau cellulaire mobile. C’est un réseau sans fil le plus
courant puisque les différents téléphones mobiles sont connectés à un réseau étendu sans fil.

1.14 Future de l’IoT :


Nous pouvons résumer le future de l’IoT dans la figure(1.7).

Figure 1.8 – Future de l’IoT.

27
CHAPITRE 1. INTERNET OF THINGS (IOT)

1.15 Conclusion :
L’IoT est une nouvelle infrastructure qui va intégrer les objets connectés et faciliter nos travaux,
notre vie quotidienne et nous faire gagner du temps.

Nous avons étudié les réseaux MANETs en nous intéressons tout particulièrement aux réseaux
véhiculaires (VANETs). Nous avons étudié leurs modes de communications, leurs caractéristiques
ainsi que leur architecture.

Malgré tous les avantages de l’IoT, celle-ci a besoin dans le futur qu’elle soit mieux sécurisée
d’où l’introduction de la blockchain que nous allons voir dans le chapitre suivant.

28
CHAPITRE 2
BLOCKCHAIN

29
CHAPITRE 2. BLOCKCHAIN

2.1 Introduction
La blockchain a connu une forte croissance ces dernières années. Elle a été connue grâce à
certaines crypto monnaies telles que le bitcoin, le discoin ou même l’Ethereum. La technologie blo-
ckchain est tout simplement une base de données distribuée qui stocke les informations en toute
sécurité.

Cette technologie ne se limite pas qu’à la crypto monnaie car elle peut être intégrée dans l’in-
dustrie, dans le domaine de la santé ou même dans la finance.
La tendance actuelle est de l’utiliser dans le domaine de l’internet des objets. La motivation des
chercheurs en l’utilisation de la blockchain pour l’IoT réside dans le fait que les données sont sécu-
risées et immuables c’est à dire qu’une fois enregistré dans les blocs et ajouté dans la blockchain,
ces dernières ne seront ni modifiées ni supprimées. De plus, elle offre la transparence du point de
vue utilisateur.

Dans ce chapitre nous allons définir ce qu’est la blockchain, ses composantes, son architecture
et la raison de son utilisation dans le domaine de l’IoT.

2.2 Définition de la Blockchain :


La blockchain est une technologie qui a connu une croissance exponentielle ces dernières années,
elle permet le stockage et la transmission d’informations de façon sécurisée dans le réseau.

La chaîne de blocs aussi connue sous le nom de « blockchain » est une technologie qui a vu le
jour en 2008 par Satoshi Nakamoto (Laurent Leloup, 2017), pseudonyme utilisé par la ou les per-
sonnes ayant créé cette technologie.[17]

La Blockchain fonctionne sur un réseau peer to peer. Elle peut être vue comme une base de données
distribuée qui renforce la sécurité des informations qu’elle contient. Elle permet de stocker ou de
transmettre des données de façon sécurisée mais surtout de les protéger contre la modification.[17]
Cette technologie qui servait initialement à l’émission du bitcoin a connu un développement impor-
tant ces dernières années avec la mise en place d’Ethereum.

La blockchain dans son modèle dit « public » qui signifie que tous les participants du réseau
blockchain peuvent accéder à l’ensemble des données et transactions enregistrées sur la chaîne de
blocs. Ou « décentralisé » qui se réfère à un modèle où le contrôle et la prise de décision ne sont
pas centralisés entre les mains d’une seule entité ou autorité. Ce type de blockchain est un registre
public continuellement alimenté par des transactions. Le système repose sur un réseau de serveurs
répliquant le dit registre et alimentant ce dernier de données nouvelles intégrées par transaction.[18]

La blockchain est vue comme étant une suite de blocs de données reliés par une chaîne chrono-
logique. Chaque bloque est haché pour pouvoir le sécuriser. Les données sur ce registre ne sont
pas purement informatives : elles peuvent servir à constater l’existence d’actifs numériques et à les
échanger.[18]

30
CHAPITRE 2. BLOCKCHAIN

La figure(2.1) est une représentation du réseau blockchain. En effet, si Alice et Bob deux nœuds
(participants) du réseau blockchain veulent faire une transaction. Ce qui se passera c’est que Alice
transfert les données, Bob va les recevoir sans passer par une autorité. Enfin tous les autres nœuds
du réseau blockchain enregistreront une copie de cette transaction dans le registre.

Figure 2.1 – Illustration du réseau blockchain.


[19]

2.3 Le fonctionnement de la blockchain :


Une transaction est générée par un utilisateur puis sera transmise aux nœuds voisins, relayer
de pair en pair à travers le réseau. Pour qu’une transaction soit valide, il faut deux conditions :
la première est que l’utilisateur doit avoir les fonds nécessaires et la seconde est que la signature
de la transaction soit valide. Cependant, une transaction n’est pas finalisée tant qu’elle n’a pas été
incluse dans un bloc.[20]

Les nœuds créateurs de blocs sont des nœuds appelés « mineurs ». N’importe quel nœud peut
devenir un mineur, il suffit juste de disposer du matériel et du logiciel adéquat. Lorsqu’un mineur
reçoit une nouvelle transaction non validée, il la place avec l’ensemble des transactions non confir-
mées.
Cet ensemble est propre à chaque mineur. Il peut changer d’un mineur à l’autre en fonction du
temps de propagation des transactions sur le réseau. C’est une sorte de liste d’attente pour les
transactions. Celles-ci quittent la liste une fois qu’elles intègrent le bloc.[20] Nous représentons les
étapes d’une transaction dans l’illustration(2.2).

En effet, A effectue une transaction vers B.


- Plusieurs transactions sont regroupées dans un bloc.
- Le bloc est validé par les nœuds mineurs du réseau blockchain au moyen de techniques cryptogra-
phiques.
- Quand le bloc est validé, il est daté et ajouté à la chaîne de blocs à laquelle tous les utilisateurs
ont accès.
- B reçoit la transaction de A.

31
CHAPITRE 2. BLOCKCHAIN

Figure 2.2 – Mécanisme d’une Blockchain.

2.4 Composition d’une blockchain :


Une blockchain contient toutes les transactions effectuées du réseau. Les éléments de base qui
compensent la blockchain sont : le nonce, le hache précédent, et l’horodatage. Le premier bloc d’une
blockchain est appelé ”Genesis Block”.

2.4.1 Les éléments du bloc :


Le bloc contient une en-tête et les informations des transactions, comme le montre la figure(2.3).
L’entête contient 4 informations :

* Le hachage du bloc précédent : Dans la blockchain, les données de chaque bloc sont
hachées et intégrées dans le bloc suivant(c’est à dire que chaque bloc contient la valeur du
hachage du bloc "parents"), cette particularité va donc permettre de relier les blocs les uns
avec les autres en assurant l’intégrité et l’immuabilité.[21]

* L’horodatage : L’horodatage est un petit élément de données stockées dans chaque bloc
en tant que série unique. Il permet de déterminer le moment exact où le bloc a été extrait et
validé par le réseau blockchain. Il crée également un lien cryptographique entre l’empreinte
numérique d’une donnée et un bloc de la blockchain.[22]

* Le nonce : Il s’agit souvent d’un nombre aléatoire ou pseudo-aléatoire émis dans un proto-
cole d’authentification pour garantir que les anciennes communications ne peuvent pas être
réutilisées dans des attaques.[20]

* L’arborescence de Merkle : C’est une structure de données appelé également l’arbre


de hachage. Le hachage est effectué dans une approche ascendante c’est à dire que c’est
un hash principal qui regroupe tous les autres hachages des transactions (haché une ou plu-
sieurs fois). Il est principalement utilisé pour valider les opérations en fonction de l’historique.

Les racines de Merkle ne sont pas utilisées pour la vérification d’un individu de transac-
tions. Mais plutôt, ils sont utilisés dans la vérification d’un ensemble de transactions.
La modification des données de transaction dans un bloc, modifie le hachage de l’arbores-
cence de Merkle stockée dans l’entête du bloc.[23]

32
CHAPITRE 2. BLOCKCHAIN

Les éléments du bloc sont illustrés en figure(2.3).

Figure 2.3 – Elément du bloc.


[19]

2.4.2 Structure de la blockchain :


Dans une blockchain chaque nœud est identifié à l’aide d’une clé publique (PK). Toutes les
communications entre nœuds, appelées transactions sont cryptées à l’aide de la clé et diffusées sur
l’ensemble du réseau.
Chaque nœud d’un réseau blockchain publique peut vérifier une transaction en validant la signature
du générateur de transaction. Cependant dans une blockchain privée se sont les administrateurs qui
peuvent vérifier les transactions. Le nœud collecte périodiquement plusieurs transactions de son
pool de transactions en attente pour former un bloc, qui est diffusé sur l’ensemble du réseau.[24]

Le bloc est ajouté à la copie locale de la blockchain et est stocké lorsque toutes les transactions
qui le constituent sont valides. Un consensus intervient pour contrôler quels nœuds du réseau blo-
ckchain peuvent participer et contribuer à la validation des transactions au réseau blockchain. Une
fois qu’un bloc est ajouté, il ne peut ni être modifié ni supprimé et cela grâce au hachage.[24]

La figure(2.4)représente les deux parties importantes du bloc. En effet, nous remarquons que
la blockchain contient un ensemble de blocs, chaque bloc possède deux parties une partie header
comme nous l’avons expliqué précédemment elle possède le nonce, le horodatage et l’arborescence
de merkle une autre partie transactions qui contient l’ensemble des transactions.

Figure 2.4 – Structure de la blockchain.


[24]

La figure(2.5) représente un exemple de structure de blockchain. Nous remarquons que ces deux
blocs sont des blocs du milieu de notre chaîne. Chaque bloc contient un hachage du bloc qui le
précède. Ce hachage est calculé à partir des données de la transaction du bloc précédent. Chaque
élément contient un ensemble de transactions comme représenté en figure(2.5) et chaque bloc est
horodaté pour connaître le moment où le bloc a été validé. Pour finir, le bloc contient un identifiant
unique.

33
CHAPITRE 2. BLOCKCHAIN

Figure 2.5 – Exemple d’une structure de bloc.


[25]

2.5 Importance de la blockchain :


- Sécurité.
- Décentralisation.
- Transparence.
- Immuabilité.
- Évolution.
- Résilience.

2.6 Types de blockchain :


- Blockchain publique :

Ce type de chaîne de blocs est accessible pour tout le monde tout en gardant son anonymat.
Cela est possible grâce à son code open source.
Elle permet d’augmenter le nombre de participants à la blockchain. Cependant cette ouver-
ture laisse la possibilité à des opérations frauduleuses telles que le blanchiment d’argent ou
le financement occulte.

Concernant le fonctionnement de la blockchain publique, le bon comportement de ce consen-


sus récompense les acteurs honnêtes et pénalisent les acteurs douteux. Comme exemple de
crypto monnaie qui utilise la blockchain publique on peut citer le bitcoin.[17]

- Blockchain privée :

Les blockchains privées sont bien plus petites et leur accès est très contrôlé. Le code source
n’étant pas ouvert, l’information ne doit pas être publique. Dans ce type de Blockchain une
seule organisation ou toute organisation au sein du même groupe est autorisée à lire et à
soumettre des transactions.[26]

- Blockchain consortium :

Une blockchain de consortium est une blockchain dans laquelle les nœuds de plusieurs orga-
nisations gouvernent le réseau.
Ils collaborent pour partager et modifier les informations via ce type de blockchain afin de
maintenir le flux de travail, l’évolutivité et la responsabilité. Elle garde certaines caractéris-
tiques d’une blockchain privée et publique.[27]

34
CHAPITRE 2. BLOCKCHAIN

La figure(2.6) est une représentation d’un exemple d’un type de blockchain.

Figure 2.6 – Illustration de chaque type.


[28]

Le tableau(2.1) représente un exemple d’un type de blockchain.

Type Publique Privée Consortium


Exemple Bitcoin, Ethereum. Monax, Hyperledger. R3.

Table 2.1 – Exemple d’un type de blockchain .

2.7 Les caractéristiques de la blockchain :


- La transparence : Une blockchain est dite transparente dans une blockchain publique si
tous les nœuds du réseau de la blockchain sont capables de voir les transactions présentes
et passées. Cependant dans la blockchain privée les règles d’accès sont généralement définies
par les administrateurs du réseau et les membres autorisés. Le but est de restreindre qui
peut voir et accéder aux données enregistrées sur la chaîne de blocs.[29]

- La sécurité : il est quasi-impossible de supprimer toutes les copies des documents. Les
données sont dans différents serveurs ce qui renforce la sécurité.[29]

- L’autonomie : Il n’y a pas d’infrastructures centrales au sein d’une blockchain, l’infrastruc-


ture est éparpillée dans l’ensemble du réseau. Elle est donc indépendante de services tiers.[29]

- Décentraliser : Il n’est sous contrôle de personne.

- Anonyme : Les utilisateurs ont le droit d’avoir des adresses qui n’ont aucune relation avec
leurs informations personnelles.[29]

35
CHAPITRE 2. BLOCKCHAIN

2.8 Consensus :
Les protocoles de consensus peuvent être considérés comme l’épine dorsale d’un réseau block-
chain. Ils renforcent la cohérence et l’intégrité et permettent de rendre les propriétés immuables
(infalsifiable). C’est à dire que ces propriétés ne seront ni modifiées ni supprimées.[30]

D’après Swanson (2015), le consensus un ensemble de règles et de procédures permettant au vali-


dateurs de s’accorder sur l’état et de maintenir la cohérence du réseau blockchain.[21]

Lorsqu’il y a une nouvelle transaction, elle n’est pas directement ajoutée a la blockchain. Au
contraire, le processus de consensus garantit que ces nouvelles transactions sont stockées dans
un bloc pendant un certain temps et par la suite transférées dans la base de données blockchain.
Quand les informations sont enregistrées dans le registre elles ne peuvent plus être modifiées ou
supprimées.[21]

Un protocole de consensus à trois propriétés clés sur la base desquelles son applicabilité et son
efficacité peuvent être déterminées.[31]

- Sécurité : on peut dire que le protocole est sûr si tous les nœuds donnent tous les mêmes
sorties.

- Un protocole de consensus garantit la vivacité si tous les nœuds non défectueux participent
au consensus pour produire une valeur.

- Tolérance aux pannes : Un protocole de consensus fournit une tolérance aux pannes s’il peut
continuer de fonctionner même si un nœud du réseau tombe en panne.

Les protocoles peuvent être séparés en deux groupes largement définis : les protocoles basés sur la
preuve et les protocoles basés sur le vote.

Les protocoles basés sur la preuve comprennent : la preuve de travail (PoW), la preuve de tra-
vail différée (DPoW), la preuve d’importance (PoI), la preuve du temps écoulé (PoET), la preuve
de capacité (PoC), la preuve d’autorité (PoA) et la proof of Burn (PoBr).

D’un autre coté les protocoles basés sur le vote incluent : la preuve de participation (PoS), la
preuve de participation déléguée (DPoS), le protocole d’ondulation (RP), la tolérance aux pannes
byzantines pratiques (PBFT), la tolérance aux pannes byzantines déléguées (DBFT) et pour finir
la byzantine fédérée Accord (FBA).[30]

On peut citer certains exemples de consensus :

• Proof of Work (PoW) :

Le PoW est un consensus qui permet de garantir la cohérence et la sécurité des données.
Cela grâce au pouvoir de concurrence des mineurs. Il repose sur la puissance de calcul, ce-
pendant ceci peut être un inconvénient car il peut consommer beaucoup d’énergie. Ce type
de consensus est utilisé par le Bitcoin.

En effet les nœuds se font concurrence pour élaborer collectivement un SHA256 qui est
un problème mathématique dont la résolution est compliquée mais facilement vérifiable. Le
nœud le plus rapide pour résoudre ces problèmes obtiendra une récompense en bitcoins.[32]

36
CHAPITRE 2. BLOCKCHAIN

• Proof of Stake (PoS) :

PoS est un protocole qui garde tous les avantages du PoW tout en surmontant certaines de
ses faiblesses.

PoS a été développé comme une solution alternative à la consommation d’énergie du PoW.
En effet, au lieu du calcul complexe et de la consommation de ressources énergétiques, des
dirigeants sont sélectionnés en fonction de leurs enjeux.

Ces enjeux sont le nombre de jetons numériques, par exemple, des pièces en crypto-monnaies,
qu’un nœud du réseau blockchain détient ou dépose. Au lieu de consommer beaucoup d’éner-
gie pour le processus de recherche comme dans le PoW, un leader sera sélectionné en fonction
de ses enjeux pour effectuer le processus d’ajout d’un nouveau bloc à la blockchain.[33]

• Delegated Proof of Stake (DPoS) :

Le DPoS est une variante du protocole de consensus Proof of Stake. Dans cet algorithme
ceux qui possèdent des jetons de la blockchain ont la possibilité de choisir des délégués pour
valider les blocs au nom du réseau blockchain.
Les délégués sont élus par ceux qui possèdent le plus de jetons lors d’un processus de vote.
Une fois élus, les délégués ont pour mission de créer des blocs et de valider les transactions.
DPoS ne nécessite pas de résolution de problèmes mathématiques complexes pour valider les
blocs comme dans le PoW, ce qui va faire économiser en énergie. Comme exemple d’utilisa-
tion de cet algorithme on peut citer le BitShares.[34]

• Proof of Authority (PoA) :

Dans le consensus POA, les validateurs sont des entités préalablement autorisées et identi-
fiées. Cependant dans cet algorithme, les validateurs sont élus selon leur réputation et non
selon le nombre de jetons qu’ils possèdent (comme nous l’avons vu précédemment dans le
Pos).
Lorsque nous disons leur réputation c’est à dire que les validateurs POA sont généralement
des entités de confiance qui ont été sélectionnées par les nœuds du réseau blockchain pour
leur fiabilité et leur intégrité. Ils sont responsables de la validation des transactions et de la
création de nouveaux blocs.[35]

• Blockchain PBSCF-ITS :

A Public Blockchain-Based secure Communication Framework for Intelligent Transportation


Systems est un cadre de communication sécurisé public basé sur la blockchain pour les its.
Il peut aider à garantir la sécurité des communications entre les différents composants du
système de transport (véhicules). Son rôle inclut :

- Le PBSCF-ITS qui permet le contrôle d’accès et la gestion des clés entre V2V, V2RSU et
une analyse de sécurité rigoureuse.

- Le PBSCF-ITS est plus performant que les systèmes existants en termes de sécurité avec
plus de fonctionnalités, de faibles coûts généraux de communication et de calcul.

- L’étude de simulation pragmatique basée sur la blockchain de PBSCF-ITS montre son


influence sur la performance des paramètres comme le temps de calcul (secondes) par rap-
port au nombre de blocs minés, les transactions par bloc, et les transactions par seconde
rapportées au nombre de blocs.[36]

37
CHAPITRE 2. BLOCKCHAIN

PBSCF-ITS est un cadre proposé pour l’utilisation de la technologie blockchain dans les
ITS qui a pour but d’améliorer la sécurité et l’efficacité.

PBSCF-ITS utilise une chaîne de blocs publique pour stocker et partager en toute sécu-
rité des données liées au transport. Dans ce domaine on peut citer l’exemple du flux de
trafic, les données de localisation et les informations sur les véhicules.
Dans l’ensemble, le PBSCF-ITS a le potentiel d’améliorer la sécurité, l’efficacité et la trans-
parence dans l’industrie du transport.[37]

Le choix du mécanisme de consensus dépend des besoins spécifiques de la blockchain et de la


communauté qui la soutient.
Il est important de choisir le mécanisme de consensus approprié pour garantir la sécurité et la
fiabilité de la blockchain.[38]

2.9 Transactions :
La transaction se fait entre deux personnes du réseau blockchain. C’est tout simplement un
transfert (de données, des informations ou même de la crypto monnaie). Pour effectuer une tran-
saction, il est nécessaire d’effectuer une signature cryptographique pour garantir que la transaction
a été réalisée par telle ou telle personne. Cette dernière est enregistrée dans le bloc de la blockchain.

Les transactions dépendent de la nature de la chaîne de blocs. Comme exemple connu de tran-
saction, la crypto-monnaie bitcoin : une transaction est alors un transfert de monnaie virtuelle qui
concerne deux participants un émetteur et un récepteur.
Pour qu’une transaction soit validée, elle doit passer par l’opération de minage. Dès qu’elle est
validée elle sera ajoutée à la blockchain.

2.10 Les domaines d’utilisation de la blockchain :


- Finance et services bancaires : La blockchain a le potentiel d’améliorer le domaine financier
en offrant des transactions plus rapides, sécurisées et transparentes.

- Santé et soins : La blockchain peut être utilisée pour sécuriser et partager les dossiers mé-
dicaux électroniques, faciliter les échanges entre les professionnels de la santé et permettre
une recherche médicale plus sécurisée et collaborative.[39]

- Les véhicules : le fait d’introduire la blockchain dans l’iot des véhicules permet d’attribuer à
chaque véhicule une identité numérique décentralisée. Elle va améliorer la manière dont les
véhicules connectés communiquent avec d’autres appareils IoT. Le transfert et la communi-
cation seront bien mieux sécurisés.[40]

38
CHAPITRE 2. BLOCKCHAIN

Pour la sécurité, la blockchain peut également utiliser des objets intelligents. La figure(2.7) est
une représentation d’autres domaines de la blockchain.

Figure 2.7 – Exemples des domaines de la blockchain.

2.11 Hachage :
2.11.1 Définition :
Le hachage est un processus qui consiste à prendre des données de taille variable et à les rendre
de taille fixe, appelée empreinte digitale.

Formellement une fonction de hachage H : {0, 1}∗ →{0, 1}n est une application qui transforme
une chaîne de taille quelconque en une chaîne de taille fixe n.[41]

Les fonctions de hachage sont des fonctions mathématiques. Il est impossible de reconstituer les
données d’origine à partir du hachage, ce qui garantit la sécurité des données.[25]
Il existe deux types d’algorithmes d’hachage connus sous le nom de hachage faible et de hachage fort.

Comme exemple d’algorithme d’hachage faible on peut citer MD5 et SHA-1.

Figure 2.8 – Exemple d’un résultat d’une fonction de hachage d’un texte.

39
CHAPITRE 2. BLOCKCHAIN

2.11.2 Algorithmes de hachages :


Algorithmes forts :
Comme nous l’avons mentionné précédemment, les algorithmes de hachage les plus utilisés sont
SHA-256 ou SHA-512.

Nous allons commencer par expliquer le SHA-256. La version SHA-256 a certaines caractéristiques
telle qu’une taille de message de 264 bits maximum, d’une taille de bloc de 512 bits, d’un nombre
de mots de 32 bits et d’une taille condensée de 256 bits.[42]

Le SHA-512 est une fonction de hachage itérée qui complète et traite le message d’entrée à l’aide
de t blocs de message de 1024 bits.
La valeur de hachage de 512 bits est calculée à l’aide de la fonction de compression f :
h0 = IV
h(j +1) = f (hj , mj )
pour 0 <= j < t.

La sortie de hachage est la valeur de chaînage finale de 512 bits. 2 à la puissance 256 combi-
naisons possibles.[43]

En résumé : Le SHA-256 et le SHA-512 sont des algorithmes de hachage très sécurisés et


efficaces largement utilisés dans les applications de sécurité pour stocker des mots de passe, vérifier
l’intégrité des données et signer numériquement des documents.[43]

Algorithmes Faibles :
Les algorithmes de hachage cryptographique MD5 et SHA-1 sont utilisés afin de garantir l’inté-
grité des données. Le hachage MD5 produit une valeur de hachage de 128 bits alors que le hachage
SHA-1 produit une valeur de 160 bits.

Des études récentes ont montré que les deux algorithmes MD5 et SHA-1 présentent des vulné-
rabilités et des collisions.

Une collision dans un algorithme de hachage est un scénario où deux entrées différentes produisent
la même sortie de hachage. Cela est préoccupant car les fonctions de hachage sont largement utili-
sées pour vérifier l’intégrité des données et garantir l’authenticité. Lorsqu’une collision est possible,
cela peut être exploité par des attaquants pour générer des données falsifiées ou compromettre la
sécurité des systèmes qui dépendent de l’intégrité des valeurs de hachage.

Pour préserver l’intégrité des données numériques, il est déconseillé d’utiliser les algorithmes de
hachage MD5 et SHA 1.[44]

40
CHAPITRE 2. BLOCKCHAIN

2.12 Domaines d’utilisation des fonctions de hachage :


On peut citer quelques domaines d’utilisation du hachage :[41]

- Intégrité des données.


- Authentification des messages.
- Signature électronique.
- Protection des mots de passe.
- Génération des nombres pseudo-aléatoires.
- Protocoles d’engagement.

2.13 Smart contracts :


Les contrats intelligents sont une forme de contrats de vie quotidiens. Il s’agit de petits pro-
grammes informatiques écrits pour différentes blockchains mises en œuvre automatiquement pour
les soins de santé,pour la gestion des véhicules... Les contrats intelligents sont introduits dans le
but d’éradiquer les problèmes de confiance, les tiers et la fraude dans les transactions financières.[45]

Un contrat intelligent est susceptible d’être une classe qui comprend des variables d’état, des fonc-
tions, des modificateurs de fonction, des événements et structures. Ce type de contrat est destiné à
exécuter et à contrôler les événements et les actions correspondant aux termes du dit contrat. De
plus, il peut même appeler d’autres contrats intelligents. Chaque contrat intelligent comprend des
états et des fonctions.[46]

La figure(2.8) représente la structure d’un smart contract.

Figure 2.9 – Représentation d’un smart contract.


[47]

41
CHAPITRE 2. BLOCKCHAIN

2.14 Avantages et inconvénients de la blockchain :


2.14.1 Avantages :
- Suppression du besoin tiers : Il est possible de faire des transactions directement de
particulier à particulier sans intermédiaire. Plus besoin de banquier, d’une administration
qui note.[48]

- L’immuabilité : on est sûr que les données qui figurent dans le bloc ne seront pas modifiées.[48]

- Les données sont de qualité : la blockchain assure l’intégrité des données. On peut donc
leur faire confiance puisqu’elles sont toutes hachées et horodatées.[48]

- Distribuées : cette spécificité permet de diminuer la perte des données dans le cas de
pannes.[48]

- Transparence et la traçabilité : toutes les informations sont ouvertes à tous les noeuds
du réseau blockchain.[49]

- La possibilité de mettre en place des smart contracts : ces algorithmes permettent


de mettre en place les conditions des transactions sécurisées.[49]

2.14.2 Inconvénients :
- Le temps nécessaire pour la prise en compte effective d’une transaction : En effet
les mineurs doivent valider le bloc puis recevoir la récompense du mining. Cette procédure
peut prendre énormément de temps.[48]

- L’anonymat : Le fait que les transactions se font de façon anonyme encourage le trafic et
le blanchiment d’argent.

- Augmentation du chômage : si par exemple tous les gens venaient à favoriser la crypto
monnaie cela pourrait conduire certains employés de banques au chômage.

Dans notre projet nous essayons d’introduire la technologie blockchain à l’iot pour essayer d’amé-
liorer cette dernière.

42
CHAPITRE 2. BLOCKCHAIN

2.15 Blockchain et Internet des objets :


Les appareils IoT d’aujourd’hui ne sont pas sécurisés et incapables de se défendre eux-mêmes.
Cela est dû principalement aux ressources limitées dans l’IoT. En effet l’IoT souffre du manque de
confiance et la non transparence des données des participants.

Pour cela les experts ont pensé à combiner la blockchain à l’IoT pour lui offrir un service de
partage bien plus fiable et plus sécurisé.[50]
Les capacités décentralisées, autonomes et sans confiance de la blockchain en font un composant
idéal pour devenir un élément fondamental des solutions IoT. Il n’est pas surprenant que les tech-
nologies IoT d’entreprise soient rapidement devenues l’une des premières à adopter la technologie
blockchain.[51]

Figure 2.10 – Blockchain et IoT.


[51]

2.16 Les services offerts par la blockchain à l’iot :


La blockchain offre plusieurs services pour l’Iot comme exemple :

- La blockchain aide à résoudre les problèmes de sécurité de l’internet des objets.

- Elle permet de connecter les objets comme les appareils du quotidien de façon transparente
et décentralisée.

- Dans un réseau IoT, la blockchain peut conserver un enregistrement immuable de l’historique


des appareils intelligents.[51]

- La blockchain peut traiter les échanges de messages entre les appareils d’un réseau IoT
en s’appuyant sur des contrats intelligents qui modéliseront ensuite l’accord entre les deux
parties.[51]

43
CHAPITRE 2. BLOCKCHAIN

2.17 Cross-blockchain :
La technologie cross-chain suscite un grand intérêt des chercheurs depuis l’émergence de la
blockchain. Le but de cette technologie est de permettre d’établir un pont entre des blockchains
homogènes et hétérogènes. La première technologie inter-chaînes à être réalisée est l’Interledger qui
est un protocole proposé par Ripple Labs.

La cross-chain vise à résoudre le problème d’interopérabilité en permettant des interactions di-


rectes et sécurisées entre différentes blockchains, sans avoir besoin d’une autorité centrale. Cela
ouvre de nouvelles possibilités d’échanges d’actifs, de partage de données et de collaboration entre
des blockchains auparavant isolées.

Il existe différentes approches techniques pour mettre en œuvre la cross-chain, telles que les proto-
coles de relais,le hash lock , les sidechains (chaînes secondaires)et le schéma notarial.[52]
Nous allons étudier toutes ces approches pour mieux les comprendre :

2.17.1 Protocoles de relais :


La solution de chaîne de relais convient à l’interaction entre chaînes hétérogènes. Il existe un
grand nombre de projets matures qui choisissent d’utiliser la chaîne de relais comme solutions inter-
chaînes. On peut citer comme exemple le projet cosmos qui a vu le jour en 2019.
Il propose le protocole de communication Inter-blockchain pour l’interaction inter-chaînes basée sur
des chaînes de relais. Un deuxième projet que nous pouvons donner comme exemple est le projet
Polkadot qui a à son tour utilisé cette solution.[52]

2.17.2 Sidechain
La solution sidechain, sont des blockchains indépendantes qui fonctionnent en parallèle avec une
blockchain principale. Les sidechains permettent d’ajouter de nouvelles fonctionnalités, d’expéri-
menter de nouvelles technologies ou de résoudre des problèmes spécifiques sans altérer la blockchain
principale.

La sidechain est capable de soulager la pression sur la chaîne principale et peut stocker et trai-
ter seule une partie des transactions. Cependant, la technologie sidechain a augmenté la complexité
du système et introduit de nouveaux problèmes de sécurité, tels que le transfert frauduleux et la
centralisation minière.[52]

2.17.3 Le Schéma notarial :


Le schéma notarié est un schéma inter-chaînes qui fait intervenir un tiers de confiance. Il agit en
tant que notaire via un seul nœud indépendant ou des nœuds distribués. Il a pour but de vérifier
la légitimité et la cohérence des transactions inter-chaînes. Il est facile à mettre en œuvre dans un
scénario réel.

Le schéma notarié est une solution cross-chain qui est utilisée par le protocole Interledger. Cepen-
dant, il reste quand-même vulnérable à des attaques par des notaires malveillants. Il est également
incapable d’interagir avec les contrats intelligents à travers les chaînes. Certaines solutions inter-
chaînes tentent de recourir à des algorithmes de cryptographie tels que la multi-signature pour
résoudre le risque d’attaques.[52]

44
CHAPITRE 2. BLOCKCHAIN

2.17.4 Le Verrouillage par hachage :


Le verrouillage de hachage est également appelé accords Hashed-Timelock. Il est apparu pour
la première fois dans le réseau Lightning et a été conçu pour résoudre le problème d’évolutivité du
Bitcoin par Poon.

Un hash time lock (HTLC) ou verrouillage temporel par hachage est un mécanisme utilisé dans les
protocoles de blockchain et de crypto-monnaie afin de faciliter des transactions sécurisées et sans
confiance entre les parties.
Le concept est de poser un délai ou une condition temporelle spécifique sur une transaction. Il
garantit que la transaction ne peut pas être exécutée tant qu’une période de temps prédéterminée
ne s’est pas écoulée.

Lors de la réalisation des transactions inter-chaînes, les deux parties de la transaction peuvent
verrouiller les actifs. Ils posent un délai ou une condition temporelle spécifique sur une transaction.
Ils définissent l’heure correspondante et les conditions de déverrouillage par communication sans
l’intervention d’un tiers pour réaliser l’échange atomique.[52]

En général, les solutions d’interopérabilité ont trois avantages qui se démarquent. Ces derniers
sont :[53]

- La décentralisation : la solution d’interopérabilité peut impliquer des parties de confiance,


ou il peut s’appuyer entièrement sur les chaînes de blocs sous-jacentes.

- Le coût : le coût de transfert des actifs et des données est un facteur important qui motive
les utilisateurs à utiliser un protocole.

- L’universalité : certaines solutions déplacent l’ensemble des données d’une chaîne à une autre.

La cross-chain présente des avantages considérables, Cependant son adoption reste limitée en
raison de certains obstacles majeurs.

2.18 Difficultés de la technologie cross-chain :


La cross-chain est une recherche clé de la blockchain. A l’heure actuelle, l’utilisation de la cross-
chain est restreint à cause des difficultés techniques qui demeurent être un obstacle majeur.
Comme exemples de difficultés techniques on peut citer :

- Le problème de la vérification de l’état de la transaction sur la chaîne originale de manière


à ce qu’elle soit distribuée.

- Les systèmes de blockchain ont besoin d’une fiabilité absolue de l’information. Il est très
difficile de confirmer la légitimité et la validité des transactions dans une autre chaîne.

- Lors d’une transaction, il faut s’assurer que le montant total de jetons sur la chaîne d’origine
ne sera pas réduit ou augmenté en raison de la chaîne croisée.

45
CHAPITRE 2. BLOCKCHAIN

2.19 Conclusion :
Dans ce chapitre nous avons présenté le principe général de la blockchain, cette dernière a ré-
volutionné le monde des transactions que ce soit de la crypto monnaie, des informations ou des
données.
Nous avons constaté que cette technologie peut être introduite dans différents domaines, ces der-
niers sont : la santé, le transport ou l’industrie. La blockchain a su apporter plus de sécurité et
d’intégrité à l’IoT.

Cette technologie ne cesse de se développer puisque la cross chain a vu le jour, elle vise à ré-
soudre le problème d’interopérabilité et d’améliorer la blockchain.

Par la suite nous avons abordé de récentes technologies cross chain à savoir les chaînes de re-
lais, les sidechains, le schéma notarial ainsi que le verrouillage par hachage.

Dans le chapitre suivant nous allons étudier et utiliser une nouvelle plateforme nommée Hyper-
ledger Fabric pour déployer un smart contract de véhicules.

46
CHAPITRE 3
IMPLÉMENTATION

47
CHAPITRE 3. IMPLÉMENTATION

3.1 Introduction
Comme nous l’avons expliqué précédemment,la technologie blockchain a permis l’émergence de
nouvelles applications dans divers domaines.
Dans ce chapitre, nous allons nous consacré à l’étude de la gestion des véhicules en ayant recours à
la plateforme hyperledger Fabric qui offre la possibilité de déployer des smart contract.
Dans cette partie de notre mémoire, nous allons voir comment installer Hyperledger Fabric et
comment l’utiliser pour mettre en place une blockchain. Nous allons également proposer un smart
contrat pour la gestion des véhicules.

Le smart contract permettra de définir les règles d’accès à la blockchain ainsi que les autorisa-
tions pour la modification des données. Il va également offrir les mécanismes de vérification et de
validation des transactions.

3.2 Performances du PC :
Pour l’application de la blockchain à l’IoT, nous avons eu recours à une machine DELL Latitude
7480 avec les caractéristiques suivantes :

- Processeur : Intel(R) Core(TM) i7-7600U CPU @ 2.80GHz 2.90 GHz.


- RAM : 16,0 Go.
- Système d’exploitation : Microsoft Windows 10 Professionnel Processeur 64 bits

3.3 Conception :
3.3.1 Hyperledger :
Hyperledger est un projet open source et une base de code de niveau entreprise. Le but princi-
pal de ce projet est de faire progresser la blockchain. Il a été réalisé en tant que projet de LINUX
Fondation.
Il existe plusieurs projets hyperledger. On peut citer comme exemples :[54]

- Hyperledger Sawtooth.
- Hyperledger Indy.
- Hyperledger Burrow.
- Hyperledger Iroha.
- Hyperledger Fabric.

Dans notre cas, nous avons utilisé Hyperledger fabric.

Avant cela, il est important de connaître l’outil hyperledger Fabric et spécifier ses besoins pour
qu’il soit fonctionnel.

48
CHAPITRE 3. IMPLÉMENTATION

3.3.2 Hyperledger fabric :

Hyperledger Fabric est un projet Hyperledger de Linux lancé en 2015, il propose la mise en place
d’une blockchain privée.[55]

Hyperledger Fabric propose la notion de canal. Ce système de canaux permet l’isolation totale
des transactions. En effet, cela offre la possibilité de partager les hachages sur le registre comme
preuve de transactions, tout en gardant les données de la transaction privées.[55]

Hyperledger fabric est une implémentation d’une plateforme de registre distribuée pour l’exécu-
tion des contrats intelligents. Les smart contracts dans Hyperledger Fabric peuvent être écrits dans
des langages différents. Ils peuvent être écrit en go, java script ou autre.[54]

Javascript :
Javascript est un langage de programmation de haut niveau. Il est surtout utilisé pour les
applications WEB. Il travaille généralement avec le HTML et le CSS mais il peut aussi être utilisé
dans d’autres applications. C’est un langage facile à utiliser.
Dans notre cas, nous avons privilégié le javascript pour les raisons citées précédemment.

Fonctionnalités d’Hyperledger Fabric :


- Une blockchain autorisée avec finalité immédiate.
- Il permet l’exécution des contrats intelligents.
- Le code blockchain est encapsulé dans un conteneur Docker.

3.3.3 Les éléments nécessaires pour installer Hyperledger Fabric :


Pour installer Hyperledger Fabric, nous avons besoin de certains pré requis qui sont :

- Une machine virtuelle dont notre choix a été porté sur ubuntu 20.04
- Docker, que nous avons téléchargé du site
:https ://store.docker.com/editions/community/docker-ce-desktop-
- Node js que nous avons téléchargé du site :https ://nodejs.org/en/download/
- Git que nous avons téléchargé du site :https ://git-scm.com/download/win

49
CHAPITRE 3. IMPLÉMENTATION

Les différents outils utilisés :


. Docker :

Docker est un conteneur dans lequel on peut lancer des applications logiciels.[55]

La figure 3.1 présente le résultat du déploiement de notre hyperledger dans le docker.

Figure 3.1 – Déploiement d’Hyperledger dans le Docker.

. Node.js :

Node.js est une plateforme libre en JavaScript, orientée vers les applications réseau. Elle permet
l’exécution de JavaScript côté serveur. En outre, elle permet de créer des applications réseaux
évolutives grâce à son fonctionnement non bloquant.[55]

50
CHAPITRE 3. IMPLÉMENTATION

3.3.4 Contrôle d’accès dans Hyperledger Fabric :


L’une des caractéristiques essentielles de la blockchain est le contrôle d’accès sécurisé et autorisé.
Souvent, il est constaté que la méthode de contrôle d’accès pour accéder au code blockchain par les
organisations membres est intégrée dans le code blockchain lui-même et est appliquée pendant le
traitement de la transaction sur plusieurs pairs d’approbation. Le résultat est validé par consensus
transactionnel. D’autres techniques peuvent être intégrées dans les niveaux d’application en inter-
action avec le contrat.[56]

Le contrôle d’accès dans Hyperledger Fabric provient du niveau consortium qui crée les règles
et les politiques du contrôle d’accès.Il fera ensuite partie du bloc genesis. [56]

3.4 Notre approche :


Notre approche consiste à intégrer un smart contract de type IoT dans une blockchain et la
valider auprès d’hyperledger fabric. Par la suite, nous allons expliquer toutes les étapes de l’instal-
lation de l’environnement hyperledger fabric sur notre machine ainsi que la création et l’intégration
de notre smart contract(IoT) dans la blockchain.

Figure 3.2 – Modèle du réseau.


[36]

La figure(3.2) est une représentation du réseau Vanet connecté grâce a la blockchain. Tout d’abord,
nous remarquons qu’il existe différentes communications importantes : une communication v2v qui
s’effectue entre les véhicules. Une autre communication qui concerne les véhicules et les RSU. La
dernière communication concerne les RSU et le cloud serveur network où se trouve le réseau block-
chain.
Toutes ces communications seront sécurisées et cela grâce à la blockchain.

51
CHAPITRE 3. IMPLÉMENTATION

3.5 Implémentation et Résultats :


3.5.1 Installation de hyperledger fabric :
Les étapes de l’installation sont énumérés dans le tableau(3.1) :[57]

Commandes
1 Ouvrez powershell en mode administrateur.
2 Activez le sous-système Windows pour Linux :
dism.exe /online /enable-feature /featurename :Microsoft-Windows-Subsystem-Linux /all /norestart
3 Activer la fonctionnalité de machine virtuelle :
dism.exe /online /enable-feature /featurename :VirtualMachinePlatform /all /norestart
4 Définir WSL-2 comme version par défaut :
wsl –set-default-version 2
5 Installez l’application Ubuntu à partir du Windows Store :
Ouvrez le Microsoft Store et installez Ubuntu 20.04 LTS.
6 Installez windows terminal :
Avec ce dernier on peut accéder l’invité de commande Ubuntu.
7 Télécharger le package de mise à jour du noyau Linux :
Pour mettre à jour la configuration de téléchargement du package WSL :
https ://wslstorestorage.blob.core.windows.net/wslblob/wslu pdatex 64.msi
il faut être en mode administrateur.
8 Ouvrez le terminal Windows et ajoutez un nouvel onglet ubuntu.
Et ajoutez une nouvelle section de terminal.
9 Ouvrez installé, "Ubuntu 20.04 LTS" une fois, afin qu’il soit lié au terminal Windows.
10 Faire une mise à jour et installation des packages de base pour Ubuntu.
sudo apt update and sudo apt upgrade
11 Activer Docker pour Ubuntu :
Allez aux paramètres
- Ressources
- intégration WSL
- Activer Ubuntu-20.04
- Appuyez ensuite sur Appliquer et redémarrez
Après avoir activé cela, nous aurons docker dans la ligne de commande Ubuntu.
12 Exécutez la commande suivante pour vérifier si vous pouvez y accéder sur Ubuntu :
docker –version
docker-compose –version
13 Exécutez la commande suivante pour installer et mettre à jour les packages de base sur Ubuntu :
sudo apt update
sudo apt upgrade
14 Vérifiez si cURL existe déjà :
curl –v
15 Si CURL n’existe pas, installez-le via la commande suivante :
sudo apt-get install curl
16 Vérifiez si Go lang existe :
go version
17 Si Go ne s’installe pas, procédez comme suit :
Téléchargez le package Go lang pour Linux à partir :
sudo wget https ://golang.org/dl/go1.16.3.linux-amd64.tar.gz

52
CHAPITRE 3. IMPLÉMENTATION

18 La commande suivante extraira le fichier zip à l’emplacement téléchargé :tar xvf go1.16.3.linux-amd
64.tar.gz
19 Définissez GOPATH à l’aide de la commande suivante :
export GOPATH= :$HOME/go
export PATH =$PATH :$GOPATH/bin
20 Exécutez la commande suivante pour vérifier que Go lang est correctement installé :
go version
21 Exécutez la commande suivante si git est installé :
git -–version
22 Installez Hyperledger Fabric :
Note :La Hyperledger fabric version est 2.3.2
23 Créez un répertoire avec la commande suivante :
Créez un nouveau répertoire : mkdir -p $HOME/go/src/github.com/
Accédez à ce répertoire créé : cd $HOME/go/src/github.com/
24 Téléchargez la dernière version des échantillons de tissu et des images Docker.
Exécutez la commande suivante sous $HOME/go/src/github.com/ directory
curl -sSL https ://bit.ly/2ysbOFE | bash -s
25 navigate to fabric folder :
cd $wsl
cd go/src/github.com/fabric-samples
26 utilisez la commande : cd test-network.
Ensuite exécutez la commande suivante pour supprimer tout conteneur
ou artefact existant de l’exécution précédente.
./network.sh down
27 L’exécution suivante démarrera le réseau de test de fabric :
./network.sh up
28 Exécutez la commande suivante pour répertorier toutes les images Docker en cours d’exécution :
docker ps –a

Table 3.1 – Installation de l’outil Hyperledger Fabric.

53
CHAPITRE 3. IMPLÉMENTATION

3.5.2 Les commandes utilisées dans hyperledger fabric :


Nous avons utilisé certaines commandes pour le déploiement de notre smart contrat sur hyper-
ledger fabric qui sont :[58]

- La commande npm init est utilisée pour initialiser un projet Node.js et générer un fichier
package.json qui décrit les dépendances du projet.

pfe@DESKTOP−HE7KF19: ~ / go / s r c / g i t h u b . com/ f a b r i c −s a m p l e s / t e s t −network$ npm i n i t

- La commande npm install fabric-contract-api permet d’importer une bibliothèque qui


fournit une interface commune pour les smart contracts Fabric, indépendamment du langage
de programmation utilisé pour les écrire.

pfe@DESKTOP−HE7KF19: ~ / go / s r c / g i t h u b . com/ f a b r i c −s a m p l e s / t e s t −network$ npm


i n s t a l l f a b r i c −c o n t r a c t −a p i

- La commande npm install fabric-shim permet d’importer une bibliothèque Node.js. Elle
fournit une interface entre le smart contract et offre des méthodes pour accéder à la base
de données de l’état.Elle permet également de gérer les transactions, de les valider et de
récupérer les informations sur l’utilisateur.

pfe@DESKTOP−HE7KF19: ~ / go / s r c / g i t h u b . com/ f a b r i c −s a m p l e s / t e s t −network$ npm


install f a b r i c −shim

- Par la suite, nous avons créé un fichier qui englobe les points de sorties de notre smart
contrat. Nous avons nommé ce fichier indexx.js.
Puis nous avons créé un répertoire lib qui va contenir notre smart contrat de type VANET.
Ce dernier sera nommé véhicule.js

- Pour passer à la commande suivante, nous avons d’abord vérifier si nous possédons le fichier
docker.servie. Pour cela nous avons utilisé la commande.

pfe@DESKTOP−HE7KF19: ~ / go / s r c / g i t h u b . com/ f a b r i c −s a m p l e s / t e s t −network$ l s / l i b /


systemd / system / d o c k e r . s e r v i c e

En exécutant cette commande nous avons remarqué que le fichier n’existait pas. C’est pour
cette raison qu’il a été importé avec la commande

pfe@DESKTOP−HE7KF19: ~ / go / s r c / g i t h u b . com/ f a b r i c −s a m p l e s / t e s t −network$ c u r l −


f s S L h t t p s : // download . d o c k e r . com/ l i n u x / ubuntu / gpg | sudo apt−key add −

54
CHAPITRE 3. IMPLÉMENTATION

Cette commande permet juste d’importer le fichier. Nous devons donc l’ajouter dans le
répertoire test-network en exécutant la commande :

pfe@DESKTOP−HE7KF19: ~ / go / s r c / g i t h u b . com/ f a b r i c −s a m p l e s / t e s t −network$ sudo add−


apt−r e p o s i t o r y " deb [ a r c h=amd64 ] h t t p s : / / download . d o c k e r . com/ l i n u x / ubuntu
$ ( l s b _ r e l e a s e −c s ) s t a b l e "

Le résultat est représenté en figure(3.3) :

Figure 3.3 – Importation et installation du dossier docker.service.

Par la suite, une mise a jour a été réalisée à l’aide de la commande :

pfe@DESKTOP−HE7KF19: ~ / go / s r c / g i t h u b . com/ f a b r i c −s a m p l e s / t e s t −network$ sudo apt−


g e t update

Les résultats obtenus sont représentés en figure(3.4) :

Figure 3.4 – Mise à jour des fichiers.

- L’étape qui suit consiste à démarrer le docker en utilisant la commande :

pfe@DESKTOP−HE7KF19: ~ / go / s r c / g i t h u b . com/ f a b r i c −s a m p l e s / t e s t −network$ sudo


s e r v i c e docker s t a r t

- On peut s’assurer que le docker est réellement en marche grâce à la commande :

pfe@DESKTOP−HE7KF19: ~ / go / s r c / g i t h u b . com/ f a b r i c −s a m p l e s / t e s t −network$ sudo


s e r v i c e docker s t a t u s

55
CHAPITRE 3. IMPLÉMENTATION

Comme résultat, nous avons obtenu l’état du docker en figure(3.5)

Figure 3.5 – Vérification de l’état du docker.

Nous pouvons maintenant passer aux étapes suivantes.

- La commande ./network.sh down est utilisée dans l’environnement de développement de


Hyperledger Fabric pour arrêter et supprimer les ressources de la blockchain. Elle permet
de nettoyer complètement l’environnement de développement afin d’obtenir une exécution
propre au départ.

pfe@DESKTOP−HE7KF19: ~ / go / s r c / g i t h u b . com/ f a b r i c −s a m p l e s / t e s t −network$ . / network


. sh down

- La commande ./network.sh up createChannel est utilisée dans l’environnement de


développement de Hyperledger Fabric pour démarrer les ressources de la blockchain et créer
un canal dans la blockchain.

pfe@DESKTOP−HE7KF19: ~ / go / s r c / g i t h u b . com/ f a b r i c −s a m p l e s / t e s t −network$ . / network


. sh up c r e a t e C h a n n e l

Le résultat de l’utilisation de cette commande est illustré en figure(3.6).

Figure 3.6 – Résultat de la création de la channel.

56
CHAPITRE 3. IMPLÉMENTATION

- Pour la suite, il est nécessaire de changer de répertoire pour pouvoir créer un package de la
chaincode. Le répertoire en question est :.

pfe@DESKTOP−HE7KF19: ~ / go / s r c / g i t h u b . com/ f a b r i c −s a m p l e s / t e s t −network$ cd f a b r i c


−s a m p l e s / a s s e t −t r a n s f e r −b a s i c / c h a i n c o d e −j a v a s c r i p t

- La commande npm install permet l’installation de la librairie et ses dépendances.

pfe@DESKTOP−HE7KF19: ~ / go / s r c / g i t h u b . com/ f a b r i c −s a m p l e s / a s s e t −t r a n s f e r −b a s i c /
c h a i n c o d e −j a v a s c r i p t $ npm i n s t a l l

- La commande suivante va permettre de définir les variables d’environnement.

pfe@DESKTOP−HE7KF19: ~ / go / s r c / g i t h u b . com/ f a b r i c −s a m p l e s / t e s t −network$ e x p o r t


PATH=$ {PWD} / . . / b i n : $PATH
pfe@DESKTOP−HE7KF19: ~ / go / s r c / g i t h u b . com/ f a b r i c −s a m p l e s / t e s t −network$ e x p o r t
FABRIC_CFG_PATH=$PWD/ . . / c o n f i g /

On peut vérifier la version de notre peer grâce à la commande peer version comme montré
en figure(3.7).

Figure 3.7 – Vérification de la version de notre peer.

pfe@DESKTOP−HE7KF19: ~ / go / s r c / g i t h u b . com/ f a b r i c −s a m p l e s / t e s t −network$ p e e r


l i f e c y c l e c h a i n c o d e package b a s i c . t a r . gz −−path . . / a s s e t −t r a n s f e r −b a s i c /
c h a i n c o d e −j a v a s c r i p t / −−l a n g node −−l a b e l b as ic _ 1 . 0

Elle permet de créer notre package (pour notre cas, nous lui avons donné comme nom ba-
sic_1.0 pour pouvoir l’identifier par la ensuite)

57
CHAPITRE 3. IMPLÉMENTATION

- Maintenant que le package est bien créé, nous pouvons l’installer sur nos nœuds.

Il faut commencer par redéfinir les variables d’environnement et les certificat.Pour cela nous
avons introduit la commande :

pfe@DESKTOP−HE7KF19: ~ / go / s r c / g i t h u b . com/ f a b r i c −s a m p l e s / t e s t −network$ e x p o r t


CORE_PEER_TLS_ENABLED=t r u e
pfe@DESKTOP−HE7KF19: ~ / go / s r c / g i t h u b . com/ f a b r i c −s a m p l e s / t e s t −network$ e x p o r t
CORE_PEER_LOCALMSPID="Org1MSP"
pfe@DESKTOP−HE7KF19: ~ / go / s r c / g i t h u b . com/ f a b r i c −s a m p l e s / t e s t −network$ e x p o r t
CORE_PEER_TLS_ROOTCERT_FILE=$ {PWD}/ o r g a n i z a t i o n s / p e e r O r g a n i z a t i o n s / o r g 1 .
example . com/ p e e r s / p e e r 0 . o r g 1 . example . com/ t l s / ca . c r t
pfe@DESKTOP−HE7KF19: ~ / go / s r c / g i t h u b . com/ f a b r i c −s a m p l e s / t e s t −network$ e x p o r t
CORE_PEER_MSPCONFIGPATH=$ {PWD}/ o r g a n i z a t i o n s / p e e r O r g a n i z a t i o n s / o r g 1 .
example . com/ u s e r s /Admin@org1 . example . com/msp
pfe@DESKTOP−HE7KF19: ~ / go / s r c / g i t h u b . com/ f a b r i c −s a m p l e s / t e s t −network$ e x p o r t
CORE_PEER_ADDRESS=l o c a l h o s t : 7 0 5 1

Pour l’installation du package sur le premier noeud, nous avons appliquons la commande :
-
pfe@DESKTOP−HE7KF19: ~ / go / s r c / g i t h u b . com/ f a b r i c −s a m p l e s / t e s t −network$ p e e r
l i f e c y c l e c h a i n c o d e i n s t a l l b a s i c . t a r . gz

Comme résultat nous aurons l’apparition du code 200 en figure(3.8). Cela prouve que tout
s’est bien déroulé et que le package a été bien installé sur le nœud.

Figure 3.8 – Résultat de l’installation du package sur le nœud.

Le noeud numéro 2 nécessite les mêmes étapes que le noeud précédent pour l’installation du
package.

- L’étape qui suit consiste à valider la chaincode.


Pour cela il faut d’abord récupérer l’Id de la chaincode avec la commande

pfe@DESKTOP−HE7KF19: ~ / go / s r c / g i t h u b . com/ f a b r i c −s a m p l e s / t e s t −network$ p e e r


l i f e c y c l e chaincode q u e r y i n s t a l l e d

Suite à l’utilisation de cette commande nous avons obtenu la figure(3.9).

Figure 3.9 – Résultat de la récupération de l’Id.

Ensuite nous avons redéfinit la variable de CC_PACKAGE_ID avec l’Id que nous avons
récupéré grâce à la commande précédente.

58
CHAPITRE 3. IMPLÉMENTATION

Pour redéfinir la variable, nous avons utilisé :

pfe@DESKTOP−HE7KF19: ~ / go / s r c / g i t h u b . com/ f a b r i c −s a m p l e s / t e s t −network$ e x p o r t


CC_PACKAGE_ID=ba si c _1 . 0 :
b151fb84b950f01a5d624461d2110c33a2972d8ec9a883180cb32308b2b20645

- La chaincode peut être validée avec la commande :

pfe@DESKTOP−HE7KF19: ~ / go / s r c / g i t h u b . com/ f a b r i c −s a m p l e s / t e s t −network$ p e e r


l i f e c y c l e c h a i n c o d e a p p r o v e f o r m y o r g −o l o c a l h o s t : 7 0 5 0 −−
ordererTLSHostnameOverride o r d e r e r . example . com −−c h a n n e l I D mychannel −−
name b a s i c −−v e r s i o n 1 . 0 −−package−i d $CC_PACKAGE_ID −−s e q u e n c e 1 −− t l s −−
c a f i l e " $ {PWD}/ o r g a n i z a t i o n s / o r d e r e r O r g a n i z a t i o n s / example . com/ o r d e r e r s /
o r d e r e r . example . com/msp/ t l s c a c e r t s / t l s c a . example . com−c e r t . pem"

La figure(3.10) illustre le résultat de la validation.

Figure 3.10 – Résultat de la validation.

Il faut refaire les mêmes étapes pour l’organisation 1 avec les commandes suivantes :

pfe@DESKTOP−HE7KF19: ~ / go / s r c / g i t h u b . com/ f a b r i c −s a m p l e s / t e s t −network$ e x p o r t


CORE_PEER_LOCALMSPID="Org1MSP"
pfe@DESKTOP−HE7KF19: ~ / go / s r c / g i t h u b . com/ f a b r i c −s a m p l e s / t e s t −network$ e x p o r t
CORE_PEER_MSPCONFIGPATH=$ {PWD}/ o r g a n i z a t i o n s / p e e r O r g a n i z a t i o n s / o r g 1 .
example . com/ u s e r s /Admin@org1 . example . com/msp
pfe@DESKTOP−HE7KF19: ~ / go / s r c / g i t h u b . com/ f a b r i c −s a m p l e s / t e s t −network$ e x p o r t
CORE_PEER_TLS_ROOTCERT_FILE=$ {PWD}/ o r g a n i z a t i o n s / p e e r O r g a n i z a t i o n s / o r g 1 .
example . com/ p e e r s / p e e r 0 . o r g 1 . example . com/ t l s / ca . c r t
pfe@DESKTOP−HE7KF19: ~ / go / s r c / g i t h u b . com/ f a b r i c −s a m p l e s / t e s t −network$ e x p o r t
CORE_PEER_ADDRESS=l o c a l h o s t : 7 0 5 1

Puis on valide avec la commande :

pfe@DESKTOP−HE7KF19: ~ / go / s r c / g i t h u b . com/ f a b r i c −s a m p l e s / t e s t −network$ p e e r


l i f e c y c l e c h a i n c o d e a p p r o v e f o r m y o r g −o l o c a l h o s t : 7 0 5 0 −−
ordererTLSHostnameOverride o r d e r e r . example . com −−c h a n n e l I D mychannel −−
name b a s i c −−v e r s i o n 1 . 0 −−package−i d $CC_PACKAGE_ID −−s e q u e n c e 1 −− t l s −−
c a f i l e " $ {PWD}/ o r g a n i z a t i o n s / o r d e r e r O r g a n i z a t i o n s / example . com/ o r d e r e r s /
o r d e r e r . example . com/msp/ t l s c a c e r t s / t l s c a . example . com−c e r t . pem"

59
CHAPITRE 3. IMPLÉMENTATION

3.6 Conclusion :
Dans ce chapitre nous avons commencé par définir l’outil hyperledger plus précisément Hyper-
ledger fabric qui est une plateforme qui permet de déployer des contrats intelligents. Ces contrats
peuvent être comme dans notre cas des contrats de gestions de véhicules. Cette plateforme per-
met de déployer des blockchains privées et d’améliorer la sécurité et l’intégrité. Par la suite, nous
avons expliqué toutes les étapes à suivre pour l’installation de l’outil et le déploiement du contrat
intelligent sur le réseau.

60
CONCLUSION GÉNÉRALE

L’internet des objets est une technologie du présent et du future. Cette tech-
nologie facilite énormément la vie des personnes. L’IoT devient plus performantes
en lui intégrant la blockchain qui lui apporte la transparence, la décentralisation et
la sécurité. Malgré ces défis, l’IoT et la blockchain continuent de susciter un inté-
rêt croissant dans de nombreux secteurs notamment dans l’industrie, le transport,
l’énergie, l’agriculture et la santé.

L’intégration de l’outil Hyperledger Fabric et des contrats intelligents dans le do-


maine des véhicules par exemple offre plus de sécurité et d’efficacité pour les opéra-
tions liées aux véhicules.

Dans ce mémoire nous avons abordé l’outil Hyperledger Fabric où nous avons détaillé
les étapes à suivre pour l’installation de cet outil.
Par la suite, nous avons intégré un smart contrat de véhicules en langage Java Script
dans l’environnement Hyperledger Fabric. Nous avons présenté de façon explicite
toutes les étapes de l’intégration du smart contract et de la validation de notre
chaincode.

Nous proposons pour les futures projets, d’essayer d’optimiser et d’améliorer les
protocoles de communications, d’introduire une cross-chain à Hyperledger Fabric en
essayant d’utiliser un pont entre eux pour les rendre compatible. En outre, nous
conseillerons aussi d’introduire d’autres smart contracts plus performants à Hyper-
ledger Fabric ou encore de déployer une blockchain ou une cross chain dans un autre
outil de la famille Hyperledger.

61
BIBLIOGRAPHIE

[1] Chayma BAHHAR, Chokri BACCOUCHE, Hedi SAKLI, "IoT et Intelligence Artificielle pour
lutter contre les incendies", Hal open science, 2022.
[2] Somia SAHRAOUI, "Mécanismes de sécurité pour l’intégration des RCSFs à l’IoT (Internet
of Things)", Thèse de Doctorat de l’Université de Batna 2, 2016.
[3] Badr Benmammar, "Optimisation des Perforamances de l’IoT : une approche basée sur la
radio intelligente", Article du livre La gestion et le contrôle intelligents des performances et
de la sécurité dans l’IoT, 2022.
[4] Rateb Jabbar, "Blockchain for the Internet of Vehicles : A Decentralized IoT Solution for
Vehicles Communication and Payment using Ethereum", Sensors, 2021.
[5] Darshan K.R, Anandakumar K.R, "A Comprehensive Review on Usage of Internet of Things
(IoT) in Healthcare System", IEEE, 2015.
[6] Keyur Patel, Sunil Patel, Érudit PG, Carlos Salazar, "Internet des objets-IOT : définition,
caractéristiques, architecture, technologies habilitantes, application et défis futurs", IJESC,
2016.
[7] Naceur BELHADJ et Abdelhak ABBAD, "La sécurité de l’Internet des Objets (IoT)", Mé-
moire de fin d’études l’université IBN-KHALDOUN DE TIARET, 2022.
[8] Pallavi Sethi, Smruti Sarangi, "Internet of Things : Architectures, Protocols, and Applica-
tions", Hindawi. Année 2017.
[9] BOUKHNAISSI Fatima Zohra et Ammaria, GHOMARI Ghizlane, "Conception d’un proto-
type IoT pour la régulation de la température d’un lieu", Mémoire de fin d’études l’université
de tlemcen, 2020.
[10] Ahmed Khalil, Nader Mbarek et Olivier Togni, "Adaptation du contrôle d’accès pour la
sécurité de l’IoT", ISTE Group, 2022.
[11] Sunil Pathak, Sonal Jaïn, "Un algorithme de clustering stable optimisé pour les réseaux
mobiles ad hoc", Springer, 2022.
[12] Ouiza DERRICHE, "Etude et simulation des attaques dans les réseaux ad-hoc", Mémoire de
fin d’études l’université Mouloud Mammeri De Tizi-Ouzou.
[13] Jyoti Grover, "Security of Vehicular Ad Hoc Networks using blockchain :A comprehensive
review", Elsevier, 2022.
[14] CHAIB Noureddine, "La sécurité des communications dans les réseaux VANET", Mémoire
de fin d’études l’université ELHADJ LAKHDER - BATNA.
[15] BOUKSANI WALID, "gestion de la protection de la vie privée dans les réseaux vehiculaires
(VANET)", Mémoire de fin d’études l’université du QUÉBEC, 2017.
[16] Céline BURGOD, "Contribution à la sécurisation du routage dans les réseaux ad hoc", Thèse
de Doctorat Limoges france.

62
BIBLIOGRAPHIE

[17] Thibault Langlois-Berthelot, Pauline ELIE, SEGHIER Neil, "Blockchain et Digital ID Wal-
let :vers une identité européenne décentralisée ?", Hal science, 2022.
[18] Patrick Barban, " La blockchain : un commun au service exclusif de l’appropriation ?", ope-
nedition : Cahiers de la recherche sur les droits fondamentaux, 2022.
[19] Sana Sabah Sabry, Nada Mahdi Kaittan, Israa Majeed Ali, "The road to the blockchain
technology : Concept and types", Periodicals of Engineering and Natural Sciences, 2019.
[20] Gautier Marin-Dagannaud, "Le fonctionnement de la blockchain", Annales des Mines - Réa-
lités industrielles, 2017.
[21] Michael Nofer, Peter Gomber, Oliver Hinz, Dirk Schiereck, "Blockchain", Springer, 2017.
[22] Alice Barbet-Massin, "Réflexions autour de la reconnaissance juridique de l’horodatage blo-
ckchain par le législateur italien", Hal science, 2019.
[23] Saurabh Dhumwad, Mandar Sukhadeve, Chetan Naik, Manjunath KN, Srikanth Prabhu, "A
Peer To Peer Money Transfer using SHA256 and Merkle Tree", IEEE, 2017.
[24] Ali Dorri, Marco Steger, Salil S. Kanhere, Raja Jurdak, "BlockChain : A Distributed Solution
to Automotive Security and Privacy", IEEE, 2017.
[25] M. Ronan LE GLEUT, "Comprendre les blockchains : fonctionnement et enjeux de ces nou-
velles technologies", Sénat, 2018.
[26] Mahendra Kumar Shrivas, "La blockchain perturbatrice : types, plates-formes et applica-
tions", 2019.
[27] Fatima Haider, "A Complete Guide to Consortium Blockchain And Its Features", Analytics
vidhya, 2023.
[28] Ariane Tichit, Corentin Elissée, Frédéric Hayek, Pascal Lafourcade, "La Blockchain, avenir
des monnaies locales ?", Hal science, 2022.
[29] Marion PIGNEL, "LA TECHNOLOGIE BLOCKCHAIN Une opportunité pour l’économie
sociale ?", pour la solidarité european think and do tank, 2019.
[30] Damilare Peter Oyinloye, Je Sen Teh, Norziana Jamil, Moatsum Alawida, "Blockchain
Consensus : An Overview of Alternative Protocols", Symmetry, 2021.
[31] Baliga, A, "Understanding Blockchain Consensus Models", Boca Raton, Floride, États-Unis :
CRC Press, 2017.
[32] Yang Zhen, Miao Yue, Chen Zhong-yu , Tang Chang-bing, Chen Xin, "Zero-determinant
Strategy for the Algorithm optimize of Blockchain PoW Consensus", IEEE, 2017.
[33] CONG T. NGUYEN, DINH THAI HOANG, DIEP N. NGUYEN, DUSIT NIYATO, HUYNH
TUONG NGUYEN, ERYK DUTKIEWICZ, "Proof-of-Stake Consensus Mechanisms for Fu-
ture Blockchain Networks : Fundamentals, Applications and Opportunities", IEEE, 2019.
[34] Fan Yang, Wei Zhou, Qingqing Wu, Rui Long, Neal N, Meiqi Zhou, "Delegated Proof of Stake
with Downgrade : A Secure and Efficient Blockchain Consensus Algorithm with Downgrade
Mechanism", IEEE, 2017.
[35] MANPREET KAUR, MOHAMMAD ZUBAIR KHAN, SHIKHA GUPTA, ABDULFATTAH
NOORWALI, CHINMAY CHAKRABORTY, SUBHENDU KUMAR PANI, "MBCP : Per-
formance Analysis of Large Scale Mainstream Blockchain Consensus Protocols", IEEE, 2021.
[36] Wazid, Mohammad, al. s.l, "Fortifying Smart Transportation Security Through Public Blo-
ckchain", IEEE, 2022.
[37] Liu.Y, Li.D et Li.Z, "PBSCF-ITS : A Public Blockchain Secure Communication Framework
for Intelligent Transportation Systems", IEEE, 2021.
[38] Wood, G. Ethereum :"A Secure DecentralizedGeneralized Transaction Ledger", Ethereum
project yellow paper.
[39] Xia, Q., et al, "MeDShare : Trust-less medical data sharing among cloud service providers
via blockchain", IEEE, 2017.

63
BIBLIOGRAPHIE

[40] Halima MHAMDI, Ahmed ZOUINKHI, Hédi SAKLI1, "La technologie blockchain en faveur
de véhicules connectés : état de l’art", Hal science, 2019.
[41] Stéphane Manuel, "Analyse et conception de fonctions de hachage cryptographiques", Thèse
de Doctorat école Polytechnique X PARIS.
[42] Meelu Padhi, Ravindra Chaudhari, "An Optimized Pipelined Architecture of SHA-256 Hash
Function", IEEE, 2017.
[43] Christoph Dobraunig, Maria Eichlseder, Florian Mendel, "Analyse de SHA-512/224 et SHA-
512/256", Springer, 2015.
[44] Véronica Schmitt, Jason Jordaan, "Établir la validité du hachage Md5 et Sha-1 dans la
pratique médico-légale numérique à la lumière de recherches récentes démontrant les faiblesses
cryptographiques de ces algorithmes", International Journal of Computer Applications, 2021.
[45] ABDULLAH AL MAMUN, SAMI AZAM, AND CLEMENTINE GRITTI, "Blockchain-Based
Electronic Health Records Management : A Comprehensive Review and Future Research
Direction", IEEE, 2022.
[46] Shafaq Naheed Khan, Faïza Loukil, Chirine Ghedira-Guégan, Elhadj Benkhelifa, Anoud Bani-
Hani, "Contrats intelligents Blockchain : applications, défis et tendances futures", Springer,
2021.
[47] ASM Touhidul Hasan, Shabnam Sabah, "Vers la convergence de l’IoT et de la blockchain
pour une transaction sécurisée de la chaîne d’approvisionnement", SYMMETRY, 2022.
[48] Mohamed Ahmed Mohamed, Chantal Taconet, Mohamed Ould Mohamed Lemine, "La tra-
çabilité dans les chaînes logistiques en utilisant l’IoT et la Blockchain", Hal science, 2019.
[49] Valery SIKORSKIY, "Financement du négoce des matières premières et fraudes documen-
taires : avantages et inconvénients des solutions blockchain", Thèse de doctorat Genève haute
école de géstion, 2021.
[50] Minhaj Ahmad Khan, Khaled Salah, "IoT security : Review, blockchain solutions, and open
challenges", Elsevier, 2018.
[51] Ahmed Banafa, "Convergence IoT et Blockchain : avantages et défis", IEEE, 2017.
[52] Yuhang Ding1, Yanran Zhang1, Bo Qin1, Qin Wang2ORCIDE, Zihan Yang et Wenchang
Shi, "Un schéma évolutif de contrôle d’accès et d’authentification d’identité inter-chaînes",
sensors, 2023.
[53] Daneshpajooh, M, "HotGate : Trustless Cross-chain Settlement Protocol", Mémoire Master
l’université de clombie, 2020.
[54] Christian Cachin, "Architecture of the Hyperledger Blockchain Fabric", IBM, 2016.
[55] Robin GUYOMAR, Maxence BOURGEAUX, Souhail KACIMI, "Programmation d’une Blo-
ckchain à l’aide de la plateforme Hyperledger", Travail personnel encadré de l’université le
havre normandie, 2021.
[56] Adnan Iftekhar, Xiaohui Cui, Qi Tao and Chengliang Zheng, "Hyperledger Fabric Access
Control System for Internet of Things Layer in Blockchain-Based Applications", Entropy,
2021.
[57] https ://youtu.be/jYY-rmOJYoo, consulté le 26 Avril 2023
https ://prasadpusalkar.blogspot.com/2023/04/InstallingHyperledgeron
Windows.html, consulté le 26 Avril 2023
[58] https ://www.une blockchain.fr/creer-un-smart-contract-sur-hyperledger-fabric/, consulté le
7 Mai 2023
https ://www.une-blockchain.fr/mettre-en-ligne-un-smart-contrat-sur-un-channel-
hyperledger-fabric/, consulté le 7 Mai 2023

64
Appendices

65
ANNEXE

Smart Contract utilisé


1. Code index.js

’ use s t r i c t ’ ;
c o n s t V e h i c l e T r a c k i n g C o n t r a c t =r e q u i r e ( ’ . / l i b / v e h i c u l e . j s ’ ) ;
module . e x p o r t s . V e h i c l e T r a c k i n g C o n t r a c t=V e h i c l e T r a c k i n g C o n t r a c t ;
module . e x p o r t s . c o n t r a c t s s =[ V e h i c l e T r a c k i n g C o n t r a c t ] ;

2. Code véhicule.js

’ use s t r i c t ’ ;

c o n s t { C o n t r a c t } = r e q u i r e ( ’ f a b r i c −c o n t r a c t −a p i ’ ) ;

c l a s s VehicleTrackingContract extends Contract {

async i n i t L e d g e r ( ctx ) {
c o n s o l e . i n f o ( ’============= START : I n i t i a l i z e Ledger ===========’ ) ;
const v e h i c l e s = [
{
make : ’ T e s l a ’ ,
model : ’ Model S ’ ,
y e a r : ’ 2018 ’ ,
v i n : ’ 5YJSA1S25FF123456 ’ ,
owner : ’ John Doe ’
},
{
make : ’ Ford ’ ,
model : ’ Mustang ’ ,
y e a r : ’ 2020 ’ ,
v i n : ’ 1FA6P8CF9L5111111 ’ ,
owner : ’ Jane Smith ’
},
{
make : ’ Toyota ’ ,
model : ’ Camry ’ ,
y e a r : ’ 2021 ’ ,
v i n : ’ 4T1C11AK7MU555555 ’ ,
owner : ’ Bob Johnson ’
},
];

66
f o r ( l e t i = 0 ; i < v e h i c l e s . l e n g t h ; i ++) {
v e h i c l e s [ i ] . docType = ’ v e h i c l e ’ ;
a w a i t c t x . s t u b . p u t S t a t e ( v e h i c l e s [ i ] . vin , B u f f e r . from (JSON . s t r i n g i f y (
vehicles [ i ]) ) ) ;
c o n s o l e . i n f o ( ‘ Added v e h i c l e $ { v e h i c l e s [ i ] . v i n } t o t h e l e d g e r . ‘ ) ;
}

c o n s o l e . i n f o ( ’============= END : I n i t i a l i z e Ledger ===========’ ) ;


}

a s y n c c r e a t e V e h i c l e ( ctx , make , model , year , vin , owner ) {


c o n s o l e . i n f o ( ’============= START : C r e a t e V e h i c l e ===========’ ) ;
const vehicle = {
make ,
model ,
year ,
vin ,
owner ,
docType : ’ v e h i c l e ’
};
a w a i t c t x . s t u b . p u t S t a t e ( vin , B u f f e r . from (JSON . s t r i n g i f y ( v e h i c l e ) ) ) ;
c o n s o l e . i n f o ( ‘ Added v e h i c l e $ { v i n } t o t h e l e d g e r . ‘ ) ;

c o n s o l e . i n f o ( ’============= END : C r e a t e V e h i c l e ===========’ ) ;


r e t u r n JSON . s t r i n g i f y ( v e h i c l e ) ;
}

a s y n c q u e r y V e h i c l e ( ctx , v i n ) {
const vehicleAsBytes = await ctx . stub . g e t S t a t e ( vin ) ;
i f ( ! v e h i c l e A s B y t e s | | v e h i c l e A s B y t e s . l e n g t h === 0 ) {
throw new E r r o r ( ‘ V e h i c l e with VIN $ { v i n } d o e s not e x i s t . ‘ ) ;
}
console . log ( vehicleAsBytes . toString () ) ;
return vehicleAsBytes . toString () ;
}

a s y n c updateVehicleOwner ( ctx , vin , newOwner ) {


c o n s o l e . i n f o ( ’============= START : Update V e h i c l e Owner ===========’ ) ;

const vehicleAsBytes = await ctx . stub . g e t S t a t e ( vin ) ;


i f ( ! v e h i c l e A s B y t e s | | v e h i c l e A s B y t e s . l e n g t h === 0 ) {
throw new E r r o r ( ‘ V e h i c l e with VIN $ { v i n } d o e s not e x i s t . ‘ ) ;
}
c o n s t v e h i c l e = JSON . p a r s e ( v e h i c l e A s B y t e s . t o S t r i n g ( ) ) ;
v e h i c l e . owner = newOwner ;
a w a i t c t x . s t u b . p u t S t a t e ( vin , B u f f e r . from (JSON . s t r i n g i f y ( v e h i c l e ) ) ) ;
c o n s o l e . i n f o ( ‘ Updated v e h i c l e $ { v i n } with new owner $ {newOwner } . ‘ ) ;
c o n s o l e . i n f o ( ’============= END : Update V e h i c l e Owner ===========’ ) ;
r e t u r n JSON . s t r i n g i f y ( v e h i c l e ) ;
}
}

67

Vous aimerez peut-être aussi