您的位置:首页 > 大数据 > 人工智能

在 Win7 使用 hyperledger fabric source code建构 Local Blockchain Network System

2016-10-03 08:25 716 查看

在 Win7 使用 hyperledger/fabric source code建构 Local Blockchain Network System

作者:陳兆麟
  Email:chenlin2@ms9.hinet.net

当 IBM 在 Bluemix开发 Blockchain Service 时因无法面面俱到,所以将 4 万行源码 (hyperledger/fabric) 贡献给 Linux Foundation;它希望开发者根据不同的应用开发客制化的Blockchain,并以 Docker Images 的形式安装在 Bluemix 云端平台供客户使用;同时 IBM 也扩充了Bluemix 的其它服务 (例如 IoT platform service), 使其能支持 Blockchain,如此便能吸引开发者愿意将客制化Blockchain 部署在 Bluemix。阳春型的 Blockchain 能做的事有限,如果开发者要将 Blockchain转至其它云端平台,可能要考虑开发其它配套 (例如物联网的支持) 的成本;而其它云端大厂也可以 hyperledger/fabric为基础开发自己的Blockchain应用系统,虽然方便但也成就了IBM成为 Blockchain 规格的制定者。要建立客制化的Blockchain Service,就必须先在local machine以hyperledger/fabric 源码建立 local blockchain network,系统开发完毕后再以docker images 的形式安装在云端平台供客户使用,以下范例即在 Win7建立 local blockchain network 并测试其基本功能。

开发环境: Win7 (64 bit, RAM >4G) , vagrant , blockchain, postman,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)

win7 安装 vagrant

(https://releases.hashicorp.com/vagrant/1.8.5/vagrant_1.8.5.msi)

2. 建立 github账号

登入github 建立账号 (https://github.com/ 纪录 username 及 password),clone hyperledger/fabric 至你的 repository

浏览器入以下网址:

https://github.com/hyperledger/fabric/blob/master/docs/Gerrit/gerrit.md#Working-with-a-local-clone-of-the-repository


(点选 fork )



3. 确认 fabric 已 clone 至你的 repository



4. 将 fabric clone至Win7 local machine

进入Win7 command shell:

$mkdir d:\GoProjects

$set GOPATH=D:\GoProjects

$mkdir d:\GoProjects\src

$ cd d:\GoProjects\src

$mkdir -p github.com\hyperledger

$cd github.com/hyperledger

$git clone https://github.com/chenlin2/fabric

$cd d:\GoProjects\src\github.com\hyperledger\fabric\devenv

$vagrant up (第一次在 virtual box 产生虚拟机器 hyperledger需要一段时间)



5. 登录至hyperledger 虚拟机器

$vagrant ssh (若失败,参考附录 3)

vagrant@hyperledger-devenv:v0.1.0-57bbb61:echo $GOPATH

/opt/gopath

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

6. 建立安全机制 (在 hyperledger虚拟机器 command shell)

#cd $GOPATH/src/github.com/hyperledger/fabric

#make membersrvc && membersrvc &

#export CORE_SECURITY_ENABLED=true

#export CORE_SECURITY_PRIVACY=true

# peer -v (检验 peer 是否建立)

若 peer 不存在 #make peer

#peer node start
--
peer-chaincodedev & (建立 blockchain network node)

7. 编译范例 chaincode_example02

#cd $GOPATH/src/github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02

#go build (输出 chaincode_example02)

#ls

chaincode_example02  chaincode_example02.go


#export CORE_CHAINCODE_ID_NAME=mycc

#export CORE_PEER_ADDRESS=0.0.0.0:7051

#./chaincode_example02 &



8. 在 win7下载安装 Postman (Postman-win64-4.7.1-Setup.exe) https://www.getpostman.com/apps

Postman 具有图形接口,藉REST API 与刚建立的 Blockchain Netwok 沟通



9. 检视 blockchain network

REST API字段输入:http://localhost:7050/network/peers

7050定义于core.yaml



10. User 至 vp (validating peer) 注册登录:

REST API字段输入: http://localhost:7050/registrar

{
"enrollId": "jim",
"enrollSecret": "6avZQLwcUe9b"
}




11. 初始设定 a=100 b=200

REST API字段输入: http://localhost:7050/chcincode

执行init function args:[“a”, “100”, “b”, “200”]

{
"jsonrpc": "2.0",
"method": "deploy",
"params": {
"type": 1,
"chaincodeID":{
"name": "mycc"
},
"ctorMsg": {
"function":"init",
"args":["a", "100", "b", "200"]
},
"secureContext": "jim"
},
"id": 1
}




12. a 转移 b 10单元

REST API字段输入: http://localhost:7050/chcincode

执行 invoke function args:[“a”, “b”, “10”]

{
"jsonrpc": "2.0",
"method": "invoke",
"params": {
"type": 1,
"chaincodeID":{
"name":"mycc"
},
"ctorMsg": {
"function":"invoke",
"args":["a", "b", "10"]
},
"secureContext": "jim"
},
"id": 3
}




13. 询问是否a=90

REST API字段输入: http://localhost:7050/chcincode

执行 function:query, args:[“a”]

{
"jsonrpc": "2.0",
"method": "query",
"params": {
"type": 1,
"chaincodeID":{
"name":"mycc"
},
"ctorMsg": {
"function":"query",
"args":["a"]
},
"secureContext": "jim"
},
"id": 5
}




14. 本例步骤已存至local_blockchain_example02.postman_collection.json (如 附录 2),当执行至步骤6 import此json檔后点选各项(peers, login, init,invoke,read) 即可执行。

15. 模仿本例步骤可将先前使用 bluemix blockchain service 的范例:

http://www.remkohde.com/2016/07/04/running-your-own-blockchain/


转换至 local blockchain network 环境执行。

附录:

1.Postman使用手册

 http://www.jianshu.com/p/13c8017bb5c8

2.local_blockchain_example02.postman_collection.json网址

https://1drv.ms/u/s!AkBmzWP0h-Vxgg9c8mHDB4iJzH6D

3.cygwin 增加 ssh 指令

http://superuser.com/questions/868604/ssh-client-not-found-on-cygwin64

4.陈兆麟 facebook

https://zh-cn.facebook.com/chaolin.chen.18

參考文獻:

1.https://github.com/hyperledger/fabric/blob/master/docs/Setup/Chaincode-setup.md

2.https://github.com/hyperledger/fabric/blob/master/docs/dev-setup/devenv.md

3.https://github.com/hyperledger/fabric/blob/master/docs/Setup/Chaincode-setup.md

4.https://segmentfault.com/a/1190000002645737

5.https://github.com/hyperledger

6.http://marmelab.com/blog/2016/04/28/blockchain-for-web-developers-the-theory.html

7.http://marmelab.com/blog/2016/05/20/blockchain-for-web-developers-in-practice.html

8.http://marmelab.com/blog/2016/06/14/blockchain-for-web-developers-the-truth.html

9.https://www.hyperledger.org/

10.http://blockchaindev.org/

11.http://hyperledger-fabric.readthedocs.io/en/latest/Setup/Network-setup/

12.http://www.qkldx.net/topic/213/hyperledger-fabric-chaincode-%E5%AD%A6%E4%B9%A01-%E5%BC%80%E5%8F%91%E8%B0%83%E8%AF%95

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  blockchain