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, esto 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
- Puede instalar el SDK de Hyperledger Fabric Node.js mediante el enlace de este separador.
- (Hyperledger Fabric v1.4.7) Si ya lo ha instalado, debe modificarlo para que funcione con Oracle Blockchain Platform siguiendo las instrucciones de Actualización de los SDK de Hyperledger Fabric v1.4.7 para trabajar con Oracle Blockchain Platform.
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 lo ha instalado 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.
- (Hyperledger Fabric v1.4.7) Si ya lo ha instalado, debe modificarlo para que funcione con Oracle Blockchain Platform siguiendo las instrucciones de Actualización de los SDK de Hyperledger Fabric v1.4.7 para trabajar con Oracle Blockchain Platform.
Instale una herramienta de creación como Apache Maven.
Estructura de la aplicación
La aplicación Java debe estar estructurada de forma similar a la siguiente:
/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
La aplicación Node.js debe estar estructurada de forma similar a la siguiente:
/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 Channels de la consola, localice y haga clic en el nombre del canal que ejecuta la cadena de bloques.
- 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.
Actualización de los SDK de Hyperledger Fabric v1.4.7 para trabajar con Oracle Blockchain Platform
Hay una incompatibilidad entre un componente de infraestructura de OCI y los SDK Node.js y Java proporcionados con Hyperledger Fabric v1.4.7. Siga los pasos de este tema para corregir este problema.
Métodos de actualización de los SDK de Hyperledger Fabric
Hay dos formas de actualizar el SDK:
- Uso de scripts de Oracle para descargar e instalar el SDK de Node.js o el SDK de Java, que aplicará parches al código mientras se instala.
- Manualmente como se describe en este tema.
Para utilizar los scripts, en el separador Herramientas de desarrollador de la consola, seleccione el panel Desarrollo de aplicaciones. Los enlaces para descargar el SDK de Node.js y el SDK de Java tienen actualizaciones incorporadas que aplicarán parches al código mientras se instala.
- SDK de Fabric Java: hemos creado un archivo
grpc-netty-1.23.0.jar
actualizado, que es el módulo al que hace referencia el SDK de Java que requiere modificaciones. - SDK de Fabric Node.js: hemos creado la secuencia de comandos
npm_bcs_client.sh
para sustituir las operaciones estándar de Fabricnpm install
que los usuarios realizarían para descargar e instalar el paquete de cliente de Fabric Node.js. La secuencia de comandos ejecuta el mismo comando npm, pero también aplica un parche al componente necesario y lo reconstruye.
Actualización manual del SDK de Fabric Node.js
grpc-node
para conectar los iguales y los encargados con el cliente grpcs (mediante TLS).
-
Instale
fabric-client
sin ejecutar el script de compilación del módulo grpc:npm install --ignore-scripts fabric-client
-
En Windows, debe desactivar ALPN explícitamente.
- Actualice
node_modules/grpc/binding.gyp
cambiando:
to'_WIN32_WINNT=0x0600'
'_WIN32_WINNT=0x0600','TSI_OPENSSL_ALPN_SUPPORT=0'
- Debido al problema descrito en https://github.com/nodejs/node/issues/4932, para crear
grpc-node
en Windows, primero debe eliminar<node_root_dir>/include/node/openssl/
. Ejecute lo siguiente para buscar<node_root_dir>
:node-gyp configure
- Actualice
-
Reconstruir
grpc
npm rebuild --unsafe-perm --build-from-source
Actualización manual del SDK de Java de Fabric
Para fabric-sdk-java
, realice los siguientes pasos para reconstruir el paquete grpc-netty
para conectar los iguales y los solicitantes con el cliente grpcs (mediante tls). grpc-netty
es un subproyecto de grpc-java
.
-
Instalar dependencias de proyecto:
mvn install
-
Descarga 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.Las diferentes versiones de
fabric-sdk-java
pueden utilizar una versión diferente degrpc
. Compruebepom.xml
para averiguar qué versión degrpc
utilizafabric-sdk-java
. Por ejemplo,fabric-sdk-java 1.4.11
utilizagrpc-java 1.23.0
como se encuentra en supom.xml
: https://github.com/hyperledger/fabric-sdk-java/blob/v1.4.11/pom.xml.En el directoriogrpc-java
, desproteja la versión degrpc
que utilizafabric-sdk-java
:git checkout -b v1.23.0
-
Cambie el código para evitar un error
alpn
del servidor.- Cambie el código de destino de
grpc-java_root/netty/src/main/java/io/grpc/netty/ProtocolNegotiators.java
- En la función
userEventTriggered0
, cambie:
toif (NEXT_PROTOCOL_VERSIONS.contains(handler.applicationProtocol())) {
El código tendrá un aspecto parecido a:if (handler.applicationProtocol() == null || NEXT_PROTOCOL_VERSIONS.contains(handler.applicationProtocol())) {
@Override protected void userEventTriggered0(ChannelHandlerContext ctx, Object evt) throws Exception { ... if (handler.applicationProtocol() == null || NEXT_PROTOCOL_VERSIONS.contains(handler.applicationProtocol())) { // Successfully negotiated the protocol. logSslEngineDetails(Level.FINER, ctx, "TLS negotiation succeeded.", null); ... }
- Cambie el código de destino de
-
Cree el proyecto para generar el paquete con parches de destino. Utilice gradle para crear el proyecto
grpc-java
. También puede volver a crear el subproyectogrpc-netty
en el directorio de red de grpcgradle build
.Una vez terminada la creación, puede obtener el paquete jar con parches de destino en el directorio
grpc-java\netty\build\libs\grpc-netty-1.23.0.jar
. -
Agregue el paquete con parches al repositorio local de Maven.
Sustituya el paquete jargrpc-netty
oficial por el paquete con parches de una de las dos formas siguientes:-
Utilice Maven para instalar el paquete por archivo local:
Debe mantener el destinomvn install:install-file -Dfile=local_patched_grpc_netty_package_root/grpc-netty-1.23.0.jar -DgroupId=io.grpc -DartifactId=grpc-netty -Dversion=1.23.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.