使用HFC SDK for Node.js 开发 Hyperledger Fabric 客户端应用系统

使用HFC SDK for Node.js 开发 Hyperledger Fabric 客户端应用系统

作者:陳兆麟 Email:[email protected]

开发区块链 (for Hyperledger Fabric) 应用系统时,首先要在 local 环境测试 chaincode (智能合约),测试无误后再将 chaincode 嵌入至客户端程序;客户端程序 (for Node.js) 使用Hyperledger Fabric Client (HFC) SDK所提供的 APIs与blockchain network 交谈。包含 HFC SDK的Node.js 客户端程序可完成下列功能:(1). user可注册与登录并使用应用系统所建立的blockchain network。(2). 客户端程序的HFC SDK将启动包含 (deploy, invoke and query) 功能的 chaincode (for go or java) 将 user 所提出之交易 submit 至已建立的 blockchain network。(3). 在 blockchain network 之外储存系统执行时所需的私钥及凭证。以下范例使用包含HFC SDK APIs 的Node.js App 与 Bluemix 之 blockchain service 所建构的 blockchain network 交谈。

开发环境: Win7 (64 bit, RAM >=8G) , vagrant , blockchain, Hyperledger, golang

1. win7 安装 cygwin

(https://cygwin.com/install.html)

将安装之执行文件目录 (C:\cygwin64\bin) 设定在控制台系统 path 变量

win7 安装 virtualbox (VirtualBox-5.1.6-110634-Win.exe)

(https://www.virtualbox.org/)

win7 安装 git (https://git-scm.com/downloads)

2.安装 fabric (0.6 release)

进入Win7 command shell:
$mkdir -p d:\GoProjects\src\github.com\hyperledger
$cd d:\GoProjects\src\github.com\hyperledger
$git clone -b v0.6 http://gerrit.hyperledger.org/r/fabric (0.6 release)
$cd d:\GoProjects\src\github.com\hyperledger\fabric\devenv
修正 Vagrantfile
(D:\GoProjects\src\github.com\hyperledger\fabric\devenv\Vagrantfile)
新增 :
config.vm.network “forwarded_port”, guest: 22, host: 22
config.vm.network “forwarded_port”, guest: 3000, host: 3000
修正 :
vb.name = “hyperledger” (hyperledger 为 virtualbox 虚拟机器名称)
$vagrant up (第一次在 virtual box 产生虚拟机器 hyperledger需要一段时间)
使用HFC SDK for Node.js 开发 Hyperledger Fabric 客户端应用系统_第1张图片

3. 使用 putty (附录 1) 登录 hyperledger VM (username: vagrant,password:vagrant)

使用HFC SDK for Node.js 开发 Hyperledger Fabric 客户端应用系统_第2张图片

4. 在hyperledger VM使用 nvm 安装 node 最新版 (参考附录 2)

$ nvm use 6.9.0 (选择 node 版本)
$ node -v
 v6.9.0
$ npm -v
  3.10.8

5.验证已安装 git, Go 的版本

$go version (go version go1.6 linux/amd64)

$git version (git version 1.9.1)

6. 验证hyperledger已挂载 Win7 目录

hyperledger挂载点 ($GOPATH/src/github.com/hyperledger/fabric)
已挂载 win 7 local machine目录
(d:\GoProjects\src\github.com\hyperledger\fabric)
可用 touch 指令新增 empty file (例如 touch abcd) 测试是否挂载成功

7.安装 SDK-Demo 范例

$mkdir -p $HOME/workspace
$cd $HOME/workspace
$git clone https://github.com/IBM-Blockchain/SDK-Demo.git

8. 至 Bluemix Blockchain Service 建立 instance

请参考: http://blog.csdn.net/chenjaulin/article/details/52581786
使用HFC SDK for Node.js 开发 Hyperledger Fabric 客户端应用系统_第3张图片

9. 点选服务认证,复制 Service Credentials 至 ServiceCredentials.json

使用HFC SDK for Node.js 开发 Hyperledger Fabric 客户端应用系统_第4张图片

10 执行范例程序 helloblockchain.js

$npm install (产生的node_modules目录包含 HFC SDK package)
$node helloblockchain.js &
执行后,不可更换 ServiceCredentials.json 内容 (其内容已嵌入至数据夹)
若要更换请建立新的 Blockchain Service instance 及重新安装 SDK-Demo。

11. 执行结果说明:

config.json: a=100 b=200 每次执行将 a 移出 10 至B
以下执行显示程序已执行 3 次

使用HFC SDK for Node.js 开发 Hyperledger Fabric 客户端应用系统_第5张图片

12. 此一简单范例将原先使用 postman 工具单步呼叫 chaincode 所含 (init,invoke,query) function 转为在 Node.js 程序中使用 HFC SDK APIs 对 chaincode 执行相同的呼叫, user 可加上 UI 接口扩大应用程序功能。

https://1drv.ms/b/s!AkBmzWP0h-Vxggw_dTKAaBXHNKah

附录:

1.Win7 安装 putty
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
http://download.ithome.com.tw/article/index/id/1649
2.hyperledger VM 安装 nvm & node
http://www.liquidweb.com/kb/how-to-install-nvm-node-version-manager-for-node-js-on-ubuntu-14-04-lts/
https://www.liquidweb.com/kb/how-to-install-node-js-via-nvm-node-version-manager-on-ubuntu-14-04-lts/
3.陈兆麟 facebook
https://zh-cn.facebook.com/chaolin.chen.18

參考文獻:

1.https://console.ng.bluemix.net/docs/services/blockchain/etn_sdk.html
2.https://github.com/hyperledger/fabric/blob/master/examples/events/block-listener/README.md
3.https://github.com/IBM-Blockchain/SDK-Demo/blob/master/README.md
4.https://hyperledger-fabric.readthedocs.io/en/latest/Setup/Network-setup/
5.https://console.ng.bluemix.net/docs/services/blockchain/etn_pbft.html
6.https://github.com/IBM-Blockchain/SDK-Demo
7.https://github.com/hyperledger/fabric-sdk-node/blob/master/docs/node-sdk-indepth.md
8.https://github.com/hyperledger/fabric-sdk-py
9.https://github.com/hyperledger/fabric-sdk-node/blob/master/docs/sample-standalone-app.md
10.https://github.com/hyperledger/fabric-sdk-node/blob/master/docs/sample-web-app.md
11.https://developer.ibm.com/answers/questions/318967/installing-hfc-for-nodejs.html
12.https://github.com/hyperledger/fabric-sdk-node
13.https://1drv.ms/f/s!AkBmzWP0h-Vxbr7h1uTNsTMcPWI
14.https://1drv.ms/b/s!AkBmzWP0h-VxazOBOsVz8nGMLpM
15.https://1drv.ms/b/s!AkBmzWP0h-VxbLK7FOjH9IL5HHc
16.https://www.youtube.com/watch?v=24JAF9Eu1mk&list=UUOTZe-b_jE_Ovy9K9UhZ4BA&index=74
17.https://www.youtube.com/watch?v=wSmJ-rwUo8I&list=UUOTZe-b_jE_Ovy9K9UhZ4BA&index=73
18.https://www.youtube.com/watch?v=SOsn6MvGH60&list=UUOTZe-b_jE_Ovy9K9UhZ4BA&index=72

你可能感兴趣的:(bluemix,blockchain,区块链,hyperledge)