参考资料:官方文档——区块链网络
1. 什么是区块链网络
区块链网络是为应用程序提供账本和智能合约服务的技术基础设施。首先,智能合约用于生成交易,这些交易随后被分发到网络中的每个节点,并在每个节点的账本副本上记录下来并且是不可篡改的。这个应用程序的用户可能是使用客户端应用的最终用户,或者是一个区块链网络的管理员。
多个组织作为一个联盟(consortium)聚集在一起形成网络,它们的权限由一组策略决定,这些策略在最初配置网络时由联盟商定。此外,网络策略可以随着时间的推移而变化,这取决于联盟中的组织的协议。
通俗的一点说,区块链网络也就是Fabric整个联盟链跑起来的环境,包括它的一些交易,共识等等都在区块链网络中发送,正所谓它是基础设施
2. 从零搭建一个较复杂的网络拓扑
在之前的文章Hyperledger Fabric的网络拓扑图与交易流程中我画了一张简单的网络拓扑图
这张图右方是一个简单的网络拓扑图,具体的解释信息可以到我之前的文章中去看下。
这一章我就根据官方文档,一步一步地做出一张详细负责的网络拓扑图,尽可能地去包含区块链网络中更多的成员。那么现在就开始吧
2.1 创建网络
让我们先从创建网络的基础开始,也就是需要画出一个整体的轮廓。
当一个排序节点启动以后,区块链网络就形成了。在上图示例网络中N中,包含单个节 O4 的排序服务根据网络配置 NC4 进行配置, NC4 赋予组织 R4 管理权限。在网络层面,证书颁发机构 CA4 用于向组织 R4 的管理员和网路节点分配身份信息。
定义区块链网络的第一个东西是排序服务O4。将一个排序服务看作是网络的初始管理点是很有用的。如前所述, O4 最初由组织 R4 中的管理员配置和启动,并托管在 R4 中。配置 NC4 包含描述网络初始管理功能集的策略。最初,在网络上只为 R4 授予这样的权限。现在 R4 是网络中唯一的成员。
我们还看到一个证书认证结构 CA4 ,它用于向管理员和网络节点颁发证书。证书颁发机构在区块链网络中扮演着关键角色,它颁发的证书主要用于两个方面
- 颁发的 X.509 证书可用于标识属于组织 R4 的组件( R4 组织的节点等)
- 证书可以用于签署交易,以表明一个组织对交易结果部署,这是该笔交易可以被接受并记录到账本上的一个前提条件
首先,区块链网络的不同组件使用证书相互标识自己来自特定组织(身份证书)。不同组织通常使用不同的CA,而不仅仅限于 Fabric 提供的CA(实践中,组织基本使用自己的CA)
将证书同成员组织进行匹配是通过成员服务提供者 MSP (MeMembership Service Provider, MSP)来实现的。网络配置 NC4 使用一个命名的 MSP 来标识 CA4 分发的证书的属性,CA4 将证书持有者与组织 R4 关联起来。NC4 接下来会使用这个在规则中的 MSP 名字来分配在网络资源上的特殊权利。这种策略的一个例子是识别 R4 中的管理员,管理员可以向网络添加新的成员组织。
其次,X.509 证书可以用于客户端应用程序交易提案和智能合约交易相应中,以便对交易进行数字签名。随后,持有账本副本的网络节点在接受账本上的交易之前验证交易签名是否有效。
总结一下区块链网络的基本结构。有一个由证书颁发结构 CA4 定义的一组用户可访问的资源——网络 N,这些用户对网络 N 中的资源拥有一组权限,这些权限由网络配置 NC4 中包含的策略描述。当我们配置并启动排序服务节点 O4 时,整个网络就启动了。
2.2 添加网络管理员
NC4 最初配置为只允许 R4 用户在网络上拥有管理权限。在这一节中,我们将允许组织 R1 用户管理网络。让我们看看是如何演变的:
组织 R4 更新网络配置,是组织R1也成为管理员。在这一点之后,R1 和 R4 对网络配置具有同等的权限。
可以看到添加了一个新的组织 R1 作为管理员,R1 和 R4 在网络上拥有相同的管理权限。这意味着 R1 或 R4 低可以更新网络配置 NC4。
在这个简单的模式中,排序服务在网络中是一个独立的节点,就像例子中看到的。排序服务通常是多节点的,并且可以配置为在不同的组织中拥有不同的节点。例如,可以在 R4 中运行 O4 并将其连接到 O2,这是组织 R1 中的一个单独的排序节点,这样就有了多站点、多组织的管理结构。
所以现在来说,排序服务可以看做是一个管理节点,它给不同的组织提供了对于网络的管理的权限
2.3 定义联盟
虽然现在网络可以由 R1 和 R4管理,但是这样还是不够的。我们需要的第一件事是定义一个联盟。这个词表示“具有着共同命运的一个群组”,所以这个是在一个区块链网络中合理地选择出来的一个群组。
让我们来看看联盟是如何定义的:
一个网络管理员(可能是 R4 或者是 R1)定义了一个包含两个成员的联盟 X1,包含组织 R1 和 R2。这个联盟定义存储在网络配置 NC4 中,将在网络开发的下一阶段使用。CA1 和 CA2 分别是这些组织的证书认证机构。
上图显示了 R1 或者 R4 创建了一个新的联盟 X1,它将 R1 和 R2 定义为组成它的组织。我们也看到了 C