群组架构是在多节点组成的区块链内,部分节点通过配置,独立形成账本,在账本内的节点进行独立的共识和存储,并且只需要修改配置就能组件账本,无需额外的资源。支持区块链节点启动多个群组,群组间交易处理、数据存储、区块共识相互隔离,保障区块链系统隐私性的同时,降低了系统的运维复杂度。不同群组间的交易可并行执行,提升了性能。
群组架构中各群组独立执行共识流程,各组独立维护自己的交易事务和数据,不受其他群组影响。群组间账本相互独立,向某个群组发交易仅会导致本群组区块高度增加,不会增加其他群组区块高度。
群组与群组之间的共识算法是否都是一样的?
FISCO BCOS基于多群组架构实现了插件化的共识算法,不同群组可运行不同的共识算法,组与组之间的共识过程互不影响,FISCO BCOS目前支持PBFT(Practical Byzantine Fault Tolerance)和Raft(Replication and Fault Tolerant)两种共识算法:
PBFT****共识算法: BFT类算法,可容忍不超过三分之一的故障节点和作恶节点,可达到最终一致性;
Raft****共识算法: CFT类算法, 可容忍一半故障节点,不能防止节点作恶,可达到一致性。
从群组配置文件group.group_id.genesis中可以查看当前使用的共识算法为PBFT
同一台机器上多个群组的节点块高并不一定一致。群组都是相互独立的,它们各自维护自己的区块链状态和数据。由于每个群组的交易和区块生成是独立进行的,因此,不同群组的节点块高可能会有所不同。每个群组的区块高度反映的是其内部的交易处理情况,而不是其他群组的状态。下图分别显示了在同一节点但是不同群组的区块数量、交易数量及部署的智能合约都是各自独立于自己所在的群组内。
回想一下群聊场景:群聊用户都在你的通信录中,都是经过验证才添加的,且不在群里的用户看不到群聊信息。这与联盟链准入机制不谋而合,所有参与者的机构身份可知。
另一方面,群组架构中各群组独立执行共识流程,各组独立维护自己的交易事务和数据,不受其他群组影响。这样的好处是,可以使得各群组之间解除耦合独立运作,从而达成更好的隐私隔离。在跨群组之间的消息互通,则会带上验证信息,是可信和可追溯的。
安全需求:社区的业委会,物业,银行以及监管部门共同组件社区联盟链。在社区联盟链中社区与社区之间的链上数据需要相互隔离。
性能需求:每次对账只涉及有资金来往的两方。在大量对账流水发生时,两两间可以互相对账不阻塞其他方的对账操作,可以独立进行。
运维需求:同一个存证,仲裁机构与有多家银行搭建仲裁链的需求。若与每家银行都搭建一条链,则每次都需要申请一套端口,部署一套相同的程序,运维操作复杂,导致资源的大量重复投入。采用群组架构这种方式不仅提升了区块链系统的可维护性,还降低了成本,避免了资源的浪费,同时也确保了银行和仲裁机构的数据隐私和安全性。
中心机构节点同时属于多个群组,运行多家机构应用,其它每家机构属于不同群组,运行各自应用。
在逻辑层面上实现了分片,但是还是在一条物理链中,只有相同群组之间才能交互数据。
虽然在逻辑层面上进行了隔离,但实际的数据仍然是存储在同一个账本上面,但是由于权限的不同,机构只能查询相同群组内的数据。
优点:
各个机构之间的数据隔离性高,能有效的控制数据访问权限,保证各机构只能访问到与自己相关群组数据。
缺点:
这样对中心机构的硬件要求高,需要维护多个群组的信息同步,如果中心节点出现故障,整个网络的信息都会受到影响。
区块链中每个节点均属于多个群组,可用于多方不同业务的横向扩展,或者同一业务的纵向扩展。
优点:
仍然是在同一条物理链上面,并行多组可以有效分隔数据和业务处理,不同的群组可以处理不同的业务线条,避免数据和事务彼此干扰,并且可以通过新增群组来实现横向扩展,并且某个群组出现故障不会影响到其它的群组正常运行。
缺点:
随着物理节点的增加,管理和维护的复杂性也会增加,每个服务器需要单独配置、监控、运维成本高,运维难度大。节点需要频繁的网络通讯来达成共识,会依赖网络的连接,易受到网络带宽、延迟等因素影响。