Académique Documents
Professionnel Documents
Culture Documents
Réalisé par :
1
Remerciements
Nous rendons grâce à ALLAH le tout puissant de nous avoir octroyé la force et le courage nécessaires
afin de mener à bien ce travail.
Nos sincères remerciements à l’égard de notre honorable encadreur Mr Mededjel Mansour pour sa
disponibilité, sa patience et ses précieux conseils.
Nous tenons également à remercier les membres du jury pour le précieux temps qu’ils nous
accorderons.
Et enfin, nous disons merci à tous ceux qui de près ou de loin nous ont apporté leur soutien en
particulier nos familles respectives.
2
Résumé
La Blockchain désigne littéralement des conteneurs numériques sur lesquels sont stockés des
informations de toutes natures (transactions, contrats, …).
Tendermint est un logiciel open source de développement Blockchain mise au point pour faciliter la
tâche des développeurs.
Dans ce rapport, nous allons présenter un exemple d’application Blockchain développé avec
Tendermint qui a pour objectif d’envoyer des transactions dans un bloc.
Abstract
The Blockchain literally refers to containers on which information of all kinds is stored (transactions,
contracts, …).
Tendermint is an open source Blockchain development software developed to make it easier for
developers.
In this report, we will present an example of a Blockchain application developed with Tendermint
which aims to send transactions in a block.
الملخص
.) العقود الخ، حرفيًا إلى الحاويات التي يتم فيها تخزين المعلومات من جميع األنواع (المعامالتBlockchain تشير
. مفتوح المصدر تم تطويره لتسهيل األمر على المطورينBlockchain هو برنامج تطويرTendermint
والذي يهدف إلى إرسالTendermint الذي تم تطويره باستخدامBlockchain سنقدم مثالً لتطبيق،في هذا التقرير
.المعامالت في كتلة
3
Sommaire
1 Introduction ....................................................................................................................8
2 Définition ........................................................................................................................8
9 Conclusion .....................................................................................................................14
1 Introduction ..................................................................................................................15
2 Définition ......................................................................................................................15
4
1 Introduction ..................................................................................................................21
5
Introduction générale
La Blockchain est considérée comme l’une des plus grandes innovations du 21 siècle. Elle peut être
ème
assimilée à un grand livre numérique qui contient l’historique de toutes les transactions qui y ont été
effectuées depuis sa création. Les informations contenues dans la Blockchain sont accessibles par
tous les participants du réseau. Avec l’arrivé de cette technologie, deux inconnus peuvent s’échanger
des actifs en toute sécurité sans l’intervention d’une autorité centrale, chose qui était impossible
auparavant. Elle représente une innovation majeure appliquée à une multitude de domaines. Le plus
connu d’entre eux étant celui de la Cryptomonnaie Bitcoin qui est une nouvelle forme d’argent
fonctionnant sans autorité centrale.
L’un des intérêts de cette technologie réside dans l’efficacité économique optimale qu’elle nous
offre : gain de temps et coûts réduits par la suppression d’intermédiaire et l’automatisation,
réduction du taux d’erreurs, etc. Ces avantages sont d’une importance capitale à l’heure où le
manque de confiance est souvent invoqué comme un des principaux freins à la croissance. Elle
s’avère être aussi résistante face aux cyber-attaques en rendant difficile la modification des données
et quasi impossible la suppression de toutes les copies des documents existants. Une cyberattaque
ne peut y avoir lieu que si 50% des systèmes du réseau sont piratés.
En 2014, certains développeurs Blockchain se sont dits qu’au lieu de faire une seule Blockchain sur
laquelle tout le monde construit son application, pourquoi ne pas créer un moteur qui permettra à
chacun de créer sa propre Blockchain facilement ? Ainsi est venue l’idée de Tendermint qui est un
logiciel open source de développement de Blockchain. Avant la création de Tendermint, pour
concevoir une application Blockchain, on devait passer par l’implémentation des trois couches
(application, consensus, réseau). Tendermint facilite la tâche des développeurs en leur fournissant
les couches consensus et réseau. Ainsi, ils n’auront plus qu’à se concentrer sur la partie applicative
qui peut être développée dans le langage de programmation souhaité (C, C++, Go, …). La possibilité
de tirer parti d’un cadre existant signifie qu’ils peuvent se lancer directement dans la création
d’application sans avoir à mettre en place tout un réseau. L'architecture modulaire de Tendermint
assure une indépendance des composants (composants non liés) facilitant ainsi les mises à jour.
Contrairement à l’architecture monolithique qui rend difficile la réutilisation des composants. En
outre, Tendermint peut gérer des milliers de transaction par seconde. Il permet également de
développer plus rapidement des applications Blockchain.
- Le premier chapitre porte sur les notions générales de la technologie Blockchain (historique,
architecture, fonctionnement et domaines d’applications).
6
- Le deuxième chapitre est consacré au logiciel Tendermint (architecture, aspects et protocoles).
- Et le troisième chapitre porte sur une application Blockchain développée avec Tendermint.
7
Chapitre 1 : La Blockchain
1 Introduction
La technologie de la Blockchain, considérée comme l’une des plus grandes innovations du 21ème siècle
en raison de son impact sur divers secteurs remonte au début des années 1990. L’architecture
derrière cette technologie a été décrite dès 1991 par les chercheurs Stuart Haber et W. Scott
Stornetta qui ont travaillé sur une chaine de blocs sécurisée de manière cryptographique, selon
laquelle personne ne pouvait altérer l’horodatage1 des documents.
La première Blockchain est apparue fin 2008 avec la monnaie numérique bitcoin, développée par un
inconnu sous le pseudonyme Satoshi Nakamoto. Le logiciel original Bitcoin a été mis à la disposition
du public en janvier 2009. Il s’agissait d’un logiciel open source, ce qui signifie que tout le monde
pouvait examiner le code et le réutiliser. Il est constitué d’un système expérimental de transfert et de
vérification de propriété reposant sur un réseau de peer-to-peer sans autorité centrale. Ce réseau est
basé sur l’algorithme de preuve de travail HashCash, mais au lieu d’utiliser une fonction informatique
de confiance comme le RPoW (Reusable Proof of Work), la protection contre la double dépense est
assurée par un protocole peer-to-peer décentralisée afin de suivre et de vérifier les transactions.
Vitalik Buterin, programmeur et cofondateur du magazine Bitcoin, fonda en 2013 Etherum. Son but
était d’avoir une Blockchain plus volatile qui n’était pas basée uniquement sur les monnaies. Il lança
en 2015 Etherum comme une deuxième Blockchain publique qui peut enregistrer des contrats, des
emprunts, etc. Tandis que le Bitcoin ne peut enregistrer que des transactions [1].
2 Définition
À l’origine, le mot Blockchain (chaine de bloc en français) est un terme informatique qui désigne une
structure permettant de stocker et de partager des données [2].
Littéralement, une Blockchain désigne des conteneurs numériques sur lesquels sont stockés des
informations de toutes natures : transaction, contrat, titre de propriété, œuvre d’art, etc. L’ensemble
de ces blocs forment une base de données décentralisée semblable aux pages d’un livre de compte
[1].
Une Blockchain est un grand livre de compte ouvert et accessible à tous en lecture et en écriture et
qui est partagé sur un grand nombre d’ordinateur à travers le monde [3].
Une Blockchain est une technologie pour une nouvelle génération d’applications transactionnelles
qui, grâce à un mécanisme de consensus collectif couplé avec l’utilisation d’un grand livre de compte
1
Mécanisme consistant à associer une date et une heure à une information ou une donnée.
8
public, décentralisé et partagé, établit la confiance, la responsabilité et la transparence tout en
rationnalisant les processus d’affaires [3].
Une Blockchain est une base de données transactionnelle distribuée, comparable à un grand livre
comptable décentralisée et partagée, qui stocke et transfert de la valeur ou des données via Internet
de façon transparente, sécurisée et autonome sans organe central de contrôle [1].
4 Types de Blockchain
Il existe trois (3) types de Blockchain : publiques ouvertes à tous, privées dont l’accès et l’utilisation
sont limitées à un certain nombre d’acteurs et consortium (hybrides).
9
4.3 Blockchain consortium (permissionned Blockchain)
Elle est « partiellement décentralisée ». Dans ce type de Blockchain, le processus de consensus
(validation des transactions/blocs) est contrôlé par un nombre connu et restreint de nœuds. Leur
code source peut ou non être open source. Ripple est un exemple de ce type.
Ces trois types de Blockchain utilisent la cryptographie pour permettre à chaque participant sur un
réseau donné de gérer le grand livre (registre) de manière sécurisé sans avoir besoin d’une autorité
centrale pour le valider.
L’élimination de l’autorité centrale de la structure de la base de données est l’un des aspects les plus
importants et les plus puissants de la Blockchain.
5 Architecture de la Blockchain
Voici les principaux composants de l’architecture Blockchain :
10
Mineurs : ce sont des nœuds spécifiques qui effectuent le processus de vérification des blocs
avant d’ajouter quoi que ce soit à la structure de la Blockchain.
Consensus : un ensemble de règles et d’arrangements pour effectuer des opérations des
Blockchain.
6 Fonctionnement de la Blockchain
La création et le fonctionnement de la Blockchain s’appuient sur l’utilisation d’un registre distribué
(chaine de blocs), la cryptographie (chiffrement/déchiffrement, échange de clés, …) et un mécanisme
(algorithme) de consensus pour valider les transactions. Le tout fonctionne dans un réseau pair à pair
selon les étapes suivantes :
Figure1/Fonctionnement de la Blockchain
(Source : https://coin24.fr/dictionnaire/blockchain/ )
11
)
7 Mécanismes de consensus
Les mécanismes de consensus sont des protocoles garantissant que tous les nœuds (les éléments de
la chaine qui gère et parfois « traite » les transactions) se synchronisent les uns avec les autres et
s’accordent sur les transactions à ajouter à la chaine. Ces mécanismes sont cruciaux pour le
fonctionnement correct d’une Blockchain. Tout le monde peut soumettre des éléments à ajouter à la
Blockchain. Il est donc nécessaire que toutes les transactions soient constamment vérifiées et que la
Blockchain soit constamment auditée par tous les nœuds. Sans un bon mécanisme de consensus les
Blockchain sont exposées à divers attaques.
Il existe de nombreux mécanismes de consensus disponible en fonction des besoins. Les mécanismes
suivant sont les plus connus :
Preuve de travail (PoW) : dans ce protocole, les nœuds sont appelés mineurs. Pour confirmer
une transaction, les mineurs doivent résoudre un problème mathématique complexe
réclamant une puissance de calcul importante. Un mineur est récompensé pour chaque bloc
qu’il parvient à approuver et confirmer. Une POW est exigée pour la validation de chaque
bloc. Elle a l’avantage de protéger l’intégrité des transactions et des blocs, car pour qu’un
attaquant puisse modifier un bloc, il doit modifier tous les blocs qui le succèdent et fournir
une nouvelle POW pour chacun de ces blocs, ainsi que la mise à jour de tous les objets par la
nouvelle version de la chaîne « falsifiée ». Ce qui nécessite une énorme puissance de calcul et
d’énergie.
Preuve d’enjeu (PoS) : Dans ce mécanisme il n’y a pas de minage où on consomme beaucoup
de ressources. Les mineurs sont appelés forgeurs. Un forgeur peut valider des blocs en
12
fonction de la quantité d’argent qu’il possède. Ce qui signifie que plus il possède de
monnaies, plus il augmente sa chance de validation. Dans la POS, un forgeur dont le bloc
s’avère malhonnête est pénalisé et le montant du pari qu’il a mis est débité de son solde. Le
point faible de la POS est que les forgeurs qui possèdent beaucoup de monnaies sont ceux
qui bénéficient le plus.
Preuve de temps écoulé (PoET) : un minuteur aléatoire est attribué à chaque membre du
réseau. Le premier minuteur expiré réveille en quelque sorte la personne concernée, qui
devient le chef de bloc et génère le bloc suivant.
Preuve d’enjeu délégué (DPoS) : elle est une innovation par rapport au PoS. Le droit de vote
pour l’approbation des transactions est attribué aux utilisateurs en fonction du montant de
la monnaie virtuelle détenue sur leur compte.
Tolérance aux pannes byzantines (BFT) : la BFT fait référence à la capacité d’un réseau
distribué à fonctionner comme prévu et à atteindre un consensus adéquat malgré le fait que
des composants malveillants du système peuvent ne pas fonctionner correctement ou
propagées délibérément des informations erronées au reste des membres du réseau.
8 Domaines d’application
Aujourd’hui, de nombreux domaines s’intéressent au développement des produits et des solutions
techniques basées sur la technologie Blockchain. Dans ce qui suit nous mentionnons les plus connus :
La banque : avec la Blockchain, il est peu probable d’être victime de fraude lors du paiement
en ligne. Les transactions financières sont plus rapides et sécurisées.
La santé : le trafic de faux médicaments est en augmentation, des milliards de personnes en
décèdent. Une startup française a mis en œuvre une technologie Blockchain qui permet de
vérifier l’authenticité d’une boîte de médicament. Par ailleurs, elle facilite une meilleure
gestion ainsi qu’un accès sécurisé et rapide au DMP (Dossier Médical Partagé) par le patient
et le personnel médical.
Les enregistrements de propriété : en plus d’être fastidieux et inefficace, le processus
d’enregistrement des droits de propriétés est plein d’erreurs humaines. Par contre, s’ils sont
stockés sur une Blockchain, les propriétaires peuvent avoir la certitude que leurs activités
sont exactes et durables.
Le vote : la Blockchain peut transformer le système de vote traditionnel sur papier en un
système numérisé et peut fournir une plate-forme de vote sécurisée servant de support à
tout le processus. Elle permet aussi d’éviter des problèmes tels que la perte de registres et la
fraude électorale.
13
L’énergie : dans le domaine de l’énergie, la Blockchain permet de revendre directement
l’énergie propre fourni par panneau solaire (Smart grids) à son voisin sans passer par de
grand fournisseur.
La certification de document (certificat de naissance, diplôme...) : pour mieux lutter contre
l’usurpation d’identité.
9 Conclusion
Un échange d’actifs ne pouvait avoir lieu entre deux personnes sans l’intervention d’un tiers de
confiance. La Blockchain est la solution, en se présentant comme un intermédiaire de confiance.
Grâce à son architecture décentralisée, elle offre de nouvelles perspectives et les données qui y sont
entreposées sont inviolables.
14
Chapitre 2 : Tendermint
1 Introduction
La Blockchain telle qu’elle est connue, a une structure assez rigide. En tant que développeur, cela
permet soit de développer des applications dans un environnement restreint, soit forker2 le code et
créer sa propre Blockchain. Cette dernière option n’est pas toute fois facile car il s’agit également de
lancer un réseau et déterminer quel mécanisme de consensus utiliser [12].
Dans ce chapitre, nous allons aborder de façon détaillée l’architecture de Tendermint, ses différents
composants ainsi que son apport dans la conception d’une application Blockchain.
2 Définition
Tendermint est un logiciel open-source de lancement de Blockchain qui permet de développer des
applications dans n’importe quel langage. Mieux encore, ces applications peuvent communiquer
avec d’autres Blockchain [12].
3 Architecture et objectifs
Tendermint utilise une architecture modulaire (contrairement à l’architecture monolithique) avec
des composants logiciels indépendants. Ainsi, une mise à jour d’une section de l’application est
possible sans provoquer de modifications importantes du système.
Monolithique Modulaire
Composants interconnectés et Composants autonomes
interdépendants
Pas flexible Flexible
Temps développement élevé Temps développement réduit
Code source longue Code source plus petit
Facilité de mise à jour Mise à jour difficile
Tendermint est conçu spécialement pour répondre à certains objectifs, parmi lesquels :
2
Développé à partir du code source existant.
15
• Fournir les couches de mise en réseau et de consensus des Blockchain en tant que
plateforme pour développer diverses applications décentralisées.
Proposals : chaque nouveau bloc doit être proposé et approuvé par d’autres validateurs. Si
une proposition n’est pas reçue dans un délai suffisant, le proposant doit être ignoré.
Votes : Deux phases de vote doivent avoir lieu pour assurer une tolérance optimale aux
pannes byzantines. Ils sont appelés prevote et precommit.
Lock : Tendermint s’assure que deux validateurs ne commettent un bloc différent à la même
hauteur, en supposant qu’un tiers des validateurs sont malveillants.
Propose : A ce stade, le proposant désigné c’est-à-dire le nœud sélectionné propose un bloc à ajouter
à la hauteur H. Cette étape se termine de l’une des deux façons suivantes :
16
Le temps du proposant pour choisir le bloc expire. Il entre de toute façon dans l’étape de
prevote.
Si d’une manière ou d’une autre le validateur est verrouillé sur un bloc proposé d’un tour
précédent, il signe automatiquement et diffuse un prevote pour ce bloc.
Si le validateur reçoit une proposition acceptable pour le round en cours, il signe et diffuse
un prevote pour le bloc proposé.
Sinon si le validateur n’a reçu aucune proposition (par exemple le temps attribué au
proposant s’est écoulé) ou une proposition invalide, il signe un prevote spécial Nil.
Au cours de cette étape, tous les nœuds communiquent tous les prevote pour le tour à leurs
pairs voisins.
Precommit : C ‘est la dernière étape du round. En entrant dans cette phase, les validateurs
s’engagent à prendre leur décision en diffusant leurs prevote. L’un des scénarios suivants peut se
produire :
Si le validateur reçoit plus de deux tiers de prevote pour un bloc, il signe et diffuse un
precommit pour ce dernier. Il se verrouille sur ce bloc et libère tous les verrous
précédents.
Si le nœud reçoit plus de deux tiers de prevote Nils, il se déverrouille simplement.
Si le nœud ne reçoit pas plus de deux tiers de prevote pour un bloc (ou Nil) alors il ne
signe ni ne verrouille rien.
Au cours de cette étape, tous les nœuds communiquent tous les precommit pour le tour
à leurs pairs voisins.
Si le nœud a reçu plus de deux tiers de precommit pour un bloc particulier, alors il rentre
dans l’étape commit.
Sinon il passe à l’étape propose du tour suivant.
L’état commit ne fait pas partie du round. NewHeigh et commit sont tous deux des tours spéciaux.
Pendant l’état de validation, deux conditions parallèles sont vérifiés :
Les validateurs doivent recevoir le bloc qui a été pré-engagé (precommit) par le réseau. Une
fois cela fait, ils signent et diffusent leurs engagements (commit).
17
Ils doivent attendre jusqu’à ce qu’ils aient reçu au moins deux tiers de precommit pour le
bloc.
Une fois ces conditions vérifiées le bloc est engagé sur le réseau.
Il suffit d’incrémenter la hauteur du bloc d’un (1) pour montrer que le bloc a été ajouté.
L’ensemble des validateurs est déterminé de manière déterministe par le contenu actuel de la
Blockchain appelé historique. Ce sous-ensemble peut changer une fois qu’un bloc est ajouté. Le
mécanisme permettant de choisir un validateur à partir d’un historique donné est appelé mécanisme
de sélection.
18
C’est la question fondamentale du problème dit des généraux byzantins qui a donné naissance au
concept de tolérance aux pannes byzantines.
Le problème des généraux byzantins a été conçu en 1982 comme un dilemme logique qui décrit
comment un groupe de généraux peut avoir des problèmes de communication lorsqu’il essaie de
s’accorder sur son prochain coup stratégique.
La seule façon de parvenir à un consensus dans ces types de systèmes distribués consiste à avoir au
moins deux tiers (2/3) des nœuds de réseau fiables et honnêtes. Cela signifie que si la majorité du
réseau décide d’agir de manière malicieuse, le système est sujet aux défaillances et aux attaques
(l’attaque à 51% par exemple).
Par conséquent, la tolérance aux pannes byzantines caractérise un système capable de résister à des
pannes dérivées du problème dit des généraux byzantins. Ainsi un système BFT est capable de
continuer à fonctionner même si certains des nœuds échouent ou agissent de manière malveillante.
NB : l’attaque à 51% (ou double dépense) se produit lorsque des mineurs réussissent à prendre le
contrôle d’un réseau Blockchain, en possédant la majorité de la puissance de hachage. Ces mineurs
malintentionnés peuvent alors saboter le système en bloquant des dépenses ou en effaçant
complètement les données.
L’ABCI se compose de trois (3) types de messages principaux qui sont transmis du noyau à
l’application.
DeliverTx : chaque transaction dans la Blockchain est livrée avec ce message. L’application
doit valider toute transaction reçue avec ce message par rapport à l’état actuel, aux
protocoles d’applications et aux informations d’identifications cryptographiques de la
transaction.
19
CheckTx : il est similaire à DeliverTx mais sert uniquement à valider les transactions. Le
mempool3 de Tendermint Core vérifie d’abord la validité d’une transaction avec CheckTx et
ne relaie que celles qui sont valide à ses pairs.
Commit : il est utilisé pour calculer un engagement cryptographique à l’état actuel de
l’application, à placer dans l’en-tête du bloc suivant.
Il peut y avoir plusieurs connexions de socket4 ABCI à une application. Tendermint Core crée trois
connexions ABCI à l’application : Un pour la validation des transactions lors de la diffusion dans le
mempool, un pour le moteur de consensus pour exécuter des propositions de blocs, et un de plus
pour interroger l’état de l’application [15].
5 Conclusion
Tendermint facilite la tâche aux développeurs en leur fournissant la couche consensus et réseau lors
de la conception d’une application Blockchain. Il permet de gérer des milliers de transactions par
seconde.
3
Le mempool (memory pool) représente la zone d’attente des transactions d’une Blockchain.
4
Une application ouvre un socket lorsqu’elle signale à l’OS qu’elle émet des données vers une application qui
écoute sur un port X et attend une réponse sur un port Y.
20
Chapitre 3 : Exemple d’application Blockchain avec Tendermint
1 Introduction
Dans le chapitre précédent, nous avons décrit l’architecture ainsi que les principaux composants de
Tendermint. Dans ce chapitre, nous présentons un exemple d’application Blockchain conçu avec
Tendermint en donnant tout d’abord la procédure d’installation de Tendermint (Tendermint Core et
ABCI) ainsi que les étapes à suivre pour le développement de ladite application.
En effet, le développement d’une application Blockchain passe par l’implémentation de ses trois
couches à savoir, la couche applicative, consensus et réseau. En utilisant Tendermint, nous n’aurons
plus qu’à développer la partie applicative. Les deux autres étant fournies par Tendermint Core et
reliées à la couche applicative par l’intermédiaire d’ABCI.
Application
ABCI
Consensus
Tendermint Core
Réseau
2 Procédure d’installation
L’installation de Tendermint requiert celle de Tendermint Core et de l’interface d’application
générique (ABCI).
21
Créer un répertoire avec le nom de votre choix (tendermint par exemple) en utilisant la
commande sudo mkdir nom_du_répertoire ;
Et enfin taper tendermint version pour voir si tendermint a bien été installé. Vous devriez
avoir en sortie le numéro de la version installée.
Pour cela installer golang (go). Crée en 2007 par Google, go est un langage de programmation open
source clair et facile à comprendre. Il est disponible sur le lien suivant : https://go.dev/doc/install.
En ce qui concerne le reste de l’installation de Tendermint à partir de la source, vous le trouverez sur
le lien suivant : https://docs.tendermint.com/v0.35/introduction/install.html.
2.2 ABCI
Pour l’installation d’ABCI, les étapes ci-dessous sont nécessaires :
Installer d’abord golang (go) comme susmentionné dans l’installation de Tendermint Core ;
Ensuite entrer la commande git clone https://github.com/tendermint/tendermint.git afin
d’avoir tendermint. Avant d’exécuter cette commande, vous devriez avoir git qui est un
logiciel de gestion de version permettant de conserver l’historique des modifications
effectués sur un projet. Vous pouvez l’installer avec la commande sudo apt install git ;
Accéder au répertoire tendermint avec la commande cd tendermint ;
La dernière étape consiste à taper la commande make install_abci pour avoir l’ABCI.
3 Exemple d’application
L’exemple que nous avons choisi consiste à envoyer une transaction dans un bloc en utilisant
l’application kvstore (arbre Merkle5) permettant de stocker les transactions.
Tout d’abord nous allons commencer par initialiser notre nœud. Cela permettra la génération d’une
clé pour le nœud ainsi que le fichier genesis (fichier contenant les informations d’un bloc).
5
Un arbre de Merkle est une structure de hachage utilisée en informatique et en cryptographique.
22
Figure3. Initialisation du nœud Tendermint
Ensuite nous procédons à la création des blocs (les blocs seront créés sans limite). Avant cela
Tendermint Core établit les quatre connexions ABCI à l’application.
La hauteur, la date et l’heure de création sont des informations contenues dans un bloc.
Dans un deuxième terminal lancé à partir du répertoire d’installation d’abci, nous pouvons obtenir le
statut de notre nœud Tendermint. On obtient en sortie des informations sur le nœud local (numéro
du bloc), le validateur (adresse, clé publique) ainsi que des informations sur le bloc précédent (hash,
hauteur).
23
Figure5. Statut du nœud Tendermint
Maintenant nous allons envoyer une transaction avec une clé et une valeur puis faire une requête
pour voir si la transaction a bien été stockée dans le bloc. Nous obtenons deux messages après
l’envoie de la transaction : check_tx et deliver_tx. Les deux contiennent un code. Si ce code est
différent de zéro, cela signifie que la transaction n’a pas été validée. Event est un événement envoyé
via les methodes ABCI. Il contient un type et une liste d’attributs qui sont des paires de chaînes clé-
valeur. Ces valeurs peuvent être utilisées pour indexer les transactions et les blocs en fonction de ce
qui s’est passé lors de l’exécution.
24
Figure6. Envoi de transactions
Et enfin nous allons lancer la requête pour voir l’état de l’application. Si on obtient comme résultat
de cette requête un code différent de zéro alors il est directement renvoyé au client qui a lancé la
requête. Les champs key et value contiennent les données de la clé et valeur envoyé en base 64,
height représente la hauteur du bloc.
25
Figure7. Vérification de la transaction
4 Conclusion
Avec Tendermint, nous venons de développer une simple application Blockchain qui a pour objectifs
la vérification de l’état de l’application et l’envoi de transactions.
26
Conclusion générale
La Blockchain est l’une des technologies pouvant apporter de nettes améliorations dans plusieurs
secteurs de la vie quotidienne. Cependant, de telles améliorations ne peuvent avoir lieu tant que le
développement d’application Blockchain demeure un problème majeur pour les développeurs (gain
de temps élevé, fonctionnalités limitées, …).
Dans ce mémoire, nous avons présenté la conception d’une application Blockchain avec Tendermint.
En effet, avant Tendermint, la conception d’une telle application demeurait un travail fastidieux pour
les développeurs. De nos jours, Tendermint est de plus en plus utilisé dans le développement
d’application Blockchain grâce à ses nombreux avantages susmentionnés dans le chapitre 02.
L’exemple que nous avons proposé consiste à envoyer une transaction dans un bloc, vérifier son état
et d’afficher les informations relatives à cette transaction.
Associer Tendermint Core, Cosmos SDK et l’interface Blockchain applicative afin de créer un
réseau de Blockchain qui permettra aux Blockchain de communiquer entre eux de manière
efficace et le plus rapidement possible ;
Rendre la sortie de la valeur de la clé lisible pour l’homme ;
Offrir de meilleures garanties pour l’algorithme qui ne sont plus officiellement confirmées ;
Optimiser les performances et apporter des modifications architecturales pour obtenir une
augmentation de capacité.
27
Bibliographie
[1] MANCER_M’HAMED (2020), « Conception et réalisation d’un modèle de Blockchain intelligent »,
Mémoire de fin d’études pour le Master, Université Mohamed Khider-BISKRA, juin, 74p.
[2] Tiana Laurence, (2018), La Blockchain pour les nuls, Editions FIRST, 669p, ISBN 978-2-412-02890-
2.
[3] Laurent Leloup, (2017), Blockchain : La révolution de la confiance, Editions Eyrolles, 280p, ISBN
978-2-212-56665-9.
[4] IMRAN BACHIR (2017), Mastering Blockchain, Packt Publishing Ltd, 525p, ISBN 978-1-78712-544-
5.
[5] Marko, Quels sont les domaines d’application de la Blockchain ?,Web & Hightesch, date [consulté
le 6 avril 2022]. Disponible sur : https://www.kokkinizita.net/domaines-dapplication-blockchain/
[6] Blockchain Privée, Publique et à Consortium-Quelles sont les différences ? BINANCE ACADEMY, le
6 janvier 2020 [consulté le 6 avril 2022]. Disponible sur :
https://academy.binance.com/fr/articles/private-public-and-consortium-blockchains-whats-the-
difference
[7] Oussama Abderraouf Ayadi (2019), « Chapitre : Etat de l’art de la Blockchain », Mémoire de fin
d’études, Université Constantine 2, juillet, 96p.
[8] Soilihi Dhoulkifli (2022), Les mécanismes de consensus, c’est quoi ? be[IN]crypto, février
2022[consulté le 27 avril 2022]. Disponible sur : https://fr.beincrypto.com/apprendre/les-
mecanismes-de-consensus-cest-quoi/
[9] Gisele Schout (2020), A guide to Tendermint, Stakin, mai 2020 [consulté le 04 mai 2022].
Disponible sur : https://medium.com/stakin/a-guide-to-tendermint-b905da3f4b7c
28
[12] (2021), Tendermint expliqué, BINANCE ACADEMY, janvier 2022 [consulté le 01 mai 2022].
Disponible sur : https://academy.binance.com/fr/articles/tendermint-explained
[13] Ethan Bushman (2016), « Tendermint : Byzantine Fault Tolerance in the Age of Blockchains »,
Mémoire de fin d’études pour le Master, The University of Guelph, juin, 109p.
[14] (2021), What is Tendermint, ByBit LEARN, le 27 septembre 2021 [consulté le 3 mai 2022].
Disponible sur : https://learn.bybit.com/blockchain/tendermint/
[16] MARSHALL TAYLOR (2018), What is Tendermint ? -Every Thing You Need to Know, COIN
CENTRAL, le 02 Octobre 2018 [consulté le 4 mai 2022]. Disponible sur :
https://coincentral.com/tendermint-guide/
29
30