Uso de los SDK de Hyperledger Fabric para desarrollar aplicaciones

Las aplicaciones utilizan un kit de desarrollo de software (SDK) para acceder a las API que permiten consultas y actualizaciones en el libro mayor.Puede instalar y utilizar los SDK de Hyperledger Fabric para desarrollar aplicaciones para Oracle Blockchain Platform.

Las API de REST proporcionadas por Oracle Blockchain Platform se han creado teniendo en cuenta la máxima flexibilidad; puede llamar a una transacción, llamar a una consulta o ver el estado de una transacción. Consulte API de REST para Oracle Blockchain Platform.

Sin embargo, esta flexibilidad significa que es probable que desee ajustar los puntos finales de API existentes en una aplicación para proporcionar control a nivel de objeto. Las aplicaciones pueden contener operaciones mucho más detalladas.

Versiones de SDK

Hay disponibles varias versiones de los SDK de Hyperledger Fabric. Utilice la versión del SDK que coincida con la versión de Hyperledger Fabric en la que se basa su instancia.

Instalación del SDK de Hyperledger Fabric para Node.js

Puede encontrar información sobre cómo utilizar el SDK de Fabric para Node.js aquí: Documentación del SDK de Hyperledger Fabric para Node.js

En el separador Herramientas de desarrollador, abra el panel Desarrollo de aplicaciones. Puede instalar el SDK de Hyperledger Fabric Node.js mediante el enlace de este separador.

Instalación del SDK de Hyperledger Fabric para Java

Puede encontrar información sobre cómo utilizar el SDK de Fabric para Java aquí: Documentación de SDK de Hyperledger Fabric para Java

En el separador Herramientas de desarrollador, abra el panel Desarrollo de aplicaciones.

Instale una herramienta de creación como Apache Maven.

Estructuración de la aplicación

Estructura la aplicación Java de forma similar al siguiente ejemplo:

/Application
  /artifacts
    /cypto
      /orderer
        Contains the certificates required for the application to act on the orderer node
        In participant instances only contains TLS certificates
      /peer
        Contains the certificates required for the application to act on the peer node
    /src
      chaincode.go if installing and deploying chaincode to the blockchain
  /java
    pom.xml or other build configuration files
    /resources
      Any resources used by the Java code, including artifacts such as the endorsement policy yaml file and blockchain configuration properties
    /src
      Java source files

Estructura la aplicación Node.js de forma similar al siguiente ejemplo:

/Application
  /artifacts
    /cypto
      /orderer
        Contains the certificates required for the application to act on the orderer node
        In participant instances only contains TLS certificates
      /peer
        Contains the certificates required for the application to act on the peer node
    /src
      chaincode.go if installing and deploying chaincode to the blockchain
  /node
    package.json file
    application.js
    /app
      Any javascript files called by the application
      /tools

Ejecución de la aplicación

Ya está listo para ejecutar y probar la aplicación. Además de los mensajes de estado devueltos por la aplicación, puede comprobar el libro mayor en la consola de Oracle Blockchain Platform para ver los cambios:

  1. Vaya al separador Canales de la consola y, a continuación, busque y haga clic en el nombre del canal que ejecuta el código de cadenas.
  2. En el panel Libro mayor del canal, consulte el resumen del libro mayor del código de cadenas.

Actualización de los SDK de Hyperledger Fabric v2.x para trabajar con Oracle Blockchain Platform

Hay una incompatibilidad entre un componente de infraestructura de OCI y el SDK de Java proporcionado con Hyperledger Fabric v2.x. Siga los pasos de este tema para corregir este problema.

Métodos de actualización del SDK de Hyperledger Fabric

Hay dos formas de actualizar el SDK:

  • Descargue el paquete modificado desde la consola. Hemos creado un archivo grpc-netty-shaded-1.38.0.jar actualizado, que es el módulo al que hace referencia el SDK de Java que necesita modificaciones.
  • Cree el paquete manualmente, como se describe en este tema.

Para descargar el archivo grpc-netty-shaded-1.38.0.jar, haga clic en el separador Herramientas de desarrollador de la consola y, a continuación, seleccione el panel Desarrollo de aplicaciones.

Creación manual del paquete

Para el proyecto fabric-sdk-java, realice los siguientes pasos para reconstruir el paquete grpc-netty-shaded para conectar los peers y los solicitantes con el cliente grpcs (mediante TLS). El paquete grpc-netty-shaded es un subproyecto de grpc-java.

  1. Instalar dependencias de proyecto:
    mvn install
  2. Descargue el código fuente grpc-java:

    git clone https://github.com/grpc/grpc-java.git
  3. Busque la versión grpc que utiliza fabric-sdk-java y desproteja el código.
    En el directorio grpc-java, desproteja la versión de grpc que utiliza fabric-sdk-java:
    cd grpc-java && git checkout v1.38.0
  4. Cambie el código para evitar un error alpn del servidor. Cree un archivo de parche grpc-java-patch con el siguiente contenido:
    diff --git a/netty/src/main/java/io/grpc/netty/ProtocolNegotiators.java b/netty/src/main/java/io/grpc/netty/ProtocolNegotiators.java
    index 19d3e01b7..ebc4786a3 100644
    — a/netty/src/main/java/io/grpc/netty/ProtocolNegotiators.java
    +++ b/netty/src/main/java/io/grpc/netty/ProtocolNegotiators.java
    @@ -611,7 +611,8 @@ final class ProtocolNegotiators {
    SslHandshakeCompletionEvent handshakeEvent = (SslHandshakeCompletionEvent) evt;
    if (handshakeEvent.isSuccess()) {
    SslHandler handler = ctx.pipeline().get(SslHandler.class);
    
        if (sslContext.applicationProtocolNegotiator().protocols()
        + if (handler.applicationProtocol() == null
        + || sslContext.applicationProtocolNegotiator().protocols()
        .contains(handler.applicationProtocol())) {
        // Successfully negotiated the protocol.
        logSslEngineDetails(Level.FINER, ctx, "TLS negotiation succeeded.", null);
  5. Aplique el parche:

    git apply grpc-java.patch
  6. Cree el proyecto para generar el paquete con parches de destino. Utilice gradle para crear el proyecto grpc-java-shaded:

    cd netty/shaded
    gradle build -PskipAndroid=true -PskipCodegen=true

    Una vez finalizada la creación, el paquete .jar con parches de destino está disponible en grpc-java/netty/build/libs/grpc-netty-shaded-1.38.0.jar.

  7. Agregue el paquete con parches al repositorio local de Maven.

    Sustituya el paquete grpc-netty-shaded .jar original por el paquete con parches de una de las dos maneras siguientes:
    • Utilice Maven para instalar el paquete por archivo local:
      mvn install:install-file -Dfile=grpc-netty-shaded-build/grpc-netty-shaded-1.38.0.jar -DgroupId=io.grpc -DartifactId=grpc-netty-shaded -Dversion=1.38.0 -Dpackaging=jar
      Debe mantener el destino groupid, artifactid y version igual que el paquete que desea sustituir.
    • Sustituya manualmente el paquete. Vaya al repositorio de Maven local, busque el directorio donde se encuentra el paquete de destino y sustituya el paquete por el paquete con parches.

  8. Ejecute el proyecto.