组件

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

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

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

比如network_zenoh,是基于zenoh实现的Network微服务,其构建物为可执行文件network

组件分为两类:

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

组件还有以下一些指标:

  1. 组件的成熟度:1-5,1表示仅实现必要的功能的最小实现,5表示非常成熟的实现。
  2. 组件的状态:开发中,维护中,废弃。
  3. 组件的授权状态:商业,或者开源。

原厂组件

network_zenoh

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

特点:

  • 基于QUIC网络协议,弱网络下更稳定,延迟更低。
  • 支持TLS,通信加密保证安全。
  • 支持Pub/Sub模式,提供更高层的接口,提供与底层网络连接无关的节点标识。
  • 支持消息送达保证,更加稳定可靠。

代码仓库

镜像仓库

成熟度: 4

状态: 维护中

授权: 开源,Apache-2.0 License

storage_opendal

介绍: 基于opendal的实现。

特点:

  • 冷热数据分离。热数据存在本地,冷数据存到云存储,可以使得本地存储数据量较小且相对固定。
  • 共享第三层。多个节点共享第三层云存储,新节点无需恢复大量的冷数据,而只需通过恢复热数据即可快速加入。

第二层存储为rocksdb,特点:

  • 高效,KV数据库,读写效率高。
  • 可靠,多数区块链项目都使用rocksdb作为存储引擎,稳定性好。

代码仓库

镜像仓库

成熟度: 4

状态: 维护中

授权: 开源,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_raft

介绍: 基于Raft实现。

特点:

  • 非拜占庭容错。
  • 成熟实现,稳定可靠。

代码仓库

镜像仓库

成熟度: 4

状态: 维护中

授权: 开源,Apache-2.0 License

consensus_overlord

介绍: 基于overlord实现。

特点:

  • 拜占庭容错。
  • 成熟实现。
  • 线性消息复杂度。

代码仓库

镜像仓库

成熟度: 4

状态: 维护中

授权: 开源,Apache-2.0 License

controller_hsm

介绍: 基于状态机的Controller实现。

特点:

  • 代码结构清晰。
  • 无中间状态。

代码仓库

镜像仓库

成熟度: 4

状态: 维护中

授权: 开源,Apache-2.0 License

废弃组件

controller

介绍:原 Controller 唯一的实现。

成熟度: 4

状态: 废弃

授权: 开源,Apache-2.0 License

废弃原因:被controller_hsm替代。

consensus_bft

介绍: 基于CITA-BFT实现。

特点:

  • 拜占庭容错。

代码仓库

镜像仓库

成熟度: 4

状态: 废弃

授权: 开源,Apache-2.0 License

废弃原因:被consensus_overlord替代。两者同为BFT类算法,但是overlord在性能方面更有优势。

network_direct

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

特点:

  • 网络直连,简单可靠
  • 无通信加密

代码仓库

镜像仓库

成熟度: 3

状态: 废弃

授权: 开源,Apache-2.0 License

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

network_p2p

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

特点:

  • 支持secio,通信加密保证安全。
  • 支持多路复用(yamux),可以自定义协议。
  • 支持节点发现,节点之间会自动交换连接的节点信息。

代码仓库

镜像仓库

成熟度: 4

状态: 废弃

授权: 开源,Apache-2.0 License

废弃原因:被network_zenoh替代。

network_tls

介绍: 基于tokio-rustls实现。

特点:

  • 支持TLS1.3,通信加密保证安全。
  • 使用标准的x509证书,方便复用已有的基础设施。
  • 支持白名单,便于权限管理。

代码仓库

镜像仓库

成熟度: 4

状态: 废弃

授权: 开源,Apache-2.0 License

废弃原因:被network_zenoh替代。

network_quic

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

特点:

  • 高效,基于UDP协议,开销更小。
  • 安全,默认支持TLS,通信加密。
  • 可靠,弱网络下效果更高。

代码仓库

镜像仓库

成熟度: 2

状态: 废弃

授权: 开源,Apache-2.0 License

废弃原因:被network_zenoh替代。

storage_rocksdb

介绍: 基于rocksdb的实现。

特点:

  • 高效,KV数据库,读写效率高。
  • 可靠,多数区块链项目都使用rocksdb作为存储引擎,稳定性好。

代码仓库

镜像仓库

成熟度: 4

状态: 废弃

授权: 开源,Apache-2.0 License

废弃原因:被storage_opendal替代,storage_opendal提供更全面的功能,rocksdb仍作为其中的第二层存储。

ksm_sm

介绍: 基于国密算法的kms微服务实现。

废弃原因:被crypto_sm替换。参见rfc 0005

ksm_eth

介绍: 基于以太坊算法的kms微服务实现。

废弃原因:被crypto_eth替换。参见rfc 0005

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

状态: 废弃

授权: 商业

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