天天看點

阿裡雲容器服務區塊鍊解決方案全新更新 支援Hyperledger Fabric v1.1

作為全球開源區塊鍊領域影響最為廣泛的項目之一,超級賬本近日宣布了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環境中使用該區塊鍊解決方案的大緻流程。

阿裡雲容器服務區塊鍊解決方案全新更新 支援Hyperledger Fabric v1.1

<video src="https://acs-blockchain-public.oss-cn-hangzhou.aliyuncs.com/blockchain_solution_1.1_demo.mp4"></video>

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

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

配置和一鍵部署區塊鍊網絡

容器服務Kubernetes控制台檢視和管理區塊鍊網絡的服務和容器

運作模拟轉賬交易智能合約的CLI測試

運作容器化、圖形化的區塊鍊浏覽器

容器服務控制台檢視區塊鍊網絡運作日志

在此次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示例

阿裡雲容器服務區塊鍊解決方案全新更新 支援Hyperledger Fabric v1.1
阿裡雲容器服務區塊鍊解決方案全新更新 支援Hyperledger Fabric v1.1

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

阿裡雲容器服務區塊鍊解決方案全新更新 支援Hyperledger Fabric v1.1

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

阿裡雲容器服務區塊鍊解決方案全新更新 支援Hyperledger Fabric v1.1
阿裡雲容器服務區塊鍊解決方案全新更新 支援Hyperledger Fabric v1.1
阿裡雲容器服務區塊鍊解決方案全新更新 支援Hyperledger Fabric v1.1

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

Hyperledger Fabric v1.1新增支援在chaincode級别對交易的資料(即StateDB裡Key-Value中的Value,通過調用chaincode時傳入)進行加密/解密、簽名/驗證。這樣能實作業務應用将商業敏感資料交給區塊鍊之後,資料全程(包括落地到賬本)在原有的安全機制之上進一步添加了标準的或使用者可擴充的加密算法和簽名算法的保護,進一步提高了資料的安全性。

關于此功能的的官方文檔介紹可參考:

<a href="http://hyperledger-fabric.readthedocs.io/en/latest/chaincode4ade.html?highlight=chaincode%20encryption#chaincode-encryption">http://hyperledger-fabric.readthedocs.io/en/latest/chaincode4ade.html?highlight=chaincode%20encryption#chaincode-encryption</a>

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

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

示例程式源代碼參考:

<a href="https://github.com/hyperledger/fabric/tree/release-1.1/examples/chaincode/go/enccc_example">https://github.com/hyperledger/fabric/tree/release-1.1/examples/chaincode/go/enccc_example</a>

阿裡雲容器服務區塊鍊解決方案全新更新 支援Hyperledger Fabric v1.1
阿裡雲容器服務區塊鍊解決方案全新更新 支援Hyperledger Fabric v1.1
阿裡雲容器服務區塊鍊解決方案全新更新 支援Hyperledger Fabric v1.1

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

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

阿裡雲容器服務區塊鍊解決方案全新更新 支援Hyperledger Fabric v1.1

如需進一步了解Connection Profile各字段的說明,可參考以下文檔:

<a href="https://github.com/hyperledger/fabric-samples/blob/release-1.1/balance-transfer/artifacts/network-config.yaml">https://github.com/hyperledger/fabric-samples/blob/release-1.1/balance-transfer/artifacts/network-config.yaml</a>

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

阿裡雲容器服務區塊鍊解決方案全新更新 支援Hyperledger Fabric v1.1
阿裡雲容器服務區塊鍊解決方案全新更新 支援Hyperledger Fabric v1.1
阿裡雲容器服務區塊鍊解決方案全新更新 支援Hyperledger Fabric v1.1

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

區塊鍊解決方案原生支援容器服務控制台的日志功能,以及Kubernetes的<code>kubectl logs</code>指令檢視功能。利用前者可以在Web界面上便捷地檢視區塊鍊網絡中Peer、Orderer、CA、Kafka、Zookeeper等節點的容器日志資訊,一個示例如下:

阿裡雲容器服務區塊鍊解決方案全新更新 支援Hyperledger Fabric v1.1
阿裡雲容器服務區塊鍊解決方案全新更新 支援Hyperledger Fabric v1.1

在此基礎上,最新版的容器服務解決方案進一步支援與阿裡雲日志服務進行內建,為企業客戶提供如日志存儲、實時索引/查詢/分析、日志告警、可視化報表等更進階的日志功能。內建的關鍵參數可在建立部署區塊鍊網絡的頁面進行直接設定,具體使用方法可參考該方案的産品文檔。

阿裡雲容器服務區塊鍊解決方案全新更新 支援Hyperledger Fabric v1.1
阿裡雲容器服務區塊鍊解決方案全新更新 支援Hyperledger Fabric v1.1

考慮到部分區塊鍊解決方案的使用者在開發測試環境需要頻繁建立和删除區塊鍊網絡,為了進一步提升效率,這次方案更新優化了對資料目錄清理的優化。具體來說,當區塊鍊網絡被删除(例如使用helm delete指令)的同時,相應的資料目錄名會被自動添加以下字尾:<code>-deleted-目前時間戳</code>。之是以不直接删除,主要是為了防範人為誤操作的風險,以及滿足部分使用者希望複用原有資料的目的。

假設原資料目錄為:

則區塊鍊網絡删除後,資料目錄會被重命名為類似如下的名字:

這樣便能進一步優化使用者的區塊鍊建立-删除-建立流程上的操作體驗了(因為有使用者需要頻繁進行此類操作進行開發調試)。此外,如需徹底清理資料目錄以釋放存儲空間,可手工運作rm指令或結合自動化腳本很友善地實作。

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

如有興趣體驗最新版的容器服務區塊鍊解決方案,請通路産品文檔的快速開始指南:

<a href="https://help.aliyun.com/document_detail/64311.html">阿裡雲容器服務區塊鍊解決方案産品文檔 - 快速開始</a>

繼續閱讀