README.md 4,88 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**

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

**(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
    
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
    
**(Alice)** Mettez en vente la voiture:

    node sell.js
    
**(Bob)** Retournez sur le terminal correpondant à Bob et accédez au répertoire appplication:

    cd application    
    
**(Bob)** Modifiez l'état de la voiture:

    node addToWallet.js
    
**(Bob)** Achetez la voiture:

    node sell.js    
    
**(Bob)** Constatez que le véhicule a bien changé de propriétaire:

    node info.js