本项目为基于Hyperledger Fabric区块链的供应链资产跟踪解决方案,项目主要包括链码和Web应用两部分。Fabric链码采用GOLANG开发,负责维护资产的状态,后台为采用Node.js开发的Web应用,负责为用户提供访问区块链上资产的操做界面,例如资产的建立、全部权转移等操做。git
若是但愿快速高效地掌握超级帐本Fabric区块链的开发,强烈推荐这个在线互动课程:github
在本项目中要跟踪的资产是大理石,固然能够换成和你的业务相关的任何类型资产。大理石资产的属性定义以下,全部的属性值都是字符串:web
本项目提供一个基于Web的用户界面,以便用户操做区块链上的数据。资产在区块链上以键/值对的形式保存。咱们使用资产ID做为键,全部的资产属性构成一个JSON对象,其对应的字符串做为资产的值。在Fabric区块链上,应用与链码的交互是经过与网络上的Peer节点经过gRPC协议通讯完成的。后端
整个应用的通讯流程以下图所示:浏览器
一、管理员使用浏览器与Node.js应用交互,咱们将该Node.js应用称为Marbles。websocket
二、浏览器中的客户端JS代码将经过websocket与Node.js应用交互,当管理员操做界面时,客户端 JS将向后端发送消息。网络
三、读写帐本的操做在Fabric中被称为提议(Proposal),由Node.js应用负责生成提议并发送给Fabric区块链的对等节点(Peer)。并发
四、Peer节点与部署在其本地的链码通讯,链码将执行/模拟交易,若是模拟的结果没有问题,节点 将对交易进行背书并返回响应给Node.js应用。框架
五、Node.js应用会将背书过的提议发送给Farbic区块链的排序节点(Orderer),排序节点负责将整个网络上的多个提议打包并生成新的区块,而后广播给全部的对等节点。socket
六、最后,对等节点将验证收到的区块,而后写入本身维护的帐本,交易如今就生效了,任何以后 发生的帐本读取操做均可以反应帐本的变化。
安装完成后,访问http://localhost:3001
打开web界面,能够执行资产建立、资产交易等操做。
点击**+**图标建立新的资产:
在弹出的窗口中输入全部的资产属性后,点击CREATE按钮,而后等待新资产在链上建立成功。
在web界面中能够经过拖拽方式将一个大理石资产的全部权从一个用户转移给另外一个用户。
在web界面中也能够将资产拖拽到垃圾桶中,而后等待资产从链上消失:
能够在web页面中按资产持有人或资产公司名称进行查询。
应用源码连接:https://github.com/Incede/SupplyChain