(Apprentissage de la structure 2) Testez le réseau de test fabric2.0 à l'aide du code de chaîne de base

Ceci est une mise à jour. Il y avait beaucoup d'erreurs dans la dernière rédaction. Permettez-moi de le mettre à jour cette fois !

Voici les références :

Hyperledger Learning (2) : Déploiement et invocation du code de chaîne Hyperledger (ci-dessus : test d'exemple officiel) - Blog de Wang Sansan - Blog CSDN

Essayez l'écriture et le déploiement de code en chaîne testing_blog blog-CSDN de routiao

blog_CSDN de routiao - blockchain, blogueur dans le domaine du front-end

tester des échantillons de tissu/tester le réseau

1. Démarrez le réseau docker

Nous commençons d'abord l'exemple de test

cd fabric-samples/test-network

Ensuite, supprimez d'abord tous les conteneurs qui étaient précédemment en cours d'exécution

sudo ./network.sh down

puis réactivez le réseau

sudo ./network.sh up

Vous pouvez vérifier s'il est activé avec la commande :

sudo docker ps -a

On peut regarder de plus près les résultats obtenus après la commande ci-dessus :

2. Créez une chaîne

Le canal est une couche privée pour la communication entre les membres d'un réseau spécifique. Seuls les membres qui sont invités à rejoindre le canal peuvent l'utiliser, et il est invisible pour les autres membres du réseau. Chaque canal a un livre de compte blockchain séparé, qui est invité Les pairs rejoignant le canal peuvent stocker le registre du canal, puis vérifier les transactions du canal.

Exécutez la commande suivante pour créer un canal nommé mychannel pour connecter Org1 et Org2.

sudo ./network.sh createChannel

Lorsque cela apparaît, le canal a été créé

Remarque : Il peut y avoir de nombreux problèmes d'autorisation pendant le test. Si l'autorisation refusée apparaît, vous devez ouvrir le fichier d'autorisation, ce qui sera expliqué en détail dans le prochain article. 

Ajouter une autorisation pour l'utilisateur afin de faciliter le fonctionnement de l'ensemble du dossier fabric

sudo chmod -R 777 ~/go

Dans le même temps, puisqu'il est également nécessaire d'ajouter des autorisations opt à l'utilisateur

sudo chmod -R 777 /opt

Pour interagir avec le réseau :

Une fois le réseau de test démarré avec succès, la commande peer sur la ligne de commande peut être utilisée pour interagir avec le réseau, ce qui permet aux utilisateurs d'appeler des contrats intelligents déployés, de mettre à jour des canaux ou d'installer et de déployer de nouveaux contrats intelligents.

Tout d'abord, vous devez le configurer. Il existe des fichiers binaires tels que peer dans le répertoire bin et plusieurs fichiers yaml dans le répertoire config. Si nécessaire, vous pouvez utiliser la commande suivante pour ajouter un peer, etc. à l'environnement variables :

Assurez-vous d'abord que vous êtes dans le test-network : Configurer les variables temporaires : (Si vous ne configurez pas ici, vous ne pouvez pas utiliser la commande peer)

export PATH=${PWD}/../bin:$PATH

De plus, vous devez configurer le répertoire où se trouve la configuration.

export FABRIC_CFG_PATH=$PWD/../config/

Nous devons également définir l'environnement de démarrage

go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct

De cette façon, le code blockchain peut être déployé. Notez que sudo ne peut pas être utilisé ici, sinon cela causera des problèmes dans l'environnement.

./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-go -ccl go

Si cela se produit, le déploiement du code blockchain est réussi.

Nous pouvons également voir dans le fichier que si le code blockchain est déployé, le système créera un package jar nommé basic.tar.gz sous le dossier test-network

3. Appel de contrat intelligent

Une fois le code de la chaîne déployé, nous pouvons appeler le contrat intelligent

Initialiser l'identité du membre en tant qu'organisation 1

export CORE_PEER_TLS_ENABLED=true
export CORE_PEER_LOCALMSPID="Org1MSP"
export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org1.example.com/users/[email protected]/msp
export CORE_PEER_ADDRESS=localhost:7051

Initialiser le grand livre

peer chaincode invoke -o localhost:7050 \
  --ordererTLSHostnameOverride orderer.example.com  \
  --tls --cafile "${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem"  \
  -C mychannel  \
  -n basic  \
  --peerAddresses localhost:7051  \
  --tlsRootCertFiles "${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt"  \
  --peerAddresses localhost:9051   \
  --tlsRootCertFiles "${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt"  \
  -c '{"function":"InitLedger","Args":[]}'

Après une exécution réussie, il apparaîtra :

Nous recherchons ensuite une liste d'actifs qui ont été ajoutés au registre des chaînes :

peer chaincode query -C mychannel -n basic -c '{"Args":["GetAllAssets"]}'

Voir l'effet :

 On peut constater que nous avons effectivement interrogé les données, et soigneusement constaté que ces données sont réellement écrites dans le contrat intelligent. Nous pouvons trouver le contrat intelligent appelé /asset-transfer-basic/chaincode-go/chaincode/smartcontract.go

Découvrez la méthode InitLedger pour initialiser le grand livre est écrit comme ceci

 Ensuite, nous obtiendrons ces données après avoir appelé

[
    {"ID": "asset1", "color": "blue", "size": 5, "owner": "Tomoko", "appraisedValue": 300},
    {"ID": "asset2", "color": "red", "size": 5, "owner": "Brad", "appraisedValue": 400},
    {"ID": "asset3", "color": "green", "size": 10, "owner": "Jin Soo", "appraisedValue": 500},
    {"ID": "asset4", "color": "yellow", "size": 10, "owner": "Max", "appraisedValue": 600},
    {"ID": "asset5", "color": "black", "size": 15, "owner": "Adriana", "appraisedValue": 700},
    {"ID": "asset6", "color": "white", "size": 15, "owner": "Michel", "appraisedValue": 800}
]

Ensuite, nous utilisons différentes méthodes dans le contrat intelligent.

4. Appelez différentes méthodes dans le contrat

Ces contrats intelligents sont écrits dans /asset-transfer-basic/chaincode-go/chaincode/smartcontract.go,

Ouvrons-le pour voir ce qu'il peut faire

4.1 Ajouter des actifs

Regardez le code dans le fichier go :

peer chaincode invoke -o localhost:7050 \
  --ordererTLSHostnameOverride orderer.example.com \
  --tls --cafile "${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem" \
  -C mychannel \
  -n basic \
  --peerAddresses localhost:7051 \
  --tlsRootCertFiles "${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" \
  --peerAddresses localhost:9051 --tlsRootCertFiles "${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt" \
  -c '{"function":"CreateAsset","Args":["asset7","pink","10","XZDD","16402"]}'

Mise en œuvre:

4.2 Supprimer des actifs

Contrat intelligent :

 mettre en œuvre:

peer chaincode invoke -o localhost:7050 \
  --ordererTLSHostnameOverride orderer.example.com \
  --tls --cafile "${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem" \
  -C mychannel \
  -n basic \
  --peerAddresses localhost:7051 \
  --tlsRootCertFiles "${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" \
  --peerAddresses localhost:9051 --tlsRootCertFiles "${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt" \
  -c '{"function":"DeleteAsset","Args":["asset6"]}'

Mise en œuvre:

Afficher les informations : 

On peut constater que l'enregistrement suivant a disparu 

{"ID": "asset6", "color": "white", "size": 15, "owner": "Michel", "appraisedValue": 800}

4.3 Modifier les actifs

Contrat intelligent :

mettre en œuvre:

peer chaincode invoke -o localhost:7050 \
  --ordererTLSHostnameOverride orderer.example.com \
  --tls --cafile "${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem" \
  -C mychannel \
  -n basic \
  --peerAddresses localhost:7051 \
  --tlsRootCertFiles "${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" \
  --peerAddresses localhost:9051 --tlsRootCertFiles "${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt" \
  -c '{"function":"UpdateAsset","Args":["asset7","RED","9","XZDD","521521"]}'

Mise en œuvre:

Afficher les informations :

4.4 Transfert d'actifs

Contrat intelligent :

mettre en œuvre:

peer chaincode invoke -o localhost:7050 \
  --ordererTLSHostnameOverride orderer.example.com \
  --tls --cafile "${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem" \
  -C mychannel \
  -n basic \
  --peerAddresses localhost:7051 \
  --tlsRootCertFiles "${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" \
  --peerAddresses localhost:9051 --tlsRootCertFiles "${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt" \
  -c '{"function":"TransferAsset","Args":["asset5","XZDD"]}'

Mise en œuvre:

Afficher les informations :

 Vous pouvez vérifier que les actifs ont été transférés à XZDD, et maintenant XZDD en est le propriétaire.

4.5 Afficher des actifs spécifiques

Contrat intelligent :

mettre en œuvre:

peer chaincode query -C mychannel -n basic -c '{"Args":["ReadAsset","asset7"]}'

Mise en œuvre:

5. Changer d'identité

Auparavant, l'organisation 1 était utilisée pour vérifier les ajouts, les suppressions, les modifications et les requêtes de code. Maintenant, nous pouvons ouvrir un autre terminal et utiliser l'organisation 2 pour vérifier les fonctions, il suffit de changer les variables d'environnement !

export PATH=${PWD}/../bin:$PATH
export CORE_PEER_TLS_ENABLED=true
export CORE_PEER_LOCALMSPID="Org2MSP"
export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org2.example.com/users/[email protected]/msp
export CORE_PEER_ADDRESS=localhost:9051

L'opération spécifique ne sera pas répétée ici. Vous pouvez essayer d'ouvrir deux fenêtres bash et de les initialiser avec des identités différentes. Une fenêtre est utilisée pour les opérations de changement d'actif, et l'autre fenêtre est utilisée pour les opérations de requête d'actif afin de tester l'effet de synchronisation du chaîne de blocs.

Je suppose que tu aimes

Origine blog.csdn.net/Wannabe_hacker/article/details/123240612
conseillé
Classement