Utilizzare gli SDK Hyperledger Fabric per sviluppare le applicazioni
Le applicazioni utilizzano un kit SDK (Software Development Kit) per accedere alle API che consentono query e aggiornamenti al libro contabile.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. Consulta l'API REST per Oracle Blockchain Platform.
Tuttavia, ciò significa che è probabile che si desideri eseguire il wrapping degli endpoint API esistenti in un'applicazione per fornire il controllo a livello di oggetto. Le applicazioni possono contenere operazioni a grana molto più fine.
Versioni SDK
Sono disponibili più versioni degli SDK Hyperledger Fabric. Utilizzare la versione dell'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: Hyperledger Fabric SDK per la documentazione di Node.js
- È possibile installare l'SDK Node.js Hyperledger Fabric utilizzando il collegamento disponibile in questa scheda.
- (Hyperledger Fabric v1.4.7) Se è stato installato in precedenza, è necessario modificarlo per utilizzarlo con Oracle Blockchain Platform seguendo le istruzioni riportate in Aggiornare gli SDK Hyperledger Fabric v1.4.7 per utilizzare Oracle Blockchain Platform.
Installazione dell'SDK Hyperledger Fabric per Java
Informazioni su come utilizzare l'SDK Fabric per Java sono disponibili qui: Hyperledger Fabric SDK per la documentazione di Java
- È possibile installare l'SDK Java Hyperledger Fabric utilizzando il collegamento disponibile in questa scheda.
- (Hyperledger Fabric v2.x) Se è stato installato in precedenza, è necessario modificarlo per utilizzarlo con Oracle Blockchain Platform seguendo le istruzioni riportate in Aggiornare gli SDK Hyperledger Fabric v2.x per utilizzare Oracle Blockchain Platform.
- (Hyperledger Fabric v1.4.7) Se è stato installato in precedenza, è necessario modificarlo per utilizzarlo con Oracle Blockchain Platform seguendo le istruzioni riportate in Aggiornare gli SDK Hyperledger Fabric v1.4.7 per utilizzare Oracle Blockchain Platform.
Installare uno strumento di build come Apache Maven.
Strutturazione della richiesta di adesione
L'applicazione Java deve essere strutturata in modo simile al seguente:
/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
L'applicazione Node.js deve essere strutturata in modo simile al seguente:
/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 è possibile eseguire e testare l'applicazione. Oltre a eventuali messaggi di stato restituiti dall'applicazione, è possibile controllare il libro contabile nella console di Oracle Blockchain Platform per visualizzare le modifiche:
- Vai alla scheda Canali nella console e individua e fai clic sul nome del canale che esegue la blockchain.
- Nel riquadro Libro contabile del canale, visualizzare il sintetico del libro contabile del codice concatenato.
Aggiornare gli SDK Hyperledger Fabric v2.x per utilizzare Oracle Blockchain Platform
Si verifica un'incompatibilità tra un componente dell'infrastruttura OCI e l'SDK Java fornito con Hyperledger Fabric v2.x. Attenersi alla procedura descritta in questo argomento per risolvere il problema.
Metodi di aggiornamento dell'SDK Hyperledger Fabric
Esistono due modi per aggiornare l'SDK:
- Scaricare il pacchetto modificato dalla console. È stato creato un file
grpc-netty-shaded-1.38.0.jar
aggiornato, ovvero il modulo a cui fa riferimento l'SDK Java che richiede modifiche. - Creare il package manualmente, come descritto in questo argomento.
Per scaricare il file grpc-netty-shaded-1.38.0.jar
, fare clic sulla scheda Strumenti di sviluppo della console, quindi selezionare il riquadro Sviluppo applicazioni.
Creazione manuale del pacchetto
Per il progetto fabric-sdk-java
, effettuare le seguenti operazioni per ricreare il package grpc-netty-shaded
in modo da connettere i pari livello e gli ordini con il client grpcs
(tramite TLS). Il pacchetto grpc-netty-shaded
è un sottoprogetto di grpc-java
.
-
Installare le dipendenze del progetto:
mvn install
-
Scarica il codice sorgente
grpc-java
:git clone https://github.com/grpc/grpc-java.git
- Trovare la versione
grpc
utilizzata dafabric-sdk-java
e controllare il codice.Nella directorygrpc-java
, eseguire il check-out della versione digrpc
utilizzata dafabric-sdk-java
:cd grpc-java && git checkout v1.38.0
-
Modificare il codice per evitare un errore
alpn
dal lato server. Creare un file di patchgrpc-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);
-
Applicare la patch:
git apply grpc-java.patch
-
Creare il progetto per generare il package a cui sono state applicate le patch di destinazione. Utilizzare Gradle per creare il progetto
grpc-java-shaded
:cd netty/shaded gradle build -PskipAndroid=true -PskipCodegen=true
Al termine della build, il pacchetto
.jar
a cui sono state applicate le patch di destinazione è disponibile all'indirizzogrpc-java/netty/build/libs/grpc-netty-shaded-1.38.0.jar
. -
Aggiungere il pacchetto a cui sono state applicate le patch nel repository locale Maven.
Sostituire il pacchettogrpc-netty-shaded
.jar
originale con il pacchetto a cui sono state applicate le patch in uno dei due modi seguenti:-
Utilizzare Maven per installare il pacchetto in base al file locale:
È necessario mantenere la destinazionemvn 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
eversion
uguale al pacchetto che si desidera sostituire. -
Sostituire manualmente il pacchetto. Andare al repository Maven locale, individuare la directory in cui si trova il pacchetto di destinazione e sostituire il pacchetto con il pacchetto a cui sono state applicate le patch.
-
-
Eseguire il progetto.
Aggiornare gli SDK Hyperledger Fabric v1.4.7 per utilizzare Oracle Blockchain Platform
Si verifica un'incompatibilità tra un componente dell'infrastruttura OCI e gli SDK Node.js e Java forniti con Hyperledger Fabric v1.4.7. Attenersi alla procedura descritta in questo argomento per risolvere il problema.
Metodi di aggiornamento degli SDK Hyperledger Fabric
Esistono due modi per aggiornare l'SDK:
- Utilizzando gli script Oracle per scaricare e installare l'SDK Node.js o l'SDK Java che applicherà le patch al codice durante l'installazione.
- Manualmente come descritto in questo argomento.
Per utilizzare gli script, nella scheda Strumenti di sviluppo della console selezionare il riquadro Sviluppo applicazioni. I collegamenti per scaricare sia l'SDK Node.js che l'SDK Java dispongono di aggiornamenti incorporati che applicheranno le patch al codice durante l'installazione.
- SDK Java Fabric: è stato creato un file
grpc-netty-1.23.0.jar
aggiornato, ovvero il modulo a cui fa riferimento l'SDK Java che richiede modifiche. - SDK Fabric Node.js: è stato creato lo script
npm_bcs_client.sh
per sostituire le operazioninpm install
Fabric standard eseguite dagli utenti per scaricare e installare il pacchetto client Node.js Fabric. Lo script esegue lo stesso comando npm, ma ha anche applicato le patch al componente necessario e lo ricostruisce.
Aggiornamento manuale dell'SDK Fabric Node.js
grpc-node
per collegare i pari livello e gli ordini con il client grpcs (tramite TLS).
-
Installare
fabric-client
senza eseguire lo script di build del modulo grpc:npm install --ignore-scripts fabric-client
-
In Windows, è necessario disabilitare ALPN in modo esplicito
- Aggiornare
node_modules/grpc/binding.gyp
modificando:
to'_WIN32_WINNT=0x0600'
'_WIN32_WINNT=0x0600','TSI_OPENSSL_ALPN_SUPPORT=0'
- A causa del problema descritto in https://github.com/nodejs/node/issues/4932, per creare
grpc-node
su Windows, è necessario prima rimuovere<node_root_dir>/include/node/openssl/
. Per trovare il tuo<node_root_dir>
, esegui quanto segue:node-gyp configure
- Aggiornare
-
Rigenera
grpc
npm rebuild --unsafe-perm --build-from-source
Aggiornamento manuale dell'SDK Java Fabric
Per fabric-sdk-java
, attenersi alla procedura riportata di seguito per ricostruire il pacchetto grpc-netty
per collegare i pari livello e gli ordini con il client grpcs (tramite tls). grpc-netty
è un sottoprogetto di grpc-java
.
-
Installare le dipendenze del progetto:
mvn install
-
Scarica il codice sorgente grpc-java:
git clone https://github.com/grpc/grpc-java.git
- Trovare la versione
grpc
utilizzata dafabric-sdk-java
ed eseguire il checkout del codice.Versioni diverse di
fabric-sdk-java
possono utilizzare versioni diverse digrpc
. Controllapom.xml
per scoprire quale versionegrpc
utilizza il tuofabric-sdk-java
. Ad esempio,fabric-sdk-java 1.4.11
utilizzagrpc-java 1.23.0
come trovato nel relativopom.xml
: https://github.com/hyperledger/fabric-sdk-java/blob/v1.4.11/pom.xml.Nella directorygrpc-java
, eseguire il checkout della versione digrpc
utilizzata dafabric-sdk-java
:git checkout -b v1.23.0
-
Modificare il codice per evitare un errore
alpn
dal lato server.- Modificare il codice di destinazione di
grpc-java_root/netty/src/main/java/io/grpc/netty/ProtocolNegotiators.java
- Nella funzione
userEventTriggered0
modificare:
toif (NEXT_PROTOCOL_VERSIONS.contains(handler.applicationProtocol())) {
Il codice sarà simile 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); ... }
- Modificare il codice di destinazione di
-
Creare il progetto per generare il package a cui sono state applicate le patch di destinazione. Utilizzare Gradle per creare il progetto
grpc-java
. In alternativa, è possibile ricreare il sottoprogettogrpc-netty
nella directory netty grpcgradle build
.Al termine della build, è possibile ottenere il pacchetto jar a cui sono state applicate le patch di destinazione nella directory
grpc-java\netty\build\libs\grpc-netty-1.23.0.jar
. -
Aggiungere il pacchetto a cui sono state applicate le patch nel repository locale Maven.
Sostituire il pacchetto jargrpc-netty
ufficiale con il pacchetto patchato in uno dei due modi seguenti:-
Utilizzare Maven per installare il pacchetto in base al file locale:
È necessario mantenere la destinazionemvn 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
eversion
uguale al pacchetto che si desidera sostituire. -
Sostituire manualmente il pacchetto. Andare al repository Maven locale, individuare la directory in cui si trova il pacchetto di destinazione e sostituire il pacchetto con il pacchetto a cui sono state applicate le patch.
-
-
Eseguire il progetto.