分拆Peer的功能,将Blockchain的数据维护和共识服务进行分离,共识服务从Peer节点中彻底分离出来,独立为Orderer节点提供共识服务; 基于新的架构,实现多通道(channel)的结构,实现了更为灵活的业务适应性(业务隔离、安全性等方面) 支持更强的配置功能和策略管理功能,进一步加强系统的灵活性和适应性;数据库
一、chaincode信任的灵活性:支持多个ordering服务节点,加强共识的容错能力和对抗orderer做恶的能力
二、 扩展性: 将endorsement和ordering进行分离,实现多通道(实际是分区)结构,加强系统的扩展性;同时也将chaincode执行、ledger、state维护等很是消耗系统性能的任务与共识任务分离,保证了关键任务(ordering)的可靠执行
三、保密性:新架构对于chaincode在数据更新、状态维护等方面提供了新的保密性要求,提升系统的业务、安全方面的能力
四、共识服务的模块化:支持可插拔的共识结构,支持多种共识服务的接入和服务实现安全
多链chain网络
所谓的chain(链)其实是包含Peer节点、帐本、ordering通道的逻辑结构,它将参与者与数据(包含chaincode在)进行隔离,知足了不一样业务场景下的”不一样的人访问不一样数据“的基本要求。同时,一个peer节点也能够参与到多个chain中(经过接入多个channel);以下图所示架构
多通道模块化
通道是有共识服务(ordering)提供的一种通信机制,相似于消息系统中的发布-订阅(PUB/SUB)中的topic;基于这种发布-订阅关系,将peer和orderer链接在一块儿,造成一个个具备保密性的通信链路(虚拟),实现了业务隔离的要求;通道也与帐本(ledger)-状态(worldstate)紧密相关;以下图所示:性能
peer 1,2和N订阅红色通道,并共同维护红色帐本; peer 1和N订阅蓝色通道并维护蓝色帐本; 相似地,peer 2和peer N在黑色通道上并维护黑色帐本。区块链
在这个例子中,peer N在订阅了全部通道,咱们看到每一个通道都有一个相关的帐本。 通常来讲,咱们称不涉及全部peer的帐本为子帐本,另外一种是系统帐本,即全帐本。ui
通道和帐本的组合是一个虚拟链,所以一个区块链网络能够具备1个共识服务的多个链。 系统通道和全帐本构成系统链。 每一个区块链网络只有1个系统链。若是交易是公开的,区块链网络可能永远不须要多个链; 全部的交易对全部Peers成员均可见。 然而,在成员间进行私密交易(例如双边合同),单独的链是隔离数据、提供保密的方式。设计
事物3d
事物处理流程【交易流程】,以下:
事务流(peer节点内)
上述过程对应的执行序列图以下:
整体流程以下图所示:在新的架构中,Peer节点负责维护区块链的帐本(ledger)和状态(State),本地的帐本称为PeerLedger,其结构以下:
整个区块结构分为文件系统存储的Block结构和数据库维护的State状态,其中state的存储结构是能够替换的,可选的实现包括各类KV数据库(LEVELDB,CouchDB等);
很明显Febric V0.6与V1.0的架构及流程差别极大,在V0.6下开发的应用很难在V1.0环境下运行,因此咱们仍是不要费劲折腾V0.6,仍是从V1.0开始吧!(官方公布的计划)
参看地址:http://newthink.blog.51cto.com/872263/1897379?utm_source=tuicool&utm_medium=referral