基于Hyperledger Fabric的官方例子e2e构建一个简单的web应用
在学校研究了一下Hyperledger Fabric,我们知道所有入坑fabric的新手要做的第一件事就是跑通fabric/examples/e2e_cli下的官方案例(初始化两个账户a,b然后a,b之间可以相互转账)。但是官方给的案例所有的操作都是通过cli容器在终端来进行的,非常抽象!没有提供一个直观的web界面来操作,因此本人基于此做了一个完整的web应用并给出源码地址。
github项目地址.
功能
1.初始化两个账户a和b,其中a,b的余额分别为100,200;
2.a和b之间可以相互转账;
3.可以查询a,b的余额;
4.可以获取网络中的区块高度,并根据输入的number查询对应的区块;
备注
本篇文章不会介绍项目的启动流程(启动流程详情见github),只会对我认为比较重要地部分进行大致地讲解,不会讲解细节,如果有什么疑惑的地方请在评论区进行留言。
库版本
本机fabric版本是1.0,所以先要下载对应镜像。web应用使用的是node js 的express框架.
npm 6.4.1
node.js v8.12.0
fabric 1.0
express 4.14.0
一.项目说明
项目目录结构如下图所示:
basic-network
文件夹放的是区块链基本网络配置文件;
bin
目录放的是公私钥生成工具configtxgen和cryptogen;
chaincode
目录放的是chaincode,在启动网络的时候会选择具体的chaincode,本项目的启动脚本里面默认选择chaincode_example02.go也就是a,b转账;
nodejdk
该目录是我们基于fabric网络开发的web应用,也是我们说明的重点。
二.启动应用
1.启动网络
./startFabric.sh
2.注册Admin和User
node registerAdmin.js
node registerUser.js
3.启动web服务
npm start
三.执行流程
启动服务后访问http://localhost:3000
,首页为:
1.注册
2.登录
登录成功后首页为:
3.余额查询
查询结果为:
4.余额转让
转账结果:
此时我们再次查询a的余额应该为110:
5.区块遍历
我们回顾前面的操作,网络启动生产创世区块,实例化链码初始化a,b两个账户分别为100,200,最后我们通过网页进行了一次转账交易过程,所以区块链网络分布式账本中理论上应该具有三个区块。
①我们点击区块遍历查询结果如下:
结果显示当前区块高度为3,同时下半部分显示了创世区块的区块number ,previous_hash以及data_hash
②我们还可以在搜索栏输入自己要查找的目的区块id,例如我们查找第三个区块
由于区块编号是从0开始的,所以number 2对于的是第三块。
后记
由于篇幅有限,本文并没有分析项目代码,大家如果有问题可在评论区留言,我会根据留言情况与大家交流。