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
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
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é"
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
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
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
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é
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
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
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
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
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
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)
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
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.
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
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
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
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
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
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
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
à 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)
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
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