Fabric-sdk-java的使用主要分为:加密套件配置,通道操作,链码操作。
加密套件配置部分,根据配置文件内容,设置SDK里面的加密套件服务提供者、 加密 类型、安全级别等。
● 通道操作包括:通道查询、通道创建、通道加入、通道删除等。
● 链码操作包括:链码安装、链码实例化、链码查询、链码调用等。
使用Fabric-sdk-java主要会使用HFClient和Channel两个类,其导入路径分别为:
org.hyperledger.fabric.sdk.HFClient和org.hyperledger.fabric.sdk.Channel。
更多的api接口请参考Fabric官网。
4.3 Gateway Java Demo
本节提供一个基于Fabric Gateway Java的Demo,Fabric Gateway Java对Java SDK进 行了封装,简化了代码量,帮助用户开发自己的Java客户端应用程序。
说明
本Demo仅适用于Hyperledger Fabric增强版的区块链服务。
准备工作
1. 开通CloudIDE(或者用户自己准备JDK、maven和eclipse/IntelliJ IDEA)。
CloudIDE是DevCloud的云端开发环境服务,向开发者提供按需配置、快速获取的 工作空间(包含编辑器和运行环境)。
在CloudIDE上创建一个空的Java工程,如图4-2所示。
开发指南 4 示例 Demo
图4-2 CloudIDE 上创建一个空的 Java 工程
2. 下载Java SDK示例源码,获取方法:登录区块链服务管理控制台,进入“体验中 心 > 应用案例”,在“Java示例Demo-Java SDK Demo”下方,单击
“App_Gateway_Java_Demo”中Java项目源码的“下载”按钮。
3. 购买区块链服务、安装链代码及实例化链代码操作,请参见《快速入门》。
部署应用
1. 下载SDK和证书。
a. 在“服务管理”界面,在服务卡片中,单击“获取客户端配置”。
b. 勾选“SDK文件”,SDK配置参数如下:
参数名称 说明
链代码名称 chaincodedemo
证书存放路径 /home/user/gatewayjavademo/config 通道名称 channel
组织&Peer节 点
选择通道中所有节点组织
勾选“共识节点证书”。
勾选“Peer节点证书”,指定节点组织选择organization,勾选“管理员证 书”。
c. 单击“下载”,下载SDK配置文件、demo-orderer组织的管理员证书和 organization组织的管理员证书。
2. 拷贝并解压。
a. 先下载工程源代码gatewayjavademo.zip文件并解压。
获取方法:登录区块链服务管理控制台,进入“体验中心 > 应用案例”,在
“Java示例Demo-Java SDK Demo”下方,单击
“App_Gateway_Java_Demo”中Java项目源码的“下载”按钮。
b. 将1步骤中的zip文件解压,把configs文件夹中的orderer文件夹、peer文件 夹、sdk-config.json、sdk-config.yaml文件全部拷贝到gatewayjavademo目
开发指南 4 示例 Demo
录下的config目录下。然后再将gatewayjavademo目录压缩成 gatewayjavademo.zip包。
3. 部署应用。
a. 将新压缩的gatewayjavademo工程源代码gatewayjavademo.zip文件上传到 CloudIDE开发环境中。
CloudIDE编译工程如下所示:
b. 打开工程后等待一会,会自动下载工程依赖的包,然后按下图操作执行 Run,就会得到预期结果。
注意
● gatewayjavademo工程中config目录下demo-channel-sdk-config.yaml 文件,必须与gatewayjavademo/src/main/java/handler/Main.java和 MainForMultiTask文件中helper.setConfigCtx("config/demo-channel-sdk-config.yaml")代码路径相同,保证可以正常运行Main.java。
● 客户端app交易的时候,如果指定了未实例化的组织和peer,那么首次交 易会超时失败,请您重新运行即可正常交易。
每次成功执行Main.java,将会执行basicTransactionSample、
commitListenerSample、contractListenerSample、blockListenerSample四 个方法,向区块链存入多对键值对;可以通过区块链浏览器可以查看交易记 录。
开发指南 4 示例 Demo
常用接口
使用Fabric-Gateway-Java发起交易和查询,主要用到Network和Contract两类的接 口,更多的api接口请参考Fabric官网。
● Network
主要有以下常用的接口:
接口名称 描述 参数值 返回值
getContract 获取Contract实 例的接口
String
chaincodeId Contract addBlockListener 设置监听器的接
口,监听区块事 件
Consumer<org.
hyperledger.fab ric.sdk.BlockEve nt> listener
Consumer<org.hyp erledger.fabric.sdk.
BlockEvent>
getChannel 获取与network 相关联channel 的接口
/ org.hyperledger.fab ric.sdk.Channel
removeBlockListe
ner 移除监听器的接
口 Consumer<org.
hyperledger.fab ric.sdk.BlockEve nt> listener
void
● Contract
主要有以下常用的接口:
String name,
String... args byte[]
evaluateTransact
ion 发起查询的接
口,需要输入调 用方法与参数
String name,
String... args byte[]
createTransactio
n 创建交易的接
口,需要submit 以发起交易
String name Transaction
addContractListe tEvent> listener
removeContractL
istener 移除监听器的接 口
4.4 REST API Demo
华为云区块链提供了REST API服务来简化用户访问区块链的学习成本。通过REST API 服务,用户可以不需要学习fabric-go-sdk,fabric-Java-sdk, fabric-nodejs-sdk等,只 需要开发的应用支持RESTful接口,就可以轻松访问区块链。本Demo通过一个go语言 的客户端来演示如何使用REST API服务调用链代码,供您学习参考。
说明
只用于场景体验,不用于实际应用。
仅适用于Hyperledger Fabric增强版的区块链服务。