Upgrade to Pro — share decks privately, control downloads, hide ads and more …

workshop linux sénégal

workshop linux sénégal

créer une blockchain d'entreprise avec Hyperledger Fabric

Avatar for babacar lô

babacar lô

May 06, 2018

Other Decks in Technology

Transcript

  1. Qu'est-ce que Hyperledger Fabric •Hyperledger ◦Un effort de collaboration open

    source créé pour faire avancer l'industrie technologies blockchain pour les entreprises ◦hébergé par la Linux Foundation •Hyperledger Fabric ◦Une implémentation de la technologie blockchain destinée à servir de base au développement d'applications blockchain ◦Le premier projet Hyperledger à sortir de l'incubation ◦Principales caractéristiques techniques: ▪ Un registre distribuer et des contrats intelligents implémentés en tant que «chaincode» ▪ Confidentialité et permissioning par le biai de service membership ▪ Architecture modulaire et options d'hébergement flexibles
  2. Reference Architecture Distributed Ledger Technology Services APIs, Events, SDKs SMART

    CONTRACT Chain-code Services AP Membership Services Enrollment Attributes Consensus Services Distributed Ledger Ordering Service Network Protocol Endorsement Validation Secure Container Secure Registry TRANSACTI ONS LEDGER IDENTITY Security and Crypto Services IDENTITY Pluggable Membership, confidentialité et auditabilité des transactions. REGISTRE | TRANSACTIONS Registre distribué de transactions dont l'état est mis à jour par consensus des parties prenantes SMART-CONTRACT “Registre Programmable” fournit la capacité d'exécuter la logique métier (aka Smart Contract) APIs, Events, SDKs Les SDKs multi-language native permettent aux développeurs d'écrire des applications DLT
  3. Overview of v1.0 Design Goals • Mieux refléter les processus

    d'affaires en précisant qui endosse les transactions • Soutenir des exigences réglementaires plus larges en matière de privacy et de confidentialité • Mettre à l'échelle le nombre de participants et le débit de transaction • Éliminer les transactions non déterministes • Prise en charge des requêtes de données volumineuses du ledger • Mettre à niveau dynamiquement le réseau et le chaincode • Prise en charge de plusieurs services d'identification et de cryptographie pour l'identité • Soutien pour "apporter votre propre identité"
  4. Orderer • Un groupe peer orderer exécute un service de

    communication, appelé service de commande, pour fournir une diffusion atomique • Le service de commande est la genèse d'un réseau. Les clients du service de commande sont des pairs et des applications – Accepter des transactions et livrer des blocs – Traiter toutes les transactions de configuration pour configurer les politiques réseau (lecteurs, rédacteurs, administrateurs) • Orderer gère un moteur de confiance connectable (par exemple CFT ou BFT) qui effectue la commande des transactions orderer Atomic broadcast System Config Config Processor Trust Model
  5. Peer • Un peer est un noeud sur le réseau

    qui maintient l'état du registre et gère les chaincodes • Tout nombre de peers peut participer à un réseau • Un peer peut être un endosseur, un committer et / ou un émetteur (l'émetteur n'a pas été mis en œuvre). Un endosseur est toujours un committer – Un peer gère le hub d'événements et fournit des événements aux abonnés – Un committer vérifie les mentions et valide les résultats de la transaction • Un committer vérifie les mentions et valide les résultats de la transaction • Un committer vérifie les mentions et valide les résultats de la transaction Endorser Committer Ledger Chaincode Event Submitter peer
  6. Ledger CouchDB (external option) supports keyed queries, composite key queries,

    key range queries, plus full data rich queries (beta in 1.0) Latest written key/values for use in transaction simulation Supports keyed queries, composite key queries, key range queries TX Reads[] Writes[] TX Reads[] Writes[] TX Reads[] Writes[] TX Reads[] Writes[] State Database Transaction Log Last written key/value blockHash → SegNo + offset blockNum → SegNo + offset txId → SegNo + offset Block Index block tx array File System Level DB Replaceable tracking history of a key Key History Index
  7. Channels Un mécanisme de partitionnement de données pour contrôler la

    visibilité des transactions uniquement aux parties prenantes • Des canaux séparés isolent les transactions sur différents registres • Le consensus a lieu au sein d'une canale par les membres du canale ◦ Les autres membres du réseau ne sont pas autorisés à accéder à ce canal et ne verront pas les transactions sur le canal. • Un chaincode peut être déployé sur plusieurs canaux, chaque instance étant isolée dans son canal • Peers peut participer sur plusieurs canaux • Exécution simultanée pour les performances et l'évolutivité
  8. Fournisseur de Membership Service • Interface pluggable prenant en charge

    une gamme d'architectures d'informations d'identification • Les appels d'implémentation par défaut Fabric-CA • Régit l'identité des applications, des utilisateurs, des peers et oderer • Fournit • Authentification utilisateur, y compris la vérification des informations d'identification - Génération de signature et vérification - Délivrance facultative de justificatifs - Contrôle d'accès (au niveau du système, du canal et du code d'accès) Membership Service Provider API ✓ External Certificate Authority Fabric-CA Certificate Authority ✓ Fabric-CA API External CA API
  9. Ecert Tcert Fabric-CA • Implémentation par défaut de l'interface du

    fournisseur de services d'adhésion. • Issues Ecerts (identité à long terme) et Tcerts (certificat Temporaire) • Prend en charge le regroupement pour les caractéristiques HA • Prend en charge LDAP pour l'authentification de l'utilisateur • Prend en charge HSM Fabric-CA cluster DB LDAP Authenticate Enroll ID, secret HSM Root Certificate Authority ✓ Implements Membership Service Provider
  10. Fournisseur de services cryptographiques • CSP abstracts crypto standards (software

    et hardware) pour permettre le plugging dans differents implementations – D'autres implémentations de l'interface crypto peuvent être utilisées dans le code fabric, sans modifier le noyau • Prise en charge de plusieurs CSPs – Ajout facile de plus de types CSPs, ex: différents types de HSM – Activer l'utilisation de différents CSP sur différents composants système de manière transparente Fabric Components ACSP EP11 (enterprise PKCS11 firmware) IBM HSM (card) OpenCryptoKi (remote PKCS11) (PKCS11) (enterprise PKCS11) Software BCCSP HSM BCCSP (PKCS11) CSP Factory
  11. Bootstrapping a Network • Décidez des membres (MSP) contrôlant le

    service de commande – Installer la configuration MSP pour chaque membre (root certs, Signing certs, Key, admins) – Configurer les stratégies régissant le réseau (qui a le privilège de modifier config et créer des canaux) – démarrer orderers avec la configuration configuration • Chaque membre décide du nombre de peer participer – Pour chaque peer, émettez l'identité du Peer (configuration MSP locale) et démarrez-le • À ce stade, nous avons un réseau de peer et de oderer – Les peer ne sont pas encore connectés aux orders ni aux autres
  12. Configuration canaux, stratégies, Chaincodes • Selon le réseau d'affaires, 1

    ou plusieurs canaux peuvent être requis • Pour créer un canal, envoyez une transaction de configuration au ordering service en spécifiant les membres du canal, les règles ACL, les anchor peers – La configuration devient parti intégrant bloc de genèse de la chaîne – Puis informez les membres de rejoindre le canal (un peer peut rejoindre plusieurs canaux) • Déployez les chaincodes sur la chanal avec la règle d'approbation appropriée • Maintenant, le réseau est prêt pour la transaction
  13. Consensus Redefined • Consensus = Transaction Endorsement + Ordering +

    Validation • Endorsement: Chaque partie prenante décide d'accepter ou de rejeter une transaction • Ordering: Trie toutes les transactions d'une période dans un bloc pour être validées dans cet ordre • Validation: Vérifier que l'approbation de la transaction a satisfait la règle et que la transformation de la transaction est valide selon le contrôle de simultanéité multiversion (MVCC)
  14. Transaction Endorsement • Un Endorsement est une réponse signée du

    résultat d'une exécution de transaction • Une règle de Endorsement encapsule l'exigence qu'une transaction soit acceptée par les parties prenantes, qu'elle soit explicite ou implicite – Une signature de member1 et member2 – Soit une signature de member1 et member2, soit une signature de member3 – Une signature de John Doe • La règle de endorsement est spécifiée pendant une instanciation de chaincode sur un canal; chaque canal-chaincode peut avoir une régle d'approbation différente
  15. Nodes and Roles Committing Peer: Maintains ledger and state. Commits

    transactions. May hold smart contract (chaincode). Endorsing Peer: Un pair de validation spécialisé qui reçoit une proposition de transaction pour approbation, répond par l'approbation ou le refus d'approbation. Doit détenir un contrat intelligent Noeud Ordering (service): Approuve l'inclusion de blocs de transaction dans le ledger et communique avec les noeuds homologues. Ne détient pas de smart contract. Ne tient pas le registre.
  16. Sample transaction: Step 1/7 – Propose transaction E 0 Client

    Applic ation E 1 E 2 S D K Endorser Ledger Committer Application Orderer Smart Contract (Chain code) Endorsement Policy Key: Hyperledger Fabric Ordering-Service O O O O A p Application proposes transaction Endorsement policy: • “E 0, E 1 and E 2 must sign” • (P 3 , P 4 are not part of the policy) L'application cliente soumet une proposition de transaction pour la chaincode A. Elle doit cibler les pairs requis {E0, E1, E2} P 4 P 3 A B A B A B A D 20
  17. Sample transaction: Step 2/7 – Execute proposal Endorsers Execute Proposals

    E0, E1 et E2 exécuteront chacune la transaction proposée. Aucune de ces exécutions ne mettra à jour le ledger Chaque exécution va capturer l'ensemble des données Read and Written, appelées ensembles RW, qui vont maintenant circuler dans fabric. E 0 Client Applicati on E 1 E 2 S D K Ordering-Service O O O O A p Endorser Ledger Committer Application Orderer Smart Contract (Chain code) Endorsement Policy Key: P 4 P 3 A B A B A B A D 21 Hyperledger Fabric
  18. Sample transaction: Step 3/7 – Proposal Response Application receives responses

    The RW sets are signed by each endorser and returned to the application E 0 Client Applicat ion E 1 E 2 S D K Ordering-S ervice O O O O A p Endorser Ledger Committer Application Orderer Smart Contract (Chain code) Endorsement Policy Key: P 4 P 3 A B A B A B A D 22 Hyperledger Fabric
  19. Sample transaction: Step 4/7 – Order Transaction Application submits responses

    for ordering Application submits responses as a transaction to be ordered. Ordering happens across the fabric in parallel with transactions submitted by other applications Fab ric E 0 E 1 E 2 O O O O A p Client Applicat ion S D K Endorser Ledger Committer Application Orderer Smart Contract (Chain code) Endorsement Policy Key: (other applications) Ordering-Service P 4 P 3 A B A B A B A D 23 Hyperledger Fabric
  20. Sample transaction: Step 5/7 – Deliver Transaction Orderer delivers to

    all committing peers Ordering service collects transactions into blocks for distribution to committing peers. Peers can deliver to other peers using gossip (not shown) Different ordering algorithms available: • SOLO (single node, development) • Kafka (blocks map to topics) • SBFT (tolerates faulty peers, future) E 0 E 1 E 2 O O O O A p Client Applicatio n S D K Endorser Ledger Committer Application Orderer Smart Contract (Chain code) Endorsement Policy Ordering-Service P 4 P 3 A B A B A B A D 24 Hyperledger Fabric
  21. Sample transaction: Step 6/7 – Validate Transaction Les peers committer

    valident les transactions Chaque peer validant valide par rapport à la politique d'approbation. Vérifiez également que les jeux RW sont toujours valides pour l'état actuel Les transactions sont écrites dans le registre et mettent à jour les bases de données de mise en cache avec des transactions validées E 0 E 1 E 2 O O O O A p Client Application S D K Endorser Ledger Committer Application Orderer Smart Contract (Chain code) Endorsement Policy Key: Ordering-Service P 4 P 3 A B A B A B A D 25 Hyperledger Fabric
  22. Peers E 1 and E 2 sont connect à red

    channel pour X et Y chaincodes Peers E 0 et E 3 sont connecté à blue channel popur A et B chaincodes Multi-Channel Network 26 E 0 Client Applicatio n E 1 E 2 S D K Endorser Ledger Committer Application Orderer Smart Contract (Chain code) Key: Hyperledger Fabric Ordering-Service O O O O A p E 3 A B X Y X Y A B Client Applicatio n S D K Endorsement Policy
  23. Where to Ask Questions Hyperledger Community est passé de Slack

    à RocketChat. Allez sur chat.hyperledger.org et inscrivez-vous. Cependant, vous devrez posséder une identification de fondation Linux. Si vous n'êtes pas inscrit à la Linux Foundation, procurez-vous un identifiant https://identity.linuxfoundation.org/ Pour les questions sur la version 1.0, rendez-vous sur le canal #fabric-questions. En plus, tous les jours, le statut de construction du docker est affiché lorsque les tests d'intégration continue seront affichés sur #fabric-ci (seulement affiché lorsque les tests passent)
  24. Useful Information To Get You Started • Documentation actively getting

    updated as we progress: http://hyperledger-fabric.readthedocs.io/en/latest/ • Support for Docker images for easy deployment for Hyperledger-fabric 1.0. Les images de Docker seront disponibles pour tous les composants principaux pour exécuter un réseau (peers, solo orderer, CLI, CA, Kafka, CouchDB). Une section "Mise en route" sera disponible dans les publications Hyperledger-fabric. La mise en route aidera un développeur ou un utilisateur à démarrer le réseau, à exécuter une application simple et à apprendre les bases de running fabric 1.0. Voir: http://hyperledger-fabric.readthedocs.io/en/latest • Prise en charge d'un outil qui permet d'amorcer un réseau. – Configuration Transaction Generator (configtxgen): un outil conçu pour générer le bloc de genèse pour amorcer les ordonnanceurs, et les artefacts de transaction de configuration utilisés pour la création de canaux – Crypto Materials Generator (cryptogen): un outil pour générer une arborescence de certificats et d'identités de signature (clés privées) à multi-root à utiliser pour amorcer orderers, peers, fabric-cas et apps 28
  25. Hyperledger Composer Hyperledger Composer est un ensemble d'outils de développement

    complet et ouvert qui facilite le développement d'applications blockchain. Demo
  26. Les conditions préalables à l'installation des outils de développement requis

    sont les suivantes: • Systèmes d'exploitation: Ubuntu Linux 14.04 / 16.04 LTS (64 bits) ou Mac OS 10.12 • Docker Engine: Version 17.03 ou supérieure • Docker-Compose: Version 1.8 ou supérieure • Nod: 8.9 ou supérieur (notez que la version 9 n'est pas supportée) • npm: v5.x • git: 2.9.x ou supérieur • Python: 2.7.x • Un éditeur de code de votre choix, nous recommandons VSCode. Installation des pré-requis
  27. Installation de l’environnement de développement • Étape 1: Installation des

    outils CLI • Étape 2: Installer Playground • Étape 3: Configurez votre IDE • Étape 4: Installez Hyperledger Fabric