Utilizzare gli SDK Hyperledger Fabric per sviluppare applicazioni

Gli SDK Hyperledger Fabric sono ora deprecati. Tuttavia, puoi installare e utilizzare gli SDK Hyperledger Fabric per sviluppare applicazioni per Oracle Blockchain Platform.

Le API REST fornite da Oracle Blockchain Platform sono state create tenendo presente la massima flessibilità; è possibile richiamare una transazione, richiamare una query o visualizzare lo stato di una transazione. Vedere API REST per Oracle Blockchain Platform.

Tuttavia, questa flessibilità significa che probabilmente vorrai avvolgere gli endpoint API esistenti in un'applicazione per fornire il controllo a livello di oggetto. Le applicazioni possono contenere molte più operazioni a grana fine.

Versioni SDK

Sono disponibili più versioni degli SDK Hyperledger Fabric. Utilizzare la versione del kit SDK corrispondente alla versione di Hyperledger Fabric su cui si basa l'istanza.

Installazione dell'SDK Hyperledger Fabric per Node.js

Informazioni su come utilizzare Fabric SDK per Node.js sono disponibili qui: documentazione di Hyperledger Fabric SDK per Node.js

Nella scheda Strumenti per sviluppatori aprire il riquadro Sviluppo applicazioni. È possibile installare l'SDK Hyperledger Fabric Node.js utilizzando il collegamento in questa scheda.

Installazione dell'SDK Hyperledger Fabric per Java

Informazioni su come utilizzare Fabric SDK per Java sono disponibili qui: Documentazione di Hyperledger Fabric SDK per Java

Nella scheda Strumenti per sviluppatori aprire il riquadro Sviluppo applicazioni.

Installare uno strumento di build come Apache Maven.

Struttura dell'applicazione

Strutturare l'applicazione Java in modo simile al seguente esempio:

/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

Strutturare l'applicazione Node.js in modo simile al seguente esempio:

/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

Esecuzione dell'applicazione

Ora si è pronti per l'esecuzione e il test dell'applicazione. Oltre a qualsiasi messaggio di stato restituito dall'applicazione, è possibile controllare il libro contabile nella console di Oracle Blockchain Platform per visualizzare le modifiche.

  1. Andare alla scheda Canali nella console, quindi individuare e fare clic sul nome del canale che esegue il codice concatenato.
  2. Nel riquadro Libro contabile del canale, visualizzare il sintetico del libro contabile del codice concatenato.

Aggiornare gli SDK di Hyperledger Fabric v2.x per utilizzare Oracle Blockchain Platform

È presente un'incompatibilità tra un componente dell'infrastruttura OCI e l'SDK Java fornito con Hyperledger Fabric v2.x. Per risolvere il problema, attenersi alla procedura riportata in questo argomento.

Metodi di aggiornamento dell'SDK Hyperledger Fabric

Esistono due modi per aggiornare l'SDK:

  • Scaricare il pacchetto modificato dalla console. Abbiamo creato un file grpc-netty-shaded-1.38.0.jar aggiornato, che è il modulo a cui fa riferimento l'SDK Java che richiede modifiche.
  • Creare il pacchetto manualmente, come descritto in questo argomento.

Per scaricare il file grpc-netty-shaded-1.38.0.jar, fare clic sulla scheda Strumenti per sviluppatori della console, quindi selezionare il riquadro Sviluppo applicazioni.

Creazione manuale del package

Per il progetto fabric-sdk-java, completare i passaggi seguenti per ricreare il pacchetto grpc-netty-shaded per connettere i peer e gli ordini con il client grpcs (tramite TLS). Il pacchetto grpc-netty-shaded è un sottoprogetto di grpc-java.

  1. Installa dipendenze progetto:
    mvn install
  2. Scarica il codice sorgente grpc-java:

    git clone https://github.com/grpc/grpc-java.git
  3. Trova la versione grpc utilizzata dal tuo fabric-sdk-java e controlla il codice.
    Nella directory grpc-java, controllare la versione di grpc utilizzata da fabric-sdk-java:
    cd grpc-java && git checkout v1.38.0
  4. Modificare il codice per evitare un errore alpn dal lato server. Creare un file di patch grpc-java-patch con i seguenti contenuti:
    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. Applicare la patch:

    git apply grpc-java.patch
  6. Creare il progetto per generare il package con patch di destinazione. Utilizzare il gradle per creare il progetto grpc-java-shaded:

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

    Al termine della build, il pacchetto .jar con patch di destinazione è disponibile all'indirizzo grpc-java/netty/build/libs/grpc-netty-shaded-1.38.0.jar.

  7. Aggiungere il pacchetto con patch nel repository locale Maven.

    Sostituire il pacchetto originale grpc-netty-shaded .jar con quello patchato in uno dei due modi seguenti:
    • Usare Maven per installare il pacchetto in base al file locale:
      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
      È necessario mantenere la destinazione groupid, artifactid e version identica a quella del pacchetto da sostituire.
    • Sostituire manualmente il pacchetto. Andare al repository Maven locale, trovare la directory in cui si trova il pacchetto di destinazione e sostituire il pacchetto con il pacchetto con patch.

  8. Eseguire il progetto.