本項目爲基於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