[Experience Post] Tutorial del sitio web oficial de Hyperledge Fabric2.2

Hyperledge Fabric 2.2: "primeros pasos"

Si puede, intente leer el texto original directamente
https://hyperledger-fabric.readthedocs.io/en/release-2.2/install.html
Si el tiempo es corto, puede leer este artículo.

1. Preinstalación de software

Se recomienda instalarlo directamente en el sistema Linux (puede instalar una máquina virtual).
(1) Instalar Git, cURL, Docker
(2) Instalar Fabric

Para obtener más información, consulte
https://hyperledger-fabric.readthedocs.io/en/release-2.2/prereqs.html

2. Comprender la red de prueba

(1) Confirme que el software preinstalado se haya instalado correctamente
(2) Ejecute la red
Introduzca la ruta del archivo donde se encuentra la red de prueba; cierre la red, elimine el contenedor ejecutado anteriormente, los datos de autenticación y el código de cadena.

$ cd fabric/test-network
$ ./network.sh down  

Inicie la red con la configuración predeterminada, utilice el método de cifrado predeterminado y no utilice la autenticación de CA;

$ ./network up

Si desea iniciar un canal predeterminado mientras inicia la red, puede reemplazar el comando anterior con:

 ./network.sh up createChannel

Si necesita personalizar el nombre del canal

$ ./network createChannel -c 自定义通道名称

El efecto de iniciar con éxito el canal es el siguiente:

========= Channel successfully joined ===========

Vea los componentes que se ejecutan actualmente en Docker:

$ docker ps
CONTAINER ID        IMAGE                              COMMAND             CREATED              STATUS              PORTS                              NAMES
7742350cc363        hyperledger/fabric-peer:2.1.1      "peer node start"   About a minute ago   Up About a minute   7051/tcp, 0.0.0.0:9051->9051/tcp   peer0.org2.example.com
f55947826039        hyperledger/fabric-peer:2.1.1      "peer node start"   About a minute ago   Up About a minute   0.0.0.0:7051->7051/tcp             peer0.org1.example.com
7de556f811ac        hyperledger/fabric-orderer:2.1.1   "orderer"           About a minute ago   Up About a minute   0.0.0.0:7050->7050/tcp             orderer.example.com

Comando de implementación de contrato:

./network.sh deployCC

Verifique el contenido de la ventana acoplable nuevamente después de la implementación:

$ ./network.sh deployCC
CONTAINER ID        IMAGE                                                                                                                                                                    COMMAND                  CREATED             STATUS              PORTS                              NAMES
ffa3c594fdc3        dev-peer0.org1.example.com-basic_1.0-4ec191e793b27e953ff2ede5a8bcc63152cecb1e4c3f301a26e22692c61967ad-42f57faac8360472e47cbbbf3940e81bba83439702d085878d148089a1b213ca   "chaincode -peer.add…"   3 minutes ago       Up 3 minutes                                           dev-peer0.org1.example.com-basic_1.0-4ec191e793b27e953ff2ede5a8bcc63152cecb1e4c3f301a26e22692c61967ad
72bb69e91f9a        dev-peer0.org2.example.com-basic_1.0-4ec191e793b27e953ff2ede5a8bcc63152cecb1e4c3f301a26e22692c61967ad-6c0d5b0755cb92ed5555bd2e8a8765a6f425d1ed5ed9a90e625e01939e2113be   "chaincode -peer.add…"   3 minutes ago       Up 3 minutes                                           dev-peer0.org2.example.com-basic_1.0-4ec191e793b27e953ff2ede5a8bcc63152cecb1e4c3f301a26e22692c61967ad
7742350cc363        hyperledger/fabric-peer:2.1.1                                                                                                                                            "peer node start"        10 minutes ago      Up 10 minutes       7051/tcp, 0.0.0.0:9051->9051/tcp   peer0.org2.example.com
f55947826039        hyperledger/fabric-peer:2.1.1                                                                                                                                            "peer node start"        10 minutes ago      Up 10 minutes       0.0.0.0:7051->7051/tcp             peer0.org1.example.com
7de556f811ac        hyperledger/fabric-orderer:2.1.1                                                                                                                                         "orderer"                10 minutes ago      Up 10 minutes       0.0.0.0:7050->7050/tcp             orderer.example.com

Se puede encontrar que el contenedor de código de cadena se inicia en los dos nodos de organización.

3. Experimente la interacción contractual

(1) Configuración de los parámetros del entorno Se
recomienda abrir el archivo de configuración del entorno del sistema, el comando es el siguiente:

$ sudo gedit /etc/profile
$ source /etc/profile 

Agrega dos líneas de código:

$ export PATH=上级目录/fabric/bin/
#将peer等命令路径预规划,便于直接使用
$ export FABRIC_CFG_PATH=上级目录/fabric/bin/
#指定配置文件路径 

El código anterior solo debe cambiarse cuando se mueve la carpeta de la tela.
Luego, regrese a la carpeta test-network :
Ejecute el siguiente código en el terminal, es decir, configure los permisos de usuario actuales en Org1

 # Environment variables for Org1 
 以org1权限运行peer
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

En este punto, se ha completado la configuración de los parámetros ambientales del permiso Org1.
(2) Inicialización del
código de cadena Primero inicialice la información del libro mayor y proporcione la información del activo original. Necesitas abrir una terminal e ingresar en cualquier ruta:

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":[]}'

Si tiene éxito, le indicará:

[chaincodeCmd] chaincodeInvokeOrQuery -> INFO 001 Chaincode invoke successful. result: status:200 

Ahora puede usar CLI para consultar activos en la cadena.

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

Si los datos de la consulta son correctos, se generará la siguiente información:

[{
    
    "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}]

A continuación, continuamos activando el código de cadena.
Cuando un miembro de la red desea transferir o cambiar el registro de activos en el libro mayor, se llamará y activará el código de cadena.
Intentemos cambiar los activos de datos del libro mayor primero ingresando el siguiente comando:

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":["asset6","Christopher"]}'

Aquí cambiamos el propietario de "asset6" de Michel a Christopher.
Si la operación se realiza correctamente, puede ver el siguiente resultado:

[chaincodeCmd] chaincodeInvokeOrQuery -> INFO 001 Chaincode invoke successful. result: status:200 

En este punto, podemos verificar si los activos de la cadena se han actualizado:

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

El resultado es el siguiente:

[{
    
    "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":"Christopher","appraisedValue":800}]

Se puede encontrar que Michel en el activo actual6 se ha actualizado a Christopher.
(3) Consulta de información en la cadena
Para enriquecer la experiencia, ahora cambiamos la configuración del sistema y cambiamos a los permisos org2.

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

Luego use el comando peer para consultar:

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

Resultado de salida:

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

En este punto, la función de consulta de datos se verifica con éxito.
(4) Apague la red

./network.sh down

Todos los nodos y servicios se cerrarán en este momento y se eliminarán todos los datos de la red.

(5) Certificación CA
cuando se usa

./network.sh up

Al iniciar la red, la herramienta de cifrado se utiliza para generar certificados y claves de forma predeterminada.
La página de visualización es la siguiente:

##########################################################
##### Generate certificates using cryptogen tool #########
##########################################################

##########################################################
############ Create Org1 Identities ######################
##########################################################
+ cryptogen generate --config=./organizations/cryptogen/crypto-config-org1.yaml --output=organizations
org1.example.com
+ res=0
+ set +x
##########################################################
############ Create Org2 Identities ######################
##########################################################
+ cryptogen generate --config=./organizations/cryptogen/crypto-config-org2.yaml --output=organizations
org2.example.com
+ res=0
+ set +x
##########################################################
############ Create Orderer Org Identities ###############
##########################################################
+ cryptogen generate --config=./organizations/cryptogen/crypto-config-orderer.yaml --output=organizations
+ res=0
+ set +x

Si desea iniciar la red a través de la certificación CA, puede hacer lo siguiente:

$ ./network.sh down
$ ./network.sh up -ca 指明ca选项并启动网络

Todos los certificados de identidad públicos de la organización creados por la CA comparten el mismo certificado raíz.
Puede pasar

$ docker ps

Ver el contenedor que se está ejecutando actualmente:

CONTAINER ID        IMAGE                              COMMAND                  CREATED             STATUS                  PORTS                              NAMES
595627111b48        hyperledger/fabric-peer:2.1.1      "peer node start"        1 second ago        Up Less than a second   0.0.0.0:7051->7051/tcp             peer0.org1.example.com
6e60ae003206        hyperledger/fabric-orderer:2.1.1   "orderer"                1 second ago        Up Less than a second   0.0.0.0:7050->7050/tcp             orderer.example.com
013721847d3f        hyperledger/fabric-peer:2.1.1      "peer node start"        1 second ago        Up Less than a second   7051/tcp, 0.0.0.0:9051->9051/tcp   peer0.org2.example.com
5e7aced69e8d        hyperledger/fabric-ca:latest       "sh -c 'fabric-ca-se…"   15 seconds ago      Up 14 seconds           0.0.0.0:7054->7054/tcp             ca_org1
1f7ae4e461e4        hyperledger/fabric-ca:latest       "sh -c 'fabric-ca-se…"   15 seconds ago      Up 14 seconds           7054/tcp, 0.0.0.0:8054->8054/tcp   ca_org2
5a0ddf2ba098        hyperledger/fabric-ca:latest       "sh -c 'fabric-ca-se…"   15 seconds ago      Up 14 seconds           7054/tcp, 0.0.0.0:9054->9054/tcp   ca_orderer

Se puede encontrar que no importa el nodo peer u ordenante en la organización, se generará el ca-contenedor correspondiente para identificar la identidad.

Si el paquete del árbol está instalado (si no, use apt-get install tree para instalar)

└── msp
    ├── cacerts
    │   └── localhost-7054-ca-org1.pem
    ├── config.yaml
    ├── IssuerPublicKey
    ├── IssuerRevocationPublicKey
    ├── keystore
    │   └── 588bd82c95c1f6768d8fbbe9eb93101f6e1838279e7aee43253d2131c29e4c34_sk
    ├── signcerts
    │   └── cert.pem
    └── user

4. Revisión

(1) ./network.sh crea claves y certificados para las dos organizaciones pares y la organización que realiza el pedido; el script predeterminado llamará a la herramienta de cifrado en la carpeta organizaciones / criptogen. Si usa la marca -ca para crear una CA, el script llamará al documento de configuración del servicio Fabric CA y al script registerEnroll.sh. Tanto el componente CA como la herramienta de cifrado predeterminada han creado materiales cifrados y carpetas MSP en la carpeta de organizaciones para las tres organizaciones.

(2) La herramienta configxgen se llama en el script para crear el bloque génesis del canal del sistema. El archivo del canal de configuración se encuentra en / fabric / config, y el bloque de génesis creado se almacena en la carpeta / fabric / test-network / system-genesis-block.

(3) Después de que el material de cifrado y el bloque de génesis del canal del sistema se hayan creado con éxito, el script llamará al archivo fabric / test-network / docker / docker-compose-test-net.yaml para crear el nodo de organización y el nodo de empaquetado.

(4) El subcomando createChannel llama a configtx.yaml para crear los canales peer0.org1.example.com y peer0.org2.example.com.

(5) Cuando se llama al comando deployCC, se llamará al script /test-network/script/deployCC.sh para instalar el código de cadena en todos los nodos y definir el código de cadena en el canal (declarar la interfaz). Una vez que el código de la cadena se carga en el canal, el nodo llama a Init a través de la herramienta cli para activar / activar el código de la cadena.

Supongo que te gusta

Origin blog.csdn.net/weixin_43347204/article/details/108148590
Recomendado
Clasificación