寫在最前
本文是自己對如下資料進行閱讀后進行的總結。如有不足和錯誤之處請及時指出。
(1)《區塊鏈即服務平台BaaS白皮書 V1.0》(來源:可信區塊鏈推進計划區塊鏈即服務平台BaaS項目組 )
(2)《企業級區塊鏈實戰教程》https://learnblockchain.cn/books/enterprise/。該教程是基於Fabric進行講解的。
BaaS平台設計原則
- 降低開發和使用成本
- 快速部署
- 方便易用
- 高安全可靠
- 靈活擴展
- 可視運營
BaaS平台框架
BaaS平台分為2部分:區塊鏈服務管理平台、區塊鏈服務運行態。
(圖片來源:可信區塊鏈推進計划區塊鏈即服務平台BaaS項目組)
區塊鏈服務管理平台
- 區塊鏈服務管理平台主要是對區塊鏈網絡啟動前的資源、配置等進行管理,包括:
- 資源管理:區塊鏈運行硬件/雲服務的管理。
- 區塊鏈管理:在搭建新區塊鏈之前的相關區塊鏈上的配置管理。
- 平台管理:搭建區塊鏈之前對區塊鏈的賬號、安全、日志、監控等的管理。
區塊鏈服務運行態
- 區塊鏈服務運行態是指對區塊鏈啟動之后,提供的服務進行配置管理,比如
- 資源層:為區塊鏈運行環境分配對應的資源,比如Mem、CPU、磁盤等
- 區塊鏈基礎層:區塊鏈系統
- 業務層:提供智能合約接口和對應的錢包
- 應用層:DApp應用層
區塊鏈服務管理平台核心模塊
- 硬件資源配置管理
- 區塊鏈部署配置管理:區塊鏈整體運行參數,比如出塊時間、出塊大小、共識算法、P2P網絡配置等。
- 智能合約管理:權限配置,合約審核配置、合約事件訂閱
- 動態聯盟管理配置:聯盟成員的加入、退出管理,包括加入條件設置等
- 區塊鏈模塊管理:對每一個需要設置初始運行參數的模塊進行參數設置(設置默認參數)
- 區塊鏈監控:網絡鏈接監控、硬件資源使用情況、告警配置
- 區塊鏈瀏覽器
- 賬號管理
- 日志管理:用戶日志、平台日志等
- 系統監控
- 計費管理
區塊鏈基礎層核心模塊
- 可插拔共識機制:PoW、PoS、DPoS、PoA、RAFT、PBFT、ABFT、Tendermint、YAC、PoET(時間證明)
- 高可用存儲和多類型賬本機制:鏈式存儲、非鏈式存儲(DAG)
- 多類型的交易模型:UTXO模型、賬戶模型
- 多語言支持的智能合約引擎:EVM、WASM等
- 安全隱私保護
- 加密體系:ECDH(密鑰協商算法)、ECDSA(數字簽名算法)、國密(SM2/3/4)
- 身份認證和權限控制:基於CA/VPN的節點准入、數據訪問、接口訪問、交易日志訪問、記賬權、驗證節點權限控制
- 隱私保護:
- 發送方隱私保護(環簽名、群簽名、分級證書機制、KSI)
- 接收方隱私保護(分層確定性錢包、隱私地址私鑰管理機制)
- 數據隱私保護(加鹽加密處理、基於承諾的零知識證明、zkSNARK(Zcash應用)、同態加密、多方安全計算)
- 跨雲部署
- 跨鏈交互
- 基於預言機電鏈上、鏈下訪問(引入驗證機構)
- 分布式的身份管理(基於DID的PKI數字身份管理)
- 分布式賬本存儲介質:(LevelDB(對服務端應用支持不友好)、pingcap/tidb、基於PBFT協議的分布式數據庫)
- 網絡傳播機制:P2P、局域網穿透技術NAT方案、非結構化P2P網絡、結構化P2P網絡(以太坊使用分布式哈希表DHT)
- 多底層鏈支撐:Fabric、Coda、Quorum等
BaaS的落地應用
- 供應鏈金融
- 版權確權
- 積分兌換
- 產品溯源
- 游戲
常用的企業級聯盟鏈系統
目前比較成熟的阿里BaaS平台支持了3種底層鏈:螞蟻區塊鏈、Fabric和Quorum。其中Qurum可以適用,因此可以去阿里BaaS雲平台上了解
區塊鏈平台 |
網絡層 |
共識引擎 |
智能合約沙箱 |
智能合約語言 |
數據模型 |
狀態數據庫 |
Hyperledger Burrow |
Tendermint |
EVM |
Solidity |
基於賬戶 |
LevelDB |
|
Quorum |
Go-ethereum P2P/HTTPS |
Raft/PBFT |
EVM |
Solidity |
基於賬戶 |
LevelDB |
FISCO BCOS |
Cpp-ethereum P2P/HTTPS |
Raft/PBFT |
EVM |
Solidity |
基於賬戶 |
LevelDB / MySQL |
Hyperledger Fabric |
Grpc-based Gossip |
Solo/kafka |
Docker |
Go / Node.js / Java |
基於賬戶 |
LevelDB / CacheDB |
Corda |
AMQP1.0 |
notary |
JVM |
Java |
UTXO |
常用關系型數據庫 |
Chain Core |
Gossip |
Federated Consensus |
Ivy |
CVM |
UTXO |
PostgreSQL / RocksDB |
企業級區塊鏈編程注意事項
- 確定性:代碼可重放,固定輸入得到固定輸出
- 可終止:程序有一個最終台,有退出機制,而不是無線運行。同時占用的CPU、RAM、ROM等都有一定的限制,而不是無限的
- 代碼隔離:在區塊鏈上,代碼隔離主要是不同交易、合約狀態、賬號信息方面的隔離。比如智能合約的執行最好是在沙盒環境下執行,比如EVM、Docker、WASM等虛擬機環境下