# Tutoriel **Installer git** sudo apt-get install git **Installer cURL** sudo apt install curl **Installer Node.js** sudo apt install nodejs **Docker et Docker Compose** Installez Docker : sudo apt install docker-ce Assurez-vous que le démon docker est en cours d'exécution : sudo systemctl start docker Facultatif: si vous souhaitez que le démon docker démarre au démarrage du système, exécutez la commande suivante : sudo systemctl enable docker Ajoutez votre utilisateur au groupe Docker : sudo usermod -a -G docker **Hyperledger Fabric** Placez-vous dans le répertoire de votre choix et installer Hyperledger Fabric : curl -sSL https://bit.ly/2ysbOFE | bash -s Ajoutez au fichier .bashrc la ligne suivante pour ajouter les variables d'environnement : export PATH=${PWD}/../bin:$PATH Vous devez également définir le FABRIC_CFG_PATH : export FABRIC_CFG_PATH=$PWD/../config/ **Réseau de test Fabric** Accédez au répertoire réseau de test : cd fabric-samples/test-network Supprimez tous les conteneurs ou artefacts de toutes les exécutions précédentes : ./network.sh down Activez le réseau : ./network.sh up **Les composants du réseau de test** Affichez tous les conteneurs Docker qui s'exécutent sur votre ordinateur : docker ps -a # Fonctionnement du TPE 2020 - Vente d'un véhicule **Créer le réseau** Déplacez le répertoire VenteVoiture vers fabric-samples, puis ouvrez-le : cd fabric-samples/VenteVoiture Exécutez le script pour démarrer le réseau de test : ./network-starter.sh Lorsque le script est terminé, vous pouvez voir les nœuds Fabric s'exécutant sur votre machine : docker ps **Installer et approuver le contrat intelligent** **(Alice)** Ouvrez un premier terminal et accédez au répertoire de la 1ère personne Alice : cd fabric-samples/VenteVoiture/organization/Alice **(Alice)** Exécutez le script pour définir les variables d'environnement : source alice.sh **(Alice)** Créez le package du chaincode : peer lifecycle chaincode package car.tar.gz --lang node --path ./contract --label car_0 **(Alice)** Installez le chaincode : peer lifecycle chaincode install car.tar.gz **(Alice)** Obtenez le packageID du chaincode : peer lifecycle chaincode queryinstalled **(Alice)** Enregistrez l'ID du package en tant que variable d'environnement : export PACKAGE_ID=car_0:7778fe966e1cfe11982c5f9d2d1a8eb1a225e4f547df8bac40ca50569fbd076d **(Alice)** Approuvez la définition du chaincode: peer lifecycle chaincode approveformyorg --orderer localhost:7050 --ordererTLSHostnameOverride orderer.example.com --channelID mychannel --name carcontract -v 0 --package-id $PACKAGE_ID --sequence 1 --tls --cafile $ORDERER_CA **(Bob)** Ouvrez un second terminal et accédez au répertoire de la 2ème personne Bob : cd TPEBlockchain/VenteVoiture/organization/Bob **(Bob)** Exécutez le script pour définir les variables d'environnement : source bob.sh **(Bob)** Créez le package du chaincode : peer lifecycle chaincode package car.tar.gz --lang node --path ./contract --label car_0 **(Bob)** Installez le chaincode : peer lifecycle chaincode install car.tar.gz **(Bob)** Obtenez le packageID du chaincode : peer lifecycle chaincode queryinstalled **(Bob)** Enregistrez l'ID du package en tant que variable d'environnement : export PACKAGE_ID=car_0:7778fe966e1cfe11982c5f9d2d1a8eb1a225e4f547df8bac40ca50569fbd076d **(Bob)** Approuvez la définition du chaincode : peer lifecycle chaincode approveformyorg --orderer localhost:7050 --ordererTLSHostnameOverride orderer.example.com --channelID mychannel --name carcontract -v 0 --package-id $PACKAGE_ID --sequence 1 --tls --cafile $ORDERER_CA **(Alice)** Retournez sur le terminal correpondant à Alice et validez la définition du chaincode : peer lifecycle chaincode commit -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --peerAddresses localhost:7051 --tlsRootCertFiles ${PEER0_ORG1_CA} --peerAddresses localhost:9051 --tlsRootCertFiles ${PEER0_ORG2_CA} --channelID mychannel --name carcontract -v 0 --sequence 1 --tls --cafile $ORDERER_CA --waitForEvent **Vente de la voiture** **(Alice)** Accédez au répertoire appplication : cd application **(Alice)** Ajoutez des informations au Wallet : node addToWallet.js **(Alice)** Mettez en vente la voiture : node sell.js **(Bob)** Retournez sur le terminal correpondant à Bob et accédez au répertoire application : cd application **(Bob)** Modifiez l'état de la voiture : node addToWallet.js **(Bob)** Achetez la voiture : node buy.js **(Bob)** Constatez que le véhicule a bien changé de propriétaire : node info.js