3 min de lectureMis à jour le
Introduction à Hyperledger Fabric : concepts clés et premier réseau
Hyperledger Fabric en pratique : organisations, pairs, channels et ledgers, le flux d'une transaction, puis le déploiement d'un premier réseau de test avec les Fabric Samples.
Par Sahid Orentino Ferdjaoui
Hyperledger est un projet de collaboration open source, hébergé par la Linux Foundation (aujourd'hui sous l'égide de LF Decentralized Trust), qui vise à faire progresser la technologie blockchain dans divers secteurs. Il a servi d'incubateur à plusieurs frameworks et outils, dont Hyperledger Fabric, Hyperledger Sawtooth ou Hyperledger Indy.
Hyperledger Fabric
Hyperledger Fabric est le framework de blockchain destiné aux entreprises. Il offre des fonctionnalités avancées de confidentialité, de sécurité et d'évolutivité, et il est conçu pour être modulaire et extensible : il permet une grande variété d'applications autour de la blockchain.
À la différence d'une blockchain publique, un réseau Fabric est autorisé : chaque participant est une organisation identifiée, dotée de certificats délivrés par une autorité de certification (CA).
Les concepts à connaître
- Organisation : un participant du réseau. Elle exploite un ou plusieurs pairs (peers).
- Pair : un nœud qui détient une copie du ledger et exécute les contrats.
- Chaincode : le contrat intelligent (smart contract), le code qui définit les transactions possibles sur un channel.
- Service d'ordonnancement (ordering service) : il ordonne les transactions dans des blocs, sans connaître leur contenu métier.
- Ledger : le registre. Il associe la chaîne de blocs, immuable, et un état courant (world state), une base clé-valeur reconstruite à partir de la chaîne.
- Channel : un ledger indépendant, partagé par un sous-ensemble d'organisations.
Ledger et channels
Dans un réseau blockchain, le ledger est une base de données décentralisée et immuable qui enregistre les transactions. Il est répliqué sur les pairs qui y participent, ce qui garantit l'intégrité et la transparence des données.
Les channels permettent une communication privée entre un sous-ensemble des participants : transactions et ledgers y restent invisibles pour tous les autres. Un channel est donc un ledger indépendant, qui enregistre les transactions et l'état des chaincodes propres à ce channel. Chaque channel a son propre ledger, et un ledger n'est pas conçu pour gérer plusieurs channels : c'est une version cloisonnée de la blockchain, distribuée aux seuls participants autorisés.
Le flux d'une transaction
Fabric sépare l'exécution du contrat de l'ordonnancement des transactions : l'état du ledger n'est écrit qu'après une validation.
C'est cette séparation qui permet de choisir une politique d'endossement par chaincode — par exemple « deux organisations sur trois doivent signer » — et de faire évoluer le service d'ordonnancement sans toucher aux contrats.
Déployer un premier réseau
Pour lancer un premier réseau, quelques prérequis sont nécessaires : Docker, Git, cURL et jq. Go n'est requis que pour écrire du chaincode ou des applications en Go.
Installer Fabric et les Fabric Samples
Dans un répertoire dédié, récupérez le script d'installation officiel, puis exécutez-le :
curl -sSLO https://raw.githubusercontent.com/hyperledger/fabric/main/scripts/install-fabric.sh
chmod +x install-fabric.sh
./install-fabric.sh docker samples binaryLe script clone le dépôt fabric-samples, télécharge les images Docker de Fabric et les binaires (peer, configtxgen, cryptogen, fabric-ca-client…).
Démarrer le réseau et créer un channel
fabric-samples rassemble des configurations et des scripts d'exemple. Le réseau de test s'y trouve :
cd fabric-samples/test-network
./network.sh up createChannel -caCette commande démarre le réseau et crée un channel. L'option -ca génère le matériel cryptographique avec des autorités de certification plutôt qu'avec l'outil cryptogen.
peer0.org1.example.com
peer0.org2.example.com
orderer.example.com
ca_org1
ca_org2
ca_ordererDéployer un chaincode
Le même script déploie un chaincode d'exemple (asset-transfer-basic par défaut) sur le channel :
./network.sh deployCCVous disposez alors d'un réseau Hyperledger Fabric en cours d'exécution, avec un channel et un contrat intelligent prêts à recevoir des transactions.
Tout arrêter
./network.sh down