Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
# 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
**(Alice)** Approuver 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
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