组件

组件是各个微服务的实现。

每个组件单独一个代码仓库,仓库名称以微服务名称开头,下划线后接用于标识不同实现的名称。

构建物使用微服务名称,以便于相互替换。

比如storage_rocksdb,是基于rocksdb实现的Storage微服务,其构建物为可执行文件storage

组件分为两类:

  • 原厂组件,即CITA-Cloud自带的组件。

  • 第三方组件。

组件还有以下一些指标:

  1. 组件的成熟度:1-5,1表示仅实现必要的功能的最小实现,5表示非常成熟的实现。

  2. 组件的状态:开发中,维护中,废弃。

  3. 组件的授权状态:商业,或者开源。

原厂组件

network_p2p

介绍: 基于网络库tentacle实现。

特点:

  • 支持secio,通信加密保证安全。

  • 支持多路复用(yamux),可以自定义协议。

  • 支持节点发现,节点之间会自动交换连接的节点信息。

代码仓库

镜像仓库

成熟度: 4

状态: 维护中

授权: 开源,Apache-2.0 License

network_tls

介绍: 基于tokio-rustls实现。

特点:

  • 支持TLS1.3,通信加密保证安全。

  • 使用标准的x509证书,方便复用已有的基础设施。

  • 支持白名单,便于权限管理。

代码仓库

镜像仓库

成熟度: 4

状态: 维护中

授权: 开源,Apache-2.0 License

network_quic

介绍: 基于QUIC网络协议的实现。

特点:

  • 高效,基于UDP协议,开销更小。

  • 安全,默认支持TLS,通信加密。

  • 可靠,弱网络下效果更高。

代码仓库

镜像仓库

成熟度: 2

状态: 开发中

授权: 开源,Apache-2.0 License

storage_rocksdb

介绍: 基于rocksdb的实现。

特点:

  • 高效,KV数据库,读写效率高。

  • 可靠,多数区块链项目都使用rocksdb作为存储引擎,稳定性好。

代码仓库

镜像仓库

成熟度: 4

状态: 维护中

授权: 开源,Apache-2.0 License

storage_sled

介绍:基于sled的实现。

特点:

  • 高效,读写效率高。

  • 目前尚未稳定。

代码仓库

镜像仓库

成熟度: 2

状态: 开发中

授权: 开源,Apache-2.0 License

crypto_sm

介绍:国密算法的实现,使用sm2签名算法和sm3哈希算法。

特点:

  • 符合中国国家密码标准。

  • 高效,纯Rust实现,采用多种优化技术。

代码仓库

镜像仓库

成熟度: 4

状态: 维护中

授权: 开源,Apache-2.0 License

crypto_eth

介绍: 兼容以太坊算法的实现,使用secp256k1签名算法和keccak哈希算法。

特点:

  • 兼容以太坊。

代码仓库

镜像仓库

成熟度: 4

状态: 维护中

授权: 开源,Apache-2.0 License

executor_evm

介绍: 基于以太坊的EVM实现。

特点:

  • 兼容以太坊的智能合约生态。

代码仓库

镜像仓库

成熟度: 4

状态: 维护中

授权: 开源,Apache-2.0 License

consensus_bft

介绍: 基于CITA-BFT实现。

特点:

  • 拜占庭容错。

  • 线性消息复杂度。

代码仓库

镜像仓库

成熟度: 4

状态: 维护中

授权: 开源,Apache-2.0 License

consensus_raft

介绍: 基于Raft实现。

特点:

  • 非拜占庭容错。

  • 成熟实现,稳定可靠。

代码仓库

镜像仓库

成熟度: 4

状态: 维护中

授权: 开源,Apache-2.0 License

consensus_overlord

介绍: 基于overlord实现。

特点:

  • 拜占庭容错。

  • 成熟实现。

  • 线性消息复杂度。

代码仓库

镜像仓库

成熟度: 2

状态: 开发中

授权: 开源,Apache-2.0 License

controller

介绍: 目前唯一的Controller实现。

特点:

  • 先共识后执行。

  • 高性能,流水线式并行。

  • utxo模型的系统配置管理。

  • 丰富的治理功能。

代码仓库

镜像仓库

成熟度: 4

状态: 维护中

授权: 开源,Apache-2.0 License

废弃组件

network_direct

介绍: 基于tokio网络库的实现。

特点:

  • 网络直连,简单可靠

  • 无通信加密

代码仓库

镜像仓库

成熟度: 3

状态: 废弃

授权: 开源,Apache-2.0 License

废弃原因:被network_tls替代。因为区块链的去中心化属性,网络通信加密是比较基础的需求。

storage_sqlite

介绍: 基于sqlite的实现。

特点:

  • 轻量,嵌入式数据库,开销小。

  • 功能丰富,完整支持SQL

代码仓库

镜像仓库

成熟度: 3

状态: 废弃

授权: 开源,Apache-2.0 License

废弃原因:被storage_rocksdb替代。目前区块链的实现中主要还是以KV存储为主,SQL数据库的优势发挥不出来,反而性能上不如KV数据库。也许将来对链上数据分析有更多需求的时候可以切换至SQL数据库。

storage_tikv

介绍: 基于tikv的实现。

特点:

  • 扩展能力强,分布式KV数据库。

  • 稳定可靠,支持分布式事务操作,得到广泛应用。

代码仓库

镜像仓库

成熟度: 2

状态: 废弃

授权: 开源,Apache-2.0 License

废弃原因:这个组件主要就是验证使用分布式KV数据库的可行性。但是目前数据量还没有到这个程度,所以暂时搁置。

executor_chaincode

介绍: 实验性兼容Fabric Chaincode实现。

特点:

  • 兼容Fabric的智能合约生态。

代码仓库

镜像仓库

成熟度: 1

状态: 废弃

授权: 开源,Apache-2.0 License

废弃原因:本身就是实验性质的组件,为了验证框架有足够的灵活性。后期有相关需求之后完善之后成为executor_chaincode_ext

第三方组件

废弃组件

executor_chaincode_ext

介绍: 增强型兼容Fabric Chaincode实现。

特点:

  • 兼容chaincode合约。

  • 支持了CouchDB

  • 增加了chaincode事件相关功能。

代码仓库: 无 镜像仓库: 无

成熟度: 3

状态: 废弃

授权: 商业

废弃原因:专门为某个商业项目定制,后续没有类似的需求。

kms_sdibc

介绍: 基于高性能国密算法实现。

特点:

  • 性能好。

代码仓库: 无 镜像仓库: 无

成熟度: 4

状态: 废弃

授权: 商业

废弃原因:专门为某个商业项目定制,后续没有类似的需求。