# 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