1.环境准备:
lnodejs 6.9.x(不支持v7.x)
lmysql 5.7或更高版本
lHyperledger Fabric 1.0
2.跑通网络:
假设现在你已经跑通你的fabric网络,现在想根据已有的fabric网络,使用fabric-explorer插件,实现对底层网络的具体化展示和实时化查询。
注意:fabric-explorer的配置文件(app/network-config.json)有对ca节点的描述。我之前网络没有ca节点,尝试删除相关ca节点的配置,发现运行./start.sh时报错。因此在跑通网络前就需要设置ca节点,以便网络跑通时存在ca节点并能够正常完成其功能。
如果没有跑通网络,可以根据以下去按步骤完成:
根据官方文档
http://hyperledger-fabric.readthedocs.io/en/latest/build_network.html
和深蓝的博客
http://www.cnblogs.com/studyzy/p/7451276.html
进行交易之后对a进行查询得出的结果:
图一:对a进行查询
如图刚开始生成了四个peer节点,一个orderer节点和一个cli共六个容器。然后在Org1上的peer0节点和Org2上的peer1节点实例化链码,生成两个节点。
图二:查看容器
3.下载安装fabric-explorer项目:
l参考官方文档,
https://github.com/hyperledger/blockchain-explorer
跳过fabric networksetup步骤。
l下载整个项目
git clone https://github.com/hyperledger/blockchain-explorer.git
cd blockchain-explorer
图三:下载fabric-explorer
4.创建数据库:
在blockchain-explorer目录下执行:
mysql -u -p < db/fabricexplorer.sql
5.运行blockchain-explorer:
l修改config.json
参数解析:
“host”和“port”:是你的explorer所运行的地址和可以被浏览器监听到的端口。这里是运行在本机上的,所以设置为localhost和8080。
”channelsList“:通道列表,根据参数名猜测支持多通道。这里填写你之前运行网络时的设置的通道名。
“GOPATH”,即Go的工作目录,设置为你自己的。
“keyValueStore”,在启动这个项目时会自动生成的一个临时文件,在运行start.sh时会删除,start.sh里面有命令rm -rf /tmp/fabric-client-kvs_peerOrg*
“enableTls”:Tls好像是关于安全的。这里可以设置为false。
“users”:不清楚相关功能,猜测是ca节点的帐号和密码。因为在启动网络的时候,可以发现ca节点里面有这个命令:command: sh -c'fabric-ca-server start --ca.certfile /etc/hyperledger/fabric-ca-server-config/ca.org1.example.com-cert.pem--ca.keyfile/etc/hyperledger/fabric-ca-server-config/d4b0309bf140f39d60934b070462affea09d24464ee3b0005bc2c75a4e2d83c4_sk-b admin:adminpw -d'
”mysql“:mysql的一些配置。需要修改的就是你设置的mysql帐号密码。
l修改app/network-config.json或app/network-config-tls.json。
这个根据config.json里面的enableTls参数而定。如果这个参数设置为true,那么explorer运行是就会只加载app/network-config-tls.json,如果是false,就会只加载app/network-config.json
这里修改app/network-config.json
发现一些证书路径指定在/fabric-docker-compose-svt目录下,所以把你启动网络时生成的crypto-config文件夹拷贝至/fabric-docker-compose-svt目录下。
图四:把网络的证书文件拷贝只指导目录
l下载node执行时依赖的库
npm install
npm会根据你所在目录下package.json来下载需要依赖的库,并保存在node_modules文件夹下。整个过程会有一些warn,不影响使用。
图五:下载node运行时依赖的库
l修改./start.sh
由于start.sh把log输出重定向到log.log文件,不能实时查看相关信息,因此可以修改start.sh
node main.js>log.log 2>&1 &
将node main.js的输出重定向到log.log文件,即输出内容不打印到屏幕上,而是输出到log.log文件中。2>&1是将标准出错重定向到标准输出,这里的标准输出已经重定向到了log.log文件,即将标准出错也输出到out.file文件中。最后一个&,是让该命令在后台执行。
因此删除最后一行的>log.log2>&1 &
l运行start.sh
./start.sh
终端会有log输出:
Please openInternet explorer to access:http://localhost:8080/
在firefox输入这个网址,即可看到相应的界面。
图六:fabric-explorer展示界面
6.总结:
现在fabric-explorer虽然基本能跑,还有一些需要完善的地方。
1.不理解整个插件的组织关系,比如运行node main.js时所依赖的其他库,调用的函数之间的关系。以及数据在哪里生成,保存到哪里,然后又被谁读取,怎么解析的,如何展示的也不是很清楚。
2.Fabric-explorer在这里更新有点延迟,往往延迟半分钟到几分钟。猜测和数据库有关。
3.Log输出还有一些报错,大概是ca节点没正确加入网络。
因此最近准备研究一下这个fabric-explorer,加深理解。
领取专属 10元无门槛券
私享最新 技术干货