1 示例网络
示例网络.png四个组织 R1、R2、R3 和 R4,他们共同决定,并且达成了一个协议,他们将会设置并开发一个 Hyperledger Fabric 网络。R4 被分配作为网络的初始者,它有权设置网络的初始版本。R4 不会在网络中去进行任何的业务交易。R1 和 R2 在整个网络中有进行私有通信的需求,R2 和 R3 也是。组织 R1 有一个客户端的应用能够在通道 C1 中进行业务的交易。组织 R2 有一个客户端应用可以在通道 C1 和 C2 中进行类似的工作。组织 R3 可以在通道 C2 中做这样的工作。节点 P1 维护了 C1 的账本 L1 的副本。节点 P2 维护了 C1 的账本 L1 和 C2 的账本 L2 的副本。节点 P3 维护了 C2 的账本 L2 的副本。这个网络是根据在网络配置 NC4 中指定的规则来进行管理的,整个网络由组织 R1 和 R4 管理。通道 C1 是根据在通道配置 CC1 中指定的规则来管理的,这个通道由组织 R1 和 R2 管理。通道 C2 是根据在 通道配置 CC2 中指定的规则来管理的,这个通道由组织 R2 和 R3 管理。这有一个排序服务 O4 作为这个网络 N 的一个网络管理员节点,并且使用系统通道。排序服务同时也支持应用通道 C1 和 C2,来对交易进行排序、加入区块然后分发。每个组织都有一个首选的 CA。
2 创建网络
创建网络.png- 根据网络配置NC4来配置Orderer排序服务O4
- O4 最初被配置并且由组织 R4 的一个管理员来启动,并且由 R4 管理。
- CA4 它会被用来给管理者和网络节点颁发证书
- CA 颁发的证书也可以用来为交易提供签名,来表明一个组织对交易的结果进行背书
- 每一个组织对应一个CA
- 通过MSP将证书与组织对应起来,网络配置 NC4 使用 MSP 来识别由 CA4 颁发的证书的属性
3 添加网络管理员
添加网络管理员.png- 组织 R4 更新了网络配置来使组织 R1 也成为了管理员,R1和R4具有相同的权限
- 证书颁发机构 CA1 用来标识 R1 组织的用户
4 定义联盟
定义联盟.png- 网络管理员定义了一个包含两个成员的联盟 X1,包含组织 R1 和 R2。联盟的定义被存储在了网络配置 NC4 中。
- 由于 NC4 的配置方式,只有 R1 和 R4 能够创建新的联盟。
- 联盟定义了网络中的一部分组织,他们共享了彼此能够交易的需求,R1 和 R2 更够进行交易。
5 为联盟创建通道
为联盟创建通道.png- 通道是提供了一个联盟成员之间进行私有通信和私有数据的机制。
- 联盟 X1 为 R1 和 R2 创建的的通道 C1。通过通道配置 CC1 来进行管理,CC1 由 R1 和 R2 管理
- 这个通道仅仅是为了处理在 R1 和 R2 之间进行的交易
- CC1 包含了赋予 R1 和 R2 在通道 C1 上的权利的规则,R1和R2具有往C1添加新的组织的权限
6 节点和账本
节点和账本.png- 一个 Peer 节点 P1 加入了通道 C1。物理上 P1 会存储账本 L1 的副本。P1 和 O4 可以使用通道 C1 来进行通信
- 可以想象 L1 会被物理地存储在 P1 上,但是 逻辑上 是存储在通道 C1 上
- P1 的配置中一个关键部分就是一个由 CA1 颁发的 X.509 身份信息,它将 P1 和组织 R1 关联了起来
- 当 P1 启动之后,使用排序 O4 加入通道C1。当 O4 收到这个加入请求,CC1 决定 P1 是否能够向账本 L1 中读取或写入信息
7 应用程序和智能合约链码
应用程序和智能合约链码.png- 智能合约 S5 被安装在了 P1 上。在组织 R1 中的客户端应用 A1 可以通过 Peer 节点 P1 使用 S5 来访问账本。
- A1、P1 和 O4 都加入了通道 C1,他们都可以使用由这个通道提供的通信设施。
- 组织 R1 中的管理员必须要把智能合约 S5 安装到节点 P1 上,P1 能够看到 S5 的实现逻辑
- 当一个组织在一个通道中有多个 Peer 节点时,可以选择在哪个节点安装,而不需要每个 Peer 节点上都安装
- R1 的管理员可以提交 S5 的链码定义到通道 C1。提交后,S5 就可以被客户端应用 A1
- 通道上的每个组件现在都可以访问 S5,但是他们只能看到接口,不能看到它的程序逻辑
- 安装智能合约将它物理地存储在 Peer 节点上,而实例化智能合约将它逻辑地存储在通道中
- 将链码定义提交到通道的同时背书策略也会被放置在通道账本上,通道中的每个成员都可以访问该策略。
8 完成网络
完成网络.png- R2 添加了 Peer 节点 P2,它会存有账本 L1 的一个副本,和链码 S5。R2 像 R1 一样批准了相同的链码定义。P2 也加入了通道 C1,也有一个客户端应用 A2。
- A2 和 P2 使用由 CA2 颁发的证书来标识 A2 和 P2。所有这些都说明了 A1 和 A2 能够使用 Peer 节点 P1 或者 P2 来调用在 C1 上的 S5
9 添加另外一个联盟定义
添加另外一个联盟定义.png- R1 或者 R4 的网络管理员添加了一个新的联盟定义 X2,其中包含了 R2 和 R3。这将会被用来为 X2 定义一个新的通道
- 新通道只能够由网络配置策略 NC4 中指定的组织比如 R1 或者 R4 来创建
10 添加一个新的通道
添加一个新的通道.png- 联盟定义 X2 为 R2 和 R3 的创建的新通道 C2。这个通道具有通道配置 CC2,完全同网络配置 NC4 以及通道配置 CC1 分离。通道 C2 由 R2 和 R3 来管理,他们两个就像 CC2 中的一个策略定义的那样具有相同的权利。R1 和 R4 在 CC2 中是没有任何权利的。
11 添加另外一个Peer节点
添加另外一个Peer节点.png- 客户端应用程序 A3 能够使用 C2 同节点 P3 和排序服务 O4 进行通信。
- 通道 C2 的目的是为联盟 X2 的成员提供私有通信,并且账本 L2 是他们的交易的私有存储。
- 智能合约 S6 安装在 Peer 节点 P3,定义在通道 C2 上,用来为账本 L2 提供可控的访问
12 把一个 Peer 节点添加到多个通道中
把一个 Peer 节点添加到多个通道中.png- R2 是唯一一个同时属于两个通道成员的组织!它能够在通道 C1 上跟组织 R1 进行交易,也能够同时使用另外一个通道 C2 来跟组织 R3 进行交易。
13 网路已经完全形成了
网路已经完全形成了.png- 这个 Fabric 区块链网络包括了两个应用程序通道以及一个排序通道。组织 R1 和 R4 负责排序通道,R1 和 R2 负责蓝色的应用程序通道,R2 和 R3 负责红色的应用程序通道。客户端应用程序 A1 是组织 R1 的元素,CA1 是它的证书颁发机构。注意到组织 R2 的节点 P2 可以使用蓝色的通信设施,也可以使用红色的应用程序通道。每个应用程序通道具有它自己的通道配置,这里是 CC1 和 CC2。系统通道的通道配置是网络配置 NC4 的一部分。
参考
https://hyperledger-fabric.readthedocs.io/zh_CN/latest/network/network.html
网友评论