La blockchain est la technologie buzzword du moment pour assurer une traçabilité des transactions. Beaucoup de personnes en parlent, mais très peu savent comment cela fonctionne réellement. Pire, de plus d'outils d'implémentations font leur apparition, et il est difficile de s'y retrouver.
The Linux Foundation a créé Hyperledger Fabric, un framework permettant la réalisation d'un réseau de blockchain from scratch très prometteur, que nous allons décortiquer ensemble. Nous allons donc réaliser un tour d'horizon de ce qu'il permet et explorer les tenants et aboutissants de ce qu'est concrètement la réalisation d'un tel réseau.
Cette présentation a pour vocation de vous permettre de comprendre en détail le fonctionnement de cette technologie, et surtout d'être capable de savoir si elle peut répondre à vos besoins.
Par Vincent Segouin, Développeur full-stack JS Java chez Xebia
Toutes les informations sur xebicon.fr
XebiCon'18 - La guerre des Frameworks n'aura pas lieu
XebiCon'18 - Utiliser Hyperledger Fabric pour la création d'une blockchain privée
1. @Xebiconfr #Xebicon18 @vsegouin
Build the future
Hyperledger Fabric
Création d’un réseau de blockchain privée
Vincent Segouin, Développeur Full Stack
4. @Xebiconfr #Xebicon18 @vsegouin
Base de données
Système permettant d’enregistrer des
informations de façon distribuée.
● Les données sont détenues par l’ensemble des
acteurs du réseau.
● Si un acteur fait défaut, les informations restent
accessibles.
● Une donnée inscrite ne peut pas être supprimée.
● Les données sont entièrement accessibles, la
blockchain n’assure en aucun cas la confidentialité.
● Tous les acteurs du réseau travaillent ensemble
pour garantir l’exactitude des données.
Blockchain
Système permettant d’enregistrer des
informations de façon centralisée.
● Un acteur détient l’ensemble des droits sur les
données.
● Si le propriétaire fait défaut, la base devient
inaccessible.
● Une donnée peut être modifiée à tout moment.
● Le propriétaire distribue l’information et gère la
confidentialité des données.
● Le propriétaire de la donnée est l’unique
responsable de l’exactitude de ce qui est enregistré.
5. @Xebiconfr #Xebicon18 @vsegouin
A effectue une
transaction vers B
Plusieurs transactions
sont regroupées dans un
bloc
Le bloc est validé par les
noeuds du réseau au
moyen de techniques
cryptographiques
Le bloc est ajouté à la
blockchain
B reçoit la transaction
validée de A
Comment fonctionne une blockchain ?
6. @Xebiconfr #Xebicon18 @vsegouin
● Hash = Hash du bloc n-1 + contenu du bloc
● Un bloc de bitcoin contient 500 transactions
LEDGER
Qu’est ce qu’un bloc ?
7. @Xebiconfr #Xebicon18 @vsegouin
“The project will develop an enterprise grade, open source distributed ledger
framework and free developers to focus on building robust, industry-specific
applications, platforms and hardware systems to support business
transactions.”
The Linux Foundation - December 17, 2015
Dates :
16/09/16 : V 0.6 - First Release
11/07/17 : V 1.0 - Stable
10/10/18 : V 1.3 - Actuel
Les fondateurs :
Qu’est ce qu’HyperLedger Fabric ?
8. @Xebiconfr #Xebicon18 @vsegouin
Blockchain publique
Une blockchain privée requiert une
vérification des acteurs participant au
réseau, les différents tiers se connaissent
● Seuls les acteurs autorisés peuvent lire les
données.
● Les personnes rejoignant le réseau sont
authentifiées par une autorité de
certification.
● Seuls les noeuds disposant du chaincode
sont habilités à dire si une transaction est
valide ou non.
Blockchain privée
Une blockchain publique permet à
n’importe qui de rejoindre le réseau et d’y
participer
● Tout le monde peut y lire les données.
● Tout le monde peut envoyer des
transactions et prétendre leur validation.
● Tout le monde peut participer librement au
processus de consensus pour déterminer
quels blocs doivent être ajoutés à la chaîne
et quel est l’état courant du système.
9. @Xebiconfr #Xebicon18 @vsegouin
Qu’est ce qu’un chaincode ?
● Réalisé en Go, Java ou nodeJS.
● Est instancié sur un peer.
● Initialise et gère l’état du ledger.
● Permet de gérer un seul ledger.
● Gère un processus business.
● Simule et valide des transactions.
● L’ensemble des noeuds validant une transaction forme un consensus.
const shim = require('fabric-shim');
const util = require('util');
let Chaincode = class {
async Init(stub) {
return shim.success();
}
async createCar(stub, args) {
var car = {
docType: 'car',
make: args[1],
model: args[2],
};
await stub.putState(
args[0],
Buffer.from(JSON.stringify(car)));
};
shim.start(new Chaincode());
Le chaincode est un programme instancié sur un noeud,
permettant d’effectuer des transactions sur la
blockchain en validant les différents états de cette
dernière.
10. @Xebiconfr #Xebicon18 @vsegouin
Qu’est ce qu’un consensus ?
Le consensus est un processus où les noeuds du réseau fournissent une garantie
de l’ordre ainsi que de la validité des blocs qui ont besoin d’être enregistrés dans
le ledger.
Le consensus doit assurer les principes suivants :
● Confirmer la validité des transactions dans un bloc..
● Convient de l'ordre et de l'exactitude et donc des résultats d'exécution, ce qui implique un accord
sur l'état global.
● Il doit dépendre du chaincode pour vérifier l'exactitude d'un ensemble de transactions
commandées dans un bloc.
11. @Xebiconfr #Xebicon18 @vsegouin
Qu’est ce qu’un consensus ?
Le consensus dans Hyperledger Fabric est séparé en 3 étapes :
l’approbation, la commande, la validation.
● L’approbation est gérée par les endorseers peer, qui simule la transaction et vérifie si l’état final de la
blockchain est cohérente..
● La phase de commande récupère les transactions approuvées, elle valide l’ordre d’arrivée des
transactions pour les enregistrer dans le ledger.
● La validation prend les blocs et confirme la validité des résultats.
Cette méthode s'appelle le Permissioned voting based consensus
13. @Xebiconfr #Xebicon18 @vsegouin
Fonctionnement d’Hyperledger Fabric
Simule la transaction
Propose une transaction
Renvoie l’approbation signée
Renvoie la liste des approbations
Vérifie les polices
Package les
approbations
La transaction est envoyée aux noeuds
Peer
Un noeud contenant la blockchain et permet la
redondance du système.
Endorser Peer
Un peer sur lequel un chaincode est instancié et
permet de simuler les transactions.
Orderer
Un noeud qui agrège les résultats des simulations
et transmet les changements d’état aux différents
noeuds
Peer
Peer
Peer
Peer
14. @Xebiconfr #Xebicon18 @vsegouin
Configuration & Topologie
Organisation 1
EP1 P2
Organisation 2
P3
EP1 EP2
P4
Organisation 3
P2
EP1
P3
Application 2
Application 1 C
H
A
N
N
E
L
Application 3
Ordering
Service
Read / Write
Read
Read / Write
16. @Xebiconfr #Xebicon18 @vsegouin
● L’organisation 1 (Org1) enregistre un document afin qu’un utilisateur de l’organisation 2
(Org2) puisse le lire.
Enregistrer Lire
Besoin :
Problématique :
● La blockchain n’est pas faite pour stocker des documents.
Organisation 1 Organisation 2
Définition du use case
17. @Xebiconfr #Xebicon18 @vsegouin
● L’utilisateur de Org2 remplit le document, le signe et le met à jour dans la blockchain.
Remplit et met à jour le
document + signature
Besoin :
Problématique :
● La blockchain ne détruit pas de document et ne se met pas à jour stricto sensus.
Organisation 2
Définition du use case
18. @Xebiconfr #Xebicon18 @vsegouin
Lecture seule
Besoin :
Problématique :
● Gestions des permissions et des MSP.
Organisation 3
Définition du use case
● Un utilisateur de l’organisation 3 (Org3) a l’autorisation de lire le document mais n’a pas le
droit de le modifier.
19. @Xebiconfr #Xebicon18 @vsegouin
● Chaque action doit être enregistrée dans la blockchain.
Demande une action
(Lecture, écriture etc)
Besoin :
Problématique :
● Une lecture du contenu de la blockchain n’est pas enregistrée.
Utilisateur
Action enregistrée
Définition du use case
20. @Xebiconfr #Xebicon18 @vsegouin
● Si un utilisateur le souhaite, on doit être en mesure de rendre un document inaccessible.
Demande de
suppression
Besoin :
Problématique :
● Le concept de suppression n’existe pas dans la blockchain : tout ce qui est enregistré l’est
définitivement.
Utilisateur
Suppression du
document
Définition du use case
31. @Xebiconfr #Xebicon18 @vsegouin
RGPD et droit à l’oubli
Le droit à l’oubli
Problème
● Ce qui est inscrit dans une blockchain l’est définitivement.
● Il n’y a pas de notion de suppression.
● Si une donnée venait à être supprimée, toute la chaîne est invalidée.
● On peut demander la suppression d’une clé, mais la donnée reste présente dans les blocs.
L’article 17 de la RGPD dispose que toute personne justifiant de son identité d’exiger du responsable d'un
traitement que soient, selon les cas, rectifiées, complétées, mises à jour, verrouillées ou effacées les
données à caractère personnel la concernant
32. @Xebiconfr #Xebicon18 @vsegouin
RGPD et droit à l’oubli
Solutions
Utiliser un système de chiffrement des données et de n’enregistrer dans le bloc uniquement les
informations chiffrées.
● Chaque donnée sensible est chiffrée par une clé unique.
● il suffit de détruire la clé de chiffrement, les informations ainsi stockées ne pourront plus
être déchiffrées.
Si une information n’est pas suffisamment chiffrée, il reste possible à un attaquant la possibilité de
faire une brute force sur la donnée.
33. @Xebiconfr #Xebicon18 @vsegouin
RGPD et droit à l’oubli
Solutions
Utiliser la solution de collection privée fourni par Hyperledger Fabric, qui est constituée de
deux parties :
● L’information privée, envoyée en peer-2-peer aux organisations autorisées. La donnée
est stockée sur les noeuds dans une base de données privée. L’ordering service n’est pas
utilisé pour enregistrer ces informations.
● Les hashs de ces données, qui passent par le processus de validation standard et qui est
enregistré dans le ledger global. Ces hashs peuvent être utilisés comme preuve de
transaction et être utilisé lors d’un audit.
36. @Xebiconfr #Xebicon18 @vsegouin
Concernant le use case
● Use case 1 : Enregistrer un document.
- Utilisation d’une base de donnée à part (S3) et la blockchain stock les métadonnées.
● Use case 2 : Lire le document, le modifier et le mettre à jour.
- Utilisation du système de permission fourni par Hyperledger Fabric
- Utilisation de S3 pour le document
● Use case 3 : Autorisation d’accès en lecture seule.
- Utilisation du système de permission fourni par Hyperledger Fabric
● Use case 4 : Chaque action doit être enregistrée dans la blockchain.
- Impossible d’assurer cette règle, un acteur autorisé peut lire directement le ledger.
● Use case 5 : Rendre un document inaccessible.
- Il suffit de détruire le document original ou bien chiffrer les informations dans la blockchain et
détruire les clés utilisé pour le chiffrement.
37. @Xebiconfr #Xebicon18 @vsegouin
Avantages et inconvénients
Avantages Inconvénients
Réseau décentralisé Complexe et Long à mettre en place
Souplesse dans la configuration Temps de traitement
Soutenu par beaucoup de sociétés Coûts d’infrastructures
Possibilité de le lier à kafka Des problématiques de mises à jour.
Pas de Proof Of Work coûteux en
traitement
Peu de use case.
Chaincode fait en go, java ou nodeJs, ce
qui rend sa réalisation facile.