SlideShare une entreprise Scribd logo
1  sur  39
Télécharger pour lire hors ligne
@Xebiconfr #Xebicon18 @vsegouin
Build the future
Hyperledger Fabric
Création d’un réseau de blockchain privée
Vincent Segouin, Développeur Full Stack
@Xebiconfr #Xebicon18 @vsegouin
Qui suis-je ?
Vincent Segouin
Développeur Full Stack
@vsegouin
@Xebiconfr #Xebicon18 @vsegouin
Qu’est-ce que la blockchain ?
@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é.
@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 ?
@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 ?
@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 ?
@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.
@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.
@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.
@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
@Xebiconfr #Xebicon18 @vsegouin
Comment fonctionne Hyperledger Fabric ?
@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
@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
@Xebiconfr #Xebicon18 @vsegouin
Focus sur un use case
@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
@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
@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.
@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
@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
@Xebiconfr #Xebicon18 @vsegouin
Mise en place du réseau
@Xebiconfr #Xebicon18 @vsegouin
Architecture AWS
Utilisateur 1
Utilisateur 2
Utilisateur 3
@Xebiconfr #Xebicon18 @vsegouin
Architecture AWS
Utilisateur 1
Utilisateur 2
Utilisateur 3
@Xebiconfr #Xebicon18 @vsegouin
Configuration
configtx.yaml
genesis.block
channel.tx
configtxgen
Crypto-config.yaml ca-certscryptogen
# crypto-config.yaml
OrdererOrgs:
- Name: Orderer
Domain: example.com
Specs:
- Hostname: orderer
PeerOrgs:
- Name: Org1
Domain: org1.example.com
Template:
Count: 1
Users:
Count: 1
- Name: Org2
Domain: org2.example.com
Template:
Count: 2
Users:
Count: 1
#Configtx.yaml
Organizations:
- &SampleOrg
Name: SampleOrg
ID: SampleOrg
MSPDir: msp
AnchorPeers:
- Host: 127.0.0.1
Port: 7051
Orderer: &OrdererDefaults
OrdererType: solo
Addresses:
- 127.0.0.1:7050
BatchTimeout: 2s
BatchSize:
MaxMessageCount: 10
AbsoluteMaxBytes: 10 MB
PreferredMaxBytes: 512 KB
MaxChannels: 0
SampleSingleMSPChannel:
Consortium: SampleConsortium
Application:
<<: *ApplicationDefaults
Organizations:
- *SampleOrg
@Xebiconfr #Xebicon18 @vsegouin
Configuration
CLI
Orderer
C
H
A
N
N
E
L
Peer
Peer
Peer
Peer
channel.tx
create-channel genesis.block
#Docker_compose_cli.yaml
version: '2'
networks:
basic:
cli:
container_name: cli
image: hyperledger/fabric-tools
tty: true
environment:
- GOPATH=/opt/gopath
- CORE_LOGGING_LEVEL=DEBUG
- CORE_PEER_ID=cli
- CORE_PEER_ADDRESS=peer0.org1.example.com:7051
working_dir:
/opt/gopath/src/github.com/hyperledger/fabric/peer
command: /bin/bash
volumes:
- /var/run/:/host/var/run/
- ./../chaincode/:/opt/gopath/src/github.com/
networks:
- basic
#docker_compose_orderer.yaml
version: '2'
networks:
basic:
services:
orderer.example.com:
container_name: orderer.example.com
image: hyperledger/fabric-orderer
environment:
- ORDERER_GENERAL_LISTENADDRESS=0.0.0.0
- ORDERER_GENERAL_GENESISMETHOD=file
-
ORDERER_GENERAL_GENESISFILE=/etc/hyperledger/configtx/gen
esis.block
- ORDERER_GENERAL_LOCALMSPID=OrdererMSP
working_dir:
/opt/gopath/src/github.com/hyperledger/fabric/orderer
command: orderer
ports:
- 7050:7050
volumes:
- ./config/:/etc/hyperledger/configtx
networks:
- basic
#docker_compose_peer.yaml
version: '2'
networks:
basic:
services:
peer0.org1.example.com:
container_name: peer0.org1.example.com
image: hyperledger/fabric-peer
environment:
- CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
- CORE_PEER_ID=peer0.org1.example.com
- CORE_LOGGING_PEER=debug
- CORE_CHAINCODE_LOGGING_LEVEL=DEBUG
- CORE_PEER_LOCALMSPID=Org1MSP
- CORE_PEER_ADDRESS=peer0.org1.example.com:7051
working_dir:
/opt/gopath/src/github.com/hyperledger/fabric
command: peer node start
ports:
- 7051:7051
- 7053:7053
volumes:
- /var/run/:/host/var/run/
- ./config:/etc/hyperledger/configtx
depends_on:
- orderer.example.com
networks:
- basic
docker_compose.yaml
docker-compose up
@Xebiconfr #Xebicon18 @vsegouin
Configuration
CLI
Orderer
C
H
A
N
N
E
L
Peer
Peer
Peer
Peer
channel.tx
create-channel genesis.block
#Docker_compose_cli.yaml
version: '2'
networks:
basic:
cli:
container_name: cli
image: hyperledger/fabric-tools
tty: true
environment:
- GOPATH=/opt/gopath
- CORE_LOGGING_LEVEL=DEBUG
- CORE_PEER_ID=cli
- CORE_PEER_ADDRESS=peer0.org1.example.com:7051
working_dir:
/opt/gopath/src/github.com/hyperledger/fabric/peer
command: /bin/bash
volumes:
- /var/run/:/host/var/run/
- ./../chaincode/:/opt/gopath/src/github.com/
networks:
- basic
#docker_compose_orderer.yaml
version: '2'
networks:
basic:
services:
orderer.example.com:
container_name: orderer.example.com
image: hyperledger/fabric-orderer
environment:
- ORDERER_GENERAL_LISTENADDRESS=0.0.0.0
- ORDERER_GENERAL_GENESISMETHOD=file
-
ORDERER_GENERAL_GENESISFILE=/etc/hyperledger/configtx/gen
esis.block
- ORDERER_GENERAL_LOCALMSPID=OrdererMSP
working_dir:
/opt/gopath/src/github.com/hyperledger/fabric/orderer
command: orderer
ports:
- 7050:7050
volumes:
- ./config/:/etc/hyperledger/configtx
networks:
- basic
#docker_compose_peer.yaml
version: '2'
networks:
basic:
services:
peer0.org1.example.com:
container_name: peer0.org1.example.com
image: hyperledger/fabric-peer
environment:
- CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
- CORE_PEER_ID=peer0.org1.example.com
- CORE_LOGGING_PEER=debug
- CORE_CHAINCODE_LOGGING_LEVEL=DEBUG
- CORE_PEER_LOCALMSPID=Org1MSP
- CORE_PEER_ADDRESS=peer0.org1.example.com:7051
working_dir:
/opt/gopath/src/github.com/hyperledger/fabric
command: peer node start
ports:
- 7051:7051
- 7053:7053
volumes:
- /var/run/:/host/var/run/
- ./config:/etc/hyperledger/configtx
depends_on:
- orderer.example.com
networks:
- basic
genesis.block
peer channel join
chaincode.js
install chaincode
chaincode.js
instantiate chaincode
chaincode.js
chaincode.js
Chaincode Instance
Chaincode Instance
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());
@Xebiconfr #Xebicon18 @vsegouin
Communiquer avec la blockchain
Utilisateur 1
Utilisateur 2
Utilisateur 3
@Xebiconfr #Xebicon18 @vsegouin
Configuration
REST Api
Service
CA client BC ClientPersistence
Utilisateur
Certificate
Authority
Endorser
Peer
Ordering
Service
Endorser
Peer
DB
const state_store = await
Fabric_Client.newDefaultKeyValueStore({ path:
store_path});
fabric_client.setStateStore(state_store);
const user_context = await
fabric_client.getUserContext('user1', true);
const store_path = path.join(__dirname, 'hfc-key-store');
const channel = fabric_client.newChannel('mychannel');
const peer =
fabric_client.newPeer('grpc://localhost:7051');
channel.addPeer(peer);
let tx_id = null;
const request = {
chaincodeId: 'fabcar',
fcn: 'queryAllCars',
args: ['']
};
const response = await channel.queryByChaincode(request);
S3
@Xebiconfr #Xebicon18 @vsegouin
Workflow type d’une transaction
S3
Application
DB
Ordering
Service
Endorser
peer
Endorser
peer
Certificate
Authority
Peer
Peer
ConnexionUpload
@Xebiconfr #Xebicon18 @vsegouin
RGPD et droit à l’oubli
@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
@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.
@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.
@Xebiconfr #Xebicon18 @vsegouin
Schéma du système de collection privée
@Xebiconfr #Xebicon18 @vsegouin
Que doit-on en retenir ?
@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.
@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.
@Xebiconfr #Xebicon18 @vsegouin
Blockchain ou base de données ?
@Xebiconfr #Xebicon18 @vsegouin
Merci de votre attention
Des questions ?

Contenu connexe

Tendances

Présentation blockchain v2
Présentation blockchain v2Présentation blockchain v2
Présentation blockchain v2Amine HAMOUDA
 
Hyperledger Fabric Architecture
Hyperledger Fabric ArchitectureHyperledger Fabric Architecture
Hyperledger Fabric Architecture상문 오
 
Supporting trade finance with letters of credit on corda
Supporting trade finance with letters of credit on cordaSupporting trade finance with letters of credit on corda
Supporting trade finance with letters of credit on cordaR3
 
02 - Introduction to Hyperledger Fabric
02 - Introduction to Hyperledger Fabric  02 - Introduction to Hyperledger Fabric
02 - Introduction to Hyperledger Fabric Merlec Mpyana
 
MobiliteaTime #7 : Blockchain
MobiliteaTime #7 : BlockchainMobiliteaTime #7 : Blockchain
MobiliteaTime #7 : BlockchainUSERADGENTS
 
Rapport application chat
Rapport application chatRapport application chat
Rapport application chatTbatou sanae
 
01 - Introduction to Hyperledger : A Blockchain Technology for Business
01 - Introduction to Hyperledger : A Blockchain Technology for Business01 - Introduction to Hyperledger : A Blockchain Technology for Business
01 - Introduction to Hyperledger : A Blockchain Technology for BusinessMerlec Mpyana
 
Introduzione agli NFT
Introduzione agli NFTIntroduzione agli NFT
Introduzione agli NFTFederico Bo
 
Soutenance PFE ingénieur génie logiciel
Soutenance PFE ingénieur génie logicielSoutenance PFE ingénieur génie logiciel
Soutenance PFE ingénieur génie logicielSiwar GUEMRI
 
Presentation pfe
Presentation pfePresentation pfe
Presentation pfezinebcher
 
PolygonID Zero-Knowledge Identity Web2 & Web3
PolygonID Zero-Knowledge Identity Web2 & Web3PolygonID Zero-Knowledge Identity Web2 & Web3
PolygonID Zero-Knowledge Identity Web2 & Web3SSIMeetup
 
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...Saâd Zerhouni
 
Conception et réalisation d’un MINI SMART HOME
Conception et réalisation  d’un MINI SMART HOMEConception et réalisation  d’un MINI SMART HOME
Conception et réalisation d’un MINI SMART HOMESoukainawarach
 
Consensus Algorithms - Nakov @ jProfessionals - Jan 2018
Consensus Algorithms - Nakov @ jProfessionals - Jan 2018Consensus Algorithms - Nakov @ jProfessionals - Jan 2018
Consensus Algorithms - Nakov @ jProfessionals - Jan 2018Svetlin Nakov
 
Building Blockchain Application with Corda
Building Blockchain Application with CordaBuilding Blockchain Application with Corda
Building Blockchain Application with CordaMohammad Asif
 
Decentralized Autonomous Organizations: Concept & Practical Examples
Decentralized Autonomous Organizations: Concept & Practical ExamplesDecentralized Autonomous Organizations: Concept & Practical Examples
Decentralized Autonomous Organizations: Concept & Practical ExamplesJan Brejcha
 

Tendances (20)

Présentation blockchain v2
Présentation blockchain v2Présentation blockchain v2
Présentation blockchain v2
 
Hyperledger Fabric Architecture
Hyperledger Fabric ArchitectureHyperledger Fabric Architecture
Hyperledger Fabric Architecture
 
Supporting trade finance with letters of credit on corda
Supporting trade finance with letters of credit on cordaSupporting trade finance with letters of credit on corda
Supporting trade finance with letters of credit on corda
 
02 - Introduction to Hyperledger Fabric
02 - Introduction to Hyperledger Fabric  02 - Introduction to Hyperledger Fabric
02 - Introduction to Hyperledger Fabric
 
MobiliteaTime #7 : Blockchain
MobiliteaTime #7 : BlockchainMobiliteaTime #7 : Blockchain
MobiliteaTime #7 : Blockchain
 
Rapport application chat
Rapport application chatRapport application chat
Rapport application chat
 
01 - Introduction to Hyperledger : A Blockchain Technology for Business
01 - Introduction to Hyperledger : A Blockchain Technology for Business01 - Introduction to Hyperledger : A Blockchain Technology for Business
01 - Introduction to Hyperledger : A Blockchain Technology for Business
 
Hyperledger Fabric
Hyperledger FabricHyperledger Fabric
Hyperledger Fabric
 
Blockchain
BlockchainBlockchain
Blockchain
 
Introduzione agli NFT
Introduzione agli NFTIntroduzione agli NFT
Introduzione agli NFT
 
Soutenance PFE ingénieur génie logiciel
Soutenance PFE ingénieur génie logicielSoutenance PFE ingénieur génie logiciel
Soutenance PFE ingénieur génie logiciel
 
Presentation pfe
Presentation pfePresentation pfe
Presentation pfe
 
PolygonID Zero-Knowledge Identity Web2 & Web3
PolygonID Zero-Knowledge Identity Web2 & Web3PolygonID Zero-Knowledge Identity Web2 & Web3
PolygonID Zero-Knowledge Identity Web2 & Web3
 
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...
 
Conception et réalisation d’un MINI SMART HOME
Conception et réalisation  d’un MINI SMART HOMEConception et réalisation  d’un MINI SMART HOME
Conception et réalisation d’un MINI SMART HOME
 
Consensus Algorithms - Nakov @ jProfessionals - Jan 2018
Consensus Algorithms - Nakov @ jProfessionals - Jan 2018Consensus Algorithms - Nakov @ jProfessionals - Jan 2018
Consensus Algorithms - Nakov @ jProfessionals - Jan 2018
 
Hive ppt (1)
Hive ppt (1)Hive ppt (1)
Hive ppt (1)
 
Building Blockchain Application with Corda
Building Blockchain Application with CordaBuilding Blockchain Application with Corda
Building Blockchain Application with Corda
 
Les BD NoSQL
Les BD NoSQLLes BD NoSQL
Les BD NoSQL
 
Decentralized Autonomous Organizations: Concept & Practical Examples
Decentralized Autonomous Organizations: Concept & Practical ExamplesDecentralized Autonomous Organizations: Concept & Practical Examples
Decentralized Autonomous Organizations: Concept & Practical Examples
 

Similaire à XebiCon'18 - Utiliser Hyperledger Fabric pour la création d'une blockchain privée

La Blockchain pas à PaaS
La Blockchain pas à PaaSLa Blockchain pas à PaaS
La Blockchain pas à PaaSMicrosoft
 
Blockchain - Une démarche d'Open Innovation et d'Agilité pour un consortium o...
Blockchain - Une démarche d'Open Innovation et d'Agilité pour un consortium o...Blockchain - Une démarche d'Open Innovation et d'Agilité pour un consortium o...
Blockchain - Une démarche d'Open Innovation et d'Agilité pour un consortium o...Vidal Chriqui
 
BLISS 03-T1_c_LU1 slides v3.0 final controled-French version.pptx
BLISS 03-T1_c_LU1 slides v3.0 final controled-French version.pptxBLISS 03-T1_c_LU1 slides v3.0 final controled-French version.pptx
BLISS 03-T1_c_LU1 slides v3.0 final controled-French version.pptxJordaniMike
 
Innovation et technologie blockchain -intervention DigitalPlace
Innovation et technologie blockchain -intervention DigitalPlaceInnovation et technologie blockchain -intervention DigitalPlace
Innovation et technologie blockchain -intervention DigitalPlaceNazim Morera
 
Prestations Consulting Blockchain Philemonday Agency_2016
Prestations Consulting Blockchain Philemonday Agency_2016Prestations Consulting Blockchain Philemonday Agency_2016
Prestations Consulting Blockchain Philemonday Agency_2016Philemonday
 
Blockchain et Smart Contract : de la théorie à la production
Blockchain et Smart Contract : de la théorie à la productionBlockchain et Smart Contract : de la théorie à la production
Blockchain et Smart Contract : de la théorie à la productionMathieu Durand
 
Introduction à la Blockchain Voxxed day luxembourg
Introduction à la Blockchain Voxxed day luxembourgIntroduction à la Blockchain Voxxed day luxembourg
Introduction à la Blockchain Voxxed day luxembourgFabrice Croiseaux
 
Petit-déjeuner "UseCases Blockchain & Retail"
Petit-déjeuner "UseCases Blockchain & Retail"Petit-déjeuner "UseCases Blockchain & Retail"
Petit-déjeuner "UseCases Blockchain & Retail"OCTO Technology
 
BLISS-O3-T1%20U2%20Blockchain%20v2-FR.pptx
BLISS-O3-T1%20U2%20Blockchain%20v2-FR.pptxBLISS-O3-T1%20U2%20Blockchain%20v2-FR.pptx
BLISS-O3-T1%20U2%20Blockchain%20v2-FR.pptxZaynebRAJHI
 
JUG - Soirée Blockchain
JUG - Soirée BlockchainJUG - Soirée Blockchain
JUG - Soirée Blockchainadetante
 
Qu'est-ce que la blockchain ?
Qu'est-ce que la blockchain ?Qu'est-ce que la blockchain ?
Qu'est-ce que la blockchain ?Jedha Bootcamp
 
Web2day 2023 - Internet (re)décentralisé ? Architecture du Web3
Web2day 2023 - Internet (re)décentralisé ? Architecture du Web3Web2day 2023 - Internet (re)décentralisé ? Architecture du Web3
Web2day 2023 - Internet (re)décentralisé ? Architecture du Web3Raphaël Semeteys
 
Blockchain et crypto-monnaies
Blockchain et crypto-monnaiesBlockchain et crypto-monnaies
Blockchain et crypto-monnaiesAyoub Eddakhly
 
Tout savoir sur le #Bitcoin et la #BlockChain
Tout savoir sur le #Bitcoin et la #BlockChainTout savoir sur le #Bitcoin et la #BlockChain
Tout savoir sur le #Bitcoin et la #BlockChainVidal Chriqui
 
La Blockchain au service de la CyberSécurité - FIC 2017 Lille
La Blockchain au service de la CyberSécurité - FIC 2017 LilleLa Blockchain au service de la CyberSécurité - FIC 2017 Lille
La Blockchain au service de la CyberSécurité - FIC 2017 LilleVidal Chriqui
 

Similaire à XebiCon'18 - Utiliser Hyperledger Fabric pour la création d'une blockchain privée (20)

Blockchain par Claude Duvallet
Blockchain par Claude DuvalletBlockchain par Claude Duvallet
Blockchain par Claude Duvallet
 
Blockchain Jean-Antoine Moreau
Blockchain   Jean-Antoine MoreauBlockchain   Jean-Antoine Moreau
Blockchain Jean-Antoine Moreau
 
La Blockchain pas à PaaS
La Blockchain pas à PaaSLa Blockchain pas à PaaS
La Blockchain pas à PaaS
 
Blockchain - Une démarche d'Open Innovation et d'Agilité pour un consortium o...
Blockchain - Une démarche d'Open Innovation et d'Agilité pour un consortium o...Blockchain - Une démarche d'Open Innovation et d'Agilité pour un consortium o...
Blockchain - Une démarche d'Open Innovation et d'Agilité pour un consortium o...
 
BLISS 03-T1_c_LU1 slides v3.0 final controled-French version.pptx
BLISS 03-T1_c_LU1 slides v3.0 final controled-French version.pptxBLISS 03-T1_c_LU1 slides v3.0 final controled-French version.pptx
BLISS 03-T1_c_LU1 slides v3.0 final controled-French version.pptx
 
Innovation et technologie blockchain -intervention DigitalPlace
Innovation et technologie blockchain -intervention DigitalPlaceInnovation et technologie blockchain -intervention DigitalPlace
Innovation et technologie blockchain -intervention DigitalPlace
 
Prestations Consulting Blockchain Philemonday Agency_2016
Prestations Consulting Blockchain Philemonday Agency_2016Prestations Consulting Blockchain Philemonday Agency_2016
Prestations Consulting Blockchain Philemonday Agency_2016
 
Blockchain et Smart Contract : de la théorie à la production
Blockchain et Smart Contract : de la théorie à la productionBlockchain et Smart Contract : de la théorie à la production
Blockchain et Smart Contract : de la théorie à la production
 
ET12 - Blockchain
ET12 - BlockchainET12 - Blockchain
ET12 - Blockchain
 
Introduction à la Blockchain Voxxed day luxembourg
Introduction à la Blockchain Voxxed day luxembourgIntroduction à la Blockchain Voxxed day luxembourg
Introduction à la Blockchain Voxxed day luxembourg
 
Petit-déjeuner "UseCases Blockchain & Retail"
Petit-déjeuner "UseCases Blockchain & Retail"Petit-déjeuner "UseCases Blockchain & Retail"
Petit-déjeuner "UseCases Blockchain & Retail"
 
Blockchain
BlockchainBlockchain
Blockchain
 
BLISS-O3-T1%20U2%20Blockchain%20v2-FR.pptx
BLISS-O3-T1%20U2%20Blockchain%20v2-FR.pptxBLISS-O3-T1%20U2%20Blockchain%20v2-FR.pptx
BLISS-O3-T1%20U2%20Blockchain%20v2-FR.pptx
 
JUG - Soirée Blockchain
JUG - Soirée BlockchainJUG - Soirée Blockchain
JUG - Soirée Blockchain
 
Qu'est-ce que la blockchain ?
Qu'est-ce que la blockchain ?Qu'est-ce que la blockchain ?
Qu'est-ce que la blockchain ?
 
Bitcoin and beyond
Bitcoin and beyondBitcoin and beyond
Bitcoin and beyond
 
Web2day 2023 - Internet (re)décentralisé ? Architecture du Web3
Web2day 2023 - Internet (re)décentralisé ? Architecture du Web3Web2day 2023 - Internet (re)décentralisé ? Architecture du Web3
Web2day 2023 - Internet (re)décentralisé ? Architecture du Web3
 
Blockchain et crypto-monnaies
Blockchain et crypto-monnaiesBlockchain et crypto-monnaies
Blockchain et crypto-monnaies
 
Tout savoir sur le #Bitcoin et la #BlockChain
Tout savoir sur le #Bitcoin et la #BlockChainTout savoir sur le #Bitcoin et la #BlockChain
Tout savoir sur le #Bitcoin et la #BlockChain
 
La Blockchain au service de la CyberSécurité - FIC 2017 Lille
La Blockchain au service de la CyberSécurité - FIC 2017 LilleLa Blockchain au service de la CyberSécurité - FIC 2017 Lille
La Blockchain au service de la CyberSécurité - FIC 2017 Lille
 

Plus de Publicis Sapient Engineering

XebiCon'18 - L'algorithme de reconnaissance de formes par le cerveau humain
XebiCon'18 - L'algorithme de reconnaissance de formes par le cerveau humainXebiCon'18 - L'algorithme de reconnaissance de formes par le cerveau humain
XebiCon'18 - L'algorithme de reconnaissance de formes par le cerveau humainPublicis Sapient Engineering
 
Xebicon'18 - Spark in jail : conteneurisez vos traitements data sans serveur
Xebicon'18 - Spark in jail : conteneurisez vos traitements data sans serveurXebicon'18 - Spark in jail : conteneurisez vos traitements data sans serveur
Xebicon'18 - Spark in jail : conteneurisez vos traitements data sans serveurPublicis Sapient Engineering
 
XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...
XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...
XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...Publicis Sapient Engineering
 
XebiCon'18 - Des notebook pour le monitoring avec Zeppelin
XebiCon'18 - Des notebook pour le monitoring avec Zeppelin XebiCon'18 - Des notebook pour le monitoring avec Zeppelin
XebiCon'18 - Des notebook pour le monitoring avec Zeppelin Publicis Sapient Engineering
 
XebiCon'18 - Event Sourcing et RGPD, incompatibles ?
XebiCon'18 - Event Sourcing et RGPD, incompatibles ?XebiCon'18 - Event Sourcing et RGPD, incompatibles ?
XebiCon'18 - Event Sourcing et RGPD, incompatibles ?Publicis Sapient Engineering
 
XebiCon'18 - Deno, le nouveau NodeJS qui inverse la tendance ?
XebiCon'18 - Deno, le nouveau NodeJS qui inverse la tendance ?XebiCon'18 - Deno, le nouveau NodeJS qui inverse la tendance ?
XebiCon'18 - Deno, le nouveau NodeJS qui inverse la tendance ?Publicis Sapient Engineering
 
XebiCon'18 - Boostez vos modèles avec du Deep Learning distribué
XebiCon'18 - Boostez vos modèles avec du Deep Learning distribuéXebiCon'18 - Boostez vos modèles avec du Deep Learning distribué
XebiCon'18 - Boostez vos modèles avec du Deep Learning distribuéPublicis Sapient Engineering
 
XebiCon'18 - Comment j'ai développé un jeu vidéo avec des outils de développe...
XebiCon'18 - Comment j'ai développé un jeu vidéo avec des outils de développe...XebiCon'18 - Comment j'ai développé un jeu vidéo avec des outils de développe...
XebiCon'18 - Comment j'ai développé un jeu vidéo avec des outils de développe...Publicis Sapient Engineering
 
XebiCon'18 - Les utilisateurs finaux, les oubliés de nos produits !
XebiCon'18 - Les utilisateurs finaux, les oubliés de nos produits !XebiCon'18 - Les utilisateurs finaux, les oubliés de nos produits !
XebiCon'18 - Les utilisateurs finaux, les oubliés de nos produits !Publicis Sapient Engineering
 
XebiCon'18 - Comment fausser l'interprétation de vos résultats avec des dataviz
XebiCon'18 - Comment fausser l'interprétation de vos résultats avec des datavizXebiCon'18 - Comment fausser l'interprétation de vos résultats avec des dataviz
XebiCon'18 - Comment fausser l'interprétation de vos résultats avec des datavizPublicis Sapient Engineering
 
XebiCon'18 - Architecturer son application mobile pour la durabilité
XebiCon'18 - Architecturer son application mobile pour la durabilitéXebiCon'18 - Architecturer son application mobile pour la durabilité
XebiCon'18 - Architecturer son application mobile pour la durabilitéPublicis Sapient Engineering
 
XebiCon'18 - Sécuriser son API avec OpenID Connect
XebiCon'18 - Sécuriser son API avec OpenID ConnectXebiCon'18 - Sécuriser son API avec OpenID Connect
XebiCon'18 - Sécuriser son API avec OpenID ConnectPublicis Sapient Engineering
 
XebiCon'18 - Structuration du Temps et Dynamique de Groupes, Théorie organisa...
XebiCon'18 - Structuration du Temps et Dynamique de Groupes, Théorie organisa...XebiCon'18 - Structuration du Temps et Dynamique de Groupes, Théorie organisa...
XebiCon'18 - Structuration du Temps et Dynamique de Groupes, Théorie organisa...Publicis Sapient Engineering
 
XebiCon'18 - La sécurité, douce illusion même en 2018
XebiCon'18 - La sécurité, douce illusion même en 2018XebiCon'18 - La sécurité, douce illusion même en 2018
XebiCon'18 - La sécurité, douce illusion même en 2018Publicis Sapient Engineering
 
XebiCon'18 - Ce que l'histoire du métro Parisien m'a enseigné sur la création...
XebiCon'18 - Ce que l'histoire du métro Parisien m'a enseigné sur la création...XebiCon'18 - Ce que l'histoire du métro Parisien m'a enseigné sur la création...
XebiCon'18 - Ce que l'histoire du métro Parisien m'a enseigné sur la création...Publicis Sapient Engineering
 
XebiCon'18 - La guerre des Frameworks n'aura pas lieu
XebiCon'18 - La guerre des Frameworks n'aura pas lieuXebiCon'18 - La guerre des Frameworks n'aura pas lieu
XebiCon'18 - La guerre des Frameworks n'aura pas lieuPublicis Sapient Engineering
 

Plus de Publicis Sapient Engineering (20)

XebiCon'18 - L'algorithme de reconnaissance de formes par le cerveau humain
XebiCon'18 - L'algorithme de reconnaissance de formes par le cerveau humainXebiCon'18 - L'algorithme de reconnaissance de formes par le cerveau humain
XebiCon'18 - L'algorithme de reconnaissance de formes par le cerveau humain
 
Xebicon'18 - IoT: From Edge to Cloud
Xebicon'18 - IoT: From Edge to CloudXebicon'18 - IoT: From Edge to Cloud
Xebicon'18 - IoT: From Edge to Cloud
 
Xebicon'18 - Spark in jail : conteneurisez vos traitements data sans serveur
Xebicon'18 - Spark in jail : conteneurisez vos traitements data sans serveurXebicon'18 - Spark in jail : conteneurisez vos traitements data sans serveur
Xebicon'18 - Spark in jail : conteneurisez vos traitements data sans serveur
 
XebiCon'18 - Modern Infrastructure
XebiCon'18 - Modern InfrastructureXebiCon'18 - Modern Infrastructure
XebiCon'18 - Modern Infrastructure
 
XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...
XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...
XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...
 
XebiCon'18 - Des notebook pour le monitoring avec Zeppelin
XebiCon'18 - Des notebook pour le monitoring avec Zeppelin XebiCon'18 - Des notebook pour le monitoring avec Zeppelin
XebiCon'18 - Des notebook pour le monitoring avec Zeppelin
 
XebiCon'18 - Event Sourcing et RGPD, incompatibles ?
XebiCon'18 - Event Sourcing et RGPD, incompatibles ?XebiCon'18 - Event Sourcing et RGPD, incompatibles ?
XebiCon'18 - Event Sourcing et RGPD, incompatibles ?
 
XebiCon'18 - Deno, le nouveau NodeJS qui inverse la tendance ?
XebiCon'18 - Deno, le nouveau NodeJS qui inverse la tendance ?XebiCon'18 - Deno, le nouveau NodeJS qui inverse la tendance ?
XebiCon'18 - Deno, le nouveau NodeJS qui inverse la tendance ?
 
XebiCon'18 - Boostez vos modèles avec du Deep Learning distribué
XebiCon'18 - Boostez vos modèles avec du Deep Learning distribuéXebiCon'18 - Boostez vos modèles avec du Deep Learning distribué
XebiCon'18 - Boostez vos modèles avec du Deep Learning distribué
 
XebiCon'18 - Comment j'ai développé un jeu vidéo avec des outils de développe...
XebiCon'18 - Comment j'ai développé un jeu vidéo avec des outils de développe...XebiCon'18 - Comment j'ai développé un jeu vidéo avec des outils de développe...
XebiCon'18 - Comment j'ai développé un jeu vidéo avec des outils de développe...
 
XebiCon'18 - Les utilisateurs finaux, les oubliés de nos produits !
XebiCon'18 - Les utilisateurs finaux, les oubliés de nos produits !XebiCon'18 - Les utilisateurs finaux, les oubliés de nos produits !
XebiCon'18 - Les utilisateurs finaux, les oubliés de nos produits !
 
XebiCon'18 - Comment fausser l'interprétation de vos résultats avec des dataviz
XebiCon'18 - Comment fausser l'interprétation de vos résultats avec des datavizXebiCon'18 - Comment fausser l'interprétation de vos résultats avec des dataviz
XebiCon'18 - Comment fausser l'interprétation de vos résultats avec des dataviz
 
XebiCon'18 - Le développeur dans la Pop Culture
XebiCon'18 - Le développeur dans la Pop Culture XebiCon'18 - Le développeur dans la Pop Culture
XebiCon'18 - Le développeur dans la Pop Culture
 
XebiCon'18 - Architecturer son application mobile pour la durabilité
XebiCon'18 - Architecturer son application mobile pour la durabilitéXebiCon'18 - Architecturer son application mobile pour la durabilité
XebiCon'18 - Architecturer son application mobile pour la durabilité
 
XebiCon'18 - Sécuriser son API avec OpenID Connect
XebiCon'18 - Sécuriser son API avec OpenID ConnectXebiCon'18 - Sécuriser son API avec OpenID Connect
XebiCon'18 - Sécuriser son API avec OpenID Connect
 
XebiCon'18 - Structuration du Temps et Dynamique de Groupes, Théorie organisa...
XebiCon'18 - Structuration du Temps et Dynamique de Groupes, Théorie organisa...XebiCon'18 - Structuration du Temps et Dynamique de Groupes, Théorie organisa...
XebiCon'18 - Structuration du Temps et Dynamique de Groupes, Théorie organisa...
 
XebiCon'18 - Spark NLP, un an après
XebiCon'18 - Spark NLP, un an aprèsXebiCon'18 - Spark NLP, un an après
XebiCon'18 - Spark NLP, un an après
 
XebiCon'18 - La sécurité, douce illusion même en 2018
XebiCon'18 - La sécurité, douce illusion même en 2018XebiCon'18 - La sécurité, douce illusion même en 2018
XebiCon'18 - La sécurité, douce illusion même en 2018
 
XebiCon'18 - Ce que l'histoire du métro Parisien m'a enseigné sur la création...
XebiCon'18 - Ce que l'histoire du métro Parisien m'a enseigné sur la création...XebiCon'18 - Ce que l'histoire du métro Parisien m'a enseigné sur la création...
XebiCon'18 - Ce que l'histoire du métro Parisien m'a enseigné sur la création...
 
XebiCon'18 - La guerre des Frameworks n'aura pas lieu
XebiCon'18 - La guerre des Frameworks n'aura pas lieuXebiCon'18 - La guerre des Frameworks n'aura pas lieu
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
  • 2. @Xebiconfr #Xebicon18 @vsegouin Qui suis-je ? Vincent Segouin Développeur Full Stack @vsegouin
  • 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
  • 12. @Xebiconfr #Xebicon18 @vsegouin Comment fonctionne Hyperledger Fabric ?
  • 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
  • 22. @Xebiconfr #Xebicon18 @vsegouin Architecture AWS Utilisateur 1 Utilisateur 2 Utilisateur 3
  • 23. @Xebiconfr #Xebicon18 @vsegouin Architecture AWS Utilisateur 1 Utilisateur 2 Utilisateur 3
  • 24. @Xebiconfr #Xebicon18 @vsegouin Configuration configtx.yaml genesis.block channel.tx configtxgen Crypto-config.yaml ca-certscryptogen # crypto-config.yaml OrdererOrgs: - Name: Orderer Domain: example.com Specs: - Hostname: orderer PeerOrgs: - Name: Org1 Domain: org1.example.com Template: Count: 1 Users: Count: 1 - Name: Org2 Domain: org2.example.com Template: Count: 2 Users: Count: 1 #Configtx.yaml Organizations: - &SampleOrg Name: SampleOrg ID: SampleOrg MSPDir: msp AnchorPeers: - Host: 127.0.0.1 Port: 7051 Orderer: &OrdererDefaults OrdererType: solo Addresses: - 127.0.0.1:7050 BatchTimeout: 2s BatchSize: MaxMessageCount: 10 AbsoluteMaxBytes: 10 MB PreferredMaxBytes: 512 KB MaxChannels: 0 SampleSingleMSPChannel: Consortium: SampleConsortium Application: <<: *ApplicationDefaults Organizations: - *SampleOrg
  • 25. @Xebiconfr #Xebicon18 @vsegouin Configuration CLI Orderer C H A N N E L Peer Peer Peer Peer channel.tx create-channel genesis.block #Docker_compose_cli.yaml version: '2' networks: basic: cli: container_name: cli image: hyperledger/fabric-tools tty: true environment: - GOPATH=/opt/gopath - CORE_LOGGING_LEVEL=DEBUG - CORE_PEER_ID=cli - CORE_PEER_ADDRESS=peer0.org1.example.com:7051 working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer command: /bin/bash volumes: - /var/run/:/host/var/run/ - ./../chaincode/:/opt/gopath/src/github.com/ networks: - basic #docker_compose_orderer.yaml version: '2' networks: basic: services: orderer.example.com: container_name: orderer.example.com image: hyperledger/fabric-orderer environment: - ORDERER_GENERAL_LISTENADDRESS=0.0.0.0 - ORDERER_GENERAL_GENESISMETHOD=file - ORDERER_GENERAL_GENESISFILE=/etc/hyperledger/configtx/gen esis.block - ORDERER_GENERAL_LOCALMSPID=OrdererMSP working_dir: /opt/gopath/src/github.com/hyperledger/fabric/orderer command: orderer ports: - 7050:7050 volumes: - ./config/:/etc/hyperledger/configtx networks: - basic #docker_compose_peer.yaml version: '2' networks: basic: services: peer0.org1.example.com: container_name: peer0.org1.example.com image: hyperledger/fabric-peer environment: - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock - CORE_PEER_ID=peer0.org1.example.com - CORE_LOGGING_PEER=debug - CORE_CHAINCODE_LOGGING_LEVEL=DEBUG - CORE_PEER_LOCALMSPID=Org1MSP - CORE_PEER_ADDRESS=peer0.org1.example.com:7051 working_dir: /opt/gopath/src/github.com/hyperledger/fabric command: peer node start ports: - 7051:7051 - 7053:7053 volumes: - /var/run/:/host/var/run/ - ./config:/etc/hyperledger/configtx depends_on: - orderer.example.com networks: - basic docker_compose.yaml docker-compose up
  • 26. @Xebiconfr #Xebicon18 @vsegouin Configuration CLI Orderer C H A N N E L Peer Peer Peer Peer channel.tx create-channel genesis.block #Docker_compose_cli.yaml version: '2' networks: basic: cli: container_name: cli image: hyperledger/fabric-tools tty: true environment: - GOPATH=/opt/gopath - CORE_LOGGING_LEVEL=DEBUG - CORE_PEER_ID=cli - CORE_PEER_ADDRESS=peer0.org1.example.com:7051 working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer command: /bin/bash volumes: - /var/run/:/host/var/run/ - ./../chaincode/:/opt/gopath/src/github.com/ networks: - basic #docker_compose_orderer.yaml version: '2' networks: basic: services: orderer.example.com: container_name: orderer.example.com image: hyperledger/fabric-orderer environment: - ORDERER_GENERAL_LISTENADDRESS=0.0.0.0 - ORDERER_GENERAL_GENESISMETHOD=file - ORDERER_GENERAL_GENESISFILE=/etc/hyperledger/configtx/gen esis.block - ORDERER_GENERAL_LOCALMSPID=OrdererMSP working_dir: /opt/gopath/src/github.com/hyperledger/fabric/orderer command: orderer ports: - 7050:7050 volumes: - ./config/:/etc/hyperledger/configtx networks: - basic #docker_compose_peer.yaml version: '2' networks: basic: services: peer0.org1.example.com: container_name: peer0.org1.example.com image: hyperledger/fabric-peer environment: - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock - CORE_PEER_ID=peer0.org1.example.com - CORE_LOGGING_PEER=debug - CORE_CHAINCODE_LOGGING_LEVEL=DEBUG - CORE_PEER_LOCALMSPID=Org1MSP - CORE_PEER_ADDRESS=peer0.org1.example.com:7051 working_dir: /opt/gopath/src/github.com/hyperledger/fabric command: peer node start ports: - 7051:7051 - 7053:7053 volumes: - /var/run/:/host/var/run/ - ./config:/etc/hyperledger/configtx depends_on: - orderer.example.com networks: - basic genesis.block peer channel join chaincode.js install chaincode chaincode.js instantiate chaincode chaincode.js chaincode.js Chaincode Instance Chaincode Instance 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());
  • 27. @Xebiconfr #Xebicon18 @vsegouin Communiquer avec la blockchain Utilisateur 1 Utilisateur 2 Utilisateur 3
  • 28. @Xebiconfr #Xebicon18 @vsegouin Configuration REST Api Service CA client BC ClientPersistence Utilisateur Certificate Authority Endorser Peer Ordering Service Endorser Peer DB const state_store = await Fabric_Client.newDefaultKeyValueStore({ path: store_path}); fabric_client.setStateStore(state_store); const user_context = await fabric_client.getUserContext('user1', true); const store_path = path.join(__dirname, 'hfc-key-store'); const channel = fabric_client.newChannel('mychannel'); const peer = fabric_client.newPeer('grpc://localhost:7051'); channel.addPeer(peer); let tx_id = null; const request = { chaincodeId: 'fabcar', fcn: 'queryAllCars', args: [''] }; const response = await channel.queryByChaincode(request); S3
  • 29. @Xebiconfr #Xebicon18 @vsegouin Workflow type d’une transaction S3 Application DB Ordering Service Endorser peer Endorser peer Certificate Authority Peer Peer ConnexionUpload
  • 30. @Xebiconfr #Xebicon18 @vsegouin RGPD et droit à l’oubli
  • 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.
  • 34. @Xebiconfr #Xebicon18 @vsegouin Schéma du système de collection privée
  • 35. @Xebiconfr #Xebicon18 @vsegouin Que doit-on en retenir ?
  • 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.
  • 39. @Xebiconfr #Xebicon18 @vsegouin Merci de votre attention Des questions ?