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
- Puede instalar el SDK de Java de Hyperledger Fabric mediante el enlace de este separador.
- (Hyperledger Fabric v2.x) Si ya ha instalado el SDK anteriormente, debe modificarlo para que funcione con Oracle Blockchain Platform siguiendo las instrucciones de Actualización de los SDK de Hyperledger Fabric v2.x para trabajar con Oracle Blockchain Platform.
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:
- 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.
- 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
.
-
Instalar dependencias de proyecto:
mvn install
-
Descargue el código fuente
grpc-java
:git clone https://github.com/grpc/grpc-java.git
- Busque la versión
grpc
que utilizafabric-sdk-java
y desproteja el código.En el directoriogrpc-java
, desproteja la versión degrpc
que utilizafabric-sdk-java
:cd grpc-java && git checkout v1.38.0
-
Cambie el código para evitar un error
alpn
del servidor. Cree un archivo de parchegrpc-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);
-
Aplique el parche:
git apply grpc-java.patch
-
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 engrpc-java/netty/build/libs/grpc-netty-shaded-1.38.0.jar
. -
Agregue el paquete con parches al repositorio local de Maven.
Sustituya el paquetegrpc-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:
Debe mantener el destinomvn 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
groupid
,artifactid
yversion
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.
-
-
Ejecute el proyecto.