Despliegue del código de cadenas con Visual Studio Code

Después de crear un proyecto de código de cadenas, puede desplegarlo localmente en la red de Hyperledger Fabric generada automáticamente o 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 local de Hyperledger Fabric

Después de crear 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 Visual Studio Code, crea automáticamente una red de Hyperledger Fabric con un solo canal. Se muestra 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.

La red de prueba que se crea al instalar Blockchain App Builder ejecuta Hyperledger Fabric v2.5.7 y Hyperledger Fabric CA v1.5.9.

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

  1. En el panel Detalles de código de canal, 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 cuando se instala la extensión y se puede utilizar para pruebas.
    • Opcionalmente, 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 de NFT, las claves para el parámetro adminList son userId y orgId para TypeScript y UserId y OrgId para Go. Después de desplegar por primera vez, 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 sean 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 (–) junto al parámetro adminList, que seleccionará una matriz vacía.
  3. Haga clic en Desplegar.

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

Solución de problemas

Es posible que se produzcan 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 cadena Go en la red local, es posible que vea un error similar al siguiente texto en la consola Salida:
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: ejecute el siguiente comando para cambiar los permisos de $GOROOT y, a continuación, intente desplegar de nuevo.
sudo chmod -R 777 /usr/local/go
Fallo de despliegue
Debido a un fallo de despliegue, un despliegue corrupto, un contenedor de intercambio de tráfico de Docker lleno o un intercambio de tráfico de Docker parado en la red local, puede que aparezca un error similar al siguiente texto:
============ 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 un contenedor peer que no puede volver a iniciarse 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 Volver a crear entorno local. Intente desplegar de nuevo.
Reconstrucción de entorno necesaria
Es posible que aparezca un error similar al siguiente texto:
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 Volver a crear entorno local.

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

Después de desplegar y probar su 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 Oracle 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 de proxy REST, introduzca la URL de proxy REST 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 Identity Cloud Service también debe tener asignado el rol ADMIN. Para obtener más información sobre los usuarios y roles, consulte Configuración de usuarios y roles de aplicación en Administración de Oracle Blockchain Platform.
  3. Para guardar el entorno, haga clic en Crear. 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 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 canal, seleccione Desplegar.
  3. En el asistente de despliegue, ya se ha especificado el nombre del proyecto de código de cadena.
    • 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.
Después de que el código de cadena se despliegue 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 iguales se ha recuperado correctamente.
  • El proyecto de código de cadena se ha instalado correctamente.
  • El proyecto de código de cadena se ha aprobado y confirmado correctamente.
  • El código de cadena se ha desplegado correctamente en cada peer y en el canal.

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

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, al volver a desplegar, el proyecto se actualiza automáticamente. Al ejecutar el proceso de cambio de versió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 (–) 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 iguales se ha recuperado correctamente.
  • Se realizó una comprobación para determinar si el proyecto de código de cadena ya está instalado y, si es así, se recuperó la versión.
  • La versión del código de cadenas se ha actualizado 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 cadena, utilice la consola y apruebe manualmente el código de cadena de los participantes.

Empaquetar su proyecto de código de cadena para el despliegue manual en Oracle Blockchain Platform

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

La función Package crea un archivo de almacenamiento que sólo contiene los archivos de compilación y distribución. Las carpetas binary, libs, node_modules y test del proyecto de código de cadena no se incluyen. 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 Package (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 de software, al ejecutar la función Package 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 Blockchain App Builder 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 su selección.

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