需要 Review

术语表

专业术语很重要,所有Fabric用户和开发人员 需就每个特定术语的含义达成一致。例如,什么是链码。 该文档其他内容将根据需要引用术语表,当然, 如果你愿意的话,可以随时阅读整个文档;这很有启发性!

Anchor Peer 锚节点

锚节点是通道中能被所有其他peer节点探测、并能与之进行通信的一种peer节点。 通道中的每个 成员_ 都有一个(或多个,以防单点故障)锚节点, 允许属于不同成员身份的节点 发现通道中存在的其它节点。

Block 区块

区块是通道上一组有序交易的集合。区块往往通过密码学手段 连接到前导区块。

Chain 链

账本的链是一个交易区块经过“哈希连接”结构化的交易日志。 对等节点从排序服务收到交易区块, 基于背书策略和并发冲突来标注区块的交易为有效或者无效状态, 并且将区块追加到 对等节点文件系统的哈希链中。

Chaincode 链码

链码是一个运行在账本上的软件,它可以对资产进行编码,其中的交易 指令(或者叫业务逻辑)也可以用来修改资产。

Channel 通道

通道是私有区块链,它保证了 数据隔离和保密。特定通道的账本由该通道中所有peer节点共享, 并且交易参与方必须经过该通道的正确授权 才能与其交互。通道是由 配置区块_ 定义的。

Commitment 提交

通道中的每个 peer节点_ 都会验证交易的有序区块, 然后将区块提交(写或追加)至该通道 账本_ 的各个副本。 peer节点也会标记每个区块中的每笔交易的状态 是有效或者无效。

Concurrency Control Version Check CCVC

CCVC是保持通道中各peer节点间状态同步的一种方法。 peer节点并行的执行交易,在交易提交至账本之前, peer节点会检查已读数据在执行期间是否被修改。 如果读取的数据在执行和提交之间被改变, 就会引发CCVC冲突, 该交易就会在账本中被标记为无效, 而且值不会更新到状态数据库。

Configuration Block 配置区块

配置区块包含为系统链(排序服务)或通道定义成员和策略的配置数据。 通道或整个网络的任意配置修改 (比如,成员离开或加入), 都将一个新的配置区块追加到对应的链上。 这个配置区块会包含创世区块的内容和修改后的增量。

Consensus 共识

共识是贯穿整个交易流程中的广泛意义上的概念, 它会生成对排序的同意 并确认构成区块的一组交易的正确性。

Current State 当前状态

账本的当前状态代表其链上交易日志中所有Key对应的最新值。 peer节点会将 处理过的区块中的每个有效交易对应修改的最新值提交为账本的当前状态。 由于当前状态表示通道中所有最新的K-V, 所以又被称为 World State。链码执行交易提案就是 针对的当前状态数据。

Dynamic Membership 动态成员

Fabric支持添加/删除成员、peee节点、排序服务节点, 而不会影响整个网络的可操作性。 动态成员至关重要,当业务关系调整并且 由于各种原因需要添加/删除实体时。

Endorsement 背书

背书是指一个peer节点执行链码交易并 返回一个提案响应给客户端应用程序的过程。这个提案响应包括 链码执行响应信息、结果(读写集)、事件、 以及作为证明peer节点执行链码的签名。 链码有相应的背书策略,背书策略中指定了 背书节点。

Endorsement policy 背书策略

背书策略定义了通道中必须执行特定链码的peer节点, 和所需的响应(背书)组合。 背书策略可以设定对一个交易的最小背书节点个数, 或最小背书节点数百分比,或 该链码的所有背书节点。 背书策略由背书节点基于应用程序和对抵御不良行为 的期望水平来组织管理。一个被提交的交易 必须符合背书策略才可以被记账节点标记为有效。 安装和实例化链码时需要指定背书策略。

Hyperledger Fabric CA

Fabric CA是默认的证书管理组件, 它向网络成员及其用户颁发基于PKI的证书。 CA为每个成员颁发一个根证书(rootCert), 为每个授权用户颁发一个注册证书(eCert)。

Genesis Block 创世区块

创世区块是初始化区块链网络或通道的配置区块, 也是链上的第一个区块。

Gossip Protocol Gossip协议

Gossip数据传播协议有三个功能: 1) 管理peer节点发现和通道成员; 2)通道上的所有peer节点间广播账本数据; 3)通道上的所有peer节点间同步账本数据。 详情参考 Gossip

Initialize 初始化

一个初始化链码的方法。

Install 安装

将链码放到peer节点的文件系统的过程。

Instantiate 实例化

实例化时通道上启动并初始化一个链码的过程。 实例化后,安装过链码的peer节点可接收链码 调用。

Invoke 调用

用户调用链码中函数。客户端应用程序通过 给peer节点发送一个交易提案来调用链码。peer节点会执行链码 并给客户端返回一个背书后的提案响应。 客户端将收集足够多的提案响应以满足背书策略, 然后将交易结果提交给排序、验证、提交等服务。 客户端也可以选择不提交交易结果。例如, 如果这调用只是查询账本,客户端通常 不会提交只读交易,除非希望记录账本的查询 用于审计目的。调用包括通道的标识、要调用的链码中的函数 和一组参数。

Leading Peer 主导节点

每个 成员_ 在其订阅的通道上可拥有多个peer节点。 其中一个peer节点会作为通道的主导节点, 代表成员与排序服务通信。 排序服务将区块“交付”给这个主导节点, 然后这个主导节点将这些区块分发给同一成员集群中的其他peer节点。

Ledger 账本

账本是通道中每个peer节点维护的通道的链 和当前状态数据。

Member 成员

成员是拥有网络唯一根证书的合法独立实体。 像peer节点和客户端这样的网络组件都会会关联一个成员。

Membership Service Provider MSP

MSP是指一个抽象系统组件, 它为客户端和它们的peer节点提供证书, 以参与到Fabric网络中。客户端使用它们的证书授权交易, 并且peer节点用它们的证书授权 交易处理结果(背书)。在与区块链系统的 交易处理组件紧密连接的同时,这个接口的目标是定义成员服务组件, 以便在不修改系统中交易处理组件的核心的 情况下顺利地插入 其替代实现。

Membership Services 成员服务

成员服务在许可的区块链网络上认证、授权和管理身份。 在peer节点和orderer节点中运行的成员服务的代码 既认证也授权区块链操作。 它是基于PKI的会员服务提供商(MSP)抽象实现。

Ordering Service 排序服务

排序服务是将交易排序到一个区块的节点的集合。 排序服务独立于peer处理流程之外, 并以先到先得的原则为网络中所有交易排序。 排序服务支持可插拔实现,目前仅支持SOLO和Kafka。 排序服务是整个网络的通用绑定; 它包含与每个 成员_ 相关加密的身份资料。

Peer 节点

peer节点是个网络实体,它维护账本并运行链码容器来 对账本执行读写操作。peer属于成员,并由其维护。

Policy 策略

有背书策略,验证策略, 链码管理策略,网络/通道管理策略。

Proposal 提案

提案是通道中对指定peer节点的背书请求。 提案要么是链码实例化请求,要么是链码调用(读写)请求。

Query 查询

查询时一个链码调用,它读取账本当前状态数据, 但不写账本。链码函数可以查询账本中的某些key, 或查询账本上的一组key。由于查询不改变账本状态, 客户端通常不会提交只读交易给排序、验证和记账。 个别情况下,客户端也可以选择将只读交易 提交给排序、验证和记账。例如, 如果客户希望将其在某个时间点知道该账本的特定状态 作留证审计。

Software Development Kit (SDK)

SDK为开发人员提供了一个结构化的库环境, 用于编写和测试链码应用程序。 SDK完全可以通过标准接口实现配置和扩展。 像签名的加密算法、日志框架和state存储 这样的组件都可以轻松地实现替换。SDK为交易处理, 成员服务、节点遍历以及事件处理提供API。 目前SDK支持Node.js、Java和Python。

State Database 状态数据库

为了从链码中方便地读写,Current state存储于状态数据库中。 目前支持levelDB和couchDB。

System Chain 系统链

系统链是包含了在系统层面定义了网络的配置区块的链。 系统链存在于排序服务中,与通道类似, 有初始配置信息,如MSP信息、策略 和配置详情。整个网络的任何变化(如 新组织加入或新排序节点加入)都会导致新的配置区块 添加到系统链。

系统链可以看作是一个或一组通道的通用绑定。 例如,一批金融机构可能组成一个 联盟(由系统链表示),然后根据 各自不同的业务场景创建不同的通道。

Transaction 交易

交易就是将Invoke或Instantiate结果提交至ordering、validation和commit。 Invoke是从账本中请求读/写数据。Instantiate是 在一个通道中启动和初始化链码的请求。应用程序客户端收集来自背书节点的invoke或Instantiate响应, 并将结果和背书打包 提交至ordering、validation和commit。