diff --git a/README.md b/README.md index 72a708b1eb5aa6e506679996618eceae5377e1b1..ea817853c954636186026e218335a4fd85f51754 100644 --- a/README.md +++ b/README.md @@ -1 +1,176 @@ -Tutoriel \ No newline at end of file +# 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 + + + \ No newline at end of file