先给英文官方原文地址:https://hyperledger-fabric.readthedocs.io/en/latest/overview.html
###总览Overview
介绍 Hyberledger Fabric 做为一个全面、可定制、企业级区块链解决方案关键设计需求:
- Assets (资产) - 资产定义了可以交换的几乎所有东西,其能通过网络用钱计价,从食物、到古董车、到未来的货币。
- Chaincode(链码/智能合约) - Chaincode分区执行,根据交易顺序、所需信任级别的限制、验证跨节点类型、优化网络规模和性能
- Ledger Features (账本) -
不可更改、共享帐本记录了每个channle的完整的交易历史,包括类SQL的查询能力以保证高效的审计和纠纷解决 - Privacy through Channels - (跨channles隐私)
通道能满足竞争企业和受监管行业在普通网络在进行多边交易能满足高隐私和保密需求。 - Security & Membership Services (安全和成员服务) -
带权限的成员管理提供了可信的区块链网络,参与者值得所有的交易可以被有授权的监管和审计人员探测和跟踪。 - Consensus (共识) - Fabric 独特的共识机制能满足企业对灵活性和可扩展性的需求。
###Fabric 功能
Hyperledger Fabric 是分布式帐本(DLT)的一个独特实现,采用模块化区块链架构,其提供了企业所需的网络安全、可扩展性、保密性和性能。其主要的区块链网络功能包括:
- Identity management 身份管理
Hyperledger Fabric 提供用户识别服务来管理用户的ID和参与者在网络内的授权。访问控制列表可以作为额外的许可层提供特定网络操作授权。比如,一个特定的用户ID可以执行chaincode应用,但是无法部署新的chaincode。
用户之间相互知道身份,但是并不知道相互之间做了什么。
- Privacy and confidentiality 隐私与保密
Hyperledger Fabric 使竞争商业组织、任何需要私有、保密交易的组织共存在同一个许可网络中。私有channel限制消息路径来给特定子网成员完成隐私和保密交易。没有该channel权限的用户无法见到和访问channel的任何数据,包括交易、成员和通道数据。
- Efficient processing 高效的处理
Hyperledger Fabric 根据节点类型分配网络角色。为给网络提供并发和并行,交易执行从交易共识和承诺中分开。执行交易先于共识是每个peer节点能同时处理多个交易。并发执行提高了每个peer节点的执行效率,加速了分发交易到 ordering 服务。
除了能够进行并行处理之外,还使交易处理和帐本维护的节点得到了拆分,peer节点没有了共识的工作负载。这样分工同样降低了授权和认证的处理需求;所有peer节点不需要信任全部 ordering 节点,反之亦然,因此处理能被独立与对方认可外运行
- Chaincode functionality 链码/智能合约功能
Chaincode应用编码了在channel上执行特定类型交易的逻辑。Chaincode定义资产所有权变更的参数,例如,确保转让所有权的所有交易都遵守相同的规则和要求。System chaincode 是定义了整个channel操作参数的chaincode。生命周期和配置system chaincode定义channle的规则;背书和验证system chaincode定义了背书和验证交易的需求。
- Modular design 模块化设计
Hyperledger Fabric实现了模块化设计,网络设计者能根据需求选择功能。比如特定的识别、共识、加密算法可以插入任何 fabric网络。因此,其是一个任何行业和公共领域都可以使用的通用区块链架构,保证其网络可以跨市场、监管和地理边境进行互操作。相比之下,其他竞争对手大多是受限于特定领域和行业的。
###Fabric 模型
- Assets 资产
资产可以是有形(实体和硬件)或无形(合同和知识产权)的。可以很方便在客户端javascript定义资产,在你的Fabric应用中使用,通过Fabric Composer工具。
Fabric支持资产的交换,通过未使用交易输出作为后续交易的输入。资产(和资产注册)在Fabric中作为键值对的集合存在,在channel帐本中带状态变更记录作为交易。Fabric允许任何资产采用二进制或JSON格式表示。
- Chaincode
Chaincode 是定义资产和修改资产的交易指令的软件。也就是说,它就是业务逻辑。chaincode执行读取和修改键值对和其它状态数据库信息的规则。chaincode 函数基于帐本当前状态数据库执行,通过交易提案初始化。chaincode 执行结果是一系列键值对写入,其被提交到网络并被所有peer节点的帐本记录。
- Ledger Features 帐本特性
帐本是fabric中所有状态转换的记录,其记录为顺序、防篡改。状态转换是参与方提交的chaincode的执行结果。每个交易结果是一系列键值对提交给帐本来创建、更新或删除。
帐本由一个区块链来保持不可变更、顺序记录在区块中,同时一个状态数据库来维护fabric当前状态。每个channel一个账本。每个peer维护所属每个channel的一个账本拷贝。
- 检索和更新账本使用基于key查找、范围检索和组合key检索
- 只读检索使用富检索语言(如果使用 CouchDB 作为状态数据库)
- 只读历史检索 - 检索一个key的账本历史,可以查看数据来源(enabling data provenance scenarios)
- 交易由各版本的键值对组成,chaincode (读集合)读取的和chaincode写入的(写集合)
- 交易包括每个背书peer的签名,提交到ordering服务
- 交易被ordered(排序?共识)进区块,从ordering服务发布到channel的peer节点中
- peer节点根据背书策略验证交易并执行策略
- 在添加新块之前,将执行版本检查来保证资产的状态从chaincode执行时刻开始没有被改变
- 一旦交易被验证和提交就不可以被改变
- 一个channel的帐本包括了配置区块,其定义了策略、访问控制列表和其它相关信息
-
channel 包括成员服务提供者实例允许从不同证书机构加密材料。阅读帐本主题,深入了解数据库、存储结构和"检索能力".
- Privacy through Channels 跨通道隐私
Fabric 实现了基于每个channel的不可变帐本,同时chaincode可以操作和修改资产的当前状态(比如,更新键值对)。一个账本存在于一个channel范围 - 它可以被整个网络共享(假设每个参与者都在一个共同的channel内操作) - 或者可以私有给有一组特定的参与者。
在后续,这些参与者将能创建一个分离的channel,因此隔离/分离他们的交易和账本。Fabric甚至能解决这样的场景:希望弥合全局透明度和隐私之间的差距。Chaincode仅安装在需要获取资产状态来执行读写操作的peers(换句话说,如果一个chaincode没有安装一个peer,它将不能与账本交互)。为了更进一步的隔离数据,chaincode内的值可以在附到账本前使用通用的加密算法,如SHA-256,来加密(部分或全部)。
- Security & Membership Services 安全和成员服务
Hyperledger Fabric 加强了交易网络,所有参与者都有已知的身份。公钥基础设施用来生成与组织,网络组件以及最终用户或客户端应用程序相关联的加密证书。因此,数据访问控制可以在网络和channel层面进行操作和管理。Fabric的“许可”概念,加上channel的存在和功能,有助于解决隐私和机密性至关重要的场景。
参看 Fabric CA章节来更好的理解加密的实现,以及在Fabric中的签名、证明、验证实现。
- Consensus 共识
在分布式帐本技术中,共识最近变成一个实现独立功能的特定算法的同义词。然后,共识不仅是简单的同意交易的顺序,它是贯穿了整个交易流程中的基本角色,从提案、背书、到确认顺序、验证和承诺,Hyperledger Fabric中强调这样差异。简单来说,共识是对一个块内一组交易正确性的全生命周期验证。
当一个块内交易的顺序和结果符合明确的政策标准检查时,共识最终达成。这些检查和平衡发生在一个交易的生命周期内,包括的背书策略使用,指定特定成员必须对特定交易等级背书;同时系统chaincode保证这些策略被执行和坚持。在承诺前,peers将执行系统chaincode来保证足够的背书存在,而且它们是从恰当的实体发布而来。更进一步,当帐本的当前状态被同意时将进行版本检查,在任何包括交易的区块被附加的帐本前。这个最终的检查时为了保证避免双重支付和其它可能可能导致危机数据完整性的其它威胁,并允许对非静态变量执行函数。
除了大量背书、有效性和版本检查之外,同时还有在交易流程中所有方向上持续存在的身份识别。访问控制列表在网络层上分级实现(从ordering服务下到channels),并且随着交易穿过不同架构组件,payloads(负载在不同层次上是不同的)被重复签名,验证和认证。 总而言之,共识不仅仅局限于一批交易的顺序达成一致,而是作为在交易从提案到承诺的过程中进行持续验证的副产品而实现的总体。**
我的博客即将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=2tqett740yucw