# 簡介

區塊鏈即服務（Blockchain as a Service，BaaS），是部署在雲計算基礎設施之上，對外提供區塊鏈網絡的生命週期管理和運行時服務管理等功能的一套工具。

構建一套分佈式的區塊鏈方案絕非易事，既需要硬件基礎設施的投入，也需要全方位的開發和運營管理（DevOps）。BaaS 作為一套工具，可以幫助開發者快速生成必要的區塊鏈環境，進而驗證所開發的上層應用。

除了區塊鏈平臺本身，一套完整的解決方案實際上還可以包括設備接入、訪問控制、服務監控等管理功能。這些功能，讓 BaaS 平臺可以為開發者提供更強大的服務支持。

從 2016 年起，業界已有一些前沿技術團隊發佈了 BaaS 平臺，除了商業的方案如 IBM Bluemix 和微軟 Azure 雲之外，超級賬本開源項目也發起了 Cello 項目，以提供一套實現區塊鏈平臺運營管理功能的開源框架。

## 參考架構

下圖給出了區塊鏈即服務功能的參考架構，自上而下分為多層結構。最上層面嚮應用開發者和平臺管理員提供不同的操作能力；核心層負責完成包括資源編排、系統監控、數據分析和權限管理等重要功能；下層可以通過多種類型的驅動和代理組件來訪問和管理多種物理資源。

![區塊鏈服務參考架構](https://2764190444-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LTVpKVB_-0AGEl1PbRN%2F-LTVq2pGzV7aRkCYNbvV%2F-LTVqClU2CjuqjikW932%2Frefarch.png?generation=1544591830014792\&alt=media)

典型地，BaaS 平臺所提供的業務能力通常包括：

* 用戶按需申請區塊鏈網絡，以及所需的計算、存儲與網絡連接資源；
* 用戶對申請到的區塊鏈進行生命週期管理，甚至支持靈活、彈性的區塊鏈配置；
* 通過提供接口，讓用戶自由訪問所申請到的區塊鏈網絡並進行調用；
* 提供直觀的區塊鏈可視化監控與操作界面，將區塊鏈應用與底層平臺無縫對接；
* 提供簡單易用的智能合約開發與測試環境，方便用戶對應用代碼進行管理；
* 為管理員提供用戶管理和資源管理操作；
* 為管理員提供對系統各項健康狀態的實時監控；
* 提供對平臺內各項資源和應用層的數據分析和響應能力。

## 考量指標

對於 BaaS 服務提供方，搭建這樣一套功能完善、性能穩定的 BaaS 平臺存在諸多挑戰。可以從如下幾個角度進行考量設計。

* 性能保障：包括區塊鏈和應用的響應速度，監控實時性等；
* 可擴展性：支持大規模場景下部署和管理的能力，可以快速進行擴展；
* 資源調度：對於非均勻的資源請求類型可以智能的予以平緩化處理，合理分配系統資源；
* 安全性：注意平衡用戶操作區塊鏈的自由度與平臺自身的安全可控；
* 可感知性：深度感知數據行為，如可以準確實時評估區塊鏈的運行狀況，給用戶啟發；
* 底層資源普適性：底層應當支持多種混合計算架構，容易導入物理資源。

此外，對於面向開發者的 BaaS 服務，創建的區塊鏈環境應當儘量貼近實際應用場景，讓用戶可以將經過檢驗的區塊鏈模型很容易地遷移到生產環境。甚至可以直接聯動支持第三方發佈平臺，直接將經過驗證的應用推向發佈環境。
