准備工具:
1.安裝curl(cURL是一個利用URL語法在命令行下工作的文件傳輸工具)
2.安裝docker(每個節點需要單獨放到單獨的docker中啟動)
3.docker-compose(管理多個docker的管理工具 docker-compose k8s)
4.安裝go
5.安裝node.js(寫鏈碼但是不成熟,主要用來寫客戶端)
6.安裝Python(一些運行環境需要)
部署環境:
1.創建hyperledger-fabric
2.下載fabric包含三個版本(fabric版本,fabric-ca版本,第三方庫版本)
下載fabric-ca-linux-amd64
peer中存放區塊
order:數據打包
ccenv:Go語言依賴所需
fafka:排序
將hyperledger-fabric/fabric-samples/bin目錄文件下的拷貝到環境變量中/usr/local/bin
進入first-network,執行:./byfn.sh generate (生成證書文件)
./byfn.sh up(啟動,安裝鏈碼)
./byfn.sh down(關閉)
每個peer節點都要安裝一次鏈代碼,在一個節點上做一次就行
成員管理:
會員注冊(聯盟鏈,私有鏈)
身份保護
交易審計
內容保密
賬本管理
區塊鏈(保存所有的交易記錄)
世界狀態
(最新交易狀態)
(數據存儲在當前節點的數據庫中,自帶的數據庫levelDB,也可以使用couchDB)
交易管理
部署交易(部署的是鏈碼,給節點安裝鏈碼chaincode)
調用交易(invoke)
智能合約
處理網絡成員需要的業務
實現鏈碼和賬本分離(邏輯和數據分離)
基礎概念:
組織:
有用戶
有進行數據處理的節點=》peer
put 寫入到區塊鏈中
get 數據查詢
節點
client
進行交易管理(cli,node sdk,java sdk)
cli ->通過Linux命令,使用的是shell命令對數據進行提交和查詢
node.js (Java,go)->通過node.js實現客戶端
peer
儲存和同步賬本數據
用戶通過客戶端工具對數據進行put操作 ,寫入到數據
數據同步是fabric框架實現的
orderer
排序和分發交易
排序:解決雙花問題
沒發起一般交易都會在orderer節點中排序
交易數據先打包,再寫入區塊
通道
通道是由共識服務提供的通訊機制,將peer和orderer連接在一起,形成具有保密性的通訊線路(虛擬),實現業務的隔離,通道與賬本和狀態緊密相關
交易流程
application/SDK:充當的是客戶端角色
寫數據
客戶端發起一個提案給peer節點
peer節點發起交易預演,得到結果
peer節點將預演結果發送給客戶端
模擬失敗,交易終止
模擬成功,繼續
客戶端將交易提交給排序節點
排序節點進行交易打包
oderer節點將打包數據發送給peer,peer節點將數據寫入區塊鏈中
打包數據的發送不是實時的(曠工)
有設定條件在配置文件中