關於hyperledger fabric 1.2 的一些特性

區塊鏈兄弟社區,區塊鏈技術專業問答先行者,中國區塊鏈技術愛好者聚集地

關於hyperledger fabric 1.2 的一些特性

原文鏈接: http://t.cn/E7scckv

本文約2000字+,閱讀(觀看)需要12分鐘


一、private data

1.1 概念

隱私數據保存在side DB中,Orderer service是看不見private data的

背書、排序、審計、寫入peer中,都是用的hash值

當需要把private data分享給第三方時,驗證hash值,證明數據是在某一個時間點的

1.2 數據流

發送invoke給背書節點(authorized),private data放在transient field中

背書節點模擬交易,並且存儲再transient data store中(臨時本地存儲),通過goosip協議,根據collection policy傳播

背書節點返回public data給客戶端,包括private key 的hash

Orderer排序,分割區塊

Peer驗證,各個peer用同一種方法驗證hash值。

Commit期間,檢查自己時候有權限拿到private data,如果有,再檢查transient data store,如果沒有的話就從其他peer那裡pull,對比hash值,然後移出transient store

1.3 使用

在初始化鏈碼的時候定義私有數據集合,結合private相關的函數使用

1.4 使用場景

當完整的交易需要信任的話,還是推薦用channel

當需要屏蔽orderer或者某些組織內節點時(存疑),使用collection

二、Service Discovery

Sdk不需要維護靜態信息,這個服務可以提供peer的動態信息,分為layouts和group to peer mapping,sdk可以根據策略選擇peer進行背書。

提供功能:配置查詢(MSPConfig)、peer成員信息查詢、背書節點查詢、本地peer成員信息查詢。

三、Access Control Lists (ACL)

進一步提供了細粒度的訪問控制列表,分為Signature和ImplicitMeta兩種策略,具體見configtx.yaml。

四、CouchDB使用

4.1 流程

在Hyperledger Fabric中啟用CouchDB

創建索引,索引會在出塊的時候更新

將索引添加到您的chaincode文件夾,通過node sdk可以指定位置,peer命令必須在特定位置

安裝並實例化Chaincode

查詢CouchDB狀態數據庫

更新索引

刪除索引

注:深藍在1.0上嘗試直接用rest api訪問couchdb,修改之後fabric未察覺到。

4.2 couchDB介紹

couchDB的底層是一個B-tree的存儲結構,為提高效率,所有的數據的插入或更新都是直接在樹的葉子節點添加,不刪除舊節點,通過版本號來 確定最新的數據--版本號還能用來解決併發寫的衝突。所以數據文件會越來越大,可以在適當地時間運行compact過程或replication過程,會 刪除舊文件,使得數據文件得到壓縮。

五、動態加入組織

生成相關證書

獲取配置、提交配置更新

將組織加入channel

升級相關鏈碼

六、可插拔的背書和驗證

需要不同的交易背書,如UTXO等

可以替換系統合約,如ESCC和VSCC

ESCC和VSCC獨立出來,提供了簽名(驗證策略)和state相關的依賴項,可以自己實現接口,編譯成so文件引用

插件一致性需要節點管理員保證,日後會做插件一致性的驗證

如果返回ExecutionFailureError ,則鏈暫停防止分歧,其他錯誤都會被標記為invalid

導入插件的話推薦protobuf,其他的可能出問題

七、PeerLedger檢查點

新增檢查點,可以拋棄檢查點之前的peerLedger,只留存vLedger(可指定策略)

八、Gossip領導人選舉

靜態:直接再core.yaml裡面指定

動態:領導者發送心跳給其他節點,作為存活的證據,如果peer一段時間內沒有收到這個信息,則開始重新選舉,可以有多個領導者,但是網絡穩定之後有一個領導者會放棄。

#參考文獻

> http://hyperledger-fabric.readthedocs.io/en/release-1.2/

> https://github.com/hyperledger/fabric-samples


分享到:


相關文章: