搭建方法主要参考http://hyperledger-fabric.readthedocs.io/en/latest/dev-setup/devenv/的英文文档说明
准备工作:
Go - 1.6 or later
Vagrant - 1.7.4 or later
VirtualBox - 5.0 or later
这些都必须要用到,git主要用于同步源码,go主要是搭建go语言的编译环境,因为源码是go语言编写的。点击文档说明的链接下载,安装方法和环境变量的设置可以百度,一大堆的参考资料,基本都比较靠谱。后两个就更简单,下载下来安装就行了。另外,由于后面要用到ssh命令,我下载了一个Cygwin64 Terminal,安装选择包的时候搜索openssh,然后选择这个包,安装之后,也需要配置环境变量,具体自己百度。
搭建步骤:
第一步:
首先确保你之前安装go语言的编译环境搭建好了。
然后在git命令行中输入 :
git config --get core.autocrlf
git config --
global core.autocrlf
false
没有深究为什么,按照文档来就行了。
第二步:
把github中的fabric源码拉下来
cd $GOPATH/src
mkdir -p github.com/hyperledger
cd github.com/hyperledger
git clone https://github.com/hyperledger/fabric.git
$GOPATH这个目录在windows下可以随便定,建议后面的按他说的来。源文档的git clone命令可能是针对有Linux id的来的,可以不用他的命令。
第三步:
用Vagrant来配置虚拟机
cd $GOPATH/src/github.com/hyperledger/fabric/devenv
vagrant up
vagrant up第一次时间非常长,有时还断,所以建议FQ,而且要全局加速,亲测速度确实要稳定一些。文档里说运行了这个命令之后就可以喝咖啡去了,要a few minutes,我表示不服。
Vagrant装好之后,大部分的工作就完成了,然后就是部署一些东西。
如果下载box很慢,可以加我QQ我发给你一份已经生成好的 virtualBox.box,然后再进行如下步骤即可:cd $GOPATH/src/github.com/hyperledger
vagrant box add hyperledger/fabric-baseimage G:\virtualbox.box
cd $GOPATH/src/github.com/hyperledger/fabric/devenv
rm(或del) -rf Vagrantfil
vagrant inint hyperledger/fabric-baseimage
然后再vagrant up
之后的vagrant up启动都是这个样子:
部署步骤:
打开ssh:
cd $GOPATH/src/github.com/hyperledger/fabric/devenv
vagrant ssh
这个时候如果没装之前的ssh,就会报错。
安全验证(可选):
这个是可选项,主要用作member的身份认证,具体作用体现在后面的命令加不加username上。
cd $GOPATH/src/github.com/hyperledger/fabric
make membersrvc && membersrvc
运行验证peer:
开另外一个命令行窗口,运行
cd $GOPATH/src/github.com/hyperledger/fabric/devenv
vagrant ssh
然后
cd $GOPATH/src/github.com/hyperledger/fabric
make peer
peer node start --peer-chaincodedev
这样,peer节点就起来了。
编译chaincode:
另开一个命令行窗口,运行:
cd $GOPATH/src/github.com/hyperledger/fabric/devenv
vagrant ssh
然后选择源码中的一个例子chaincode机型编译
cd $GOPATH/src/github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02
go build
注册和运行chaincode:
CORE_CHAINCODE_ID_NAME=mycc CORE_PEER_ADDRESS=0.0.0.0:7051 ./chaincode_example02
mycc是chaincode的名称,可以随便定,只要在后面的过程中对应使用就行了。
CLI
调试:
我没有用REST方式,用的CLI。
用户注册:
cd $GOPATH/src/github.co/hyperledger/fabric/peer
peer network login <username>
username 要从membersrvc.yaml里边选,比如jim,然后会要求输入密码,把后面的密码输入就行了。然后注册会成功。
peer窗口可以看到注册信息:
Chaincode的部署交易:
peer chaincode deploy -n mycc -c '{"Function":"init", "Args": ["a","100", "b", "200"]}'
如果使用了安全模式:
CORE_SECURITY_ENABLED=trueCORE_SECURITY_PRIVACY=true
peer chaincode deploy -u jim -n mycc -c '{"Function":"init", "Args": ["a","100", "b", "200"]}'
Chaincode的调用交易:
peer chaincode invoke -l golang -n mycc -c '{"Function": "invoke", "Args": ["a", "b", "10"]}'
如果使用了安全模式:
CORE_SECURITY_ENABLED=true
CORE_SECURITY_PRIVACY=true
peer chaincode invoke -u jim -l golang -n mycc -c '{"Function":"invoke", "Args": ["a", "b", "10"]}'
Chaincode的查询交易:
peer chaincode query -l golang -n mycc -c '{"Function": "query", "Args": ["b"]}'
安全模式:
CORE_SECURITY_ENABLED=true
CORE_SECURITY_PRIVACY=true
peer chaincode query -u jim -l golang -n mycc -c '{"Function":"query","Args": ["b"]}'
peer窗口
chaincode窗口
部署,调用和查询三个交易在这几个窗口中都可以看到。
删除安全模式下的临时文件:
cd $GOPATH/src/github.com/hyperledger/fabric/devenv
vagrant ssh
rm -rf /var/hyperledger/production