在学校研究了一下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.sh2.注册Admin和User
node registerAdmin.js node registerUser.js3.启动web服务
npm start启动服务后访问http://localhost:3000,首页为:
登录成功后首页为:
查询结果为:
转账结果: 此时我们再次查询a的余额应该为110:
我们回顾前面的操作,网络启动生产创世区块,实例化链码初始化a,b两个账户分别为100,200,最后我们通过网页进行了一次转账交易过程,所以区块链网络分布式账本中理论上应该具有三个区块。 ①我们点击区块遍历查询结果如下: 结果显示当前区块高度为3,同时下半部分显示了创世区块的区块number ,previous_hash以及data_hash ②我们还可以在搜索栏输入自己要查找的目的区块id,例如我们查找第三个区块 由于区块编号是从0开始的,所以number 2对于的是第三块。
由于篇幅有限,本文并没有分析项目代码,大家如果有问题可在评论区留言,我会根据留言情况与大家交流。