下面这一节将会从概念的角度来说明一下,Hyperledger Fabric是如何做到让企业组织之间在区块链的网络间进行协作的。如果你是一个设计师、管理者异或一个开发者,通过这个小节,你可以对区块链网络之间的主要结构以及整个的流程组件有一个很清晰的认识。本小结会利用一个可以实际应用的,可操作的例子来进行介绍区块链网络中的所有的主要的组成部分。一旦理解了这个例子后,你可以在文章的其他地方了解更多有关于这些组件的细节或者尝试构建一个示例网络。
一旦你读完这个小节并且理解了有关政策概念后,你将会对决策有一个很扎实的理解,企业需要去建立这样一种政策,来控制整个部署的Hyperledger Fabric网络。你也将会理解企业是如何利用声明公开的政策去管理网络的发展(Hyperledger Fabric的核心特征)。简而言之,你将会理解Hyperledger Fabric中主要的技术组件以及企业需要去制定的有关Hyperledger Fabric的政策。
区块链网络是什么?
一个区块链的网络是一个技术层面的基础设施,面向应用,它提供了记账和灵活的合同服务。主要来说,灵活的合同被用来去产生事务,这些事务随后被分发到在网络中每一个对等的节点。并且这个网络中,这些事务被不可改变的记录在了每一个账本的副本上。应用程序的用户可能是使用客户端应用或者区块链网络管理员的最终用户。
在大多数情况下,多个企业组织可能会聚合成一个团体,用团体的身份去形成一个网络体系。通过一些列的政策来决定他们各自的权限,这些政策在团体最初配置的时候,通过表决来形成。并且,网络的政策也会随着时间而改变,这取决于团体中组织的协议,这些当我们在讨论修改政策概念的时候,我们就会看到。
网络的示例
在我们开始之前,让我们来展示一下我们的目标是什么。下面这个图表将会代表我们最终的示例网络的结构状态。
不要担心它的复杂性。在这篇小节中,我们将一步一步来搭建,因此你会看到组织R1,R2,R3和R4如何去形成基础设施的。这个基础设施代表这区块链的网络并且它也被形成网络的企业达成的协议政策所控制。例如谁可以添加新的企业进去。你将会发现应用是如何来消费记账以及区块链网络是如何来提供灵活的合同服务的。
四个企业R1,R2,R3,R4已经被连接到了一块并且已经被写入了一个建议并且挖掘 Hyperledger Fabric网络的协议。R4已经被分配作为这个网络的发起者-R4已经被赋予权限去建立网络的最初版本。在网络中,R4并没有任何的打算去进行企业之间的交易。在整个网络之间,R1合R2有私自沟通联系的需求,同样的R2和R3也有。企业R1有一个客户端的应用,这个应用能够在通道C1之间进行商业的交易。企业R2同样有一个相似的客户端应用,在通道C1和C2之间进行企业的交易。企业R3有一个客户端的应用,可以做类似操作在通道C2上。对等的节点P1维持了一个有关记账L1的副本,L1和C1联系了起来。对等的节点C2维持了一个记账L1的副本,与C1联系了起来以及记账L2的副本与C2联系了起来。根据在NC4中明确的政策规则,网络被管理这。网络在企业R1和R4的控制之下。根据CC1明确的配置规则,通道C1被控制着。通道在企业R1和R2的控制之下。有一个订购服务的O4,为N个节点提供者网络管理的服务并且利用系统的通道。这个订购的服务也支持这通道C1和C2的应用,用于将事务订购到块中进行分发。四个组织中每个组织都具有首选的证书颁发机构。
创建一个网络
让我们开始创建一个基本的网络吧!
当一个订购开始的时候,网络就形成了。在我们的网络例子中,N,订购的服务包括一个单一的节点,O4,根据网络的配置规则NC4被配置了,并且也给企业R4赋予了管理的权利。在网络的层次中,证书机构用来给管理者合R4企业里面的网络节点分发身份。
我们看到首先定义了一个网络N,O4是一个订购的服务。很容易看到在网络中订购服务是以最初的管理角色来出现的。按照事先商定的,O4最初由组织R4中的管理员进行配置和启动,并且托管在R4中。配置NC4包含网络管理能力开始的策略。最初这些仅仅赋予了R4权利。随着后面的讲解,这些将会改变,但是现在R4是目前网络中仅有的一个成员。
证书机构
在上图中你也能够看到一个证书机构CA4,用来给管理者和网络的节点来颁发证书。由于CA4分发X.509证书,这些证书能够验证企业R4中的组成部分,所以CA4在我们的网络中扮演者一个重要的角色。通过CAs颁发的证书也能够用来签署交易,以表明一个组织认可交易的结果。这是接收到分类帐上的一个先决条件。让我们通过更多的细节来验证CA的这两个方面。
首先区块链网络中不同的组成部分利用证书去验证彼此来自特定的组织。那就是通常不止一个CA支持区块链网络的原因-不同的组织通常用不同的CAs.在我们的网络中我们将会用4个CAs;每一个组织都有一个CA.确实,CAs是如此的重要,以至于Hyperledger Fabric提供了一个内置的CAs去帮助你开始工作,尽管在实践中,组织会选择利用他们自己的CA.
证书与会员组织的映射通过一个MSP的结构来实现。网络配置NC4利用一个命名的MSP去验证被CA4颁发的证书属性,这样就把证书的拥有者和R4组织联系了起来。那么在网络中,NC4可以在政策上利用MSP的名称对角色授予R4特殊的权利。有关于这个政策的一个例子是去验证在R4中那么可以向网络中添加新的组织成员的管理员。在上图中,我们并没有把MSP给展示出来,他们可能看起来是混乱的,但是又是非常重要的。
其次,我们将会看到被CAs颁发的证书占据了整个交易产生合验证流程的核心部分。明确的来说,X.509证书被应用在客户端的应用交易建议合智能合同响应中去进行数字的签署交易。随后哪些拥有记账副本的网络节点验证交易的签名是完整的,在接受交易,写入账本之前。
让我们简明扼要的来说明下区块链网络的基本结构。 有一个资源,即网络N,由证书颁发机构CA4定义的一组用户访问,这些用户对网络N中的资源具有一组权限,如包含在网络配置NC4内的策略所描述的。 当我们配置并启动这个订单服务节点O4的时候,所有的东西都是真实的。
添加网络管理员
NC4最初的配置,仅仅允许R4用户对网络有管理权限。在下一个阶段,我们将允许组织R1用户去管理网络。让我们看一下网络是如何演变的。
组织R4更新了网络的配置,从而让组织R1也成为了一个管理员。配置完后,R1和R4对于网络的配置拥有了相同的权限。
我们看到添加了一个新的组织R1作为管理员——R1和R4现在在网络上拥有平等的权利。我们也看到证书机构CA1也已经被添加了-它可以用来验证来源于R1组织的用户。经过配置后,从R1和R4注册的用户都可以对网络进行管理。
尽管订购的节点O4运行在R4的底层设施上,R1有同样的管理权限来进行管理网络,只要他能够获得网络访问。
这就意味着R1或者R4都可以更新网络配置NC4,从而允许组织R2可以成为网络操作的一个子集。通过这种方式,尽管R4运行这订购的服务并且R1对它有完全的管理权限,但是R2被限制去创建一个新的企业。
在它的最简单的表格中,在网络中订购服务是一个单一的节点,那就是你在上述例子中看到的。订购服务通常是多个节点并且可以被配置成多个企业组织中的多个节点。例如,我们可以在R4中的O4并且连接他到O2中,O2是一个存在于企业R1中隔离的订购节点。 这样,我们就会有一个多站点、多组织的管理结构。
在后续的小节中,我们将会更多的讨论写订购服务,但是现在我们可以把订购服务想象成一个管理的节点,在网络中对于不通的组织提供的不同的控制权限。
定义联合体
尽管网络可以被R1和R4进行管理,但是能做的事情还很少。首先我们需要去定义一个联合体。字面意思可以理解为拥有共同生命的群体。对应在区块链网络中欧难过的组织来说,这是一个合适的机会。
让我们看一下,如何来定义一个联合体。
网络的管理员定义了一个联合体X1,它包含了两个成员,组织R1和组织R2.这个联合体的定义存储网络配置NC4中,并且将会在下一个发展阶段被用到。对于这些组织,CA1和CA2是两个独立的认证机构。
由于NC4配置的方式,仅仅R1和R4可以创建新的联合体。 这个图表显示了添加了一个新的联合体,X1,它将R1和R2定义为其组成组织的组成部分。我们也看到CA2也已经被添加,去验证来自R2的用户。注意到一个联合体可以任意数量的来自组织的成员-我们仅仅展示了两个最简单的配置。
为什么联合体如此的重要?我们看到在网络中联合体定义了一系列的组织,这些组织都需要去与其他发生交易-例如上述例子中的R1和R2.如果组织有一个共同的目标,那么将他们组合在一块是非常有意义的,而这是正要发生的事情。
被一个单一的组织启动的网络,可以被一些列的组织来进行控制。 我们可以这样开始,R1、R2和R4具有共享控制,但是这种构建使得更容易理解。
现在我们将要利用联合体X1去创建一个Hyperledger Fabric blockchain 真正重要的组成部分-一个通道。
创建联合体的通道
让我们创建这个重要的组成部分-一个通道。一个通道是主要的交流机制,通过它,联合体中的成员可以进行彼此的交流。在一个网络中可以有多个通道,但是现在,我们将从一个开始。
让我们看一下第一个通道是如何添加到网络中的:
利用联合体的定义X1,为R1和R2已经创建了一个通道。通道被通道的配置CC1控制这,并且完全独立于网络的配置。CC1被R1和R2进行管理,并且这两个对C1拥有相同的权限。无论什么时候,R4在CC1中没有任何的权限。
对于联合体X1,通道C1提供了一个私有的交流机制。我们能够看到通道C1已经与订购服务O4联系起来,但是其他的服务并没有附属于它。在下一个网络发展的阶段,我们将要去连接组件,例如客户端应用和对等的节点。但是此时,通道代表了未来连接的潜力。
即使通道C1是网络N的一部分,也能非常好的区分它。同样也注意到组织R3和R4并没有在这个通道中-它用来进行R1和R2之间的交易流程。在先前的步骤中,我们可以看到R4是如何授权给R1去创建新的联合体。提及到R4,R4也允许R1去创建通道是非常有用的。在这个图表中,可能是组织R1或者R4创建了通道C1.再一次的,注意到通道是可以有任意数量的组织去连接塔的-我们已经展示了两种,因为它是最简单的配置。
再一次,注意到通道C1是如何拥有一个配置CC1去完全的与网络配置NC4隔离开。CC1包含了控制权利的政策,这个政策R1和R2也对通道C1适用-正如我们在这个通道中看到的R3和R4没有权限。如果在这个通道中R3和R4被R1或者R2添加进去后,R3和R4仅仅可以与C1进行交流。例子展示了谁可以添加一个新的组织到通道中。明确来说,R4不能把它自己添加到通道C1中-它只能被R2或者R1进行授权。
为什么通道如此重要?通道的重要性体现在他们为联合体中的成员提供了一种私有交流和私有数据的机制。对于其他的通道和网络通道提供了隐私。 Hyperledger Fabric在这方面非常强大,因为它允许组织共享基础结构,同时保持其私有性。在这里是没有矛盾的-在网络之间的不同的联合体对于不同的消息和流程有着共享的需求,通道也提供了一种有效的机制来满足这种需求。 通道提供基础设施的有效共享,同时维护数据和通信隐私。
我们也可以看到一旦通道被创建了,就会有一种从网络中解脱的感觉。 只有那些在通道配置中显式指定的组织才能够控制它,从现在开始直到将来。同样的,任何对网络配置NC4的更新操作,也不会对配置CC1有任何的直接影响;例如如果联合体定义X1发生了改变,它将不会对通道C1的成员产生影响。因此通道非常的有用,因为他们允许组成通道的组织进行私密的通信。而且在通道中的数据对于其他的网络和通道是孤立的。
另外,订购服务还定义了一个特殊的系统通道。它的行为方式与常规通道完全相同,由于这个原因,有时称为应用程序通道。我们通常不需要担心这个频道,但是稍后我们将在本主题中进一步讨论它。
Peers and Ledgers
现在让我们用通道把区块链的网络和组织的组件连接到一起。在下一个网络发展的阶段,我们已经看到我们的网络N已经拥有了两个组件,对等节点的P1和记账实例L1.
对等的节点P1已经连接到了通道的C1上,P1拥有一个记账L1的副本。P1和O4可以通过通道C1进行彼此传递信息。
在区块链记账副本宿主的地方,对等的节点就是网络的组件。最后,我们将会看到更多可识别的区块链的组件。
在网络中P1的目的是拥有一个记账实体L1的一个副本,从而让其他的节点能够访问。 我们可以将L1看作是物理托管在P1上,但逻辑托管在通道C1上。当我们向频道添加更多的对等端时,我们会更清楚地看到这个想法。
P1配置的一个关键部分是由CA1颁发的X.509标识,它将P1与组织R1关联起来。一旦p1启动,它就可以使用o4连接通道c1。当O4收到这个连接请求时,它使用通道配置cc1来确定p1对此通道的权限。例如,cc1确定p1是否可以读取和/或写入分类帐l1的信息。
请注意,拥有这些节点的组织如何将对等节点加入到通道中,尽管我们只添加了一个对等节点,但我们将看到网络中多个通道上如何存在多个对等节点。我们将看到同龄人稍后可以扮演的不同角色。
来源:并发编程网