本项目为基于Hyperledger Fabric区块链的供应链资产跟踪解决方案,项目主要包括链码和 Web应用两部分。Fabric链码采用GOLANG开发,负责维护资产的状态,后台为采用Node.js开发 的Web应用,负责为用户提供访问区块链上资产的操作界面,例如资产的创建、所有权转移等操作。
在本项目中要跟踪的资产是大理石,当然可以换成和你的业务相关的任何类型资产。 大理石资产的属性定义如下,所有的属性值都是字符串:
- ID:资产的唯一标识符
- COLOR:资产的颜色
- SIZE:资产的尺寸,单位:MM
- OWNER:持有人
本项目提供一个基于Web的用户界面,以便用户操作区块链上的数据。资产在区块链上以 键/值对的形式保存。我们使用资产ID作为键,所有的资产属性构成一个JSON对象,其对应 的字符串作为资产的值。在Fabric区块链上,应用与链码的交互是通过与网络上的Peer节点 通过gRPC协议通信完成的。
应用通信框架
整个应用的通信流程如下图所示:
1、管理员使用浏览器与Node.js应用交互,我们将该Node.js应用称为Marbles。
2、浏览器中的客户端JS代码将通过websocket与Node.js应用交互,当管理员操作界面时,客户端 JS将向后端发送消息。
3、读写账本的操作在Fabric中被称为提议(Proposal),由Node.js应用负责生成提议并发送给 Fabric区块链的对等节点(Peer)。
4、Peer节点与部署在其本地的链码通信,链码将执行/模拟交易,如果模拟的结果没有问题,节点 将对交易进行背书并返回响应给Node.js应用。
5、Node.js应用会将背书过的提议发送给Farbic区块链的排序节点(Orderer),排序节点负责 将整个网络上的多个提议打包并生成新的区块,然后广播给所有的对等节点。
6、最后,对等节点将验证收到的区块,然后写入自己维护的账本,交易现在就生效了,任何之后 发生的账本读取操作都可以反应账本的变化。
使用手册
安装完成后,访问http://localhost:3001
打开web界面,可以执行资产创建、资产交易等操作。
创建新资产
点击+图标创建新的资产:
在弹出的窗口中输入所有的资产属性后,点击CREATE按钮,然后等待新资产在链上创建成功。
资产交易
在web界面中可以通过拖拽方式将一个大理石资产的所有权从一个用户转移给另一个用户。
删除资产
在web界面中也可以将资产拖拽到垃圾桶中,然后等待资产从链上消失:
资产查询
可以在web页面中按资产持有人或资产公司名称进行查询。
应用源码链接:https://github.com/Incede/SupplyChain
汇智网翻译整理,转载请标明出处