基于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对于的是第三块。

后记

由于篇幅有限,本文并没有分析项目代码,大家如果有问题可在评论区留言,我会根据留言情况与大家交流。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐