为基于 Hyperledger Fabric v0.6 的区块链网络开发客户端应用程序(2)
- UID
- 1066743
|
为基于 Hyperledger Fabric v0.6 的区块链网络开发客户端应用程序(2)
在 Bluemix 上创建 IBM Blockchain 服务
要开发本教程中的样本客户端,您需要一个 Bluemix 帐户()。
- 拥有 Bluemix 帐户后,。一定要选择 Starter Developer plan (beta),这会为您设置一个基于 Hyperledger Fabric v0.6 的区块链网络。
- 创建服务后,导航到您的 Blockchain 服务主页,单击导航栏中的 Service credentials: 点击查看大图
- 单击 ACTIONS 下的 View credentials:
您现在可以看到您的服务的凭证。复制文本框中的全部内容,将它们存储在一个安全的位置。这些凭证包含客户端应用程序与区块链网络通信所需的信息。教程后面的章节将介绍如何将这些服务凭证放在样本客户端的配置文件中。
2
在 Bluemix 上创建 Cloudant NoSQL DB 服务
样本客户端使用了一个基于 Cloudant 的键值存储的自定义实现。Cloudant 服务是一个由 couch DB 提供助力的 NoSQL DB 服务。所以,与 Blockchain 服务一样,您将使用您的 Bluemix 帐户()。
- 拥有 Bluemix 帐户后,让我们来创建 。选择 Lite (free) plan。
- 创建服务后,导航到您的 Cloudant 服务主页,单击导航栏中的 Service credentials。
- 单击 ACTIONS 下的 View credentials。
您现在可以看到您的服务的凭证。复制文本框中的全部内容,将它们保存到一个安全位置供以后使用。
3
下载样本代码包
下载并解压样本代码包(从本教程)。在终端中导航到解压的 code_package 目录的根路径,运行 npm install。此命令将下载运行样本客户端所需的所有模块。完成上述操作后,您会在 code_package 根路径中看到一个 node_modules 文件夹。
4
部署样本链代码
运行客户端之前,您需要将 code_package/chaincode/ 下的 chaincode_sample.go 部署到早先创建的 IBM Blockchain 服务中。
- 导航到 IBM Blockchain 服务仪表板,单击 APIs:
- 在 APIs 部分,单击 Network’s Enroll IDs。这部分列出了已向区块链网络注册的用户,这些用户只需要登记即可部署和调用链代码。
选择 user_type1_0 用户。记下此用户的 ID 和密码。
备注:不要登记 admin 和 WebAppAdmin 用户。
它们是有权注册其他用户的特殊用户。我们的 Node.js 客户端将负责登记和利用这些用户。
- 导航到 /registrar 选项卡,在有效负载中填入登记 ID 和登记密码:
1
2
3
4
| {
"enrollId": "user_type1_0",
"enrollSecret": "5c9db3deb6"
}
|
单击 Try It Out 按钮,以便对区块链网络中选定的对等节点执行 REST 调用。您将获得一个响应,表明该用户已成功登录。现在可以使用 user_type1_0 部署链代码了。
- 导航到 /chaincode 选项卡。
单击 DeploySpec 部分旁边的文本区域。将文本区域的内容替换为以下内容:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| {
"jsonrpc": "2.0",
"method": "deploy",
"params": {
"type": 1,
"chaincodeID": {
"path": "https://github.com/varojha1/Hyperledger-Fabric-v6-tutorial/chaincode"
},
"ctorMsg": {
"function": "init",
"args": [
]
},
"secureContext": "user_type1_0"
},
"id": 0
}
|
chaincodeID 是 GitHub 存储库中的 chaincode_sample.go 文件的路径。对于本教程,我已创建了存储库,并上传了客户端代码和链代码供您使用。
- 单击 Try It Out 按钮执行部署请求。您会获得类似这样的响应:
1
2
3
4
5
6
7
8
| {
"jsonrpc": "2.0",
"result": {
"status": "OK",
"message": "36ebb862f73a0e18701338fe2b8de99e31202ff8649c8b9909fa0c0fada22b127a997e5f8bf074f35a36a60e765a2919a8a405ee29f"
},
"id": 1
}
|
复制 message 键的内容并保存。它表示刚部署的链代码的链代码 ID。 - 在编辑器中打开 code_package/config/runtime.json 文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
| {
"env": "local",
"processname": "BlockchainSampleClient",
"request": {
"size": "16mb"
},
"chaincode": {
"id": "",
"name": "cp_chaincode"
},
"databases": {
"devWorksAppMaster": "devworks_app_master"
},
"VCAP_SERVICES": {
"cloudantNoSQLDB": [{
"name": "Cloudant NoSQL DB-vern",
"label": "cloudantNoSQLDB",
"plan": "Lite",
"credentials": {
}
}],
"ibm-blockchain-5-prod": [{
"name": "Blockchain-v6-devWorks",
"label": "ibm-blockchain-5-prod",
"plan": "ibm-blockchain-plan-5-prod",
"credentials": {
}
}]
},
"log4js": {
"replaceConsole": true,
"appenders": [{
"type": "console"
}, {
|
在 chaincode 对象下,将 id 的值替换为您在第 4-5 步中保存的链代码 ID。
将 ibm-blockchain-5-prod 对象下的 credentials 对象的内容替换为您在第 1-3 步中从 Bluemix 上的 Blockchain 服务获取的服务凭证。这些服务凭证有一个证书链接,可下载用于客户端与 Blockchain 服务之间的 TLS 通信的证书:
"cert": https://blockchain-certs.mybluemix.net/us.blockchain.ibm.com.cert
尽管我已将该证书包含在 code_package 中,但建议您将该证书替换为上述链接中找到的证书。将该证书放在 code_package 的根文件夹中。
类似地,如果您想使用基于 Cloudant 的键值存储实现来运行客户端,可将 cloudantNoSQLDB 对象下的 credentials 对象的内容替换为您在第 2-3 步中从 Bluemix 上的 Cloudant 服务获取的服务凭证。
|
|
|
|
|
|