Fabric 1.4和BCOS 2.0对比
实现方式
Fabric | BCOS |
---|---|
Docker | EVM沙箱机制 |
Fabric部署一个新的智能合约或者要做升级的时候,所有参与节点要人工安装部署一次;
BCOS发布新业务时,把合约放在链上即可以运行,不需要线下部署的操作。
架构分析
(一)节点分类
Fabric | BCOS |
---|---|
1.Client | 1.共识节点 |
2.Peer | 2.观察节点 |
3.orderer | 3.游离节点 |
Fabric节点:
Client:该客户端提交真实的交易请求(transaction-invocation)给背书者,广播交易提案(transaction-proposals)给ordering服务。
Peer:该节点提交交易,维护世界状态和账本。
orderer:该节点运行着通信服务,提供传递担保服务,如原子性,排序广播。
BCOS将节点分为共识节点和观察节点,共识节点参与共识算法,成为链上的记账者,观察节点不参与共识,只同步数据。游离节点是完成网络准入但没有加入群组的节点,不参与共识和同步。
(二)交易流程
- 客户端创建一笔交易并且发送给它选择的背书节点。
- 背书节点模拟交易并产生背书签名。
- 提交客户端为交易收集背书并通过ordering服务广播该背书。
- 排序服务向对等节点传送一笔交易,节点进行账本更新。
- 用户通过操作SDK或直接编写curl命令向所连接的节点发起交易。
- 节点收到交易后,若当前交易池未满则将交易附加至TxPool中并向自己所连的节点广播该交易;否则丢弃交易并输出告警。
- Sealer会不断从交易池中取出交易,并立即将收集到的交易打包为区块并发送至共识引擎。
- 共识引擎调用BlockVerifier对区块进行验证并在网络中进行共识,BlockVerifier调用Executor执行区块中的每笔交易。当区块验证无误且网络中节点达成一致后,共识引擎将区块发送至BlockChain。
- BlockChain收到区块,对区块信息(如块高等)进行检查,并将区块数据与表数据写入底层存储中,完成区块上链。
(三)灵活性
Fabric采用松耦合的设计,将共识机制、身份验证等组件模块化,在应用过程中可根据应用场景选择相应模块;同时,fabric可支持针对不同主体间交易的多通道结构,实现更为灵活的业务适应性(业务隔离、安全性等)。
BCOS共识算法模块采用插件化设计实现,通过修改系统配置,实现在多个联盟链里使用不同的共识机制,参与到同一个联盟链的所有节点必须采用同一种共识配置。
核心技术组件
核心技术组件是指区块链系统所依赖的基础组件、协议和算法,可进一步细分为通信、存储、安全机制、共识机制四个方面。
(一)通信
Fabric | BCOS |
---|---|
gossip协议 | JSON-RPC 2.0协议 |
gossip协议:gossip协议主要是一个P2P的网络传输协议,fabric主要通过此协议来进行区块的同步。
JSON-RPC:一种无状态、轻量级的远程过程调用协议。该规范主要定义了几个数据结构及其处理规则。它允许运行在基于socket,http等诸多不同消息传输环境的同一进程中。它使用JSON(RFC 4627)作为数据格式。