2019-06-20
HyperLedger Fabric 入门实例
参考自官方文档 :HyperLedger Fabric 入门实例
准备事项
- 下载 fabric-samples 项目,所有的应用代码都在 github 上获取到。Hyperledger-Samples
- 下载 hyperledger-samples 的docker镜像,使用官网提供的命令:(需要事先安装 docker 和 curl 和 npm 等工具)
curl -sSL http://bit.ly/2ysbOFE | bash -s -- 1.4.1 1.4.1 0.4.15
这个 curl 访问不到这个地址,所以我直接把地址的 bash 脚本考到本地的新建 bash 文件中,然后直接执行,可以成功,但是下载文件的速度太慢。
然后直接把下载文件的地址放到window浏览器中直接把压缩包文件下载下来,再考到虚拟机中,得到对应的bin和config文件。
下载后的文件目录结构
解压压缩包文件,得到bin和config目录,把这两个目录 export 到 path 中, 后面需要用到这两个文件夹中的命令
export PATH=<path to download location>/bin:$PATH
(注意 : docker运行的是 root 用户还是当前用户,可能会导致export环境变量后,还是找不到目录中的命令)
启动网络
准备事项完成后,就可以开始搭建 Hyperledger Fabric 网络,并进行应用的交互了。
进入从 github 上下载的 fabric-samples 目录,进去 fabcar 目录,执行以下命令,启动网络:
sudo ./startFabric.sh javascript
可以看到这个命令,为我们下载了网络所需的peer节点,orderer排序节点,ca证书机构节点等,都是放在各自的 docker 镜像中,下载成功,应该能显示以下的界面:
脚本运行效果图
网络开启成功后,部署应用,进行和网络的交互,这里使用的javascript的方式,部署应用使用的npm工具。
进入 fabric-samples 目录中的 fabcar/javascript 目录,执行以下命令:
npm install
执行完成,可以看到打印出来的应用目录:
项目依赖
注册用户
启动网络,并注册应用后,我们开始注册一些用户,这些用户通过各自的 ca 进行认证,并与网络进行交互:
在 fabcar/javascript 目录中,执行以下命令,注册一个管理员admin和一个用户user1:
注册管理员node enrollAdmin.js
注册用户node registerUser.js
网络交互——查询
现在,我们有了一个hyperledger网络, 一个连接到该网络的应用和两个用户,接下来我们可以通过调用对应的 smartcontract 对ledger进行操作了。
首先,尝试以下查询操作,在 fabcar/javascript 目录中,执行以下命令,
查询返回结果node query.js
用 vim 查看 query.js 文件中的代码,可以看到其实是通过调用对应 contract 的方法,查询返回所有的信息,对调用的方法进行细微修改,调用单个查询的方法
修改查询方法
可以看到,返回的是查询指定的单条记录结果:
image.png
网络交互——修改
尝试了查询的操作后,再试着调用修改的方法。
在同样的目录下,执行以下命令,向 ledger 中添加一条记录:
node invoke.js
执行完成后,可以看到提交的结果:
查询单个记录
此时,可以调用之前涉及到的查询方法,调用 query.js ,即可返回刚添加的目录信息。
这个demo是在虚拟机环境下的ubuntu中运行的,运行结果和官方文档的结果一样,如果查阅文档的时候有遇到问题,欢迎一起探讨
系统版本