写在最前
本文是自己对如下资料进行阅读后进行的总结。如有不足和错误之处请及时指出。
(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等虚拟机环境下