Java SDK Demo
以上章节是对链代码的开发、调测及其应用配置的介绍,本章节通过提供一个基于Java SDK的Demo(支持国密加密算法),以Java SDK Demo为例,让您了解区块链的相关知识以及体验应用开发的流程,助您快速上手并使用区块链服务。
只用于场景体验,不用于实际应用。
准备工作
操作指导 |
说明 |
---|---|
安装开发工具(IDE) |
本地需提前安装JDK、maven和eclipse(可以使用您习惯的IDE)。 JDK需要安装1.8版本64位,如果本地已安装JDK,可以通过cmd命令java -version来查看JDK版本。 |
购买区块链实例
- 登录区块链服务管理控制台。
- 进入“实例管理”页面,单击Hyperledger Fabric增强版的“购买”按钮。
- 根据界面提示,配置区块链基本信息,参数如表1所示。
为了保证示例Demo成功运行,请在参数配置时按照表格中的参数值填写。
- 单击“下一步:资源配置”,进行资源配置,参数如表2所示。
- 单击“下一步:区块链配置”,进行区块链配置,参数如表3所示。
表3 区块链配置 参数
示例
区块链配置
选择“自定义配置”。
区块链管理初始密码
如果填写该项,则以填写值为准,如果不填写,则以资源初始密码为准。
区块链管理确认密码
-
存储卷类型
极速文件存储卷,也可以根据界面提示配置。
节点组织存储容量 (GB)
使用默认规格。
账本数据存储方式
选择“文件数据库(GoLevelDB)”
peer节点组织
系统已默认创建1个节点组织,名称为organization,将节点数量修改为1。
通道配置
organization节点组织已默认添加进至通道中,保持默认即可。
共识节点数量
使用默认。
安全机制
ECDSA
须知:安全机制支持选择国密算法。若选择了国密算法,则Demo的部署需要做其他修改,请注意下文中的相关描述。
区块生成配置
否
添加RESTful API支持
否
- 单击“下一步:确认规格”。
- 确认配置信息无误后,根据界面提示购买区块链实例。
请等待数分钟,安装页面提示安装成功,查看实例状态变为“正常”后,表示区块链实例部署完成。
安装及实例化链代码
- 登录区块链服务管理控制台。
- 单击左侧导航栏中的“实例管理”。
- 在新创建的实例卡片中,单击“区块链管理”,登录链代码管理页面。
- 在登录页面输入用户名、密码,单击“登录”。
用户名为admin,密码为您在创建区块链实例时设置的区块链管理初始密码,如果没有设置区块链管理初始密码,则以资源初始密码为准。
- 在链代码管理页面,单击页面左上角的。
安装参数如下:
表4 安装参数 参数
值
链代码名称
chaincode
链代码版本
2.0
账本数据存储方式
文件数据库(goleveldb)
选择全部Peer节点
勾选
组织&Peer节点
peer-0
链代码语言
Golang
链代码文件
Chaincode_Go_Demo,获取方法:登录区块链服务管理控制台,进入“应用案例”,单击“Java示例Demo-Java SDK Demo”中Go语言示例链代码的“下载”按钮。
链代码描述
根据需要填写相关描述。
代码安全检查
链代码语言选择Golang,该功能才会显示。选择是否开启链代码安全检查。
- 单击“安装”完成链代码安装。
- 链代码安装完成后,在链代码列表的“操作”列,单击“实例化”。
实例化参数如下:
表5 实例化参数 参数
值
链代码名称
chaincode
实例化通道
channel
链代码版本
2.0
初始化函数
init
链代码参数
a,200,b,250
背书策略
下列任意组织背书
背书组织列表
organization
隐私保护配置
否
- 单击“实例化”,完成链代码在当前通道上的实例化。
稍等2-3分钟后刷新界面,单击“实例化”列的“查看更多”,查看链代码实例化进度。
配置应用
- 导入项目工程
获取项目代码并解压,获取方法:登录区块链服务管理控制台,进入“应用案例”,单击“Java示例Demo-Java SDK Demo”中Java项目源码的“下载”按钮。
在eclipse界面中右键选择import,将项目代码导入eclipse中(javasdkdemo为Maven工程)。
- 下载SDK配置文件和证书。
- 在“实例管理”界面,在实例卡片中,单击“获取客户端配置”。
- 勾选“SDK文件”,SDK配置参数如下:
表6 SDK配置参数 参数名称
说明
链代码名称
chaincode
须知:链代码名称需要和链代码安装&实例化时的一致。
证书存放路径
此处配置为下载的javasdkdemo工程的config文件夹路径。
须知:将windows的反斜杠“\” 换为 “/”。例如,正确的写法为D:/javasdkdemo/config
通道名称
channel
组织&Peer节点
选择通道中所有节点组织
勾选“共识节点证书”。
勾选“Peer节点证书”,指定节点组织选择organization,勾选“管理员证书”。
- 单击“下载”,下载SDK配置文件、java-sdk-demo-orderer组织的管理员证书、organization组织的管理员证书,下载至demo工程的config路径中。
- 复制并解压。
- 将下载的demo-config.zip文件解压,将java-sdk-demo-orderer-admin-cert、organization-admin-cert和sdk-config文件夹中的内容复制至demo工程的config路径下。
部署应用
- 在Maven工程中找到/javasdkdemo/src/main/java/handler/Main.java,将Main类中如下代码中的文件路径,修改为java-sdk-demo-sdk-config.yaml文件的绝对路径,路径请参见2.c。需将windows的反斜杠“\” 改为 “/”。
helper.setConfigCtx("E:/yourdir/huawei.yaml");
例如修改为:helper.setConfigCtx("D:/javasdkdemo/config/java-sdk-demo-channel-sdk-config.yaml");
若您在订购区块链实例时安全机制选择“国密算法”,还需要做如下修改:国密算法需要引用华为自己的fabric-sdk依赖包,故需要在pom.xml中添加对工程lib文件夹“fabric-sdk-java-1.4.1-jar-with-dependencies.jar”中的依赖,如下图所示去掉该依赖的注释即可,否则可能会导致运行错误。图1 文件详情
- 运行main函数。
每成功执行一次,表示向区块链存入一对键值对,<testuser,100>;在区块链上查询键值为testuser的value值为100。也可以通过区块链浏览器可以查看交易记录。
图2 交易记录信息
通过内存传入私钥
如果用户需要对私钥文件进行加密,并在demo中解密后传入FabricSDK。
对于MSP私钥:在FabricHelper文件的genFabricUser函数中,按如下方式调用函数:
//从配置文件指定路径下读取加密过的MSP私钥 String adminPrivateKeyString = extractPemString(msp, "keystore"); //对adminPrivateKeyString 进行解密得到decryptedKey字符串 //将解密后的MSP私钥重新赋值给变量adminPrivateKeyString String adminPrivateKeyString = decryptedKey;
当前不支持通过内存传入TLS私钥。