Skip to content

Latest commit

 

History

History
332 lines (263 loc) · 13.7 KB

README-ES.md

File metadata and controls

332 lines (263 loc) · 13.7 KB

firefly-fabconnect

Esta documentación muestra varias formas de desplegar firefly-fabconnect:

  • Usar fabconnect y la test-network de Fabric del repositorio fabric-samples.

    Este modo ejecuta una instancia de fabconnect usando un contenedor de docker gestionado por docker-compose.

  • Usar fabconnect y test-network-nano-bash de Fabric del repositorio fabric-samples.

    Este modo ejecuta una instancia de fabconnect compilada a partir del código fuente.

  • Usando FireFly CLI.

    El modo FireFly CLI ejecuta algunos supernodos en su máquina. El stack contiene una instancia de firefly-core, firefly-dataexchange-https, ipfs y firefly-sandbox.

👀 For English speaking visit README-EN.

Tabla de contenido

Usando fabconnect y la test-network de Fabric

Este modo ejecuta una instancia de fabconnect usando un contenedor de docker gestionado por docker-compose.

NOTA: Este modo a sido solo probado en Ubuntu 20.04.

Descargue fabric-samples, imágenes de docker y los binarios de fabric

cd $HOME

Para obtener el script de instalación:

curl -sSLO https://raw.githubusercontent.com/hyperledger/fabric/main/scripts/install-fabric.sh && chmod +x install-fabric.sh

Ejecutar el script:

./install-fabric.sh -f 2.4.4 d b s

NOTA: Con esos parámetros se obtienen los contenedores docker de Fabric 2.4.4, se clona el repositorio fabric-samples, y se descargan los binarios de Fabric.

Visitar este enlace para profundizar en las instrucciones de instalación de Fabric ...

Iniciar la red de prueba "test-network"

cd fabric-samples/test-network

Ejecute el siguiente comando para iniciar la red, crear un canal con el nombre predeterminado de mychannel y generar los artefactos criptográficos con Fabric CA:

./network.sh up createChannel -ca -c mychannel

Descargar la configuración

Descarga este repositorio

git clone https://github.com/kmilodenisglez/fabconnect-testnet.git

NOTA: Este repositorio cuenta con un fichero docker-compose que inicia un contenedor de firefly-fabconnect. Esta configurado para montar el volumen de los artefactos criptograficos desde $HOME/fabric-samples/test-network/organizations/.

cd fabconnect

Iniciar fabconect

docker-compose up -d

Visita la url: http://direccion_ip:3000/api

Usando fabconnect y la test-network-nano-bash de Fabric

En este modo se emplea una instancia del fabconnect que construimos a partir del código fuente.

NOTA: Este modo a sido probado en Ubuntu y en Windows 10 con WSL. Se inicio la red con la configuracion minima, con dos orderer nodos (./orderer1.sh y ./orderer2.sh) y un único nodo par de Org1 (./peer1.sh).

Iniciar la red de prueba con "test-network-nano-bash"

👉🏾 Siga las instrucciones para iniciar la red e instalar el chaincode.

Descarga y compilación del fabconnect

Una vez iniciada la red blockchain usando el repositorio test-network-nano-bash se continúa con la descarga y compilación del fabconnect.

cd $HOME

Descargar el repositorio de fabconnect

git clone https://github.com/hyperledger/firefly-fabconnect.git

Compilar fabconnect

go mod vendor
go build -o fabconnect

Mover el binario de FabConnect a /usr/bin/local

  chmod +x fabconnect && sudo cp fabconnect /usr/local/bin/
cd $HOME

Descargar la configuración

Descarga este repositorio

git clone https://github.com/kmilodenisglez/fabconnect-testnet.git

Modificar los ficheros cpp y fabconnect para test-network-nano-bash

Modifique en el archivo CCP fabconnect-testnet/runtime/blockchain/cpp_nanobash.yaml el camino a los artefactos. Donde encuentres '/home/my_user/fabric-samples' lo remplazas por el camino a la carpeta fabric-samples.

Modifique en el archivo fabconnect-testnet/runtime/blockchain/fabconnect_nanobash.yaml las rutas. Dondequiera que encuentre '/home/my_user/fabconnect-testnet', reemplácelo con la ruta a su fabconnect-testnet`.

Iniciar el conector

Antes de iniciar el fabconnect debemos configurar la identidad (signer) que se va emplear para establecer conexión con la red blockchain. El test-network-nano-bash no levanta nodos de Fabric-CA, por lo que se tiene que usar la identidad admin o user1 generada por el script generate_artifacts.sh.

Abrimos en un explorador de fichero el camino donde se almacenan las credenciales. El camino está definido en el archivo CCP "cpp_nanobash.yaml", en la sección cliente.credentialStore.

Para este ejemplo el fabric-samples/test-network-nano-bash se encuentra en el home del usuario.

cd ~/fabric-samples/test-network-nano-bash/crypto-config/peerOrganizations/org1.example.com/users/

Copia el [email protected] para el directorio raiz del /users con el formato siguiente user + @ + MSPID + "-cert.pem" :

Copia el [email protected] para el directorio raiz del /users con el formato siguiente user + @ + MSPID + "-cert.pem" :

NOTA: Ese es el formato que usa el fabric-sdk-go para almacenar un usuario.

Copia y renombra la llave privada priv_sk de cada usuario para el directorio /users/keystore/:

Llave privada del admin:

mkdir -p ./keystore && cp [email protected]/msp/keystore/priv_sk ./keystore/admin_sk

Llave privada del user1:

mkdir -p ./keystore && cp [email protected]/msp/keystore/priv_sk ./keystore/user1_sk

La estructura debería quedar así:

my_user@208996:~/fabric-samples/test-network-nano-bash/crypto-config/peerOrganizations/org1.example.com/users$ ls -l
drwxr-xr-x 4 my_user my_user 4096 Jul 19 09:59 [email protected]
-rw-rw-r-- 1 my_user my_user  810 Jul 19 10:22 [email protected]
drwxrwxr-x 2 my_user my_user 4096 Jul 19 10:28 keystore
drwxr-xr-x 4 my_user my_user 4096 Jul 19 09:59 [email protected]
-rw-rw-r-- 1 my_user my_user  810 Jul 19 10:23 [email protected]
cd $HOME

Utilice el siguiente comando para iniciar el conector:

fabconnect -f "/home/my_user/fabconnect-testnet/runtime/blockchain/fabconnect_nanobash.yaml"

Si se ejecuta bien, la terminal debe mostrar la siguiente salida:

[2022-07-18T21:41:57.125-04:00]  INFO Starting REST gateway
[2022-07-18T21:41:57.376-04:00]  INFO HTTP server listening on 0.0.0.0:3000

Usando firefly-cli

Descarga e instalación del CLI

Sigue los pasos del README oficial para la descarga, y instalación del cli.

Crea un stack de Hyperledger Fabric

El comando ff init crea un nuevo stack y le pide algunos datos, como la cantidad de miembros (organizaciones) que desea en su stack, el nombre de la(s) organización(es) y del(os) nodo(s)-par.

ff init -b fabric --prompt-names stack-fabric

Una vez terminada la ejecución del comando debería ver una salida similar a esta:

initializing new FireFly stack...
number of members: 1
name for org 0: org1
name for node 0: peer1
Stack 'stack-fabric' created!
To start your new stack run:

  ff start stack-fabric

NOTA: Para este ejemplo se creó el stack stack-fabric con un único miembro que nombrado "org1" y un nodo nombrado "peer1".

Ficheros de configuración

NOTA: Los ficheros de configuración de cada stack se encuentran en ~/.firefly/stacks/

Interactuando con el chaincode asset-transfer-basic

En el modo fabconnect con la test-network o test-network-nano-bash de Fabric

NOTA: Para interactuar con los endpoint de fabconnect puede acceder en su navegador al enlace http://direccion_ip:3000/api.

InitLedger

Invoca el endpoint POST /transactions, con los datos siguientes:

{
  "headers": {
    "type": "SendTransaction",
    "signer": "admin",
    "channel": "mychannel",
    "chaincode": "basic"
  },
  "func": "InitLedger",
  "args": [],
  "init": false
}

Como resultado el cliente debe responder con un JSON similar a este:

{
  "headers": {
    "id": "cee5a0b8-e207-49c9-76a2-ca0d106fa139",
    "type": "TransactionSuccess",
    "timeReceived": "2022-07-18T06:00:37.323214822Z",
    "timeElapsed": 2.217562622,
    "requestOffset": "",
    "requestId": ""
  },
  "blockNumber": 6,
  "signerMSP": "Org1MSP",
  "signer": "admin",
  "transactionID": "44574737473df89f0183827f10ede4b5e99563ba44df6b7d48a49763d9179228",
  "status": "VALID"
}

QueryAllAssets

Invoca el endpoint POST /query, con los datos siguientes:

{
  "headers": {
    "signer": "admin",
    "channel": "mychannel",
    "chaincode": "basic"
  },
  "func": "GetAllAssets",
  "args": [],
  "strongread": true
}

Como resultado el cliente debe responder con un JSON similar a este:

{
  "headers": {
    "channel": "mychannel",
    "timeReceived": "",
    "timeElapsed": 0,
    "requestOffset": "",
    "requestId": ""
  },
  "result": [
    {
      "AppraisedValue": 300,
      "Color": "blue",
      "ID": "asset1",
      "Owner": "Tomoko",
      "Size": 5
    },
    {
      "AppraisedValue": 400,
      "Color": "red",
      "ID": "asset2",
      "Owner": "Brad",
      "Size": 5
    },
    ...
  ]
}

En el modo firefly-cli

Si usa firefly-cli puede instalar e interactuar con el chaincode asset-transfer-basic siguiendo los pasos: Trabajando el asset-transfer-basic con firefly-cli

Documentación

Solución de problemas

Si el fabconnect devolvió algún error de tipo TRANSIENT_FAILURE, una posible razón es que debe agregar al hosts los nombres de dominios "peer0.org1.example.com", "orderer.example.com", y "org1.example.com".

Ejecutar la instrucción siguiente:

echo '127.0.0.1 peer0.org1.example.com orderer.example.com org1.example.com' | sudo tee -a /etc/hosts