Utilisation et développement d'Hyperledger Fabric

Hyperledger Fabric est une technologie blockchain intersectorielle initiée par la Linux Foundation. Elle est actuellement utilisée dans de nombreuses grandes entreprises. Je ne présenterai pas HF elle-même ici. Si vous êtes intéressé, vous pouvez faire attention à son site officiel.

1. Préparation :

Avant de commencer, certaines préparations sont nécessaires, notamment l'installation de divers middlewares :

Si les problèmes suivants surviennent lors de l'installation de Docker Compose, vous pouvez les gérer comme ceci

question:

la commande 'gcc' a échoué avec l'état de sortie 1

miam, installez python-devel

question:

Impossible de désinstaller les « requêtes ».

pip install docker-compose --ignore-installed requêtes

Si nécessaire, vous pouvez installer deux outils de gestion, Cello et Explorer, qui sont tous deux des produits open source sous Hyperledger.

2. Déploiement du réseau local (HF2.0+)

Ce mode est généralement utilisé par les utilisateurs pour apprendre le réseau Hyperledger Fabric et essayer d'exécuter le réseau de test et d'écrire du code localement. Il n'est pas utilisé dans l'environnement de production. L'environnement de production utilisera k8 pour déployer les réseaux associés et ne nécessite généralement que des contrats ou apiserver et autres contenus.

1. Il est préférable d'effectuer la copie du code source lorsque le réseau est ouvert.

2. Démarrez le réseau (nœud couchdb+CA)

./byfn.sh up -a -s couchdb

Démarrer couchDB seul

docker-compose -f docker-compose-cli.yaml -f docker-compose-couch.yaml -f docker-compose-etcdraft2.yaml up -d

3. S'il s'agit de modifier le code source d'Hyperledger Fabric, par exemple en changeant son algorithme de chiffrement en secret national, il doit être compilé et empaqueté. La commande est la suivante :

(1) Compilation Fabric - fichiers secondaires et images de démonstration principales

make dist-clean all

(2) Compilation de nœuds de structure

cd docker
docker build -t hyperledger/fabric-nodeenv:latest .

(3) Déploiement hors ligne, situation générale

docker save -o fabric-tools.tar hyperledger/fabric-tools:latest
docker load --input fabric-tools21.rar

Si la sauvegarde échoue, comme le nœud couchdb, utilisez plutôt l'exportation-importation.

docker export -o fabric-couchdb.tar couchdb1
docker import fabric-couchdb.tar hyperledger/fabric-couchdb:0.4.18

3. Installation de contrat intelligent (HF2.0+)

Après avoir écrit (ou mis à jour) le code du smart contract,

(1) Utilisez go build pour la compilation de code

(2) Installation de contrat intelligent (nécessite une exécution par chaque nœud)

peer lifecycle chaincode install record9.tar.gz
# 环境变量设置
export CC_PACKAGE_ID=record9:0305dad14704dbdd48c2650d35f45038452e0aa281541f463c37a0e293a266b4

(3) Interroger les contrats installés

peer lifecycle chaincode queryinstalled

(4) Organisation des nœuds de commutation

CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/[email protected]/msp
CORE_PEER_ADDRESS=peer0.org2.example.com:9051
CORE_PEER_LOCALMSPID="Org2MSP"
CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt

(5) Reconnaissance de la définition du contrat (nécessite une mise en œuvre par chaque organisation)

peer lifecycle chaincode approveformyorg --channelID $CHANNEL_NAME --name {
   
   {test7}} --version 1.0 --init-required --package-id $CC_PACKAGE_ID --sequence 1 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem

(6) Vérifiez les organismes qui ont reconnu le contrat

peer lifecycle chaincode checkcommitreadiness --channelID $CHANNEL_NAME --name record9 --version 1.0 --init-required --sequence 1 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem --output json

(7) Soumettre la définition du contrat à Channel

peer lifecycle chaincode commit -o orderer.example.com:7050 --channelID $CHANNEL_NAME --name record9 --version 1.0 --sequence 1 --init-required --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem --peerAddresses peer0.org1.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses peer0.org2.example.com:9051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt

(8) Initialisation du contrat

peer chaincode invoke -o orderer.example.com:7050 --isInit --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C $CHANNEL_NAME -n record9 --peerAddresses peer0.org1.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses peer0.org2.example.com:9051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt -c '{"Args":["Init","a","100"]}' --waitForEvent

(9) Exécuter la requête de contrat (code fourni)

peer chaincode query -C $CHANNEL_NAME -n record9 -c '{"Args":["queryRecord","-2"]}'

(10) Exécuter l'appel de contrat (code fourni)

peer chaincode invoke -o orderer.example.com:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C $CHANNEL_NAME -n record9 --peerAddresses peer0.org1.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses peer0.org2.example.com:9051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt -c '{"Args":["createRecord","-2","0","test file hash","10000", "2020-2-13 10:11:00"]}' --waitForEvent

3. Installation et déploiement d'ApiServer (HF2.0+)

Le déploiement de l'apiserver est assez diversifié et diffère selon les langages utilisés, comme go, java et nodejs. Nous introduisons ici principalement les étapes générales sans montrer les scripts proprement dits.

1. Modifiez les paramètres de configuration pour générer le fichier image, ou remplissez les variables d'entrée (si une plateforme CI a été construite)

2. Générez l'image (par exemple./buildImages.sh apiserver 1.0)

3. Générer un outil de compilation (makeYaml)

4. Fichier de configuration d'anniversaire, nom d'identification du contrat/nom du réseau/nom d'identification de l'organisation/IP + port exposé/secret d'état-secret non-état (selon le réseau), utilisez l'outil de compilation dans la troisième étape

5. Copiez client_sdk.yaml/crypto-config dans le dossier de déploiement

6. Démarrez l'image (docker compose)

7. Paramètres du proxy inverse

Je suppose que tu aimes

Origine blog.csdn.net/aa466564931/article/details/132318125
conseillé
Classement