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

Una vez creado el proyecto de código de cadena, 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 su despliegue manual en Oracle Blockchain Platform.

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

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

Al instalar la extensión Blockchain App Builder para VS Code, se crea automáticamente una red de Hyperledger Fabric con un único 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 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 cadena, seleccione Desplegar.
  2. En el asistente de despliegue:
    • Asegúrese de seleccionar 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 puedan ser 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 tokens. 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 la primera vez que 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 del 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 desplegar, la consola de salida indicará que se ha instalado y desplegado correctamente en el canal determinado.

Solución de problemas

Puede que surjan 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 aparezca 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, un despliegue corrupto, un contenedor de peer de Docker lleno o un peer de Docker que se mata en la red local, puede que vea 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 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 Reconstruir entorno local. Intente realizar el despliegue de nuevo.
Reconstrucción de entorno requerida
Puede ver 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 reconstruir 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 su código de cadenas en una red remota de Oracle Blockchain Platform

Una vez que haya desplegado y probado 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 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 de 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 cadenas, solo es necesario el rol REST_CLIENT. Para desplegar o actualizar el código de cadenas, 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 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, se debe rellenar previamente el nombre del proyecto de código de cadenas.
    • Seleccione el entorno de destino: para el despliegue remoto, seleccione el entorno de Oracle Blockchain Platform que ha 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 desplegar correctamente el código de cadenas en Oracle Blockchain Platform remoto, 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 par y en el 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

Blockchain App Builder gestiona automáticamente la actualización del código de cadenas. Después de realizar cambios en el código de cadenas, despliéguelo de nuevo, lo que le actualizará automáticamente el proyecto. 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 del 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, si es así, se ha recuperado 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 cadenas, utilice la consola y apruebe manualmente el código de cadenas de los participantes.

Empaquetar su proyecto de código de cadena para su 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 solo contiene 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 de software, al ejecutar la función Paquete para el código de cadena TypeScript, se le solicitará 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 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.