UNIVERSITE ADVENTISTE DE LUKANGA « UNILUK
»
B.P. 180 BUTEMBO/NORD-KIVU/RDC
FACULTE DES SCIENCES ECONOMIQUES ET DE
GESTION INFORMATIQUE
Simulation d'une cryptomonnaie basée sur
la devise monétaire congolaise
Par : Christer BIRINGANINE KAHASHA
Travail de fin de cycle présenté et
défendu en vue de l'obtention du grade de licencié
en Gestion Informatique.
Directeur : Prof. Osée MUHINDO MASIVI Co-directeur : CT.
Norbert VAGHENI
ANNEE ACADEMIQUE 2018-2019
EPIGRAPHE
« Je ne suis pas un crack en informatique, loin de
là, mais il n'y a pas que les mécaniciens qui sachent conduire
une voiture ».
Joseph Finder
DEDICACE
A mon père Kahasha Paulin et ma mère Riziki
Lusuna; A toute ma Famille; A tous ceux qui m'ont soutenu dans mes
études; A tous ceux qui m'aiment.
II
Christer BIRINGANINE KAHASHA
III
REMERCIEMENTS
Au terme de notre cycle (deuxième) en sciences
économiques et de gestion, option de gestion informatique, nous
adressons nos sincères remerciements à l'Eternel DIEU tout
puissant pour sa riche protection et sa grâce qu'il n'a cessé de
nous combler pour tout travail durant notre séjour dans la vie
estudiantine. Nous remercions, d'une manière particulière, la
famille KAHASHA pour son sacrifice, amour et soutien de nos études
depuis notre bas âge jusqu'à ces jours; qu'ils trouvent ici le
fruit de leur dévouement inestimable. Sans oublier les frères,
soeurs, oncles, tantes, grands-parents, etc. Nos gratitudes s'adressent au
corps académique et scientifique de l'université adventiste de
Lukanga UNILUK, pour son savoir-faire et savoir être louable, Nos
sincères remerciements au Professeur Docteur Osée MUHINDO MASIVI
et au CT Norbert VAGHENI qui en dépit de leurs occupations multiples ont
bien voulu diriger ce travail. Nous resterons très reconnaissants
à nos frères, camarades et amis avec qui nous avons
traversés des terribles difficultés et qui n'ont cessé de
nous encourager : Chrispin, Christophe, Christelle, Christ vit, Dieu est
là, Bisimwa, Vamos, Nyumu, Masisi, Makasi, Kyambaliro, Kitsongeri;
qu'ils trouvent ici notre gratitude. Que tous ceux qui nous sont chers et dont
les noms ne sont pas repris trouvent aussi l'expression de nos sincères
gratitudes.
iv
RESUME
Attiré par l'architecture des systèmes de
payements électroniques et sur internet en RDC ; contrairement à
ces derniers, qui fonctionnent dans la centralisation absolue des informations,
le principal objectif de ce travail est de simuler un système
pair-à-pair de payement sur internet basé sur la preuve
cryptographique pour la validation des transactions d'une manière
décentralisée. Le système écrit en java, permet
donc de réaliser des transactions sûres entre ses utilisateurs
sans participation d'un tiers de confiance, ni un serveur central tout en
gardant l'intégrité et l'authenticité des
données.
V
ABSTRACT
Attracted by the architecture of electronic and internet
payment systems in the DRC; unlike the latter, which operate in the absolute
centralization of information, the main objective of this work is to simulate a
peer-to-peer payment system based on cryptographic evidence for the validation
of transactions in a decentralized manner. The system written in Java, thus
allows to carry out secure transactions between its users without participation
of a trusted third party, nor a central server while keeping the integrity and
the authenticity of the data.
vi
SIGLES ET ABREVIATIONS
AUSIM : Association des Utilisateurs des Systèmes
d'information au Maroc
BBS : Bulletin Board System
BIND : Berkeley Internet Name Daemon
BTC : Bitcoin
CAN : Content Addressable Network
DHT : Distributed Hash Table
DNS : Domaine Name Server
ETH : Ethereum
FMI : Fonds Monétaire International
IBM : International Business Machine
IDE : Integrated Development Environment
IP : Internet Protocol
IRC : Internet Relay Chat
JDK : Java Développement Kit
JRE : Java Runtime environnement
JVM : Java Virtual Machine
NIST : National Institute of Standards and technology
NSA : National Security Agency
P2P : Peer-To-Peer
PHP : Personal hypertext Page
PoW : Proof Of Work
PU : Processus Unified
RFC 3174 : Request for comments
RIPEMD-160 : RACE Integrity Primitives Evaluation Message
Digest
RSA : Rivest Shamir Adleman
RDC : République Démocratique du Congo
SGBD : Système de Gestion de Base des Données
SHA : Secure Hash Algorithm
SHS : Secure Hash Standard
TCP : Transfert Control Protocol
VII
UML : Unified Modeling Language
UNILUK : Université Adventiste de Lukanga
VIII
LISTE DES TABLEAUX
Tableau 1: Architecture des réseaux P2P 13
Tableau 2: cas créer wallet 37
Tableau 3: Le cas Authentification 37
Tableau 4: Le cas Recevoir talentcoins 38
Tableau 5: Le cas Envoyer talentcoins 39
Tableau 6: le cas miner talentcoins 40
ix
LISTE DES FIGURES
Figure 1 : Classifications des systèmes informatiques
9
Figure 2: Structure du réseau 10
Figure 3: Architecture décentralisée 13
Figure 4: Architecture Hybride 13
Figure 5: Architecture centralisée 13
Figure 6: DHT et mécanisme de routage dans un
réseau overlay 15
Figure 7:Fonctionnement de la Blockchain (blockchainfrance,
2016) 17
Figure 8: chaîne des transactions électroniques
22
Figure 9: Clef privée, clef publique et adresse bitcoin
24
Figure 10: An elliptic curve 24
Figure 11: Logo du projet Ethereum, utilisé pour la
première fois en 2014 26
Figure 12: Diagramme de cas d'utilisation 36
Figure 13: diagramme de séquence "créer Wallet"
41
Figure 14: diagramme de séquence " authentification "
42
Figure 15: diagramme de séquence " Recevoir talentcoins
" 42
Figure 16: diagramme de séquence " Envoyer talentcoins
" 43
Figure 17: diagramme de séquence " Miner talentcoins "
44
Figure 18: Diagramme de déploiement du réseau
Talentcoin 45
Figure 19: Diagramme de classe 46
Figure 20: Architecture du système 48
Figure 21: Demande de connexion au réseau d'un pair
à la DHT 49
Figure 22: Connexion en P2P 49
Figure 23: Interface d'envoie des talentcoins 50
Figure 24: Algorithme d'envoie des talentcoins 50
Figure 25:Interface de notification de réception 51
Figure 26: Algorithme de réception 51
Figure 27: Interface de minage 52
Figure 28: Algorithme pour minage 52
X
Table des matières
EPIGRAPHE i
DEDICACE ii
REMERCIEMENTS iii
RESUME iv
ABSTRACT v
SIGLES ET ABREVIATIONS vi
LISTE DES TABLEAUX viii
LISTE DES FIGURES ix
Table des matières x
INTRODUCTION 1
Problématique 1
But du travail 3
Objectifs du travail 4
Choix et Intérêt du sujet 4
Méthodologie du travail 5
Délimitation du sujet 5
Plan du travail 5
PREMIER CHAPITRE : REVUE DE LA LITTERATURE 7
Introduction 7
Impact négatif d'une cryptomonnaie sur la masse
monétaire d'un pays 8
Propos des systèmes informatiques 9
Réseau P2P. 9
Architecture des réseaux P2P. 12
Figures Architectures peer-to-peer. 13
Table de hachage 14
Technologie Blockchain 15
Introduction. 15
xi
Typologie de blockchaine. 16
Fonctionnements du blockchaine. 16
Quelques concepts liés à la Blockchain.
17
Autres travaux et Système de payement
électronique et sur internet en RDC
19
Etat de l'art sur les cryptomonnaie 20
Modes de sécurité sur internet.
21
Exemples des cryptomonnaies 23
Bitcoin. 23
Ethereum. 25
CHAPITRE DEUXIÈME 27
MÉTHODES, MATÉRIELS ET LANGAGES 27
Méthodes 27
La Documentation. 27
La Modélisation. 27
La définition des algorithmes. 29
Le prototypage. 29
La simulation 30
Environnement logiciel 30
NetBeans. 30
Outils Utilisés. 31
Langage de programmation. 31
CHAPITRE TROISIEME 33
MODELISATION DU SYSTEME 33
Introduction 33
EXIGENCES FONCTIONNELLES DU SYSTEME 33
L'objectif du système 33
Diagramme de déploiement. 44
Diagramme de classe. 45
Base des données. 47
CHAPITRE QUATRIEME : LES PROTOTYPES DES RESULTATS
ET
IMPLEMENTATION 48
Architecture du système. 48
Réalisation du système 50
XII
Interface et algorithme d'envoie des talentcoins. 50
Interface et algorithme de notification de
réception. 51
Interface et algorithme pour minage. 52
Protocole d'experimentation et discussion du resultat du
travail. 53
Conclusion partiel 54
CONCLUSION GENERALE 55
Bibliographie 57
INTRODUCTION
Problématique
L'internet dit le réseau des réseaux est un
outil permettant de faire circuler les données avec fluidité dans
tous les coins du monde. Depuis 1991, l'internet et le web ont changé
notre façon de communiquer sur tous les plans de notre vie quotidienne
en permettant d'échanger une quantité nécessaire
d'informations. Aujourd'hui la croissance d'Internet est extraordinaire, et
bien que personne ne puisse donner des chiffres exacts, certains annoncent le
nombre de personnes connectées sur internet s'est élevé en
2018 avec une estimation de 4 021 milliards connectés, c'est une hausse
de 7% par rapport à l'année 2017, les médias sociaux, eux
avaient pris 3 196 milliards, soit 13% par rapport à l'année 2017
(KEMP, 2018).
De ce qui précède, on a tendance d'affirmer que
la communauté est devenue virtuelle. BBS fut la toute première
forme des communautés virtuelles, vers la fin des années 70,
où l'on peut annoncer des messages d'intérêt
général ou privé sur les thèmes les plus
variés. Outre le Minitel en France vit ensuite apparaître les
newsgroups. Les chats rooms (parloirs ou encore IRC (Internet Relay Chat))
permettent d'interagir en temps réel et ressemblent à des
conversations téléphoniques collectives (BRODIN, 2000). Et bien
la virtualisation ne se limite pas aux chats ou aux conversations en temps
réel, il va bien loin que ça.
La RDC est un pays en voie de développement qui se
lance dans la technologie expliquée ci-haut. Hormis les services de
paiement en ligne, la RDC possède autres services de payement
électronique. Ces organisations offrent ce service
2
tout en restant intermédiaire financier entre les
parties qui veulent bénéficier du service. En 2008 Satoshi
Nakamoto nous a montré que ce système fonctionne suffisamment
bien pour la plupart des transactions, mais il souffre de faiblesses
inhérentes au modèle de confiance, en plus de cela, il ajoute que
dans ce système les transactions totalement irréversibles ne sont
pas possibles parce qu'elles ne peuvent pas éviter le conflit de
médiation. En outre, le coût de médiation augmente le
coût de transaction et les clients se font méfier par les
commerçants en les ennuyant tout en leur demandant les informations
confidentielles (Nakamoto, 2008).
Le système ci-haut est contrôlé par la
banque centrale du pays. Or ces institutions possèdent les informations
confidentielles de leurs clients. Théoriquement ces informations n'ont
plus un sens confidentiel. Ces informations peuvent être les transactions
effectuées, ou encore les informations sur la personnalité du
client. Cette possession des informations est une faiblesse de la part des
clients, la sécurité de ces derniers n'est plus
assurée.
Un slogan français dit « liberté,
égalité, fraternité », ce qui n'est pas vraiment le
cas dans notre pays ; le président Abraham Lincoln en 1863, nous avait
montré que nous ne sommes plus dans un gouvernement du peuple, par le
peuple, pour le peuple. Nous sommes plutôt dans un gouvernement des
banques, par les banques, pour les banques. Ceci est la preuve que notre
système est une oligarchie politique et financière.
Dans la même optique, le prix Nobel de
l'économie, Friedrich Hayek dans son ouvrage Pour une vraie
concurrence des monnaies, appelant au libre arbitre monétaire et
prônant l'abolition du monopole des banques centrales (Jacques, 2018).
C'est pourquoi, suite aux failles que nous avons pu
prélever, liées aux institutions financières congolaise,
aux services de payement virtuel ou électronique
3
de notre pays ; d'ailleurs déjà
constatées depuis 2008 par Satoshi Nakamoto et aux idées de
certains auteurs dites ci-haut; nous proposons un système de payement
sur internet qui permettra de reduire le coût d'intermédiation
presque en rien tout en eliminant l'intermédiaition entre les parties
car ces dernières seront égales. Pour l'assurence dans la
confidentialité des informations liées aux clients, nous
proposons ce présent travail.
Christine Lagarde, directeur du FMI (Fonds Monétaire
International) quant à elle, pense que l'avenir est dans le Bitcoin et
les cryptomonnaies. Venant de la part d'une personne aussi importante dans la
sphère économique, c'est un très bon signe pour le
développement de cet écosystème (Pareyre, 2018).
C'est ainsi que, eu egard à l'observation
réalisée ci-haut, nous avons pu constater qu'il n'existe aucun
système en RDC qui permet d'effectuer des transactions sans une tierse
de confiance, car c'est cette dernière qui augmente le frais de
transaction. En remplancant leur model(confiance) par une preuve
cryptographique pour la verification et validation des transactions. Il y'a
lieu de se poser ces questions :
- Quelles sont les exigences fonctionnelles d'une monnaie non
bancaire couplant intégrité et confidentialité ?
- Quel serait le modèle informatique
représentant le mieux ce système ?
- Quelles sont les technologies adaptées pour
l'implémentation de ce système dans le contexte de la RDC ?
But du travail
L'argent est au centre de toute activité sur terre, et
pour y acceder a chaque fois qu'on en a besoin il lui faut un très bel
usage de la part de son possesseur. Dans
4
notre cas, Cet usage peut être soit la
sécurité et la confidentialité de cette richesse. Ainsi
donc, le but de ce présent travail est de réaliseer un
système qui jouera ce double rôle, en concevant un système
pair-à-pair de payement sur internet basé sur la devise
monétaire congolaise; bref une cryptomonnaie. Le système
présent offrira aux participants les services que nous offrent les
systèmes financières congolaises y compris ceux des services de
payement virtuel congolais. Le système aura l'avantage de :
- Reduire les frais de transactions réalisées
existant à un frais dérisoire ;
- Supprimer la faiblesse du model basé sur la confiance
en le remplaçant par un model basé sur la preuve de travail
cryptogaraphique.
- Permettres aux deux parties d'effectuer des transactions
sans aide d'une tierse de confiance.
Objectifs du travail
Pour atteindre le but de ce travail, nous nous assignons les
objectifs suivants :
1. Recueillir les exigences fonctionnelles d'une crypto
monaie dans le contexte de la RDC
2. Proposer un modèle informatique pour le
système
3. Proposer les technologies appropriées au contexte
de la RDC pour implémenter et tester le système
Choix et Intérêt du sujet
La centralisation des données est l'une des faiblesses
que possèdent les systèmes de payement virtuel de notre pays, du
point de vue sécuritaire en informatique même si pour le moment
celui-ci semble mieux fonctionner. Le frais de transaction très
élevé et la confiance à un tiers pour effectuer ses
transactions attirent
5
notre attention car nous avons le souci de remédier
à ces problèmes. D'une part notre choix s'y porte.
Et d'autre part, pour les exigences académiques, chaque
étudiant doit élaborer un projet de mémoire à la
fin des études du deuxième cycle. Ce présent travail est
la preuve des connaissances apprises tout au long de notre vie estudiantine.
Méthodologie du travail
Dans le présent travail, nous avons utilisé les
méthodes suivantes:
- La documentation nous a aidé à comprendre les
normes internationales et le
système existant sur les monnaies électroniques.
- La modélisation nous a permis de structurer les
informations et activités,
modéliser la solution proposée.
- La définition des algorithmes nous a servi à
définir les instructions aidant à
résoudre un ensemble des problèmes.
- Le prototypage nous a permis de réaliser le premier
exemplaire du logiciel
- La simulation qui nous a permis de tester si notre
système marche comme il
fallait.
Délimitation du sujet
Notre système cible un payement par internet respectant
le protocole de
communication pair à pair. Pour toute transaction,
celle-ci appartiendra à son
destinateur que si la transaction est validée par
l'ensemble du réseau. Le système ne
sera fonctionnel que s'il y a participation active de ses
utilisateurs.
Plan du travail
Ce présent travail est étalé sur quatre
chapitres en dehors de l'introduction et
la conclusion générale.
6
- La revue de la littérature : Dans cette partie, nous
avons présenté et défini les concepts clés
liés à notre travail, mais aussi les travaux de recherches et
logiciels déjà réalisés dans le cadre de notre
travail, en fin nous donnons l'etat de l'art
permettra de comprendre la technique utilisée pour
permettre aux deux parties d'effectuer des transactions en remplaçant le
model basé sur la confiance par un model basé sur la preuve de
travail cryptogaraphique.
- Méthodologie du travail : dans la méthodologie,
nous avons présenté les méthodes et outils que nous avons
utilisés pour atteindre nos objectifs.
- La conception de la solution : Dans cette partie, nous avons
présentés les résultats
obtenus de l'analyse à partir de la modélisation
des données et traitements.
- Les prototypes des résultats et implémentation :
C'est la dernière partie où nous
avons présenté le test de nos algorithmes et les
résultats obtenus après ce test.
PREMIER CHAPITRE : REVUE DE LA LITTERATURE
Introduction
L'informatique est une science, un ensemble des techniques de
la collecte, du tri, de la mise en mémoire, de la transmission et de
l'utilisation des informations. Dans un système informatique,
l'information n'a de sens que si elle respecte les trois principes de la
sécurité dont l'authenticité, l'intégrité et
confidentialité. La technique permettant à mettre en place un tel
système est la cryptographie.
Vu notre problème, visant à concevoir un
système de payement sur internet, la technique expliquée ci-haut
nous est très utile, d'où la cryptomonnaie. Une cryptomonnaie,
appelée aussi cryptoactif, cryptodevise ou monnaie cryptographique, est
une monnaie utilisable sur un réseau informatique
décentralisé, de pair à pair. Elle est fondée sur
les principes de la cryptographie et intègre l'utilisateur dans les
processus d'émission et de règlement des transactions
(arstechnica, 2013). Le terme « cryptoactif » fait
référence à « des actifs virtuels stockés sur
un support électronique permettant à une communauté
d'utilisateurs les acceptant en paiement de réaliser des transactions
sans avoir à recourir à la monnaie légale (Vercy,
2018).
En France, la Banque différencie les cryptomonnaies des
titres de reconnaissance de dette. Elle les reconnaît sous la
définition de « tout instrument contenant sous forme
numérique des unités de valeur non monétaire pouvant
être conservées ou être transférées dans le
but d'acquérir un bien ou un service, mais ne représentant pas de
créance sur l'émetteur » (publications.banque-france,
2018).
8
En vue d'hériter cette appellation « cryptomonnaie
», le système de payement sur internet doit recourir à
quelques technologies.
- Un réseau informatique totalement
décentralisé dit pair-à-pair ou P2P ;
- Une technologie de stockage dit blockchain.
Dans ce chapitre, nous présentons les différents
niveaux de décentralisation des réseaux P2P, les tables de
hachage distribuées qui sont les principales structures de routage
distribuées dans les systèmes P2P, nous présenterons aussi
la technologie blockchain et ce qu'elle implique, enfin nous
présenterons notre système par rapport aux systèmes de
payement électronique au Congo.
Impact négatif d'une cryptomonnaie sur la masse
monétaire d'un pays
Ici il est question de savoir les vraies
caractéristiques d'une monnaie pour déterminer cet impact. Une
monnaie l'est si, c'est un instrument d'évaluation (unité de
compte), un instrument de paiement (circulation de la monnaie), et un bien
(actif patrimonial). De ce trois, s'ajoute son caractère légal
(VAUPLANE, 2014). Une cryptomonnaie aurait un impact sur la masse
monétaire si et seulement si elle serait reconnu comme monnaie
légale ; seule la monnaie légale recouvre les trois
caractéristiques or une cryptomonnaie n'est pas reconnue. Si elle n'est
ni une monnaie, ni un instrument de paiement, qu'est-ce ? VAUPLANE(2014) nous
montre que, vu qu' elle integre le système de minage qui permet de s'en
approcurer comme quand on cerchait de l'or, or celui-ci est une marchandise ;
comme toute marchandise fait l'objet d'un droit de propriété, on
peut juste considérer que la détention d'une unité de
cryptomonnaie conduit son détenteur à disposer des
caractéristiques de la propriété sur celui-ci et non
posséder une monnaie.
9
Propos des systèmes informatiques
Les systèmes informatiques peuvent être
classés en deux grandes catégories comme illustré dans la
figure 1 : les systèmes centralisés et les systèmes
distribués. Les systèmes distribués peuvent à leur
tour être selon deux modèles : le modèle client/serveur
plat ou hiérarchique et le modèle peer to peer qui peut
être centralisé, décentralisé ou hybride (
BENSLIMANE & OUAKKOUCHE, 2016).
Figure 1 : Classifications des systèmes
informatiques
Réseau P2P.
Notions.
Un client P2P ou peer est une application s'exécutant
sur une machine (ordinateur, téléphone portable,..)
possédant une capacité de communiquer avec le autres peers.
La communication qu'effectue ce peer avec les autres peers
d'une manière décentralisée, c.à.d. n'ayant pas
d'une permission ou un point centrale pour effectuer la communication comme le
montre la figure ci-dessous (Goessens, 2012).
10
Figure 2: Structure du réseau
Caractéristiques des P2P.
? Tolérance aux fautes : Un réseau peer-to-peer
proprement dit doit être à mesure de gérer quelques
fautes ou pannes hardware et/ou software qui peuvent survenir dans la
connexion.
? L'absence d'un point central dans un réseau P2P le
rend si intéressant dans la mesure où il parvient à
maintenir la disponibilité des ressources malgré l'absence de ce
dernier, cette caractéristique est dite « Disponibilité
».
? Dynamisme : Les systèmes distribués peer to
peer sont caractérisés par un taux élevé
d'arrivées et de départs de noeuds. Il est important que
l'insertion ou le retrait d'un noeud ne soient peu coûteux.
? Auto organisation, Equilibrage de charge et mutualisation
des ressources, le système ne nécessite pas une entité
externe pour revenir à son état stable ; il est possible
d'équilibrer les traitements de requêtes en les
répartissant sur l'ensemble des noeuds, qui partagent la même
responsabilité.
? Passage à l'échelle : la principale limitation
des modèles clients serveurs vient de l'incapacité des
serveurs à gérer un nombre élevé de clients et de
ressources. En effet, la machine qui prend en charge l'exécution du
serveur doit être suffisamment dotée en ressources de calcul, de
stockage et de communication ( BENSLIMANE & OUAKKOUCHE, 2016).
11
? Contrôle et Anonymat : Il est en effet relativement
aisé de contrôler le point
unique d'accès à l'information, qui est la
plupart du temps clairement identifiable ; le degré par lequel les
systèmes peer to peer tiennent compte des opérations non
identifiées doit être pris en compte.
Problèmes du P2P.
Dans son implémentation, ce système pose
certains problèmes ; la sécurité, vu que le
partage s'effectue de pair en pair, le fichier en cours de
téléchargement peut être infecté par un virus, et
peut atteindre l'ensemble du réseau (Bartlomiej, Kshemkalyani, &
Singhal, 2004).
Les noeuds lors de leur connexion au réseau, il utilise
des plateformes et technologies réseaux différentes, ceci est le
fait qu'il ait ce une l'interopérabilité difficile.
La découverte des ressources est difficile dans ce
réseau, la cause est qu'il n'y a pas de serveur central pour offrir ce
service de découverte des ressources. Le nombre de clients n'est pas
défini dans ce système et augmente très rapidement, cela
engendre des difficultés dans le trafic et le réseau devient
ainsi saturé, c'est le problème de la bande passante.
12
Architecture des réseaux P2P.
Architecture Description Avantages
Désavantages
Centralisée Cette architecture est
caractérisée par un index
centralisé(en zone stable) mais stockage
décentralisé(en zone instable). Le principe est simple, chaque
pair annonce à l'index la liste des ressources qu'il sert ; Un pair
requête l'index pour connaître la liste des pairs qui servent une
ressources ; Le chargement des données se fait de pair. Le cas de
Napster (Steffenel, 2008)
- Performance
- Contrôle d'accès
|
- Single point of failure
- Passage à l'échelle
- Modèle abandonné surtout à cause des
implications légales
|
Décentralisée
Caractérisée par un index décentralisés
(en zone instable/stable) et Stockage décentralisé (en zone
instable).Principes, Découverte des pairs qui servent l'index ; les
pairs qui servent d'index peuvent s'annoncer (Steffenel, 2008).
|
Environnement P2P pur, tolérance aux fautes.
|
Performance dégradée sur des grands réseaux,
sécurité, disponibilité, fiabilité.
|
Hybride Le modèle super noeud a pour but
d'utiliser les
avantages des 2 types de réseaux (centralisé et
décentralisé). En effet sa structure permet de diminuer le nombre
de connexions sur chaque serveur, et ainsi d'éviter les problèmes
de bandes passantes (BUDAN, TEDESCHI, & VAUBOURG, 2003)
|
Le réseau n'est plus pollué par les trames de
broadcast
|
Anonymat non assuré
|
13
Tableau 1. Architecture des réseaux P2P
Figures Architectures peer-to-peer.
Figure 5. Architecture centralisée Figure 4.
Architecture Hybride Figure 3. Architecture décentralisée
14
Table de hachage
Une fonction f d'un ensemble E vers un ensemble
F est dite injective si :
V(x, y) E E2, (x ?
y) = ((xf) ? (yf)) Ceci garantit donc que :
V(x, y) E E2, ((xf)
= f (y)) = (x = y)
Une fonction de hachage est une fonction injective d'un
ensemble de clés vers un ensemble de valeurs, qui, à une
chaîne d'octets de longueur quelconque associe une valeur unique (de
taille fixe).
Une table de hachage représente un tableau de
correspondance entre des clés et des valeurs liées par une
fonction de hachage, h.
Une table de hachage distribuée (ou DHT pour
Distributed Hash Table) est une table de hachage partagée entre
tous les éléments actifs d'un système réparti
(Fayçal, 2010).
Lorsque un client se connecte au système, il
reçoit un identifiant unique dit nodeId, il en est de même pour
chaque ressource objectId, pendant la requête, nodeId rechercher est dit
key.
Les nodeId et objectId sont dans un
même espace logique K qui correspond à l'index global de
la DHT. Chaque pair est responsable d'une partie de cet espace. Cette partie
sera dite tout court : la DHT du pair. Dépendamment de
l'implémentation de la DHT, l'espace de hachage correspondant (et donc
la DHT) peut être visualisé(e) comme une grille, un cercle (ou
anneau), ou une ligne. L'implémentation de la DHT est spécifique
à l'algorithme de routage du protocole mis en oeuvre. Cet algorithme va
permettre de construire la DHT en associant chaque objectId au pair
responsable de l'objet correspondant. En d'autres termes, étant
donné une fonction de hachage h et un pair ayant une adresse IP
@IP et voulant partager sur le réseau une ressource r,
on a :
h(r) = k E K ; où
k est l'objectId
Et h(@IP) = i E K ; où
i le nodeId
15
La figure suivante représente les mécanismes de
routage qui s'effectuent dans un réseau overlay basé sur une
DHT.
Figure 6: DHT et mécanisme de routage dans un
réseau overlay
Technologie Blockchain
Introduction.
En octobre 2008 il eut un certain Satoshi Nakamoto qui publia
un livre blanc « Bitcoin : A Peer-to-Peer Electronic Cash System »
dans lequel il définissait un système cryptographique
pair-à-pair, le bitcoin (DOROTHE, 2017). En février 2009, il
diffuse la première version du logiciel Bitcoin sur le site P2P
Foundation et pour faire fonctionner le réseau, il met à
contribution son ordinateur. Il génère ainsi les premiers
bitcoins. Se fondant sur un nouveau « protocole », une «
nouvelle » technologie. Satoshi Nakamoto venait de donner naissance
à la Blockchain.
Les uses cases de la Blockchain peuvent concerner plusieurs
secteurs tels que la banque et les transactions financières, les
notaires et les cessions immobilières, les monopoles
énergétiques sur la distribution d'électricité ou
de carburants, les systèmes électoraux et de votes en
général... (AUSIM, 2017).
16
Typologie de blockchaine.
Blockchain public.
Etant public, il s'agit un système de stockage
où toute personne peut y accéder n'importe où dans le
monde. Pour participer au processus de transaction ou au processus de
consensus, il y a aucune demande de permission. Tous les participants sont
égaux dans la participation au réseau.
Blockchain privée.
Contrairement au précédent, celle-ci ses membres
sont connus, la gouvernance est assurée par une organisation quelconque.
Elle tourne sur un réseau privé.
Blockchain Consortium (Hybride).
Il s'agit de blockchains dans lesquelles le processus de
consensus (validation des transactions/blocs) est contrôlé par un
nombre connu et restreint de noeuds. Certains noeuds peuvent être rendus
publics (accès autorisé en lecture seule) tandis que d'autres
restent privés. Elles sont plus adaptées aux contextes
régulés (DOROTHE, 2017).
Fonctionnements du blockchaine.
Les transactions effectuées entre les utilisateurs du
réseau sont regroupés dans une structure de données
appelée bloc. Les blocs sont ordonnés et
hiérarchisés dans une seule et unique chaine. Chaque bloc pointe
sur le dernier bloc précédent valide. Cette chaîne est
« distribuée » et « répliquée » sur
tous les noeuds du réseau. Chaque nouvelle transaction et/ou Smart
Contract, « en attente », sont groupés dans un nouveau bloc.
Pour que ce bloc puisse être ajouté à la Blockchain, il
faut qu'il soit validé. Cette validation est réalisée au
travers de certains noeuds spécifiques du réseau appelés
« miners ». Le rôle de ces noeuds consiste à
17
répondre à un casse-tête
cryptomathématique complexe. Chaque réponse trouvée est
propre à un et à un seul bloc interdisant ainsi, sa
réutilisation pour la validation d'un nouveau bloc. Le problème
crypto/mathématique, propre à chaque bloc, est très
difficile à résoudre. Il demande d'importantes ressources de
calcul et donc de ressources financières (électricité,
coût de maintenance matérielle, coût du personnel, etc.). La
figure ci-dessous (issue du site Blockchain France) illustre le fonctionnement
d'une Blockchain. Il est à noter que, par rapport à l'original,
la notion de Smart Contract (étape 1, « utilisateur A») a
été ajoutée (DOROTHE, 2017).
Figure 7:Fonctionnement de la Blockchain
(blockchainfrance, 2016)
Quelques concepts liés à la
Blockchain.
Transaction.
Une transaction est un transfert de valeur (monnaie virtuelle,
token, etc.) entre deux comptes, deux « portefeuilles ». Chaque
transaction est signée avec la clé privée du compte
émetteur, fournissant ainsi la preuve « mathématique »
qu'elle provient bien du propriétaire du compte émetteur. La
signature empêche également toutes modifications de la transaction
après son émission.
18
Mining.
Chaque transaction nouvellement créée donne lieu
à une « écriture » dans une Blockchain. Cette
écriture entre dans le réseau par un noeud du système, qui
vérifie et contrôle que sa structure est correcte au regard des
spécifications du protocole implémenté et qu'elle est
légitime par rapport aux écritures déjà
enregistrées. Si la validation de l'écriture est satisfaite, elle
est alors « mise en attente » dans une liste locale et
diffusée via le réseau P2P à tous les noeuds du
réseau. Dans le cas contraire, elle est rejetée.
Smart Contract.
Un « contrat intelligent » est un programme
informatique autonome dont le code contrôle et conditionne, sous
certaines conditions, le transfert de devises ou d'actifs entre
différentes parties. Ils définissent non seulement les
règles et les pénalités d'un accord de la même
façon qu'un contrat traditionnel ou qu'un engagement transactionnel.
Mais ils peuvent également, lorsque tous les engagements
préalables à son exécution ont été
respectés, faire appliquer automatiquement ces obligations sans
qu'aucune des parties ne puissent s'y opposer.
Consensus.
Selon la définition de Wikipédia : « Un
consensus caractérise l'existence parmi les membres d'un groupe d'un
accord général (tacite ou manifeste), positif et unanime pouvant
permettre de prendre une décision ou d'agir ensemble sans vote
préalable ou délibération particulière ».
PoW (Proof Of work).
Proof of Work ou preuve de travail en français est un
mécanisme de validation d'un bloc qui repose sur la résolution
« d'un problème cryptomathématique complexe ». Le
processus de résolution est appelé mining et on
parle de miners.
19
Autres travaux et Système de payement
électronique et sur internet en RDC.
Les Systèmes de payement
électronique.
Le payement électronique en RDC a déjà
été réalisé par certaines entreprises de
télécommunication, notamment Airtel avec Airtel money, Vodacom
avec m-pesa, Orange avec Orange money, Tigo avec Tigo-cash. Les services de
payement que rendent ces institutions permettent à leurs utilisateurs de
déposer et de retirer de l'argent sur leur compte stocké sur leur
phone portable, et d'en envoyer en utilisant un numéro d'identifications
personnelles (PIN) et un sms sécurisé. Cela permet de payer des
biens et service et de réclamer des versements réguliers. Les
usagers se voient prélever une petite commission lorsqu'ils envoient ou
retirent de l'argent avec le système.
Les Système de payement sur
internet.
Le PayWebPhone.
Ce mot est un sigle des mots qui signifie Payer via son
téléphone Sur le Web. Effectuant une alliance Web/GSM, le
PayWebPhone est un système qui permet de réaliser des payements
sur internet. Par sa facilité, ce système peut se faire
intégrer dans n'importe quel système de site internet de vente
afin de permettre la réception des payements de ses clients à
distance. Avec ce système, on a plus besoin d'avoir un compte bancaire
pour réaliser ses achats sur le net, le simple porte-monnaie
électronique suffit pour réaliser les opérations de vente.
Cette plateforme congolaise de paiement est devenue équivalente au
célèbre PayPal, la seule différence est que, pour PayPal
il faut avoir un compte bancaire alors que ce dernier, il faut avoir un compte
des plateformes mobiles Banking installés en RD (M-Pesa, Airtel Money ou
Tigo Cash).
EasyPay.
EasyPay, toujours dans le cadre des payements sur internet, ce
système informatique facilite un payement à distance qui
s'oriente dans la facturation de consommation en mode
20
post paiement, le mode prépaiement facilite l'achat des
tickets des abonnés de la SNEL (Kas, 2017). C'est ainsi que ce
système offre à ses utilisateurs une plateforme qui est
sécurisée et ayant la possibilité de les lier à
leur compte mobile money tout en leur permettant un moyen de paiement en ligne
avec leurs comptes mobile money.
Les payements électroniques ont un peu boosté
notre économie monétaire, cela est un éloge que l'on
présente pour ces systèmes informatiques. Mais comme la plupart
des institutions financières, d'une manière
générale, la centralisation des données ou encore le
rôle d'intermédiation dans les transactions que jouent ces
institutions augmente le cout de transaction. Avec ces systèmes, il est
impossible d'effectuer une transaction d'une très petite somme car le
coût est élevé.
D'une manière spécifique, les systèmes
payement sur internet présentés ci-haut fonctionnent suffisamment
bien, mais ils présentent une très grande faiblesse liée
à leur dépendance aux autres systèmes de payement
déjà existant(les Banking mobile en RDC). Vu que ces
systèmes sont dépendants d'autres, la disparition de ces Banking
mobile en RDC (Airtel-money, m-pesa,...) peut aussi entraîner la
disparition de ces systèmes de payement sur internet.
Contrairement aux systèmes que nous avons
présentés ci-haut, notre système est indépendant de
tout organe gouvernemental ou bancaire. Sa qualité indépendante,
elle nous a permis de lui rendre totalement décentralisé en
réduisant le coût d'intermédiation des systèmes
existant à un moindre coût tout en assurant la
confidentialité des informations de transactions qui est la clé
du système.
Etat de l'art sur les cryptomonnaie
Les cryptomonnaies sont apparues dans l'objectif de pallier
aux problèmes que possèdent nos institutions financière
traditionnel basés sur un modèle de confiance en le
21
remplaçant par une preuve de travail cryptogaraphique.
Jean-Guillaume Dumas et Pascal Lafourcade l'ont défini comme est une
monnaie dématérialisée et souvent
décentralisée utilisant des mécanismes cryptographiques
pour valider ses transactions (Dumas & Lafourcade, 2010).
La particularité que les cryptomonnaies ont en commun
se résume sur le fait d'effectuer une transaction sans
intermédiaire quelconque pour effectuer la validation tout en respectant
un certain mode de sécurité sur internet dont : l'anonymat dans
la transaction et, effectuer des transactions en principe infalsifiables et
inviolables. Parmi l'ensemble des cryptomonnaies disponibles, nous en avons
sélectionnés deux majeurs en fonction de leur capacité
à permettre notre présentation mais voyons d'abord ce que
signifient ces modes de sécurité.
Modes de sécurité sur
internet.
L'anonymat dans la transaction.
Le modèle bancaire traditionnel réalise un
niveau de protection de la vie privée en limitant l'accès aux
informations aux personnes concernées et au tiers de confiance. La
nécessité d'annoncer toutes les transactions publiquement
écarte cette méthode, mais la protection de la vie privée
peut encore être assurée en rompant le flux d'information à
un autre endroit : en gardant les clefs publiques anonymes. Le public peut voir
que quelqu'un est en train d'envoyer un montant à quelqu'un d'autre,
mais sans information liant la transaction à quelqu'un. Ceci est
similaire au niveau d'information remis par la bourse, où les heures et
montants des échanges, le «carnet d'ordres», est publique,
mais sans dire qui sont les parties.
En guise de pare-feu additionnel, une nouvelle paire de clefs
pourrait être utilisée pour chaque transaction afin de les garder
non liées à un propriétaire commun. Toutefois, la liaison
est inévitable avec les transactions multi entrées, qui
révèlent nécessairement que leurs entrées
étaient détenues par un même propriétaire. Le risque
est que si le propriétaire d'une clef est
22
révélé, les liaisons peuvent
révéler d'autres transactions qui ont appartenu au même
propriétaire (Nakamoto, 2008).
Transactions infalsifiables et
inviolables.
Pour lutter contre la contrefaçon, Nakamoto y en avait
pensé, il définit une pièce (de monnaie)
électronique dans son livre blanc comme une chaîne de signatures
électroniques. Où chaque propriétaire transfère la
pièce au suivant en signant le hachage de la transaction
précédente, de la clef publique du prochain propriétaire
et en ajoutant tout cela à la fin de la pièce. Un
bénéficiaire peut vérifier les signatures pour
vérifier la chaîne de propriété.
Figure 8: chaîne des transactions électroniques
(Nakamoto, 2008) Pour réaliser tous ceci, nous
avons pu utiliser :
? RSA : est une cryptographie à clé publique,
c'est-à-dire qu'il y a manipulation de deux clés (une publique
et une autre privée). Le mot RSA est tiré de ses concepteurs
(Rivest, Shamir et Adleman). Sa conception est basée sur le calcul
exponentiel, une fonction unidirectionnelle est la base de sa
sécurité; cette fonction se réalise par le calcul du
produit de 2 nombres premiers (Dumont, 2010). Ce système cryptographique
procède par l'utilisation de deux clés d et e,
interchangeables (Müller, 2007).
Le chiffrement se réalise selon la formule : C
= M e mod n
23
Et le déchiffrement par : M = Cd
mod n. Avec M : Message en clair et C : message chiffré
(FERRADI, 2016).
? Fonctions de hachage : sont des fonctions
mathématiques qui permettent à partir de n'importe quelle
donnée numérique, d'obtenir une empreinte, qui est une petite
chaine de bits.
- SHA-256 et SHA-1 ; En 1993 l'algorithme SHA (Secure Hash
Algorithm) vit jour sous la direction de NIST et NSA, et a été
révisé en 1995 pour étendre ses capacités
sécuritaires. Ses spécificités sont publiées dans
le RFC 3174, la norme est SHS (Secure Hash Standard).
Exemples des cryptomonnaies
Bitcoin.
C'est en novembre 2008, qu'il y eut une personne ou encore un
groupe de personnes connu sous le pseudonyme de Satoshi Nakamoto que cette
idée fut présentée pour la première fois (Nakamoto,
2008).
Le système fonctionne indépendamment d'une
autorité centrale, ni administrateur unique. C'est le consensus de
l'ensemble des noeuds du réseau qui gère le système, c'est
grâce à ce consensus que s'effectue la gestion
décentralisée du système. Sa capitalisation étant
supérieure à 200 milliards de dollars début
décembre 2017 fait de lui la plus importante monnaie cryptographique
décentralisée (coinmarketcap, 2012).
Clefs publiques et
privées.
Utilisant la cryptographie à clé publique, le
portemonnaie bitcoin gère un ensemble de paires de clefs
privé/publique. En général, On choisit
aléatoirement un nombre qui devient la clef privée (k). C'est
à partir de cette dernière qu'on génère La clef
publique (K), ceci se réalise en utilisant la multiplication en courbes
elliptiques, c'est une fonction cryptographique non-inversible. Et ensuite,
pour avoir l'adresse(A), on utilise un hash cryptographique pour la
générer et cela à partir de la clef publique
(Antonopoulos, 2016).
24
Figure 9. Clef privée, clef publique et adresse
bitcoin (Antonopoulos, 2016)
La cryptographie sur les courbes
elliptiques.
C'est cryptosystème est d'un type particulier de
cryptographie asymétrique (i.e. à clef privée/clef
publique). Elle se base sur le problème du logarithme discret dans le
groupe correspondant à la courbe elliptique (que l'on définit en
introduisant les notions d'addition de points sur la courbe, et de
multiplication de point par un entier). An elliptic curve est un
exemple de courbe elliptique, similaire à celle utilisée par
bitcoin.
Figure 10. An elliptic curve
Transactions.
Les transactions sont la partie la plus importante de tout
système de payement. Tout système de payement sur internet sous
le protocole P2P, vise impérativement à assurer que des
transactions puissent être créées, diffusées sur le
réseau, validées, et enfin ajoutée au registre global des
transactions (la blockchain).
Son cycle de vie commence avec sa création. Elle est
ensuite signée avec une ou plusieurs signatures signifiant
l'autorisation de dépenser les fonds référencés
dans la transaction.
25
Le réseau Bitcoin.
L'architecture réseau pair-à-pair.
Bitcoin est une architecture réseau pair-à-pair
au-dessus d'Internet. Les noeuds d'un réseau pair-à-pair à
la fois fournissent et consomment des services, la réciprocité
agissant comme une motivation pour participer. Bref, les P2P sont
composées d'un ensemble d'entités partageant un ensemble de
ressources, et jouant à la fois le rôle de serveur et de client
(Benoit, 2006).
Découverte du réseau.
Quand un nouveau node démarre dans le réseau
P2P, il doit découvrir les autres noeuds sur le réseau dans le
but de participer aussi au système. Sur ce, le processus commence quand
le nouveau noeud cherche à trouver au moins un autre noeud existant sur
ce réseau et s'y connecter.
Dans le réseau bitcoin, la connexion à un pair
connu s'établit sous TCP sur le port 8333 habituellement (le port
généralement connu comme étant celui utilisé par
bitcoin), ou à un autre port si disponible.
Ethereum.
Grâce au langage Turing-complet, ce protocole
d'échanges décentralisés permet la création des
contrats intelligents par ses utilisateurs. Ces contrats déployés
et consultables publiquement dans une blockchain sont basés sur un
protocole informatique permettant de vérifier ou de mettre en
application un contrat mutuel.
« Ether » est unité de compte utilisé
par le réseau Ethereum comme moyen de paiement de ces contrats. «
ETH » est le sigle qu'utilisent les plates formes d'échanges.
Précédé par le Bitcoin, Ethereum, avec une capitalisation
supérieure à 13 milliards d'euros en Janvier 2019 est la
deuxième plus importante monnaie cryptographique
décentralisée. Comme le bitcoin, Il utilise actuellement le
procédé de minage de type Proof-of-Work qui sera
bientôt
26
changé dans version ultérieure du logiciel afin
de limiter la consommation d'électricité du réseau
(version ultérieure du logiciel prendra le nom de Serenity) en
un minage de type Proof-of-Stake.
Figure 11: Logo du projet Ethereum, utilisé pour la
première fois en 2014
CHAPITRE DEUXIÈME
MÉTHODES, MATÉRIELS ET LANGAGES
Ce chapitre est consacré à la
présentation des méthodologies et outils du travail que nous
utilisons pour atteindre nos objectifs. Notre objectif principal est de
concevoir un système pair-à-pair de payement sur internet
basé sur la devise monétaire congolaise. Pour y arriver, il nous
faut combiner quelques approches méthodologiques de la recherche
technologique en informatique. Etant donné que le fondement d'une
méthode c'est l'objet de la science dans la quelle l'on fait sa
recherche.
Méthodes
La Documentation.
C'est une démarche méthodologique qui permet
d'identifier, récupérer et traiter des informations sur un sujet
donné. « Savoir se documenter, c'est savoir où et comment
trouver l'information, savoir poser les bonnes questions, savoir de quelle
information on a besoin, savoir la lire, la comprendre, la critiquer,
évaluer si elle répond à ses besoins et savoir la
gérer » (Laplante, 2011).
En bref, cette méthodologie nous a aidé à
comprendre les normes internationales et le système existant de sur les
monnaies électroniques
La Modélisation.
Cette méthodologie nous est très utile car
réaliser le modèle conceptuel d'un système
nécessite de concevoir une abstraction de celui-ci. Le système
abstrait obtenu doit satisfaire deux conditions : il doit avoir un
caractère de ressemblance avec le système réel ; il doit
aider à la compréhension du système réel.
28
Ainsi donc, pour le développement de notre
système, nous avons choisis la méthode « PU (processus
unifié) » ; un processus est une séquence d'étapes,
partiellement ordonnées, qui participent à l'obtention d'un
système logiciel ou à l'évolution d'un système
existant. Son objectif est de produire des bons logiciels, ayant une
qualité qui répond aux besoins de leurs utilisateurs dans un
court délai et à des coûts moindres (Gérard, 2008).
En bref, on dirait que le PU est un processus de développement logiciel
itératif, centré sur l'architecture, piloté par des cas
d'utilisation et orienté vers la diminution des risques. Le processus de
développement d'une application passe par les étapes suivantes
:
- Analyse et spécification des besoins ;
- Conception ;
- Implémentation ;
- Test.
Dans le chapitre qui suit, nous développerons
uniquement les deux premières étapes, à savoir l'analyse
et la spécification des besoins ainsi que la conception tout en
choisissant UML (Unified Modeling Language) comme langage de
modélisation.
UML, se définit comme un langage de modélisation
graphique et textuel destiné à comprendre et à
définir des besoins, spécifier et documenter des systèmes,
esquisser des architectures logicielles, concevoir des solutions et communiquer
des points de vue. UML modélise l'ensemble des données et des
traitements en élaborant différents diagrammes. Sur ce, nous
avons choisi quelques diagrammes enfin de développer notre
système : Diagramme de cas d'utilisation, diagramme de séquence,
diagramme de déploiement et diagramme de classe.
Les deux autres étapes seront développées
dans le dernier chapitre.
29
La définition des algorithmes.
Dans cette partie méthodologique, nous avons eu
à définir les instructions qui nous ont permis de résoudre
notre problème. Nous avons premièrement commencé par
l'analyse des problèmes mettre en place une structure de programmation.
En comme accord avec (Nogier, 2008) qui dit qu'n algorithme est une
méthode générale pour résoudre un ensemble de
problèmes. Il est dit correct lorsque, pour chaque instance du
problème, il se termine en produisant la bonne sortie,
c'est-à-dire qu'il résout le problème posé. Nous
allons ici mesurer l'efficacité de notre algorithme notamment
par sa durée de calcul, par sa consommation de mémoire RAM (en
partant du principe que chaque instruction a un temps d'exécution
constant), par la précision des résultats.
Le prototypage.
Le prototypage consiste à simuler l'interface d'un
produit, d'une manière totalement complète ou presque
complète donc partielle, le but est d'avoir des informations sur le
fonctionnement interactif des utilisateurs avec le futur produit. Son
évaluation (du prototype) permet donc d'examiner le fonctionnement de
logiciel du point de vue utilisateur. Il s'effectue d'une manière
suffisante dans le cycle de développement, car, le prototypage facilite
la détection les problèmes d'utilisabilité et de examiner
les besoins des utilisateurs avant le codage complet, et ainsi d'optimiser le
processus et les coûts de développement. En fonction du stade de
développement et des aspects à tester, le prototypage peut
être réalisé selon différents degrés de
fidélité vis-à-vis de l'application finale, et sur
différents supports. Différentes techniques permettent de mesurer
l'utilisabilité à partir d'un prototype (Baccino, 2009).
30
La simulation.
Cette dernière nous a permis de tester si notre
système marche comme il fallait, elle est dite une série de
calculs effectués sur un ordinateur et qui produit un
phénomène physique. Sa finalité est la description du
résultat de ce dernier phénomène, comme s'il
s'était réellement déroulé. Cette
représentation peut être une série de données, une
image ou même un film vidéo (futura-sciences).
Ajoutez les techniques, les matériels et les langages
de programmation utilisés
Environnement logiciel
NetBeans.
NetBeans est un environnement open-source de
développement intégré (IDE) pour le développement
avec Java, PHP, C ++, et d'autres langages de programmation. NetBeans est
également désigné comme une plate-forme de composants
modulaires utilisés pour développer des applications de bureau
Java. NetBeans est codé en Java et fonctionne sur la plupart des
systèmes d'exploitation avec une machine virtuelle Java (JVM), y compris
Solaris, Mac OS et Linux. NetBeans gère les fonctionnalités et
les composants des plateformes suivantes :
- Paramètres utilisateur ;
- Fenêtres (placement, apparence, etc.) ;
- NetBeans Visual Library ;
- Stockage ;
- outils de développement intégrés ;
- Assistant-cadre. (techopedia, netbeans, 2019)
31
Outils Utilisés.
Eclipse IDE.
Eclipse est un IDE, (Integrated Development Environment),
c'est-à-dire un logiciel qui simplifie la programmation en proposant un
certain nombre de raccourcis et d'aides à la programmation. Il est
développé par IBM, et est gratuit et disponible pour la plupart
des systèmes d'exploitation (Cervelle, 2019).
JDK.
(Java Développement Kit) Un environnement de
développement logiciel Java d'Oracle. Il comprend la JVM, compilateur,
débogueur et d'autres outils pour développer des applets et des
applications Java. Chaque nouvelle version du JDK ajoute des
fonctionnalités et des améliorations à la langue. Lorsque
les programmes Java sont développés dans le cadre de la nouvelle
version, l'interpréteur Java (Java Virtual Machine) qui l'exécute
doit être également mis à jour (pcmag, 2019).
JRE.
L'environnement d'exécution Java (JRE) est un ensemble
d'outils logiciels pour le développement d'applications Java. Il combine
la machine virtuelle Java (JVM), les classes de base de la plate - forme et les
bibliothèques de support. JRE fait partie du kit de développement
Java (JDK), mais peut être téléchargé
séparément. JRE a été initialement
développé par Sun Microsystems Inc., une filiale en
propriété exclusive d'Oracle Corporation. Aussi connu sous
runtime Java (techopedia, java-runtime-environment-jre, 2019).
Langage de programmation.
Java.
Java est un langage de programmation et une plate-forme
informatique créée par Sun Microsystems en 1995. Il s'agit de la
technologie sous-jacente qui permet l'exécution de
32
programmes dernier cri, notamment des utilitaires, des jeux et
des applications professionnelles. Le langage Java est utilisé sur plus
de 850 millions d'ordinateurs de bureau et un milliard de
périphériques dans le monde, dont des périphériques
mobiles et des systèmes de diffusion télévisuelle.
XML.
Le XML ou eXtensible Markup Language est un langage
informatique de balisage générique. Un langage de balisage est un
langage qui s'écrit grâce à des balises. Ces balises
permettent de structurer de manière hiérarchisée et
organisée les données d'un document. L'objectif du XML est de
faciliter les échanges de données entre les machines. Mais
à ça s'ajoute un autre objectif important : décrire les
données de manière aussi bien compréhensible par les
hommes qui écrivent les documents XML que par les machines qui les
exploitent. Le XML se veut également compatible avec le web afin que les
échanges de données puissent se faire facilement à travers
le réseau internet. Finalement, le XML se veut standardiser, simple,
mais surtout extensible et configurable afin que n'importe quel type de
données puisse être décrit. En résumer, le XML est
un langage de balisage générique qui permet de structurer des
données dans l'objectif de les partager.
CHAPITRE TROISIEME
MODELISATION DU SYSTEME
Introduction
Tout en présentant l'idée générale
de notre système, ce présent chapitre est subdivisé en
deux parties ; la première consiste à faire une
présentation du système tout en présentant les objectifs
et services que le système sera à mesure de réaliser.
En deuxième lieu, nous présentons notre
façon de procéder (méthode) pour présenter
l'analyse et la spécification des besoins, suivie de la conception du
système. L'étape d'analyse et de spécification des besoins
offre une description de l'application suivie des besoins fonctionnels et non
fonctionnels.
EXIGENCES FONCTIONNELLES DU SYSTEME
L'objectif du système.
L'objectif de notre travail est de simuler un système
pair-à-pair de payement sur internet basé sur la devise
monétaire congolaise tout en respectant les modes de
sécurité des cryptomonnaies sur internet. L'unité de
compte utilisé par ce présent système nous l'avons
dénommé « talentcoin »
Contrairement au protocole Bitcoin, qui, sa découverte
des noeuds s'effectue en interrogeant un DNS tout en utilisant un certain
nombre de graines DNS (DNS seeds), des serveurs DNS qui fournissent une liste
d'adresses IP de noeuds bitcoin. Nous avons pensé utiliser la DHT pour
la découverte de nouveaux noeuds. La connaissance géographique
des noeuds n'est pas nécessaire.
Le système implémente certaines
fonctionnalités que nous décrivons ici-bas :
34
Créer Wallet.
Une foi l'application lancée pour la première
fois, elle demande quelques informations pour la sécurité
complémentaire du wallet; l'application génère
automatiquement une paire des clés pour la sécurité lors
de l'échange des informations sur le réseau.
Authentification.
L'authentification est l'une des fonctionnalités
très nécessaires dans ce système, car une fois ses
clés volées ; c'est tous les coins du wallet qui sont bien
volés. Il existe deux types d'authentifications :
? Au niveau de l'application : permet d'accéder à
l'interface de l'application
? Au niveau du réseau : effectué automatiquement
par le système, toute action au niveau
du réseau est vérifié par l'ensemble du
système.
Recevoir des talentcoins.
Cette fonctionnalité permet à l'utilisateur de
se procurer le talentcoin, il peut s'effectuer à partir du site web du
système ou à partir d'un autre utilisateur d'une manière
traditionnelle en lui donnant une valeur physique et son adresse
d'indentification sur le réseau.
Envoyer des talentcoins.
On peut vendre les coins que nous possédons dans notre
wallet, sur ce, il faut avoir l'adresse du destinateur.
Miner des talentcoins.
Le minage est la fonctionnalité qui permet de
sécuriser le réseau. Cette fonctionnalité est
rémunérée par une petite somme de coin pour sa preuve de
fonctionnalité.
35
Besoins Fonctionnels du
système.
Les différentes fonctionnalités qu'offre le
système, y sont toutes accédées après une
authentification sauf pour celle de la création de wallet. Cette
fonctionnalité permet d'assurer l'authenticité de l'acteur. Nous
possédons trois acteurs pour le système ; « Le client »
; celui-ci est toute personne voulant participer au fonctionnement du
système ; « L'utilisateur » est celui qui participe
déjà ; enfin nous avons « le système de payement
sécurisé ».
? Fonctionnalité de créer wallet : Permet de
créer un portefeuille afin de participer sur le réseau
talentcoin.
? Fonctionnalité Authentification : cette
fonctionnalité permet à l'utilisateur d'assurer
sa sécurité au niveau logiciel
? Fonctionnalité Achat talentcoin : Permet de se procurer
des talentcoins sur le réseau
? Fonctionnalité Vente talentcoin : Permet de vendre ses
coins que l'on possède dans
son portefeuille à un autre utilisateur dans le
réseau.
? Fonctionnalité minage : Cette fonctionnalité
est celle qui permet de sécuriser l'ensemble du réseau, en
validant les transactions effectuées sur le réseau.
Besoins non-fonctionnels du
système.
Les besoins non fonctionnels décrivent toutes les
contraintes auxquelles est soumis le système pour sa réalisation
et son bon fonctionnement.
? Existence d'un réseau ;
? Ergonomie attractive et efficace : le design des interfaces
doit permettre une
identification immédiate pour permettre à
l'utilisateur d'accéder facilement aux différentes
fonctionnalités du système ;
? Rapidité du traitement : le système doit
assurer une rapidité de traitement pour qu'elle s'approche au maximum
d'une exécution en temps réel.
Figure 12: Diagramme de cas d'utilisation
36
Diagramme de cas d'utilisation.
Règles de gestion fonctionnelle.
Notre modèle est alimenté par les règles
suivantes :
1. Toute fonctionnalité ne pourra être
utilisée que s'il y a une authentification de la part de
l'utilisateur, sauf la fonctionnalité de créer wallet.
2. Une fois une authentification validée,
l'utilisateur peut :
- Recevoir des talentcoins
- Envoyer des talentcoin
- Miner des talentcoin
37
Description textuelle des cas d'utilisation. Le cas «
créer wallet»
Tableau 2. cas créer wallet
Titre Créer wallet
Résumé Permet au client de se
procurer un portefeuille pour effectuer les
opérations que réserve le système.
Acteurs Le client
Précondition L'acteur doit se procurer
l'application mobile ou desktop selon sa
plateforme
Scenario Nominal 1. Lancement du setup de
l'application
2. L'application demande à l'acteur quelques
informations
3. L'utilisateur fournit les informations nécessaires
pour la sécurité de l'application
4. L'application effectue la configuration de l'identité
de l'acteur
5. Une fois configuration finie, le wallet est
créé
6. Fin
|
Scenario Alternatif 1. si le client fournit les
informations invalides, le scénario
reprend de 2
Le cas « Authentification »
Tableau 3. Le cas Authentification
Titre Authentification
Résumé En entrant un login et mot
de passe, ce cas Permet une authentification
38
de l'utilisateur pour accéder aux menu du
système
Acteurs L'utilisateur
Précondition L'utilisateur doit avoir un
compte sur l'application
Scenario Nominal 1. L'utilisateur lance
l'application
2. L'application suggère à l'acteur le menu
d'authentification
3. L'utilisateur fourni ses identifiants à
l'application
4. L'application vérifie si l'utilisateur valide
5. Ouverture de l'interface d'accueil
6. Fin
|
Scenario Alternatif 1. si le client fournit les
informations invalides, le scénario
reprend de 2
Le cas Recevoir talentcoins
Tableau 4: Le cas Recevoir talentcoins
Titre Recevoir talentcoins
Résumé Permet à
l'utilisateur de demander de lui envoyer des nouveaux
talentcoins.
Acteurs L'utilisateur
Précondition L'utilisateur doit se
connecter
Scenario Nominal 1. L'utilisateur lance
l'application
2. L'utilisateur effectue l'authentification
3. L'utilisateur accède à l'interface d'accueil
où il choisit le menu recevoir.
4. L'utilisateur fournit l'adresse de destination
|
5. Il donne le nombre de talentcoins qu'il veut s'en procurer
puis envoie les informations.
6. Fin
|
39
Scenario Alternatif 1. si authentification
invalide, le scénario reprend de 2
2. si le système ne reconnaît pas l'adresse de
destination, le
scénario reprend de 4 ;
Le cas Envoyer talentcoins
Tableau 5: Le cas Envoyer talentcoins
Titre Envoyer talentcoins
Résumé Permet à
l'utilisateur d'effectuer une transaction vers un autre compte
d'utilisateur
Acteurs L'utilisateur
Précondition L'utilisateur doit avoir un
nombre de talentcoins nécessaire pour la
transaction
Scenario Nominal 1. L'utilisateur lance
l'application
2. L'utilisateur effectue l'authentification
3. L'utilisateur accède à l'espace Envoyer des
talentcoins
4. Il fournit l'adresse vers lequel il veut effectuer la
transaction et le nombre de talentcoins qu'il veut envoyer puis envoie.
5. La transaction est ajoutée dans un block
6. Le réseau valide la transaction
7. Le destinateur reçoit la transaction
8. Fin
|
40
Scenario Alternatif 1. si l'authentification
invalide, le scénario reprend de 2
2. si l'adresse d'envoi est invalide, le scénario reprend
de 4 ;
3. si le réseau invalide la transaction, le
scénario reprend de 4
Le cas miner talentcoins
Tableau 6: le cas miner talentcoins
Titre Miner talentcoins
Résumé Comme la chambre de
compassassions pour les banques
traditionnelles, ce cas permet de valider les transactions et
de créer des nouveaux talentcoins. Il permet de sécuriser le
réseau talentcoins.
Acteurs L'utilisateur
Précondition La machine ayant
configuré cette fonctionnalité doit rester allumée
tout le temps pour effectuer le minage.
Scenario Nominal 1. La machine effectue
l'opération mathématique de validation
de nouvelles transactions regroupées dans un block
2. Le block validé est ajouté à la
blockchain et transmises à l'ensemble du réseau
3. Le réseau récompense l'utilisateur de nouvelles
monnaies
4. Fin
|
Scenario Alternatif 1. si les transactions
validées les sont déjà par une autre machine,
le scénario reprend de 1
41
CONCEPTION DU SYSTEME
Diagramme de séquences.
Créer wallet.
Nous commençons par la création du wallet de
l'acteur qui veut participer au système (client). Le système
possède deux types de wallet, l'un qui peut être
créé sur une plateforme web et l'autre sur une plateforme desktop
ou mobile. Ici nous présentons comment se présente le
scénario sur toute les plateformes.
Figure 13: diagramme de séquence "créer
Wallet"
Authentification.
Cette section montre le scénario pour
l'authentification dans le but d'accéder à son espace utilisateur
afin d'avoir la facilité de bénéficier aux
fonctionnalités du système. Une authentification réussit
est une inclusion du client ayant déjà créé un
wallet (Desktop, mobile, web) (utilisateur).
42
Figure 14: diagramme de séquence " authentification
"
Recevoir talentcoins.
Dans la figure présentée ici-bas, nous
présentons le scénario pour l'opération recevoir des
talentcoins. L'authentification est une précondition de cette
séquence.
Figure 15: diagramme de séquence " Recevoir
talentcoins "
Vendre talentcoins.
Cette séquence est autrement dite la transaction, elle
présente l'ensemble des séquences qui interviennent dans la
fonctionnalité de vente des talentcoins. La figure ici-bas nous
décrit cette opération d'une manière
séquentielle.
43
Figure 16: diagramme de séquence " Envoyer talentcoins
"
Miner talentcoins.
Cette section permet de montrer comment s'effectue la
validation d'une transaction d'un pair à un autre dans le réseau
Talentcoin tout en les ajoutant dans un bloc. Cette fonctionnalité est
celle qui permet de créer des novelles monnaies et trouver le prochain
block. Ces monnaies créées sont une récompense de la
validation. Présentée dans la figure ci-dessous.
44
Figure 17: diagramme de séquence " Miner talentcoins
"
Diagramme de déploiement.
Un utilisateur est enregistré au moins dans une DHT
pour participer aux fonctionnalités du réseau Talentcoin.
45
Figure 18: Diagramme de déploiement du réseau
Talentcoin
? DHT : celle-ci possède la liste d'adresse IP des pairs
connectés au réseau « dht.xml»
? Utilisateurs : Ceux-ci possèdent tous :
- Toutes les transactions valides regroupées par bocks
puis celui-ci est ajouté à la chaine
de blocks« blockchains.xml»
- Les notifications des transactions auxquelles il est lié
ainsi que du système « notifications.xml».
- La configuration de l'application «
configurations.xml»
Diagramme de classe.
Règles de gestion
fonctionnelle.
Les Règles de gestion fonctionnelle sont des normes qui
s'appliquent systématiquement dans le système lorsque l'acteur
effectue une opération quelconque (DIGALLO, 2001).
1. Un utilisateur possède un nom d'utilisateur, un mail et
un mot de passe qui lui permettent de s'identifier au niveau applicatif et
enfin il possède une adresse lui permettant de recevoir des nouvelles
monnaies. ; une adresse IP qui lui attribuée pour chaque connexion ;
2.
46
Un utilisateur peut ou ne pas effectuer des transactions ;
celle-ci possède une date de transaction, une adresse du destinateur, la
somme et la signature de l'émetteur de la transaction ;
3. Il existe deux type de transactions ; les entrées
et les sorties.
4. Une transaction réalisée est automatiquement
ajoutée dans un bloc.
5. Un block possède un index permettant de savoir le
numéro du bloc, un nonce qui sert lors du minage du bloc, un timeStamp
qui stock la date de création du bloc, un hash pour assurer
l'intégrité du bloc, un previousHash pour lier le block courant
au précédent et une signature pour signaler l'utilisateur ayant
trouvé le bloc et ne coinbase.
6. En fin, un utilisateur peut ou ne pas avoir une
notification, qui possède la date, la description, un identifiant et un
type.
Diagramme de classe de conception.
Figure 19: Diagramme de classe
47
Base des données.
Afin de constituer notre base de données, nous sommes
parti de quelques six principes
de transformation (Transformation des classes, Transformation
de l'héritage, Association un-
à-plusieurs, Associations plusieurs-à-plusieurs
ou classes-associations, Associations un-à-un,
Composition) (Masivi, 2018).
Ces règles nous ont permis d'avoir ce qui suit :
Utilisateurs (userName, password, adressIp,
adressTalentcoin) ;
Transactions (adresseDestinataire, dateTransaction, signature,
somme) ;
Blocks (index, hash, coinbase, previousHash, nonce,
timeStamp, Transaction);
Notifications (id, date, type, description) ;
recevoirNotification(idNotification#, idUtilisateurs#) ;
CHAPITRE QUATRIEME : LES PROTOTYPES DES RESULTATS
ET IMPLEMENTATION
Dans ce chapitre nous allons présenter le
système que nous avons développé(Talentcoin), quelques
interfaces d'implémentation de l'application Talentcoin et leurs
algorithmes, et nous achèverons le chapitre par une discussion de
résultats.
Architecture du système.
Le schéma ci-dessous représente l'architecture
du système et les services qui lui sont intégrés :
Figure 20: Architecture du système
49
Dans ce qui suit, nous allons présenter d'une
manière séquentielle comment les scénarios se suivent dans
notre système de payement. Vu que le système marche selon le
protocole P2P, quand on lance l'application cliente sur une machine, celle-ci
commence par partager avec sa DHT une paire de clé pour le chiffrement
des données puis procède à sa consultation tout en
déchiffrant avec la clé publique de la DHT pour se connecter
à l'ensemble du réseau.
Demande de connexion au réseau d'un pair à la
DHT
Figure 21: Demande de connexion au réseau d'un pair
à la DHT Connexion d'un utilisateur à un autre
Figure 22: Connexion en P2P
50
Réalisation du système
Interface et algorithme d'envoie des
talentcoins.
Figure 23: Interface d'envoie des talentcoins
Figure 24: Algorithme d'envoie des talentcoins
Pour effectuer l'envoie des talentcoins, il est
impératif d'avoir au moins une quantité disponible dans son
portefeuille en fournissant l'adresse de destination et le montant d'envoie ;
la description est facultative.
51
Interface et algorithme de notification de
réception.
Ici nous montrons l'interface de réception d'une
quantité de talent coin envoyée par une adresse figurant sur la
figure ici-bas, ainsi que son algorithme.
Figure 25:Interface de notification de
réception
Figure 26: Algorithme de réception
52
Interface et algorithme pour minage.
Cette interface est celle qui représente la
fonctionnalité du minage, pour miner des talentcoin et participer
à la sécurité du réseau, l'utilisateur doit activer
cette fonctionnalité en cliquant sur le bouton d'activation. La partie
algorithme nous montre le schéma du minage.
|
|
Figure 27: Interface de minage
|
|
Figure 28: Algorithme pour minage
|
53
Protocole d'experimentation et discussion du resultat
du travail.
Notre experimentation était réalisée dans
un réseau local de quatre machines :deux machines sous windows 8 et deux
autres sous seven. Pour arriver arriver a faire fonctionner la communication de
ces machines, nous avons pû desactiver leur système de par feu.
Dans le domaine de monnaies électroniques et sur
internet en RDC, la plupart des systèmes sont réalisés
avec une architecture centralisée. Ce qui rend la gestion très
facile surtout la validation des transactions, mais ce genre de système
cours des très grands dangers au niveau sécurité
informatique. Cette centralisation leur donne une autorité sur la
fixation de frais des transactions, ce qui fait que ces systèmes ont un
frais de transaction très élevé.
Quant à notre système, qui avait pour objectif
principal de concevoir un système pair-à-pair de payement sur
internet basé sur la devise monétaire congolaise; bref une
cryptomonnaie. En particulier nous avons voulu réduire les frais de
transactions réalisées existant à un frais
dérisoire ; supprimer la faiblesse du model basé sur la confiance
en le remplaçant par un model basé sur la preuve de travail
cryptogaraphique. Et en fin permettre aux deux parties d'effectuer des
transactions sans aide d'une tierse de confiance.
C'est ainsi que nous sommes parvenus à offrir les
exigences fonctionnelles d'une crypto monaie, nous avons proposer un
modèle informatique pour le système ainsi les technologies
appropriées au contexte de la RDC pour implémenter et tester le
système.
Tout ceci en respectant le protocole de payement sur internet
en pair-à-pair.
C'est ainsi que nous sommes parvenus à atteindre nos
objectifs après le test des algorithmes que nous avons implanté
dont : l'algorihme d'envoie de valeur en p2p, l'algrithme de reception et de
minage des blocks.
Néamoins, pendant la réalisation de notre
travail, nous nous étions affrontés à certains
problèmes ; la banque centrale du congo ne reconnait pas la valeur que
contient une cryptomonnaie .
54
Nous sommes parvenu à réaliser une transaction
entre deux noeuds sur un réseau local sans serveur central et effectuer
sa validation en P2P. Pour que le réseau fonctionne, il faut une
participation des noeuds de minage, qui jouent le role de chambre de
compensation comme pour les banques traditionnelles et qui sont
recompensées par une somme de talentcoin.
Conclusion partiel
Dans ce chapitre, nous sommes partis en présentant en
détail la réalisation de notre projet. Premièrement nous
avons commencé par la présentation du Protocol
développé(Talentcoin). Nous avons aussi réalisé une
navigation dans notre application en présentant des captures
d'écran de quelques fonctionnalités témoignant les
différentes tâches ainsi leurs algorithme ; Ensuite nous avons
fini par une discussion des résultats obtenus.
CONCLUSION GENERALE
Notre travail portant sur la simulation d'une cryptomonnaie
basée sur la devise monétaire congolaise a été
motivé par le fait que la centralisation des données est l'une
des faiblesses que possèdent les systèmes de payement virtuel de
notre pays, du point de vue sécurité informatique même si
pour le moment celui-ci semble mieux fonctionner ; le frais de transaction
très élevé et la confiance à un tiers pour
réaliser ses transactions.
Pour résoudre ces problèmes, nous sommes partis
des questions qui cherchent à savoir : quelles sont les exigences
fonctionnelles d'une monnaie non bancaire couplant intégrité et
confidentialité ? Quel serait le modèle informatique
représentant le mieux ce système ? Quelles sont les technologies
adaptées pour l'implémentation de ce système dans le
contexte de la RDC
En vue de répondre aux questions que nous nous
étions posées, nous nous sommes fixés quelques objectifs
qui nous ont permis d'arriver à notre fin ; nous avons recueilli les
exigences fonctionnelles d'une crypto monaie dans le contexte de la RDC ;
proposer un modèle informatique pour le système ainsi que les
technologies appropriées au contexte de la RDC pour implémenter
et tester le système.
Pour atteindre ces objectifs, nous sommes parti de la
méthode de documentation qui nous a permis d'avoir une vue d'ensemble
sur la technologie blockchain et le système de décentralisation
P2P ; nous avons utilisé le langage UML pour la modélisation en
utilisant la méthode PU (processus Unified) qui nous a permis de
réaliser un système qui répond aux exigences de nos
objectifs. La méthode de prototypage qui a consisté à
donner une maquette de notre modèle à partir duquel nous avons
démontré que l'implémentation de notre modèle
56
est possible ; enfin la simulation nous a permis de faire le
test du système réalisé dans notre laboratoire.
Bibliographie
BENSLIMANE, Y., & OUAKKOUCHE, K. (2016). Conception et
Réalisation d'un Réseau Social Distribué.
Algérie: Université Abderrahmane Mira de béjaia.
Antonopoulos, A. (2016). Mastering Bitcoin.
arstechnica. (2013, Mai 26). Wary of Bitcoin? A guide to some
other crypt ocurrencies. Consulté le Janvier 10, 2018, sur
https://arstechnica.com:
https://arstechnica.com/business/2013/05/wary-of-bitcoin-a-guide-to-some-other-cryptocurrencies/
AUSIM. (2017). Livre Blanc AUSIM LA BLOCKCHAIN - THE
DESCRIPTION. Maroc.
Baccino, T. (2009). PROTOTYPAGE. Paris.
Bartlomiej, S., Kshemkalyani, A., & Singhal, M. (2004).
On the Security of Polling Protocols in Peer-to-Peer System.
Benoit, A. (2006). Algorithmique des r'eseaux et des
t'el'ecoms.
blockchainfrance. (2016). Découvrir la
blockchain. Consulté le Mars 10, 2019, sur
blockchainfrance.net:
http://blockchainfrance.net/decouvrir-la-blockchain/c-est-quoi-la-blockchain
BRODIN, O. (2000). LES COMMUNAUTÉS VIRTUELLES Un
potentiel marketing encore peu exploré. Association
Française du Marketing.
BUDAN, N., TEDESCHI, B., & VAUBOURG, S. (2003).
Nouvelles Technologies Réseau.
Cervelle, J. (2019, Juin 12). eclipse.
Récupéré sur enseignement.polytechnique: //
www.enseignement.polytechnique.fr/informatique/profs/Julien.Cervelle/eclipse/
coinmarketcap. (2012). Crypto-Currency Market
Capitalizations. Consulté le Avril 18, 2019, sur
http://www.coinmarketcap.com:
http://www.coinmarketcap.com/#USD
DIGALLO. (2001). Méthodologie Merise. Paris.
DOROTHE, C. (2017). BLOCKCHAIN la revolution de l'economie de
partage. Ile-de-France: SMILE.
Dumas , J.-G., & Lafourcade, P. (2010). Les Big Data
à l'échelle de la société. Dumont, R. (2010).
Cryptographie et Sécurité informatique. Liège.
58
Fayçal, M. (2010). Routage Efficace pour les
Réseaux Pair-à-Pair utilisant des Tables de Hachage
Distribuées. Paris.
FERRADI, H. (2016). Initiation à la cryptographie :
théorie et pratique. Paris.
futura-sciences. (s.d.).
informatique-simulation-informatique. Consulté le Avril 17,
2019, sur
https://www.futura-sciences.com/:
https://www.futura-sciences.com/tech/definitions/informatique-simulation-informatique-11319/
Gérard, P. (2008). Pro cessusdeDévelopp
ementLogiciel. Paris.
Goessens, M. (2012). Étude bibliographique : Diffusion
de contenu en pair-à-pair. Jacques, V. (2018). Paypite la
cryptomonnaie des francophones. Paris.
Kas, C. (2017, octobre 26). PayWebPhone, le mini PayPal
Congolais. Consulté le Juin 12, 2019, sur
Waza-tech.com:
http://www.waza-tech.com/2015/11/commerce-electronique-paywebphone-le-mini-paypal-made-in-congo/
KEMP, S. (2018, janvier 30). Digital in 2018: world's
internet users pass the 4 billion mark. Consulté le avril 3, 2019,
sur https:\\www.wearesocial.com:
https:\\www.wearesocial.com/blog/2018/01/global-digital-report-2018
Laplante, A. (2011). METHODOLOGIE DE LA RECHERCHE
DOCUMENTAIRE.
Masivi, O. M. (2018). Analyse et conception des
systèmes orientés Objets Avec UML. Editions universitaires
européennes.
morebus.free.fr. (2009).
historique. Consulté le Avril 3, 2019, sur
morebus.free.fr: http ://
morebus.free.fr/siteMemoire/historique02.html
Müller, D. (2007). Les Codes secrets
décryptés. City Editions. Nakamoto, S. (2008). Bitcoin:
A Peer-to-Peer Electronic Cash System.
Pareyre, J.-C. (2018, Avril 23). Actualites.
Consulté le Mars 19, 2019, sur
http://www.actucrypto.info:
http://www.actucrypto.info/actualites/linteret-de-crypto-monnaie-selon-christine-lagarde/
pcmag. (2019, Juin 12). JDK.
Récupéré sur pcmag: http ://
www.pcmag.com/encyclopedia/term/45608/jdk
populationdata. (2019, juin 22). République
démocratique du comngo. Récupéré sur
populationdata:
www.populationdata.net/pays/republique-démocratique-du-congo/
publications.banque-france. (2018, Mars 05).
lemergence-du-bitcoin-et-autres-crypto-actifsenjeux-risques-et-perspectives.
Consulté le Janvier 10, 2019, sur
https://publications.banque-france.fr:
https://publications.banque-france.fr/lemergence-du-bitcoin-et-autres-crypto-actifsenjeux-risques-et-perspectives
59
Steffenel, L. A. (2008). Programmation des Applications
Réparties. Reims.
techopedia. (2019, Juin 12).
java-runtime-environment-jre. Récupéré sur
techopedia:
www.techopedia.com/definition/5442/java-runtime-environment-jre
techopedia. (2019, Juin 12). netbeans.
Récupéré sur techopedia: https ://
www.techopedia.com/denition/24735/netbeans
THOMAS, V. (2000). LE RESEAU DES RESEAUX : INTERNET.
VAUPLANE, H. D. (2014). L'ANALYSE JURIDIQUE DU BITCOIN.
TECHNOLOGIE ET COMPLEXITÉ, 353.
Vercy, I. (2018, Juillet 04). cryptomonnaies-cryptoactifs.
Consulté le Janvier 10, 2019, sur
https://www.economie.gouv.fr:
https://www.economie.gouv.fr/particuliers/cryptomonnaies-cryptoactifs
VODISLAV, D. (s.d.). Architectures distribuées
P2P.
|