Despliegue de su código de cadenas con Visual Studio Code

Una vez creado el proyecto de código de cadenas, puede desplegarlo localmente en la red de Hyperledger Fabric generada automáticamente, o bien de forma remota en Oracle Blockchain Platform Cloud o Enterprise Edition. También puede empaquetar el proyecto de código de cadenas para el despliegue manual en Oracle Blockchain Platform.

Despliegue del código de cadenas en una red de Hyperledger Fabric local

Una vez que haya creado el proyecto de código de cadenas, puede probarlo en una red básica de Hyperledger Fabric local.

Cuando instala la extensión Blockchain App Builder para VS Code, crea automáticamente una red de Hyperledger Fabric con un solo canal. Se mostrará como Local Environment en el panel Entornos. No puede suprimir ni modificar este entorno; solo puede desplegar códigos de cadenas en él y volver a crearlo si deja de funcionar correctamente.

El despliegue de código de cadena de Blockchain App Builder inicia la red básica de Hyperledger Fabric, otros servicios, e instala y despliega el código de cadena por usted.

  1. En el panel Detalles de código de cadena, seleccione Desplegar.
  2. En el asistente de despliegue:
    • Asegúrese de que se ha seleccionado el nombre de código de cadenas correcto.
    • Seleccione el entorno de destino. Para el despliegue local, seleccione Entorno local.
    • Seleccione el canal en el que desea desplegar. Un canal denominado "mychannel" se crea por defecto con la instalación de la extensión y se puede utilizar para pruebas.
    • De manera opcional, introduzca los parámetros iniciales que sean necesarios.
    • Para los proyectos de token, la primera vez que despliegue debe introducir una lista de administradores de token como parámetro. La lista es una matriz de información {user_id, org_id} que especifica los administradores de token. Para la red local de Hyperledger Fabric, utilice el valor Org1MSP para el campo org_id. Para los códigos de cadenas NFT, las claves del parámetro adminList son userId y orgId para TypeScript, UserId y OrgId para Go. Después de la primera vez que realice el despliegue, puede proporcionar una matriz vacía para el parámetro adminList o puede utilizar el parámetro adminList para agregar administradores de token. Otros desplegadores que no son el primer desplegador deben proporcionar una matriz vacía para el parámetro adminList. Para ello, abra la lista de parámetros Init en el panel de despliegue y, a continuación, haga clic en el botón de signo menos (-) situado junto al parámetro adminList, que seleccionará una matriz vacía.
  3. Haga clic en Desplegar.

Cuando el código de cadenas haya terminado de desplegarse, la consola de salida indicará que se ha instalado y desplegado correctamente en el canal especificado.

Solución de problemas

Puede encontrar los siguientes problemas al ejecutar el proyecto de código de cadenas en una red local.

Faltan permisos de Go
Al instalar el proyecto de código de cadenas Go en la red local, es posible que vea un error similar al siguiente en la consola Output:
INFO (Runtime): 2020/06/22 22:57:09 build started

INFO (Runtime): Building ....

INFO (Runtime): go build runtime/cgo: copying /Users/myname/Library/Caches/go-build/f8/.….….d: open /usr/local/go/pkg/darwin_amd64/runtine/ 
cgo.a: permission denied

ERROR (Runtime): go build runtine/cgo: copying /Users/myname/Library/Caches/go-build/f8/.….….d: open /usr/local/go/pkg/darwin_amd64/runtime/
cgo.a: permission denied

INFO (Runtime): An error occurred while building: exit status 1
Esto se debe a que faltan permisos para Go. Este error solo se ha visto en Mac OS. Se trata de un problema conocido:
Solución: cambie los permisos de $GOROOT e intente desplegar de nuevo:
sudo chmod -R 777 /usr/local/go
Fallo de despliegue
Debido a un fallo de despliegue, a un despliegue corrupto, a que un contenedor de peer de Docker esté lleno o a que un peer de Docker se haya matado en la red local, puede que aparezca un error similar a:
============ Started instantiate Chaincode ============
[2028-19-01T19:25:lO.372] [ERROR] default - Error instantiating Chaincode GollGl on channel mychannel, detailed 
error: Error: error starting container: error starting container: Failed to generate platform-specific docker 
build: Failed to pull hyperledger/fabric-ccenv:latest : API error (404): manifest for hyperledger/ 
fabric-ccenv:latest not found: manifest unknown: manifest unknown [2020-19-01T19:25:10.372] (INFO) default -
============ Finished instantiate Chaincode ============
[2020-19-01119:25:10.372] [ERROR] default - Error: Error instantiating Chaincode Goll01 on channel mychannel, 
detailed error: Error: error starting container: error starting container: Failed to generate platfom-specific 
docker build: Failed to pull hyperledger/fabric-ccenv: latest : API error (404): manifest for hyperledger/ 
fabric-ccenv:lalest not found: manifest unknown: manifest unknown exited: signal: terminated 
INFO: exited: signal: terminated

ERROR: Error in Chaincode deployment
Esto se debe a que un contenedor peer no se puede volver a iniciar correctamente.
Solución: vuelva a crear el tiempo de ejecución seleccionando el entorno local en el panel Entornos, haciendo clic con el botón derecho y seleccionando Reconstruir entorno local. Intente desplegar de nuevo.
Reconstrucción de entorno requerida
Puede que aparezca un error similar a:
Starting ca.example.com ... 
Starting orderer.example.com ... 
Starting orderer.example.com ... error
ERROR: for orderer.example.com  
Cannot start service orderer.example.com: 
error while creating mount source path '/host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0/node_modules/@oracle/ochain-cli/runtime/network/basic-network/config': mkdir /host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0: operation not permitted
Starting ca.example.com... error
ERROR: for ca.example.com  
Cannot start service ca.example.com: error while creating mount source path '/host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0/node_modules/@oracle/ochain-cli/runtime/network/basic-network/crypto-config/peerOrganizations/org1.example.com/ca': mkdir /host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0: operation not permitted
ERROR: for orderer.example.com  
Cannot start service orderer.example.com: error while creating mount source path '/host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0/node_modules/@oracle/ochain-cli/runtime/network/basic-network/config': mkdir /host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0: operation not permitted
ERROR: for ca.example.com  
Cannot start service ca.example.com: error while creating mount source path '/host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0/node_modules/@oracle/ochain-cli/runtime/network/basic-network/crypto-config/peerOrganizations/org1.example.com/ca': mkdir /host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0: operation not permitted
Encountered errors while bringing up the project.
ERROR: Starting ca.example.com ... 
Starting orderer.example.com ... 
Starting orderer.example.com ... error
ERROR: for orderer.example.com  
Cannot start service orderer.example.com: error while creating mount source path '/host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0/node_modules/@oracle/ochain-cli/runtime/network/basic-network/config': mkdir /host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0: operation not permitted
Starting ca.example.com ... error
ERROR: for ca.example.com  
Cannot start service ca.example.com: error while creating mount source path '/host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0/node_modules/@oracle/ochain-cli/runtime/network/basic-network/crypto-config/peerOrganizations/org1.example.com/ca': mkdir /host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0: operation not permitted
ERROR: for orderer.example.com  
Cannot start service orderer.example.com: error while creating mount source path '/host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0/node_modules/@oracle/ochain-cli/runtime/network/basic-network/config': mkdir /host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0: operation not permitted
ERROR: for ca.example.com  
Cannot start service ca.example.com: error while creating mount source path '/host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0/node_modules/@oracle/ochain-cli/runtime/network/basic-network/crypto-config/peerOrganizations/org1.example.com/ca': mkdir /host_mnt/c/Users/opc/.vscode/extensions/oracle.oracle-blockchain-1.4.0: operation not permitted
Encountered errors while bringing up the project.
ERROR: Error in Chaincode deployment
Debe volver a crear el entorno local. En el panel Entornos del creador de aplicaciones, haga clic con el botón derecho en el entorno local y seleccione Reconstruir entorno local.

Despliegue de su código de cadenas en una red remota de Oracle Blockchain Platform

Después de desplegar y probar el proyecto de código de cadenas en una red local para asegurarse de que funciona según lo diseñado, puede desplegarlo en Oracle Blockchain Platform.

Creación de una configuración de conexión a una instancia de Oracle Blockchain Platform

Debe tener una instancia de Blockchain Platform activa y en ejecución para completar este paso.

  1. En el panel Entornos de Visual Studio Code, haga clic en el icono Crear entorno.
  2. En el asistente Detalles de Entornos:
    • Introduzca el nombre de su entorno remoto.
    • Introducir una descripción.
    • En URL remota, introduzca la URL de la instancia remota de Oracle Blockchain Platform.
    • Introduzca el nombre de usuario y la contraseña de Oracle Identity Cloud Service para un usuario de Oracle Blockchain Platform con los roles ADMIN o REST_CLIENT. Para llamar al código de cadena, solo es necesario el rol REST_CLIENT. Para desplegar o actualizar el código de cadena, el usuario de IDCS también debe tener asignado el rol ADMIN. Para obtener más información sobre los usuarios y los roles, consulte Configuración de usuarios y roles de aplicación.
  3. Haga clic en Crear para guardar el entorno. El nombre de usuario y la contraseña se guardan temporalmente en la sesión local de Visual Studio Code. Si cierra Visual Studio Code y, a continuación, inicia una nueva sesión de Visual Studio Code, debe volver a introducir el nombre de usuario y la contraseña.

Despliegue de su código de cadenas

  1. Seleccione el proyecto de código de cadenas que desea desplegar en el panel Códigos de cadenas.
  2. En el panel Detalles de código de cadena, seleccione Desplegar.
  3. En el asistente de despliegue, el nombre del proyecto de código de cadenas se debe rellenar previamente.
    • Seleccione el entorno de destino. Para el despliegue remoto, seleccione el entorno de Oracle Blockchain Platform que haya configurado anteriormente.
    • Introduzca el nombre del canal en el que desea desplegar.
    • De manera opcional, defina los parámetros iniciales necesarios.
  4. Haga clic en Desplegar.
Una vez que el código de cadena se haya desplegado correctamente en la instancia remota de Oracle Blockchain Platform, el log de la consola mostrará que se han producido los siguientes eventos:
  • Los detalles de Oracle Blockchain Platform se han recuperado correctamente.
  • La lista de peers se ha recuperado correctamente.
  • El proyecto de código de cadenas se ha instalado correctamente.
  • El proyecto de código de cadenas se ha aprobado y confirmado correctamente.
  • El código de cadenas se ha desplegado correctamente en cada peer y canal.

En un entorno con varias organizaciones, para volver a desplegar el código de cadenas en el mismo canal a través de una instancia de participante, utilice la consola para desplegar el código de cadenas.

Actualización del proyecto Chaincode

La actualización del código de cadenas se gestiona automáticamente mediante Blockchain App Builder. Después de realizar cambios en el código de cadenas, solo tiene que volver a desplegarlo, lo que le permitirá actualizar automáticamente el proyecto. Al ejecutar el proceso de actualización, puede transferir una matriz vacía para el parámetro adminList o utilizar el parámetro adminList para agregar administradores de token. Si no es el primer desplegador, debe proporcionar una matriz vacía para el parámetro adminList. Para transferir una matriz vacía para el parámetro adminList, abra la lista de parámetros Init en el panel de despliegue y, a continuación, haga clic en el botón de signo menos (-) situado junto al parámetro adminList, que seleccionará una matriz vacía.

Si la actualización se realiza correctamente, el log mostrará que se han producido los siguientes eventos:
  • Los detalles de Oracle Blockchain Platform se han recuperado correctamente.
  • La lista de peers se ha recuperado correctamente.
  • Se ha realizado una comprobación para determinar si el proyecto de código de cadenas ya está instalado y, de ser así, se ha recuperado la versión.
  • La versión del código de cadenas se actualizó correctamente (por ejemplo, de la versión 1.0 a la 2.0).

En un entorno con varias organizaciones, para actualizar el código de cadenas, utilice la consola y apruebe manualmente el código de cadenas de los participantes.

Empaquete su proyecto Chaincode para el despliegue manual en Oracle Blockchain Platform

Puede empaquetar sus proyectos de código de cadenas para el despliegue manual en Oracle Blockchain Platform Cloud o Enterprise Edition.

La función Package crea un archivo de almacenamiento que contiene sólo los archivos de generación y distribución. Las carpetas binary, libs, node_modules y test del proyecto de código de cadenas no están incluidas. Este archivo de almacenamiento se puede cargar manualmente en Oracle Blockchain Platform para su despliegue.

  1. Seleccione el proyecto de código de cadenas en el panel Códigos de cadenas.
  2. Haga clic con el botón derecho y seleccione Paquete.
  3. Seleccione una ubicación en la que guardar el paquete y, a continuación, haga clic en Seleccionar Carpeta de Salida.

Debido a los cambios en los requisitos del software, al ejecutar la función Paquete para el código de cadena TypeScript, se le solicita la fecha de aprovisionamiento de la instancia de Oracle Blockchain Platform para la que desea crear el paquete. El código de cadena TypeScript creado en el creador de aplicaciones de blockchain no es compatible con las versiones anteriores de Oracle Blockchain Platform sin cambios en la infraestructura subyacente. Blockchain App Builder empaqueta la infraestructura de código de cadenas según corresponda en función de su selección.

Cuando el comando se completa correctamente, se devuelve la ubicación del paquete.