Main.go是一个简单的客户端应用示例程序,主要是为了方便用户熟悉客户端开发的流 程,主要包含以下步骤:
//1.导入相关包:Sdk包中提供了一些API,以便用户的应用程序能够访问链代码。
import ( "fmt"
"github.com/hyperledger/fabric-sdk-go/pkg/client/channel"
"github.com/hyperledger/fabric-sdk-go/pkg/fabsdk" ……
)//2.创建文件配置:这部分封装了应用开发必要的一些公共配置,包括sdk配置文件路径、组织名
var (
configFile = "/root/fabric-go-demo/config/go-sdk-demo-channel-sdk-config.yaml"
org = "9103f17cb6b4f69d75982eb48bececcc51aa3125"
开发指南 4 示例 Demo
……
)//3.加载配置文件
loadConfig() //4. 初始化sdk initializeSdk()
//5. 执行链代码,将数据写入账本,key = "testuser",value= "100"
insert("insert",[][]byte{
[]byte("testuser"), []byte("100"),
})//6.查询链代码,输出查询结果,key = "testuser"
query("query",
getOptsToInitializeSDK 解析配置文件,创建并返回fabsdk.Option对象。
GetDefaultChaincodeId 解析配置文件,返回chaincodeID。
GetDefaultChannel 解析配置文件,返回channelID。
UserIdentityWithOrgAn
dName 用户身份验证,输入为组织名和用户名,返回为验证结
果。
ChannelClient 创建*channel.Client对象,输入为组织名、用户名以及通 道ID,返回*channel.Client对象。
insert 将数据写入账本,输入参数为链码的对应方法名称以及
要插入的键值对,返回为写入的结果。
query 查询链上信息,输入参数为链码的对应方法名称以及要
查询的数据,返回为查询的结果。
4.2 Java SDK Demo
本节提供一个基于Java SDK的Demo,帮助用户开发自己的Java客户端应用程序。
说明
本Demo仅适用于Hyperledger Fabric增强版的区块链服务。
准备工作
1. 开通CloudIDE(或者用户自己准备JDK、maven和eclipse/IntelliJ IDEA)。
CloudIDE是DevCloud的云端开发环境服务,向开发者提供按需配置、快速获取的 工作空间(包含编辑器和运行环境)。
在CloudIDE上创建一个空的Java工程,如图4-1所示。
开发指南 4 示例 Demo
图4-1 CloudIDE 上创建一个空的 Java 工程
2. 下载Java SDK示例源码,获取方法:登录区块链服务管理控制台,进入“体验中 心 > 应用案例”,在“Java示例Demo-Java SDK Demo”下方,单击
“App_Java_Src_Demo”中Java项目源码的“下载”按钮。
3. 购买区块链服务、安装链代码及实例化链代码操作,请参见《快速入门》。
部署应用
1. 下载SDK和证书。
a. 在“服务管理”界面,在服务卡片中,单击“获取客户端配置”。
b. 勾选“SDK文件”,SDK配置参数如下:
参数名称 说明
链代码名称 chaincodedemo
证书存放路径 /home/user/javasdkdemo_src/config 通道名称 channel
组织&Peer节 点
选择通道中所有节点组织
勾选“共识节点证书”。
勾选“Peer节点证书”,指定节点组织选择organization,勾选“管理员证 书”。
c. 单击“下载”,下载SDK配置文件、demo-orderer组织的管理员证书和 organization组织的管理员证书。
2. 拷贝并解压。
a. 先下载工程源代码javasdkdemo_src.zip文件并解压。
获取方法:登录区块链服务管理控制台,进入“体验中心 > 应用案例”,在
“Java示例Demo-Java SDK Demo”下方,单击“App_Java_Src_Demo”中 Java项目源码的“下载”按钮。
b. 将1步骤中的zip文件解压,把configs文件夹中的orderer文件夹、peer文件 夹、sdk-config.json、sdk-config.yaml文件全部拷贝到javasdkdemo_src目录
开发指南 4 示例 Demo
下的config目录下。然后再将javasdkdemo_src目录压缩成 javasdkdemo_src.zip包。
3. 部署应用。
a. 将新压缩的javasdkdemo_src工程源代码javasdkdemo_src.zip文件上传到 CloudIDE开发环境中。
CloudIDE编译工程如下所示:
b. 打开工程后等待一会,会自动下载工程依赖的包,然后按下图操作执行 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。也可以通过区块链浏览器可以查看交 易记录。
开发指南 4 示例 Demo
通过内存传入私钥
如果用户需要对私钥文件进行加密,并在demo中解密后传入FabricSDK。
对于MSP私钥:在FabricHelper文件的genFabricUser函数中,按如下方式调用函数:
//从配置文件指定路径下读取加密过的MSP私钥
String adminPrivateKeyString = extractPemString(msp, "keystore");
//对adminPrivateKeyString 进行解密得到decryptedKey字符串 //将解密后的MSP私钥重新赋值给变量adminPrivateKeyString String adminPrivateKeyString = decryptedKey;
说明
当前不支持通过内存传入TLS私钥。