gaolong0 2019-06-28
术语很重要,以便所有Hyperledger Fabric用户和开发人员都同意每个特定术语的含义,例如,什么是智能合约。文档将根据需要引用术语表,但如果你愿意,可以随意阅读整个内容;这很有启发性!
由八卦使用以确保不同组织中的对等点彼此了解。
当提交包含对锚点更新的配置块时,对等点会联系到锚点并从中了解锚点已知的所有对等点。一旦来自每个组织的至少一个对等点已经联系了锚点,锚点就会了解通道中的每个对等点。由于八卦通讯是连续的,并且因为对等点总是要求被告知他们不知道的任何对等点的存在,可以为通道建立共同的成员资格观点。
例如,假设我们在通道中有三个组织 — A、B、C和一个单独的为组织C定义的锚点 - peer0.orgC,当peer1.orgA(来自组织A)联系peer0.orgC时,它会告诉它关于peer0.orgA,而且,稍后peer1.orgB联系peer0.orgC,后者会告诉前者关于peer0.orgA。从那时起,组织A和B将开始直接交换成员资格信息,而无需peer0.orgC的任何帮助。
由于跨组织的通信依赖于八卦以便工作,因此必须在通道配置中定义至少一个锚点,强烈建议每个组织都提供自己的一组锚点,以实现高可用性和冗余。
ACL或访问控制列表,将对特定对等点资源(例如系统链码API或事件服务)的访问权限关联到策略(指定需要多少和什么类型的组织或角色类型)。ACL是通道配置的一部分,因此它存在于通道的配置块中,并可使用标准配置更新机制进行更新。
ACL被格式化为键值对列表,其中键标识我们希望控制其访问权限的资源,并且该值标识允许访问它的通道策略(组)。例如,lscc/GetDeploymentSpec: /Channel/Application/Readers
定义对生命周期链码GetDeploymentSpec
API(资源)的访问可由满足/Channel/Application/Readers
策略的身份访问。
configtx.yaml
文件中提供了一组默认ACL,configtxgen使用该文件来构建通道配置。可以在configtx.yaml
的顶级“Application”部分中设置默认值,也可以在“Profiles”部分中按每个配置文件覆盖默认值。
区块包含一组有序的交易,它以加密方式链接到前一个区块,然后链接到后续区块,这种区块链中的第一个区块称为创世区块,区块由排序系统创建,并由对等点验证。
区块B1链接到区块B0,区块B2链接到区块B1。
分类帐的链是一个交易日志,结构为哈希链接的交易区块,对等点从排序服务接收交易区块,根据认可策略和并发冲突将区块的交易标记为有效或无效,并将区块附加到对等点的文件系统上的哈希链。
区块链B包含区块0,1,2。
请参阅智能合约。
通道是私有区块链覆盖,允许数据隔离和机密性,一个特定于通道的分类帐在通道中的对等点之间共享,并且交易方必须正确地认证到通道,以便与其进行交互,通道由配置区块定义。
通道C连接应用程序A1,对等点P2和排序服务O1。
通道上的每个对等点验证有序的交易区块,然后将区块提交(写入/附加)到其通道分类账的副本,对等点还将每个区块中的每个交易标记为有效或无效。
并发控制版本检查是一种跨通道上的对等点保持状态同步的方法。对等点并行执行交易,在提交到分类账之前,对等点检查执行时读取的数据未更改,如果为交易读取的数据在执行时间和提交时间之间发生了变化,然后发生了并发控制版本检查违规,并且交易在分类帐上标记为无效,并且状态数据库中的值不会更新。
包含定义系统链(排序服务)或通道的成员和策略的配置数据,对通道或整个网络的任何配置修改(例如,离开或加入的成员)将导致将新配置区块附加到适当的链,该区块将包含创世块的内容加上delta。
整个交易流的更广泛的术语,用于生成顺序协议并确认构成区块的交易集合的正确性。
联盟是区块链网络上的非定序组织的集合,这些是组建和加入通道以及拥有对等点的组织,虽然区块链网络可以有多个联盟,大多数区块链网络只有一个联盟。在通道创建时,添加到通道的所有组织必须是联盟的一部分,但是,未在联盟中定义的组织可能会添加到现有通道。
请参阅世界状态
Hyperledger Fabric支持添加/删除成员、对等点和排序服务节点,而不会影响整个网络的可操作性,当业务关系调整并且出于各种原因需要添加/删除实体时,动态成员资格至关重要。
请参阅组织。
一个已定义的将交易排序到一个块中的节点集合,排序服务独立于对等点进程,并以先到先服务的方式为网络上的所有通道排序交易,排序服务旨在支持超越开箱即用的SOLO和Kafka变种的可插拔实现,排序服务是整个网络的通用绑定;它包含与每个成员关联的加密身份资料。
维护分类帐并运行链码容器以便对分类帐执行读/写操作的网络实体,对等点由成员拥有和维护。
一个对等点,‘P’。
策略是由数字身份的属性组成的表达式,例如:Org1.Peer OR Org2.Peer
。它们用于限制对区块链网络上的资源的访问,例如,他们决定谁可以读取或写入到通道,或谁可以通过ACL使用特定的链码API,在引导排序服务或创建通道之前,可以在configtx.yaml
中定义策略,或者可以在通道上实例化链码时指定它们,示例configtx.yaml
中提供了一组默认策略,适用于大多数网络。
针对通道上特定对等点的认可请求,每个提案都是实例化或调用(读/写)请求。
智能合约就是代码 - 由区块链网络外部的客户端应用程序调用 - 管理对世界状态中一组键值对的访问和修改。在Hyperledger Fabric中,智能合约被称为链码,智能合约链码安装在对等节点上并实例化为一个或多个通道。
当前状态数据存储在状态数据库中,用于从链码进行有效的读取和查询,支持的数据库包括levelDB和couchDB。
调用或实例化提交给排序、验证和提交的结果。调用是从分类帐读取/写入数据的请求,实例化是一个启动和初始化通道链码的请求。应用程序客户端收集来自认可的对等点的调用或实例化响应,并将结果和认可打包到提交给排序、验证和提交的交易中。
一个交易,'T'。
也被称为“当前状态”,世界状态是HyperLedger Fabric分类账的一个组件,世界状态表示链交易日志中包含的所有键的最新值,链码针对世界状态数据执行交易提案,因为世界状态提供对这些键的最新值的直接访问,而不是通过遍历整个交易日志来计算它们。每当键的值发生变化时(例如,当汽车的所有权 - “键” - 从一个所有者转移到另一个所有者 - “值”)或添加新键时,世界状态就会改变(一辆车被创造出来)。因此,世界状态对交易流至关重要,因为必须知道键值对的当前状态才能改变它,对等点将处理块中包含的每个有效交易的最新值提交到分类帐世界状态。
世界状态,'W'。