README.md 4,91 ko
Newer Older
Robin Guyomar's avatar
Robin Guyomar a validé
# 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**

Robin Guyomar's avatar
Robin Guyomar a validé
Installez Docker :
Robin Guyomar's avatar
Robin Guyomar a validé

    sudo apt install docker-ce
    
Robin Guyomar's avatar
Robin Guyomar a validé
Assurez-vous que le démon docker est en cours d'exécution :    
Robin Guyomar's avatar
Robin Guyomar a validé

    sudo systemctl start docker

Robin Guyomar's avatar
Robin Guyomar a validé
Facultatif: si vous souhaitez que le démon docker démarre au démarrage du système, exécutez la commande suivante :
Robin Guyomar's avatar
Robin Guyomar a validé

    sudo systemctl enable docker
    
Robin Guyomar's avatar
Robin Guyomar a validé
Ajoutez votre utilisateur au groupe Docker :   
Robin Guyomar's avatar
Robin Guyomar a validé

    sudo usermod -a -G docker <username>
    
**Hyperledger Fabric**

Robin Guyomar's avatar
Robin Guyomar a validé
Placez-vous dans le répertoire de votre choix et installer Hyperledger Fabric :
Robin Guyomar's avatar
Robin Guyomar a validé

    curl -sSL https://bit.ly/2ysbOFE | bash -s

Robin Guyomar's avatar
Robin Guyomar a validé
Ajoutez au fichier .bashrc la ligne suivante pour ajouter les variables d'environnement :
Robin Guyomar's avatar
Robin Guyomar a validé

    export PATH=${PWD}/../bin:$PATH
    
Robin Guyomar's avatar
Robin Guyomar a validé
Vous devez également définir le FABRIC_CFG_PATH :
Robin Guyomar's avatar
Robin Guyomar a validé
    
    export FABRIC_CFG_PATH=$PWD/../config/
    
**Réseau de test Fabric**    

Robin Guyomar's avatar
Robin Guyomar a validé
Accédez au répertoire réseau de test :
Robin Guyomar's avatar
Robin Guyomar a validé

    cd fabric-samples/test-network
    
Robin Guyomar's avatar
Robin Guyomar a validé
Supprimez tous les conteneurs ou artefacts de toutes les exécutions précédentes :
Robin Guyomar's avatar
Robin Guyomar a validé

    ./network.sh down    
    
Robin Guyomar's avatar
Robin Guyomar a validé
Activez le réseau :
Robin Guyomar's avatar
Robin Guyomar a validé

    ./network.sh up

**Les composants du réseau de test**

Robin Guyomar's avatar
Robin Guyomar a validé
Affichez tous les conteneurs Docker qui s'exécutent sur votre ordinateur :
Robin Guyomar's avatar
Robin Guyomar a validé

    docker ps -a
    
# Fonctionnement du TPE 2020 - Vente d'un véhicule

**Créer le réseau**

Robin Guyomar's avatar
Robin Guyomar a validé
Déplacez le répertoire VenteVoiture vers fabric-samples, puis ouvrez-le :
Robin Guyomar's avatar
Robin Guyomar a validé

    cd fabric-samples/VenteVoiture

Robin Guyomar's avatar
Robin Guyomar a validé
Exécutez le script pour démarrer le réseau de test :
Robin Guyomar's avatar
Robin Guyomar a validé

    ./network-starter.sh
    
Robin Guyomar's avatar
Robin Guyomar a validé
Lorsque le script est terminé, vous pouvez voir les nœuds Fabric s'exécutant sur votre machine :
Robin Guyomar's avatar
Robin Guyomar a validé

    docker ps
    
**Installer et approuver le contrat intelligent**

Robin Guyomar's avatar
Robin Guyomar a validé
**(Alice)** Ouvrez un premier terminal et accédez au répertoire de la 1ère personne Alice :
Robin Guyomar's avatar
Robin Guyomar a validé

    cd fabric-samples/VenteVoiture/organization/Alice
    
Robin Guyomar's avatar
Robin Guyomar a validé
**(Alice)** Exécutez le script pour définir les variables d'environnement :    
Robin Guyomar's avatar
Robin Guyomar a validé

    source alice.sh
    
Robin Guyomar's avatar
Robin Guyomar a validé
**(Alice)** Créez le package du chaincode :    
Robin Guyomar's avatar
Robin Guyomar a validé

    peer lifecycle chaincode package car.tar.gz --lang node --path ./contract --label car_0    
    
Robin Guyomar's avatar
Robin Guyomar a validé
**(Alice)** Installez le chaincode :
Robin Guyomar's avatar
Robin Guyomar a validé

    peer lifecycle chaincode install car.tar.gz
    
Robin Guyomar's avatar
Robin Guyomar a validé
**(Alice)** Obtenez le packageID du chaincode :
Robin Guyomar's avatar
Robin Guyomar a validé

    peer lifecycle chaincode queryinstalled

Robin Guyomar's avatar
Robin Guyomar a validé
**(Alice)** Enregistrez l'ID du package en tant que variable d'environnement :
Robin Guyomar's avatar
Robin Guyomar a validé

    export PACKAGE_ID=car_0:7778fe966e1cfe11982c5f9d2d1a8eb1a225e4f547df8bac40ca50569fbd076d
    
Robin Guyomar's avatar
Robin Guyomar a validé
**(Alice)** Approuvez la définition du chaincode :
Robin Guyomar's avatar
Robin Guyomar a validé

    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

Robin Guyomar's avatar
Robin Guyomar a validé
**(Bob)** Ouvrez un second terminal et accédez au répertoire de la 2ème personne Bob :
Robin Guyomar's avatar
Robin Guyomar a validé

    cd TPEBlockchain/VenteVoiture/organization/Bob    
    
Robin Guyomar's avatar
Robin Guyomar a validé
**(Bob)** Exécutez le script pour définir les variables d'environnement :    
Robin Guyomar's avatar
Robin Guyomar a validé

    source bob.sh
    
Robin Guyomar's avatar
Robin Guyomar a validé
**(Bob)** Créez le package du chaincode :    
Robin Guyomar's avatar
Robin Guyomar a validé

    peer lifecycle chaincode package car.tar.gz --lang node --path ./contract --label car_0    
    
Robin Guyomar's avatar
Robin Guyomar a validé
**(Bob)** Installez le chaincode :
Robin Guyomar's avatar
Robin Guyomar a validé

    peer lifecycle chaincode install car.tar.gz
    
Robin Guyomar's avatar
Robin Guyomar a validé
**(Bob)** Obtenez le packageID du chaincode :
Robin Guyomar's avatar
Robin Guyomar a validé

    peer lifecycle chaincode queryinstalled

Robin Guyomar's avatar
Robin Guyomar a validé
**(Bob)** Enregistrez l'ID du package en tant que variable d'environnement :
Robin Guyomar's avatar
Robin Guyomar a validé

    export PACKAGE_ID=car_0:7778fe966e1cfe11982c5f9d2d1a8eb1a225e4f547df8bac40ca50569fbd076d
    
Robin Guyomar's avatar
Robin Guyomar a validé
**(Bob)** Approuvez la définition du chaincode :
Robin Guyomar's avatar
Robin Guyomar a validé

    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    
    
Robin Guyomar's avatar
Robin Guyomar a validé
**(Alice)** Retournez sur le terminal correpondant à Alice et validez la définition du chaincode :
Robin Guyomar's avatar
Robin Guyomar a validé

    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** 

Robin Guyomar's avatar
Robin Guyomar a validé
**(Alice)** Accédez au répertoire appplication :
Robin Guyomar's avatar
Robin Guyomar a validé

    cd application
    
Robin Guyomar's avatar
Robin Guyomar a validé
**(Alice)** Ajoutez des informations au Wallet :
Robin Guyomar's avatar
Robin Guyomar a validé

    node addToWallet.js
    
Robin Guyomar's avatar
Robin Guyomar a validé
**(Alice)** Mettez en vente la voiture :
Robin Guyomar's avatar
Robin Guyomar a validé

    node sell.js
    
Robin Guyomar's avatar
Robin Guyomar a validé
**(Bob)** Retournez sur le terminal correpondant à Bob et accédez au répertoire application :
Robin Guyomar's avatar
Robin Guyomar a validé

    cd application    
    
Robin Guyomar's avatar
Robin Guyomar a validé
**(Bob)** Modifiez l'état de la voiture :
Robin Guyomar's avatar
Robin Guyomar a validé

    node addToWallet.js
    
Robin Guyomar's avatar
Robin Guyomar a validé
**(Bob)** Achetez la voiture :
Robin Guyomar's avatar
Robin Guyomar a validé

Robin Guyomar's avatar
Robin Guyomar a validé
    node buy.js    
Robin Guyomar's avatar
Robin Guyomar a validé
    
Robin Guyomar's avatar
Robin Guyomar a validé
**(Bob)** Constatez que le véhicule a bien changé de propriétaire :