阿里雲容器服務區塊鏈解決方案全新升級 支持Hyperledger Fabric v1.1

摘要: 全球開源區塊鏈領域影響最爲廣泛的Hyperledger Fabric日前宣佈了1.1版本的正式發佈,帶來了一系列豐富的新功能以及在安全性、性能與擴展性等方面的顯著提升。阿里雲容器服務區塊鏈解決方案第一時間同步升級,在v1.1新功能的基礎上,提供了彈性裸金屬服務器(神龍)、內置容器化Explorer、集成阿里雲日誌服務等方面的增強。

作爲全球開源區塊鏈領域影響最爲廣泛的項目之一,超級賬本近日宣佈了Hyperledger Fabric v1.1的正式發佈。此次升級帶來了一系列豐富的新功能以及在安全性、性能與擴展性等諸多方面的顯著提升。更多詳情可參考下述資料:

與此同時,作爲對開源區塊鏈生態的支持,阿里雲容器服務區塊鏈解決方案也進行了同步升級。這次升級不僅第一時間在Kubernetes集羣上支持Hyperledger Fabric v1.1.0 GA版,並且在以下幾個方面帶來了新的功能增強和使用體驗的優化:

  • 支持新的Node.js類型chaincode和相關示例,以及在國內雲環境落地的適配
  • 支持chaincode級別的賬本數據加密新功能和相關示例
  • 支持新的connection profile和自動生成功能
  • 以及其他Hyperledger Fabric v1.1新功能的支持
  • 支持阿里雲彈性裸金屬服務器(神龍)
  • 內置容器化的Hyperledger Blockchain Explorer
  • 集成阿里雲日誌服務
  • 優化區塊鏈網絡刪除過程的數據目錄清理

本文將對這些主要新功能進行技術方面的解讀。在開始之前,我們準備了一段小視頻,可以讓大家快速瞭解在阿里雲容器服務Kubernetes環境中使用該區塊鏈解決方案的大致流程。

15217001937705


一分鐘認識最新版容器服務區塊鏈解決方案

最新版的區塊鏈解決方案支持從容器服務Kubernetes的應用目錄的acs-hyperledger-fabric圖形界面中實現一鍵部署。此外在參數頁面可以通過直接編輯來實現更豐富的自定義配置,如更改區塊鏈網絡拓撲、指定網絡端口、功能啓用/禁用等等。

在上述視頻演示中,我們依次進行了以下幾步操作:

  1. 配置和一鍵部署區塊鏈網絡
  2. 容器服務Kubernetes控制檯查看和管理區塊鏈網絡的服務和容器
  3. 運行模擬轉賬交易智能合約的CLI測試
  4. 運行容器化、圖形化的區塊鏈瀏覽器
  5. 容器服務控制檯查看區塊鏈網絡運行日誌

需要說明的是,視頻演示操作前需先完成環境準備工作,具體步驟請參見相關文檔指南


新功能:Node.js類型Chaincode支持

在此次Hyperledger Fabric v1.1的升級中,在原有的Golang類型之上(Java類型尚未正式宣佈支持),加入了對流行的Node.js編程語言類型的智能合約(即chaincode)的支持。這將進一步擴大和豐富Hyperledger Fabric的應用開發生態,吸引更多的開發者加入到區塊鏈應用的創新中來。

在此基礎上,通過對Fabric的源代碼分析,我們在區塊鏈解決方案中解決了在國內網絡環境中可能遇到的Node.js類型chaincode實例化(instantiation)過程超時失敗、chaincode鏡像無法創建的侷限性。

如需體驗Node.js類型的chaincode,可採用CLI方式或者Client SDK方式,通過參數指定chaincode語言類型即可。解決方案中提供了基於官方cli-test.sh的示例腳本、以及基於官方的balance-transfer的client SDK示例程序。

CLI方式的Node.js類型chaincode示例
15216986774262

15216991696808

Node.js類型示例chaincode源代碼位置:
15216997838279

SDK方式的Node.js類型chaincode示例
15217000027420

15216999353881

15216995417280

需要說明的是,由於Node.js應用自身編譯構建的特點,Hyperledger Fabric中Node.js類型的chaincode實例化(instantiation)時間相比Golang類型的要更長,所以在這個環節需要稍作等待。


新功能:Chaincode級別對賬本數據的加密和簽名

Hyperledger Fabric v1.1新增支持在chaincode級別對交易的數據(即StateDB裏Key-Value中的Value,通過調用chaincode時傳入)進行加密/解密、簽名/驗證。這樣能實現業務應用將商業敏感數據交給區塊鏈之後,數據全程(包括落地到賬本)在原有的安全機制之上進一步添加了標準的或用戶可擴展的加密算法和簽名算法的保護,進一步提高了數據的安全性。

關於此功能的的官方文檔介紹可參考:
http://hyperledger-fabric.readthedocs.io/en/latest/chaincode4ade.html?highlight=chaincode%20encryption#chaincode-encryption

在容器服務的區塊鏈解決方案中,我們提供了官方的EncCC示例程序用於在CLI環境中運行,方便用戶瞭解此功能的使用和工作機制。在該示例中,首先對鍵"key1"的值“value1”進行加密並記錄到賬本上;然後讀取鍵"key1"並解密其值,輸出顯示"value1";接着,再對鍵“key2”的值"value2"進行加密以及數字簽名並記錄到賬本上,最後讀取鍵“key2”並解密、驗證簽名得到最終值,輸出顯示"value2"。

需要說明的是,使用該CLI示例程序之前,請先創建對應的channel(例如通過運行cli-tset.sh)。

示例程序源代碼參考:
https://github.com/hyperledger/fabric/tree/release-1.1/examples/chaincode/go/enccc_example

2018_03_22_15_48_25_1

2018_03_22_15_50_55_1

2018_03_22_15_52_37_1


新功能:Connection Profile用於Client SDK應用程序

針對不同類型的區塊鏈應用程序有着各不相同的對區塊鏈網絡拓撲和連接信息的描述方式的問題,爲了提供更爲統一規範的應用連接配置,Hyperledger Fabric v1.1開始支持Connection Profile, 目前主要面向Node.js類型的Client SDK應用程序,未來有望推廣到更多類型的SDK應用上。

在此次區塊鏈方案升級中,也同步支持此功能,並且能夠根據用戶輸入的區塊鏈網絡拓撲配置(channel, peer, orderer, ca等)、公網訪問地址和端口等信息,自動生成Connection Profile應用連接配置文件(即network-config.yaml)並提供給用戶下載。而在我們的Client SDK示例balancer-transfer-app中也通過一個腳本實現一鍵下載所有證書密鑰以及Connection Profile等配置文件。

解決方案自動生成的Connection Profile的位置和部分內容示例如下:

2018_03_22_16_27_08_1

如需進一步瞭解Connection Profile各字段的說明,可參考以下文檔:
https://github.com/hyperledger/fabric-samples/blob/release-1.1/balance-transfer/artifacts/network-config.yaml


新功能:支持阿里雲彈性裸金屬服務器(神龍)

此次區塊鏈解決方案升級正式支持在阿里雲彈性裸金屬服務器(神龍)運行Hyperledger Fabric。阿里雲彈性裸金屬服務器可提供與普通物理機無差別的高計算性能,同時還提供物理機級別的安全隔離。這些特性爲提升基於區塊鏈業務系統的安全風險防範能力、加強對數據和隱私的保護等方面帶來了堅實的運行環境保證。在此基礎上,彈性裸金屬服務器的高計算性能和彈性水平伸縮能力,結合Hyperledger Fabric代價級的性能和擴展性方面的提升,有望進一步提升區塊鏈應用和系統的業務處理能力。

從使用方式上,我們提供了基本無縫支持的體驗,用戶只需在創建容器服務Kubernetes集羣中選擇彈性裸金屬服務器(現階段需用戶提前通過工單開通彈性裸金屬服務器的按量付費類型選擇的白名單)作爲worker節點;然後按照標準的區塊鏈解決方案的創建部署流程操作即可。


新功能:內置容器化的區塊鏈瀏覽器

區塊鏈解決方案支持基於標準SDK開發的區塊鏈管控工具、瀏覽器等與區塊鏈網絡連接。在此次升級中,區塊鏈解決方案進一步地將Hyperledger官方開源的Blockchain Explorer 進行了容器化改造,實現了Explorer本身以及其所依賴的MySQL數據庫作爲Kubernetes的service和deployment內置於解決方案中(默認啓用,可設置禁用),隨着區塊鏈網絡的創建實現自動配置、部署、啓動和通過負載均衡(SLB)對外提供Web圖形化的區塊鏈網絡業務交易監控服務。

2018_03_23_10_45_45_1

2018_03_23_10_48_00_1

15217735020012

需要說明的是,區塊鏈瀏覽器的使用前提是先創建出channel(如通過cli-test.sh)。


新功能:集成阿里雲日誌服務

區塊鏈解決方案原生支持容器服務控制檯的日誌功能,以及Kubernetes的kubectl logs命令查看功能。利用前者可以在Web界面上便捷地查看區塊鏈網絡中Peer、Orderer、CA、Kafka、Zookeeper等節點的容器日誌信息,一個示例如下:

logging_entry_1_1

log_page_1

在此基礎上,最新版的容器服務解決方案進一步支持與阿里雲日誌服務進行集成,爲企業客戶提供如日誌存儲、實時索引/查詢/分析、日誌告警、可視化報表等更高級的日誌功能。集成的關鍵參數可在創建部署區塊鏈網絡的頁面進行直接設置,具體使用方法可參考該方案的產品文檔。

config_blockchain_solution_1

在阿里雲日誌服務控制檯查詢和分析日誌的效果如下圖所示。關於日誌服務完整的查詢分析語法以及更多高級功能說明, 可參考日誌服務的產品文檔

query_result_search_1


新功能:刪除流程數據目錄處理優化

考慮到部分區塊鏈解決方案的用戶在開發測試環境需要頻繁創建和刪除區塊鏈網絡,爲了進一步提升效率,這次方案升級優化了對數據目錄清理的優化。具體來說,當區塊鏈網絡被刪除(例如使用helm delete命令)的同時,相應的數據目錄名會被自動添加以下後綴:-deleted-當前時間戳。之所以不直接刪除,主要是爲了防範人爲誤操作的風險,以及滿足部分用戶希望複用原有數據的目的。

假設原數據目錄爲:

/data/fabric/network01

則區塊鏈網絡刪除後,數據目錄會被重命名爲類似如下的名字:

/data/fabric/network01-deleted-2018-03-21-041756

這樣便能進一步優化用戶的區塊鏈創建-刪除-創建流程上的操作體驗了(因爲有用戶需要頻繁進行此類操作進行開發調試)。此外,如需徹底清理數據目錄以釋放存儲空間,可手工運行rm命令或結合自動化腳本很方便地實現。


總結

容器服務區塊鏈解決方案自2017年10月正式發佈以來,獲得了爲數衆多的開發者和來自零售、金融、製造、多媒體等行業的企業用戶的認可和採用,基於解決方案提供的企業級區塊鏈開發測試環境快速地進行基於區塊鏈的業務創新應用的打造。隨着此次Hyperledger Fabric v1.1和區塊鏈解決方案的升級,將進一步幫助我們的用戶打造功能更完備、性能更高、安全性更強、易用性更好的企業級區塊鏈業務應用。

原文鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章