Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

My Blog

从此烟雨落金城,一人撑伞两人行。

节点

Peer 是网络的基本元素,因为他们存储了账本和智能合约。

Peer 节点可以被创建、启动、停止、重新配置甚至删除。

暴露了一系列的 API,这就可以让管理者和应用程序同这些 API 提供的服务互动。

账本和链码

Peer 节点在维护账本和链码。

Peer 节点维护的是账本及链码的实例

Peer2

应用程序及管理员访问这些资源,他们必须要和 Peer 节点进行交互。

多账本

Peer3

大多数的 Peer 节点将会至少安装一个链码,用来查询或更新 Peer 节点的账本实例。

多链码

Peer4

应用程序和节点

当应用程序需要访问账本和链码的时候,他们总是需要连接到 Peer 节点。

Hyperledger Fabric SDK 将这个操作变得非常简单,它的 API 使应用程序能够连接到 Peer 节点,调用链码生成交易,提交交易到网络。

Peer6

查询过程:

  1. A 连接到了 P1 且调用了链码 S1 来查询账本 L1
  2. P1 调用了链码 S1 来生成提案响应(响应包含了查询结果)
  3. A 接收到了提案的响应

更新过程:

  1. A 连接到了 P1 且调用了链码 S1 来更新账本 L1
  2. P1 调用了链码 S1 来生成提案响应账本更新的提案
  3. A 接收到了提案的响应
  4. A 会从所有的响应中创建一笔交易
  5. 交易发送给排序节点 O1 进行排序
  6. 区块分发到所有 Peer 节点上
  7. 当 L1 被更新之后,P1 会生成一个事件,该事件会被 A 接收到,来标识这个过程结束了。

一个独立的 Peer 节点目前是不能进行账本更新的,因为其他的 Peer 节点必须首先要同意这个变动(即达成共识)。

因此,Peer 节点会返回给应用程序一个被提案过的更新,这个 Peer 节点会依据其他节点之前的协议来应用这个更新。

通道与节点

Peer5

通道允许区块链网络中特定的一些 Peer 节点以及应用程序来彼此交互。

组织与节点

Peer8

有一个工作原则:如果组织不为这个网络贡献他们的资源,这个网络是不会存在的。更关键的是,这个网络会随着这些互相合作的组织提供的资源而增长或者萎缩。

身份与节点

Peer 节点会有一个身份信息被分给他们,这是通过一个特定的证书认证机构颁发的数字证书来实现的。

在网络中的每个 Peer 节点都会被所属组织的管理员分配一个数字证书

Peer9

当 Peer 节点连接到一个通道的时候,它的数字证书会通过通道 MSP 来识别它的所属组织。

P1 和 P2 具有由 CA1 颁发的身份信息。

通道 C 通过在它的通道配置中的策略来决定来自 CA1 的身份信息应该使用 ORG1.MSP 被关联到 Org1。

在通道配置中的策略会使用 Peer 节点的身份信息来确定它的权利。

关于身份信息和组织的映射是由成员服务提供者(MSP)来提供的,它决定了一个 Peer 节点如何在指定的组织中分配到特定的角色以及得到访问区块链资源的相关权限。

Peer 节点只能被一个组织所有,因此也就只能被关联到一个单独的 MSP。

Peer节点和排序节点

一个单独的 Peer 节点不能够由它自己来更新账本——更新需要网络中其他节点的同意。

Peer 节点会请求网络中的其他 Peer 节点来批准这次更新。这个过程被称为共识

更新账本的应用程序会被引入到一个三阶段的流程,确保 Peer 节点都彼此保持着一致的账本。

  • 在第一个阶段,应用程序会跟背书节点的子集一起工作,其中的每个节点都会向应用程序为提案的账本更新提供背书,但是不会将提案的更新应用到他们的账本副本上。
  • 在第二个阶段,这些分散的背书会被搜集到一起当做交易被打包进区块中。
  • 在最后一个阶段,这些区块会被分发回每个 Peer 节点,在这些 Peer 节点上每笔交易在被应用到 Peer 节点的账本副本之前会被验证。

提案

第一阶段只在乎应用程序询问不同组织的背书节点同意链码调用的提案结果。

应用程序会生成一笔交易的提案,它会把这个提案发送给一系列的被要求的节点来获得背书。

每一个背书节点接下来都会独立地使用交易提案来执行链码,以此来生成这个交易提案的响应。

简单地为它提供签名然后将它返回给应用程序。当应用程序接收到有效数量的被签过名的提案响应之后,交易流程中的第一个阶段就结束了。

Peer10

应用程序 A1 生成了交易 T1 和提案 P

应用程序会将交易及提案发送给通道 C 上的 Peer 节点 P1 和 Peer 节点 P2

P1 使用交易 T1 和 提案 P 来执行链码 S1,这会生成对交易 T1 的响应 R1,它会提供背书 E1。

P2 使用交易 T1 提案 P 执行了链码 S1,这会生成对于交易 T1 的响应 R2,它会提供背书 E2。

应用程序 A1 对于交易 T1 接收到了两个背书响应,称为 E1 和 E2。

Peer 节点通过向提案的响应添加自己的数字签名的方式提供背书,并且使用它的私钥为整个的负载提供签名。

排序和将交易打包到区块

排序节点是这个过程的关键——它接收交易,这些交易中包含了来自很多个应用的已经背书过的交易提案,并且将交易排序并打包进区块。

验证和提交

在每个 Peer 节点上,区块中的每笔交易都会被验证,以确保它在被提交到账本之前,已经被所有相关的组织一致地背书过了。

Peer12

排序节点 O1 将区块 B2 分发给了 Peer 节点 P1 和 Peer 节点 P2。

Peer P1 处理了区块 B2,产生了一个会被添加到 P1 的账本 L1 中的新区块。

peer P2 处理了区块 B2,产生了一个会被添加到 P2 的账本 L1 中的新区块。

阶段三是从排序节点将区块分发到所有与它连接的 Peer 节点开始的。Peer 节点会和通道中的排序节点相连,所有跟这个排序节点相连的 Peer 节点将会收到一个新的区块的副本。

不是每个 Peer 节点都需要连接到排序节点——Peer 节点可以使用 gossip 协议将区块的信息发送给其他 Peer 节点,其他 Peer 节点也可以独立地处理这些区块。

链码仅仅需要在背书节点中有效,而不需要在区块链网络的所有部分都要有。

当区块被提交到 Peer 节点的账本的时候,那个 Peer 节点会生成一个合适的事件

应用程序可以对这些事件类型进行注册,所以在这些事件发生的时候他们能够被通知到。这些通知结束了交易流程的第三以及最后的阶段。

排序节点和共识

整个交易处理流程被称为共识,因为所有 Peer 节点在由排序节点提供的流程中对交易的排序及内容都达成了一致。

排序节点理解为这样一些节点,它们从应用程序收集和分发账本更新提案以供 Peer 节点验证并写入账本中。

评论