Uso de los SDK de Hyperledger Fabric para desarrollar aplicaciones
Los SDK de Hyperledger Fabric ahora están en desuso. Sin embargo, puede instalar y utilizar los SDK de Hyperledger Fabric para desarrollar aplicaciones para Oracle Blockchain Platform.
Las API de REST que proporciona 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 la 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 para desarrolladores, abra el panel Desarrollo de aplicaciones. Puede instalar el SDK Node.js de Hyperledger Fabric 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 del 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) Debe modificar el SDK para trabajar con Oracle Blockchain Platform siguiendo las instrucciones de Actualización del SDK de Java para Hyperledger Fabric y 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 filesEstructura 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 consultar 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 de libro mayor del código de cadenas.
Actualización del SDK de Go de Hyperledger Fabric para trabajar con Oracle Blockchain Platform
Debe actualizar la función NormalizeURL en el SDK de Hyperledger Fabric Go para usarla con la versión basada en Kubernetes de Oracle Blockchain Platform.
- Abra el archivo
client.goen el SDK de Hyperledger Fabric Go para la edición:vendor/github.com/hyperledger/fabric-sdk-go/internal/github.com/hyperledger/fabric-ca/lib/client.go - Actualice la función
NormalizeURLcomo se muestra en el siguiente código.FunciónNormalizeURLantes de editar:// NormalizeURL normalizes a URL (from cfssl) func NormalizeURL(addr string) (*url.URL, error) { addr = strings.TrimSpace(addr) u, err := url.Parse(addr) if err != nil { return nil, err } if u.Opaque != "" { u.Host = net.JoinHostPort(u.Scheme, u.Opaque) u.Opaque = "" } else if u.Path != "" && !strings.Contains(u.Path, ":") { u.Host = net.JoinHostPort(u.Path, "") u.Path = "" } else if u.Scheme == "" { u.Host = u.Path u.Path = "" } if u.Scheme != "https" { u.Scheme = "http" } . . .FunciónNormalizeURLdespués de editar:// NormalizeURL normalizes a URL (from cfssl) func NormalizeURL(addr string) (*url.URL, error) { addr = strings.TrimSpace(addr) u, err := url.Parse(addr) if err != nil { return nil, err } if u.Opaque != "" { u.Host = net.JoinHostPort(u.Scheme, u.Opaque) u.Opaque = "" } else if u.Host != "" && !strings.Contains(u.Host, ":") { u.Host = net.JoinHostPort(u.Host, "") u.Path = "" } else if u.Scheme == "" { u.Host = u.Path u.Path = "" } . . . - Guarde el archivo
client.go.
Actualización del SDK de Java de Hyperledger Fabric para trabajar con Oracle Blockchain Platform
Existe una incompatibilidad entre un componente de infraestructura de OCI y el SDK de Java que se proporciona con Hyperledger Fabric v2.x. Debe actualizar el SDK para utilizarlo con Oracle Blockchain Platform.
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.jaractualizado, que es el módulo al que hace referencia el SDK de Java que necesita modificaciones. - Cree el paquete manualmente, como se describe en los siguientes pasos.
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, complete los siguientes pasos para volver a crear 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.
-
Instale las dependencias del proyecto:
mvn install -
Descargue el código fuente
grpc-java:git clone https://github.com/grpc/grpc-java.git - Busque la versión
grpcque utiliza el proyectofabric-sdk-javay desproteja el código.En el directoriogrpc-java, desproteja la versión degrpcque utiliza el proyectofabric-sdk-java:cd grpc-java && git checkout v1.38.0 -
Cambie el código para evitar un error
alpnen el servidor. Cree un archivo de parchegrpc-java-patchcon 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=trueUna vez finalizada la compilación, el paquete
.jarcon 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.jaroriginal 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=grpc-netty-shaded-build/grpc-netty-shaded-1.38.0.jar -DgroupId=io.grpc -DartifactId=grpc-netty-shaded -Dversion=1.38.0 -Dpackaging=jargroupid,artifactidyversionigual 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 un paquete con parches.
-
-
Ejecute el proyecto.