使用 Hyperledger Fabric SDK 開發應用程式
應用程式使用軟體開發套件 (SDK) 來存取允許查詢和更新分類帳的 API。您可以安裝並使用 Hyperledger Fabric SDK 開發 Oracle Blockchain Platform 的應用程式。
Oracle Blockchain Platform 提供的 REST API 已建立,但具備最大的彈性;您可以呼叫交易、呼叫查詢或檢視交易狀態。請參閱 Oracle Blockchain Platform 的 REST API 。
不過,此彈性代表您很可能想要包裝應用程式中的現有 API 端點,以提供物件層級的控制。應用程式可以包含更多微點作業。
SDK 版本
有多個版本的 Hyperledger Fabric SDK 可用。使用與您執行處理所依據之 Hyperledger Fabric 版本相符的 SDK 版本。
安裝 Node.js 適用的 Hyperledger Fabric SDK
如需如何使用 Node.js 版 Fabric SDK 的相關資訊,請參閱 Hyperledger Fabric SDK for Node.js 文件
在開發人員工具頁籤上,開啟應用程式開發窗格。您可以使用此標籤上的連結來安裝 Hyperledger Fabric Node.js SDK。
安裝 Java 適用的 Hyperledger Fabric SDK
如需有關如何使用 Fabric SDK for Java 的資訊,請參閱 Hyperledger Fabric SDK for Java 文件
- 您可以使用此標籤上的連結來安裝 Hyperledger Fabric Java SDK。
- (Hyperledger Fabric v2.x) 如果您先前已安裝 SDK,則必須依照更新 Hyperledger Fabric v2.x SDK 以使用 Oracle Blockchain Platform 中的指示,修改它與 Oracle Blockchain Platform 搭配使用。
安裝組建工具,例如 Apache Maven。
建構應用程式
建構您的 Java 應用程式,類似以下範例:
/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
建構您的 Node.js 應用程式,類似下列範例:
/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
執行應用程式
您現在可以執行並測試應用程式。除了應用程式傳回的任何狀態訊息之外,您還可以在 Oracle Blockchain Platform 主控台中查看分類帳以查看您的變更:
- 移至主控台中的通道頁籤,然後找出並按一下執行鏈碼的通道名稱。
- 在通路的分類帳窗格中,檢視鏈碼的分類帳摘要。
更新 Hyperledger Fabric v2.x SDK 以搭配 Oracle Blockchain Platform 使用
Hyperledger Fabric v2.x 提供的 OCI 基礎架構元件和 Java SDK 之間不相容。請依照本主題中的步驟來更正此問題。
更新 Hyperledger Fabric SDK 的方法
更新 SDK 的方式有兩種:
- 從主控台下載修改過的套裝軟體。我們建立了更新的
grpc-netty-shaded-1.38.0.jar
檔案,這是需要修改的 Java SDK 所參考的模組。 - 手動建置配套,如本主題所述。
若要下載 grpc-netty-shaded-1.38.0.jar
檔案,請按一下主控台的開發人員工具頁籤,然後選取應用程式開發窗格。
手動建置套裝軟體
對於 fabric-sdk-java
專案,請完成下列步驟以重新建立 grpc-netty-shaded
套件,以將對等與訂購者與 grpcs
用戶端 (透過 TLS) 連線。grpc-netty-shaded
套裝軟體是 grpc-java
的子專案。
-
安裝專案相依性:
mvn install
-
下載
grpc-java
原始程式碼:git clone https://github.com/grpc/grpc-java.git
- 尋找
fabric-sdk-java
所使用的grpc
版本,然後查看程式碼。在grpc-java
目錄中,查看fabric-sdk-java
所使用的grpc
版本:cd grpc-java && git checkout v1.38.0
-
變更程式碼以避免伺服器端發生
alpn
錯誤。使用下列內容建立grpc-java-patch
修正程式檔案: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);
-
套用修正程式:
git apply grpc-java.patch
-
建置專案以產生目標修正的套裝程式。使用 Gradle 來建置
grpc-java-shaded
專案:cd netty/shaded gradle build -PskipAndroid=true -PskipCodegen=true
組建完成後,目標已修正的
.jar
套裝程式可從grpc-java/netty/build/libs/grpc-netty-shaded-1.38.0.jar
取得。 -
將已修正的套裝程式加到您的 Maven 本機儲存區域。
使用下列兩種方式之一,將原始grpc-netty-shaded
.jar
套裝軟體取代為已修補的套裝軟體:-
使用 Maven 依本機檔案安裝套裝軟體:
您必須將目標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
groupid
、artifactid
和version
與您要取代的套裝軟體相同。 -
手動取代您的套裝軟體。移至本機 Maven 儲存庫,尋找目標套裝軟體所在的目錄,並以已修正的套裝軟體取代套裝軟體。
-
-
執行專案。