Hyperledger Fabric概述
Posted 廉贞
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hyperledger Fabric概述相关的知识,希望对你有一定的参考价值。
综述
Hyperledger Fabric是一个模块化的分布式账本解决方案支撑平台,提供高度的保密性、弹性、灵活性与可扩展性。它的目的是支持不同组件的可插入实现,并适应经济系统中存在的复杂性。Hyperledger Fabric提出了一个独特的高弹性且可扩展的体系结构,此结构使Fabric区别于其他区块链解决方案。在Fabric对企业级区块链的未来规划中,它的架构允许被全面审查且开源。
我们建议新手用户首先阅读接下来的内容以熟悉区块链如何工作,并熟悉Hyperledger Fabric的组成与功能。
区块链是什么
分布式账本
区块链网络的核心是分布式账本,一个记录网络中发生的所有交易的分布式账本。区块链账本经常被描述成“去中心化”,这是因为它被网络中的多个参与者复制,且由所有参与者共同维护,我们将见证去中心化与协作将如何成为反映现实世界中企业交换商品与服务的强大属性。
除了去中心化与协作外,记录到区块链中的数据只能被添加,区块链使用加密技术来保证一旦交易被添加到账本便不能被修改。这一特性使参与者能够很容易的确定数据来源,因为参与者可以确定数据在写入后没有被更改过,这也是为什么区块链有时会被描述为系统的证明。
智能合约
为了支持数据更新的一致性,也为了整体的启用账本功能(交易、查询等)——区块链网络使用智能合约来提供对账本的访问控制。
智能合约不仅仅作为封装并简化信息的核心机制,还可以允许参与者自行编写从而处理某些自动执行的事务。比如说,智能合约可以记录一个物品的运输成本,当双方同意后将交易写入账本,交易资金在收到物品时自动易手。
共识
共识过程是保持网络中账本交易同步的过程,用以保证账本只有当交易被参与者批准后才会更新,且更新对所有参与者同步进行。
我们后续会学到更多关于账本、智能合约与共识相关的知识。从此刻起,可以把区块链想象成一个共享复制的、通过智能合约来更新的、通过共识来保持一致性的交易系统。
区块链能做什么
如今的交易系统
当前的交易网络,相对于商业交易诞生之初便存在的交易网络来说,只有小小的进步。业务网络的成员彼此进行交易,且分别维护各自的交易记录。交易的物品必须注明来源——业务出售的物品需拥有一串标题以供验证其所有权。虽然现代技术已经将这一过程从石器与纸质时代拖入了硬盘与云平台,但是底层结构是一样的。建立协同管理身份与交易流程的系统这一构想的来源可以想象成如下场景:对证券交易的清算是费时且费力的(处理世界体积的数万亿美元的编号),合同的签署和执行必须手动,且系统中每个数据库各自存储信息,隐含了单点失效的风险。
即使需求的可见度与信任度都非常清晰,使用当前的零碎的技术手段建立一个跨越业务网络的系统以实现信息和流程共享也是非常困难的。
区块链的不同之处
如果商业网络中有标准的方法来在网络上建立身份,执行交易并存储数据,来替代以“现代”交易系统所代表的效率低下的“老鼠窝”,效果会怎样呢?如果建立一个资产来源仅仅通过查看一个一旦写入无法更改,可以信任的交易列表便可以认证的系统,效果会怎样呢?
这就是区块链网络。网络中的每个参与者都保持了自己的账本副本。除了账本信息共享之外,更新账本的过程也会共享。不像如今的系统,某一个参与者的私人程序用于更新自己的私账,区块链系统则使用共享程序来更新共享账本。通过共享账本进行业务协作,区块链网络可以降低时间、成本与个人隐私风险,且在流程中提升可见度与信任度。
现在你知道为什么区块链有如此巨大的作用了吧,还有很多重要的细节,他们都与这些共享信息与流程的基本思想有关。
什么是Hyperledger Fabric
Linux基金会于2015年成立超级账本,以推进跨行业的区块链技术。相对于申报一个区块链标准,它鼓励通过社区合作的方式来发展区块链技术,带着知识产权,鼓励开源,且随着时间的推移来采用不同的标准。
Fabric是超级账本区块链中的一个项目,与其他的区块链技术一样,它具有一个账本,使用智能合约,且是一个参与者可以分别管理自身交易的系统。
Fabric与其他区块链系统最大的不同在于它是隐私的、许可的网络。相对于像其他区块链那样通过“工作量证明”来验证身份(允许任何人加入网络),Fabric的成员通过会员注册服务提供商来加入网络。
Fabric提供了多种可插拔的选择,账本数据可以以多种形式存储,共识机制可切换,且支持不同的会员服务。Fabric还提供了创建通道的能力,允许一组参与者创建一个单独的账本交易。这对于一些不想让其竞争对手(同为参与者)知道其每一笔交易的参与者来说尤其重要,如果两个参与者间创建了一个通道,那么其他参与者不会拿到此通道的数据。
共享账本
超级账本的总账子系统包括两部分:世界状态与交易日志。Fabric的每个参与者都持有一份账本副本。世界状态部分描述了账本在某个时间点的状态。它是账本的数据库。交易日志部分则记录了导致当前世界状态的所有交易,是世界状态的历史记录。账本是世界状态与交易日志的结合。
账本的世界状态有可替换的数据存储区,默认是Level-DB键值数据库。交易日志不需要可插拔,它只是简单的记录了账本交易前后的数据。
智能合约
Fabric智能合约写在链码中,且当外部应用与账本互动时被调用。大多数情况中,链码只与账本的数据库部分互动(查询等),即世界状态,而不是交易日志。链码可以被多种语言编写,当前支持Go与Java,未来会发布更多语言的支持。
私密性
私密性依赖于网络的需求,对于一个B2B网络的参与者来说,对共享的信息量尤其敏感。相对于其他开放网络,Fabric网络支持私密性的关键业务需求。
共识
交易必须按照它们发生的顺序写入账本,即使它们可能发生在网络中不同的参与者身上。为了做到这一点,必须建立交易的排序服务,且有一套抵制错误交易(恶意)写入账本的方法。
这是一个已经在计算机科学中被研究的比较彻底的领域,有许多方法可以实现它,且每种方法都有不同的取舍。比如PBFT(实际拜占庭容错)提供了一个机制使得文件副本互相交流来保持一致,哪怕出现一定数量的背叛。再比如在比特币中,排序发生在一个叫做采矿的过程中,在这个过程中,竞争的计算机竞相解决一个密码难题,它定义了所有交易处理随后建立的顺序。
Hyperledger Fabric已经被设计成允许网络建立者选择一个共识机制最能代表参与者之间存在的关系。与私密性一样,有各种各样的需求:在关系上是更高度结构化的网络,还是更为对等的网络。
我们将会学习到更多的Fabric共识机制,目前包括SOLO,Kafka,未来很快会应用SBFT(简易拜占庭容错)。
Hyperledger Fabric功能
Hyperledger Fabric是一种独特的分布式账本实现技术(DLT),提供企业级的网络安全性、可扩展性、保密性与性能,是一个模块化的区块链架构。Hyperledger Fabric提供了如下的区块链功能:
身份管理
为了实现许可网络,Fabric提供了会员身份服务,在网络中管理用户ID与参与者的身份。访问控制列表可以通过授权特定的网络操作来提供额外的权限层。例如,一个特定的用户ID可以允许调用链码的应用程序,但禁止部署新的链码。关于Fabric网络的一个真理是,成员彼此认识(身份),但他们不知道对方在做什么(隐私保密)。
隐私保密
Fabric允许商业利益的角逐,允许要求私密交易的任何团体在同一许可网络共存。私有通道限制了消息传递路径,可用于为网络中特定子集的参与者提供交易的隐私性和机密性。通道上的所有数据(包括交易、成员和通道信息)对于未显式地授予对该通道访问权限的任何网络成员来说都是不可访问的。
高效处理
Hyperledger Fabric通过节点类型来分配网络角色。为了为网络提供并发性和并行性,交易处理与交易排序分开执行。在排序之前处理交易使每个对等节点能够同时处理多个交易。这种并发执行提高了每个对等节点的处理效率,加快了交易向排序服务的交付。
除了实现并行处理外,劳动力的分工使得排序节点免于大量的交易处理与账本维持工作,而对等节点则从排序共识工作负担中解脱出来。角色的这种分叉也降低了授权和验证所需的处理要求;所有对等节点不必信任所有的排序节点,反之亦然,因此对其中一个节点的处理可以独立于另外一个节点进行验证。
智能合约
链码应用的编码逻辑会被通道中具体类型的交易调用。链码定义了资产所有权转移的参数,例如,保证所有所有权转移交易依照相同的规则与要求。系统级链码区别于链码,它定义了整个通道的操作参数。生命周期与配置系统链码定义了通道规则,签署与验证系统链码定义了签署与验证交易的要求。
模块设计
Fabric实现了一个模块化的架构,为网络设计师提供功能选择。模块化还包括身份认证,共识算法以及加密算法。其结果是一个通用的区块链架构,在任何行业和公共领域都可以采用,以确保其网络可以在跨市场、监管以及地理边界时能够协同操作。
Hyperledger Fabric模型
本节概述了关键的设计特点以使得Fabric履行承诺成为一个全面的、可定制的、企业级的区块链解决方案:
- 资产:资产定义可以在网络中交易几乎所有具有货币价值的东西,从食品到古董汽车再到货币期货。
- 链码:链码的执行可以划分为交易排序、限制信任等级要求、跨界点类型认证与优化网络性能与可扩展性几个部分。
- 账本特点:不可改变的共享账本记录了每个通道的整个交易历史,并包含了用于高效审计与解决争议的类SQL查询功能。
- 通道私密性:对于要求在公用网络上交换资产的相互竞争的企业与受管制的行业,通道机制使多层次的交易具有高度的隐私性和机密性。
- 安全性与会员服务:会员服务提供可信的区块链网络,参与者了解所有交易可以被监管者与审计者检测与跟踪。
- 共识:独特的共识机制满足企业级的灵活性与可扩展性的需求。
资产
资产范围涵盖了从有形资产(房地产和硬件)到无形资产(合同和知识产权)全部内容。Hyperledger Fabric提供了使用链码交易修改资产的能力。资产在Fabric中可以表示为一个键值对的集合,随着状态记录变更作为交易写入通道的账本中。资产可以用二进制或JSON形式表示。
你可以很轻松的在Fabric应用中定义并使用资产,通过使用工具:Hyperledger Composer。
链码
链码是定义资产与修改资产的指令。换句话说,它是业务逻辑。链码通过执行自身逻辑来查询或修改键值对或者其他数据库信息。链码函数通过数据库当前状态执行,且通过交易提案初始化。链码执行的结果是一系列键值写(写集),该写集将会被提交至网络并应用于所有节点中。
账本特点
账本是Fabric中所有的有序的、防篡改记录。状态转换是参与者进行链码调用后提交的结果。资产键值对集合的每笔交易结果都会以创建、更新、删除的形式提交。
总账有区块链以区块的形式来存储不可改变的、有序的记录,且有一个状态数据库来存储当前Fabric状态。每个通道有一个账本,通道中每个成员节点维护一个账本副本。
- 使用基于Key的查询、范围查询、复合键查询来查询或更新账本。
- 只读查询支持丰富的查询语句(CouchDB)。
- 只读的历史查询——实现数据追溯场景。
- 交易包含读取链码键值对(读集),以及写入链码键值对(写集)的版本。
- 交易包含所有签署节点提交至排序服务的签名。
- 交易被打包排序成区块,并通过通道从共识节点传至对等节点。
- 对等节点通过签署政策标准来验证交易。
- 在增加区块前,需要执行版本检查以确保数据在链码执行时间段没有被篡改。
- 当交易被验证并承诺后,便不可改变。
- 每个通道的账本都包含配置区块,它定义了政策标准、访问控制列表与其他相关信息。
- 通道包含了会员服务提供商实例,因此加密证书能传递到不同的证书颁发机构。
通道私密性
Hyperledger Fabric在每个通道的基础上雇佣了不可改变的账本与链码,它可以操纵与修改当前资产状态(比如更新键值对)。账本在通道区域内存在——可以在整个网络中共享(假设所有参与者在同一个通道操作)——或者它可以私有化,只包含一组特定的参与者。
在后一种场景中,这些参与者将创建一个单独的通道,从而隔离他们的交易和账本。为了解决需要弥合总透明性和隐私之间的差距的场景,链码只能安装在需要访问资产状态进行读取和写入的节点(也就是说,如果一个链码没有被安装在节点上,它将无法与账本对接)。为了进一步混淆数据,链码内部数据可以在写入到账本之前加密,这可以使用常见的加密算法如AES等。
安全性与会员服务
Hyperledger Fabric支撑了一个所有参与者已知身份的交易网络。公钥基础设施在这里被用来生成绑定到网络中不同组织与应用客户端的加密证书。因此,它可以更广泛地在通道级别上操纵和控制数据访问控制。正是Fabric这种“许可”的概念,与通道的存在和功能,形成了隐私性与保密性这个关键问题的解决方案。
共识
在分布式账本技术中,一致性最近成为单个函数中特定算法的同义词。然而,共识不仅仅包含同意交易秩序,还包括在Fabric在整个交易流程的扮演基本角色,包括从提案和签署,再到排序,验证和承诺。简言之,一致性被定义为包含在一个块中的一组交易的正确性的一系列验证。
当打包后的交易的顺序以及结果通过标准检查后,才达成共识。这些验证发生在交易执行的整个生命周期中,这些标准包括:判定何种成员须支持何种交易类的使用,通过系统链码来保证这些标准的实施与维护等。对于最终承诺的确认,节点将雇佣这些系统链码来确保通过了足够多的验证。此外,在将任何包含交易的区块添加到账本之前,都会进行版本检查,最后的检查提供了对双花操作和其他可能危及数据完整性的威胁的保护措施。
除了大量的签署、验证与版本检查之外,还有一些不断进行的身份认证发生在交易流程的各个方面。例如:访问控制列表在分层的网络层中实现(从排序到通道),消息体被各种组件多次签名,检查并认证为一个交易提案。总的来说,共识不仅仅局限于某一批交易的顺序,而是一个总体特征,是一个交易从提案到承诺的过程中不断验证的副作用。
以上是关于Hyperledger Fabric概述的主要内容,如果未能解决你的问题,请参考以下文章
Hyperledger Fabric CA User’s Guide——概述