区块链即服务平台(BaaS)各模块性能要求和组件列表

时间:2024-03-04 08:48:59

写在最前

本文是自己对如下资料进行阅读后进行的总结。如有不足和错误之处请及时指出。

(1)《区块链即服务平台BaaS白皮书 V1.0》(来源:可信区块链推进计划区块链即服务平台BaaS项目组 )
(2)《企业级区块链实战教程》https://learnblockchain.cn/books/enterprise/。该教程是基于Fabric进行讲解的。


BaaS平台设计原则

  • 降低开发和使用成本
  • 快速部署
  • 方便易用
  • 高安全可靠
  • 灵活扩展
  • 可视运营

BaaS平台框架

BaaS平台分为2部分:区块链服务管理平台、区块链服务运行态。

 

(图片来源:可信区块链推进计划区块链即服务平台BaaS项目组

区块链服务管理平台

  • 区块链服务管理平台主要是对区块链网络启动前的资源、配置等进行管理,包括:
  • 资源管理:区块链运行硬件/云服务的管理。
  • 区块链管理:在搭建新区块链之前的相关区块链上的配置管理。
  • 平台管理:搭建区块链之前对区块链的账号、安全、日志、监控等的管理。

区块链服务运行态

  • 区块链服务运行态是指对区块链启动之后,提供的服务进行配置管理,比如
  • 资源层:为区块链运行环境分配对应的资源,比如Mem、CPU、磁盘等
  • 区块链基础层:区块链系统
  • 业务层:提供智能合约接口和对应的钱包
  • 应用层:DApp应用层

区块链服务管理平台核心模块

  • 硬件资源配置管理
  • 区块链部署配置管理:区块链整体运行参数,比如出块时间、出块大小、共识算法、P2P网络配置等。
  • 智能合约管理:权限配置,合约审核配置、合约事件订阅
  • 动态联盟管理配置:联盟成员的加入、退出管理,包括加入条件设置等
  • 区块链模块管理:对每一个需要设置初始运行参数的模块进行参数设置(设置默认参数)
  • 区块链监控:网络链接监控、硬件资源使用情况、告警配置
  • 区块链浏览器
  • 账号管理
  • 日志管理:用户日志、平台日志等
  • 系统监控
  • 计费管理 

区块链基础层核心模块

  • 可插拔共识机制:PoWPoSDPoSPoARAFTPBFTABFTTendermintYACPoET(时间证明)
  • 高可用存储和多类型账本机制:链式存储、非链式存储(DAG
  • 多类型的交易模型:UTXO模型、账户模型
  • 多语言支持的智能合约引擎:EVMWASM
  • 安全隐私保护
    • 加密体系:ECDH(密钥协商算法)、ECDSA(数字签名算法)、国密(SM2/3/4
    • 身份认证和权限控制:基于CA/VPN的节点准入、数据访问、接口访问、交易日志访问、记账权、验证节点权限控制
    • 隐私保护:
      • 发送方隐私保护(环签名、群签名、分级证书机制、KSI
      • 接收方隐私保护(分层确定性钱包、隐私地址私钥管理机制)
      • 数据隐私保护(加盐加密处理、基于承诺的零知识证明、zkSNARKZcash应用)、同态加密、多方安全计算)
  • 跨云部署
  • 跨链交互
  • 基于预言机电链上、链下访问(引入验证机构)
  • 分布式的身份管理(基于DIDPKI数字身份管理)
  • 分布式账本存储介质:(LevelDB(对服务端应用支持不友好)、pingcap/tidb、基于PBFT协议的分布式数据库)
  • 网络传播机制:P2P、局域网穿透技术NAT方案、非结构化P2P网络、结构化P2P网络(以太坊使用分布式哈希表DHT
  • 多底层链支撑:Fabric、Coda、Quorum等

BaaS的落地应用

  • 供应链金融
  • 版权确权
  • 积分兑换
  • 产品溯源
  • 游戏

常用的企业级联盟链系统

参考:https://blog.csdn.net/starzhou/article/details/103041911

 目前比较成熟的阿里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等虚拟机环境下