Uso y desarrollo de Hyperledger Fabric

Hyperledger Fabric es una tecnología blockchain intersectorial iniciada por la Fundación Linux. Actualmente se utiliza en muchas grandes empresas. No presentaré a HF aquí. Si está interesado, puede prestar atención a su sitio web oficial.

1. Preparación:

Antes de comenzar, se requieren ciertos preparativos, incluida la instalación de varios middleware:

Si ocurren los siguientes problemas al instalar Docker Compose, puede manejarlos de esta manera

pregunta:

El comando 'gcc' falló con el estado de salida 1

yum instalar python-devel

pregunta:

No se pueden desinstalar las 'solicitudes'.

pip install docker-compose --ignorar solicitudes instaladas

Si es necesario, puede instalar dos herramientas de administración, cello y explorer, ambos productos de código abierto en Hyperledger.

2. Implementación de red local (HF2.0+)

Este modo generalmente se usa para que los usuarios aprendan la red Hyperledger Fabric e intenten ejecutar la red de prueba y escribir código localmente. No se usa en el entorno de producción. El entorno de producción usará k8 para implementar redes relacionadas y generalmente solo requiere contratos o apiserver y otros contenidos.

1. La copia del código fuente se realiza mejor cuando la red está abierta.

2. Inicie la red (nodo CouchDB+CA)

./byfn.sh up -a -s couchdb

Inicie CouchDB solo

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

3. Si implica cambiar el código fuente de Hyperledger Fabric, como cambiar su algoritmo de cifrado a secreto nacional, es necesario compilarlo y empaquetarlo, el comando es el siguiente:

(1) Compilación de Fabric: archivos secundarios e imágenes de demostración principales.

make dist-clean all

(2) Compilación de nodos de tejido

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

(3) Implementación fuera de línea, situación general

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

Si falla la carga al guardar, como en el nodo CouchDB, utilice Export-Import en su lugar.

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

3. Instalación de contrato inteligente (HF2.0+)

Después de escribir (o actualizar) el código del contrato inteligente,

(1) Utilice go build para compilar código

(2) Instalación de contrato inteligente (requiere ejecución por cada nodo)

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

(3) Consultar contratos instalados

peer lifecycle chaincode queryinstalled

(4) Organización del nodo de conmutación

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) Reconocimiento de la definición del contrato (requiere implementación por parte de cada organización)

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) Verifique las organizaciones que han reconocido el contrato.

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) Enviar la definición del contrato al Canal.

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) Inicialización del contrato

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) Ejecutar consulta de contrato (código proporcionado)

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

(10) Ejecutar llamada de contrato (código proporcionado)

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. Instalación e implementación de ApiServer (HF2.0+)

La implementación de apiserver es bastante diversa y difiere según los lenguajes utilizados, como go, java y nodejs. Aquí presentamos principalmente los pasos generales sin mostrar los scripts reales.

1. Modifique los parámetros de configuración para generar el archivo de imagen o complete las variables de entrada (si se ha creado una plataforma CI)

2. Genere la imagen (por ejemplo./buildImages.sh apiserver 1.0)

3. Generar herramienta de compilación (makeYaml)

4. Archivo de configuración de cumpleaños, nombre de identificación del contrato/nombre de la red/nombre de identificación de la organización/IP expuesta+puerto/secreto de estado-secreto no de estado (según la red), use la herramienta de compilación en el tercer paso

5. Copie client_sdk.yaml/crypto-config a la carpeta de implementación.

6. Inicie la imagen (composición acoplable)

7. Configuración de proxy inverso

Supongo que te gusta

Origin blog.csdn.net/aa466564931/article/details/132318125
Recomendado
Clasificación