更新时间:2022-12-07 GMT+08:00
分享

Java SDK Demo

本节提供一个基于Java SDK的Demo,帮助用户开发自己的Java客户端应用程序。

本Demo仅适用于Hyperledger Fabric增强版的区块链实例。

准备工作

  1. 开通CloudIDE(或者用户自己准备JDK、maven和eclipse/IntelliJ IDEA)。

    CloudIDE是软件开发生产线 CodeArts的云端开发环境服务,向开发者提供按需配置、快速获取的工作空间(包含编辑器和运行环境)。

    在CloudIDE上创建一个空的Java工程,如图1所示。

    图1 CloudIDE上创建一个空的Java工程
  2. 下载Java SDK示例源码,获取方法:登录区块链服务管理控制台,进入“应用案例”,在“Java示例Demo-Java SDK Demo”下方,单击“App_Java_Src_Demo”中Java项目源码的“下载”按钮。
  3. 购买区块链实例、安装链代码及实例化链代码操作,请参见《快速入门》

部署应用

  1. 下载SDK和证书。
    1. 在“实例管理”页面,选择“Hyperledger Fabric增强版”页签,单击对应实例卡片上的“获取客户端配置”。
    2. 勾选“SDK文件”,SDK配置参数如下:

      参数名称

      说明

      链代码名称

      chaincodedemo

      证书存放路径

      /home/user/javasdkdemo_src/config

      通道名称

      channel

      组织&Peer节点

      选择通道中所有节点组织

      勾选“共识节点证书”。

      勾选“Peer节点证书”,指定节点组织选择organization,勾选“管理员证书”。

    3. 单击“下载”,下载SDK配置文件、demo-orderer组织的管理员证书和organization组织的管理员证书。
  2. 复制并解压。
    1. 先下载工程源代码javasdkdemo_src.zip文件并解压。

      获取方法:登录区块链服务管理控制台,进入“应用案例”,在“Java示例Demo-Java SDK Demo”下方,单击“App_Java_Src_Demo”中Java项目源码的“下载”按钮。

    2. 1步骤中的zip文件解压,把configs文件夹中的orderer文件夹、peer文件夹、sdk-config.json、sdk-config.yaml文件全部复制到javasdkdemo_src目录下的config目录下。然后再将javasdkdemo_src目录压缩成javasdkdemo_src.zip包。
  3. 部署应用。
    1. 将新压缩的javasdkdemo_src工程源代码javasdkdemo_src.zip文件上传到CloudIDE开发环境中。

      CloudIDE编译工程如下所示:

    2. 打开工程后等待一会,会自动下载工程依赖的包,然后按下图操作执行Run,就会得到预期结果。
      • javasdkdemo工程中config目录下demo-channel-sdk-config.yaml文件,必须与javasdkdemo/src/main/java/handler/Main.java文件中helper.setConfigCtx("config/demo-channel-sdk-config.yaml")代码路径相同,保证可以正常运行Main.java。
      • 客户端app交易的时候,如果指定了未实例化的组织和peer,那么首次交易会超时失败,请您重新运行即可正常交易。

      每成功执行一次,表示向区块链存入一对键值对,<testuser,100>;在区块链上查询键值为testuser的value值为100。也可以通过区块链浏览器可以查看交易记录。

通过内存传入私钥

如果用户需要对私钥文件进行加密,并在demo中解密后传入FabricSDK。

对于MSP私钥:在FabricHelper文件的genFabricUser函数中,按如下方式调用函数:

//从配置文件指定路径下读取加密过的MSP私钥
String adminPrivateKeyString = extractPemString(msp, "keystore");  
//对adminPrivateKeyString 进行解密得到decryptedKey字符串
//将解密后的MSP私钥重新赋值给变量adminPrivateKeyString 
String adminPrivateKeyString = decryptedKey;

当前不支持通过内存传入TLS私钥。

常用接口

Fabric-sdk-java的使用主要分为:加密套件配置,通道操作,链码操作。

加密套件配置部分,根据配置文件内容,设置SDK里面的加密套件服务提供者、 加密类型、安全级别等。

  • 通道操作包括:通道查询、通道创建、通道加入、通道删除等。
  • 链码操作包括:链码安装、链码实例化、链码查询、链码调用等。

使用Fabric-sdk-java主要会使用HFClient和Channel两个类,其导入路径分别为:org.hyperledger.fabric.sdk.HFClient和org.hyperledger.fabric.sdk.Channel。

更多的api接口请参考Fabric官网

相关文档