研究生一直在折腾区块链这方面的东西,翻来覆去感觉Hyperledger Fabric是个挺有前景的,,,怎么说呢,方向吧。自己脑子里想的东西全让它实现了,又觉得难过又觉得开心。超级账本值得学习的地方有很多,又打算把官方文档翻出来读一遍。因为英语六级连五百都没有,所以还是决定把文档转成中文的看,大部分是百度google翻译,语句不通我也尽量调整了,包括一些名词翻译之类的尽量改过来,就形成了下面这篇有点狗屁不通的辣鸡译文。
生活还要继续,科研还要努力,,,你说呢,熊二。
原文地址:Hyperledger Fabric 官方文档
一般来说,区块链是在分布式网络对等节点中维护的不可变的交易账本。每个节点都维护着由共识机制验证过的事务组成的,并包含前一个区块的哈希值的为区块组成的该交易账本的副本。
区块链的第一个也是最广为认可的应用是比特币加密货币,尽管其他人也追随它的脚步。另一种加密货币以太坊采用了不同的方法,整合了许多与比特币相同的特征,但添加了智能合约,为分布式应用程序创建了一个平台。比特币和以太坊属于一类区块链,我们将其归类为公共的无许可区块链。从根本上说,它们都构建在公共网络,对任何人开放,参与者匿名互动。
随着比特币、以太坊以及其他一些衍生技术的普及,人们对将区块链、分布式账本和分布式应用平台的底层技术应用于更具创新性的企业用例的兴趣也随之增长。然而,许多企业用例,使用无许可区块链技术(目前)无法提供的足够的性能。
对于企业使用,我们需要考虑以下要求:
· 参与者必须是被识别的/能够被识别的
· 需要企业许可才能接入网络
· 足够高的交易吞吐量性能
· 足够低的交易确认时延
· 与商业交易有关交易和数据的隐私和保密
虽然许多早期的区块链平台目前正有企业使用,但Hyperledger结构从一开始就设计用于企业使用。以下各节描述了Hyperledger Fabric(Fabric)如何与其他区块链平台区分开来,并描述了一些决定设计当今fabric架构的动机。
Hyperledger Fabric是一个开源企业级许可分布式账本技术(DLT)平台,它被设计用于企业环境,与其他流行的分布式账本或区块链平台相比,它提供了一些与众不同的关键能力。
一个关键的不同点是Hyperledger是在Linux基金会下建立的,在培育开源项目的历史悠久且非常成功,这些项目发展了强大的可持续社区和繁荣的生态系统。Hyperledger由一个各行各业组成的技术指导委员会管理,hyperledger结构项目由来自多个组织的不同维护人员组成。
Fabric具有高度模块化和可配置的架构,能够为银行、金融、保险、医疗保健、人力资源、供应链甚至数字音乐交付等广泛的行业用例提供创新、多功能性和优化。
Fabric是第一个支持以通用编程语言(如Java、GO和NoDE.JS)编写智能合约,而不是受约束的特定于域的语言(DSL)的分布式区块链平台。这意味着大多数企业已经具备了开发智能合约所需的技能,并且不需要额外的培训来学习新语言或DSL。
Fabric平台是需要许可的,这意味着,与没有公共许可的网络不同,参与者彼此都是已知的,而不是匿名的、彼此完全不信任的。这意味着,虽然参与者可能无法完全信任彼此(例如,他们可能是同一行业的竞争对手),但网络可以在基于参与者之间存在信任的治理模式下运行,例如处理争议的法律协议或框架。
Fabric最关键的不同点是它支持可插拔的共识协议使平台能够更有效地定制以适应特定的用例和信任模型。例如,当部署在单个企业中或由受信任的权威机构操作时,完全拜占庭式的容错共识可能被认为是不必要的,并且会对性能和吞吐量造成过度的拖累。在这种情况下,崩溃容错(CFT)共识协议可能会更充分,而在多方分散的用例中,可能需要更传统的拜占庭容错(BFT)共识协议。
Fabric可以使用不需要代币的共识协议来产生区块或推动智能合约的执行。避免使用加密货币可以减少一些重要的风险/攻击问题,并且没有挖矿意味着可以以与任何其他分布式系统大致相同的操作成本部署平台。
这些与众不同的设计功能的结合使Fabric成为当今在事务处理和事务确认延迟方面性能更好的平台之一,它支持事务的隐私和机密性以及实现它们的智能合约(Fabric称之为“链码”)。
让我们更详细地探讨这些差异化特性。
Fabric被专门设计成模块化架构。无论是可插拔共识、可插拔身份管理协议(如LDAP或OpenID Connect)、密钥管理协议或加密库,该平台都在其核心进行了设计,以满足企业用例需求的多样性。
从高层的角度来看,Fabric由以下模块化组件组成:
· 可插拔的共识服务建立了对事务顺序的共识,然后将块广播给对等方。
· 可插入的成员身份服务可以使程序负责将网络中的实体与加密身份关联起来。
· 可选点对点gossip服务将区块广播给订阅服务的其他节点。
· 智能合约(链码)在容器环境(例如Docker)中运行以进行隔离。可以用标准编程语言编写,但不能直接访问账本状态。
· 可插拔的背书和确认机制确保能够为每个应用程序独立配置。
· Fabric能够通过设置配置支持各种数据库
业界有一个共识:没有一种区块链能够适用于所有业界产品。Fabric能够通过不同的配置来满足不同行业用例去解决不用的需求方案。
在一个无许可区块链中,几乎任何人都可以参与,而且每个参与者都是匿名的。在这样的背景下,除了区块链的状态在具有一定高度之前是不可变的之外,没有其他信任。为了缓解这种信任缺失,无许可区块链通常使用挖矿或获取交易费用来提供经济激励,以抵消基于“工作证明”(POW)的共识形式参与的额外成本。
另一方面,许可区块链在一组已知的、已识别的、经常审查的参与者之间运行区块链,这些参与者在一个产生一定程度信任的治理模型下运行。许可的区块链提供了一种方法来确保具有共同目标但可能不完全信任彼此的一组实体之间的交互。通过依赖参与者的身份,许可的区块链可以使用更传统的崩溃容错(CFT)或拜占庭容错(BFT)共识协议,这些协议不需要非常耗资源的挖掘过程。
此外,在这种允许的情况下,参与者通过智能合约故意引入恶意代码的风险会降低。首先,参与者相互了解,所有的行为,无论是提交应用程序交易、修改网络配置或部署智能合约,都按照为网络和相关交易类型建立的认可政策记录在区块链上。Fabric不是完全匿名的,根据治理模型能够很容易地识别犯罪方并处理事件。
智能合约或Fabric中的“链码”,作为一个可信的分布式应用程序发挥作用,通过区块链和同行之间的基本共识获得其安全/信任。它是区块链应用程序的业务逻辑。
智能合约有三个关键点,尤其是应用于平台时:
· 许多链码在网络中同时运行
· 链码能够动态部署,在许多情况下,任何人都可以
· 应用程序代码应被视为不可信的,甚至可能是恶意的。
大多数现有的智能合约区块链平台遵循排序执行架构,其中共识协议:
· 验证和排序事务,然后将它们传播到所有对等节点,
· 然后,每个对等节点按顺序执行事务。
排序执行架构可以在几乎所有现有的区块链系统中找到,从公共/无许可平台(如以太坊(基于POW的共识))到许可平台(如Tendermint、Chain和Quorum)。
在与排序执行架构一起运行的区块链中执行的智能合约必须具有确定性;否则,可能永远无法达成共识。为了解决不确定性问题,许多平台都要求用非标准或特定于域的语言(如solidity)编写智能合约,以便消除不确定性操作。这阻碍了适用性,因为它要求编写智能合约的开发人员学习新的语言,并可能导致编程错误。
此外,由于所有事务都是由所有节点顺序执行的,因此性能和规模都受到限制。智能合约代码在系统中的每个节点上执行的事实要求采取复杂的措施来保护整个系统不受潜在恶意合约的影响,以确保整个系统的弹性。
Fabric引入一种新的交易架构,我们称之为 执行-排序-验证。通过将排序执行模型拆分为三个步骤来解决原有的扩展性、灵活性、性能和机密性的挑战:
· 执行事务并检查其正确性,再为它背书。
· 通过(可插拔)共识协议排序交易,以及
· 在将交易提交到区块链之前,根据特定于应用程序的背书策略验证交易
这种设计从根本上背离了排序执行模式,即结构在对交易达成最终同意之前执行事务。
在Fabric中,特定于应用程序的背书策略指定哪些对等节点或其中多少节点需要保证给定智能合约的正确执行。因此,每个事务只需要由满足事务的认可策略所必需的对等节点子集执行(认可)。这允许并行执行提高系统的整体性能和规模。第一个阶段还消除了任何不确定性,因为不一致的结果可以在排序之前过滤掉。
因为我们已经消除了不确定性,Fabric是第一个允许使用标准编程语言的区块链技术。在1.1.0版本中,智能合同可以写在GO或NoDE.JS中,而在后续版本中有支持其他流行语言的计划,包括Java。
正如我们之前讲到的,在使用PoW作为共识机制的无许可公有链中,交易能够被每个节点执行。这意味着合约本身和它们处理的交易数据不存在保密性。每个交易和对应的代码在网络中每个节点都是可见的。这种情况下,我们用数据的机密性换来了PoW提供的拜占庭容错共识。
对于许多业务/企业用例来说,缺乏机密性可能是个问题。例如,在一个供应链合作伙伴网络中,一些消费者可能会被给予优惠价格,作为巩固关系或促进额外销售的一种手段。如果每个参与者都能看到每个合同和交易,那么在一个完全透明的网络中维持这种业务关系就变得不可能了——每个人都会想要更便宜的价格!
作为第二个例子,考虑证券行业,一个交易者建立一个positon(or disposing of one)不希望她的竞争对手知道这一点,否则他们将想办法加入博弈,破坏交易者的策略。
为了解决为实现企业用例要求而缺乏隐私和机密性的问题,区块链平台采用了多种方法。他们都有自己的权衡。
加密数据是提供保密性的一种方法;但是,在一个利用POW达成共识的无权限网络中,加密数据位于每个节点上。如果有足够的时间和计算资源,加密可能会被破坏。对于许多企业用例来说,它们不可能承受信息可能被泄露的风险。
零知识证明(zero knowledge proof,ZKP)是另一个正在探索解决这个问题的研究领域,这里的权衡是,目前计算一个ZKP需要相当长的时间和计算资源。因此,在这种情况下,权衡的是保密性能。
在一个可以利用其他形式共识的授权环境中,可以探索限制机密信息仅分发给授权节点的方法。
作为一个被授权的平台,HyperledgeFabric通过其渠道架构实现了保密性。基本上,结构网络上的参与者可以在参与者子集之间建立一个“通道”,该通道应被授予对特定事务集的可见性。把它看作是一个网络覆盖。因此,只有参与通道的节点才能访问智能合约(链码)和事务处理的数据,从而保护两者的隐私和机密性。
为了提高其隐私和保密能力,Fabric增加了对私有数据的支持,并正在致力于将来的零知识证明(Zero Knowledge Proof,ZKP)。More on this as it becomes available.
事务的顺序被委托给模块化组件以达成共识,该组件在逻辑上与执行事务和维护分类帐的对等体分离。特别是排序服务。由于共识是模块化的,因此可以根据特定部署或解决方案的信任假设进行定制。这种模块化架构允许平台依赖于成熟的工具包来进行CFT(崩溃容错)或BFT(拜占庭容错)排序。
Fabric目前提供两种CFT排序服务实现。第一个是基于Raft协议的etcd库。另一个是kafka(内部使用zookeeper)。有关当前可用排序服务的信息,请参阅我们有关排序的概念文档。
另请注意,这些并不相互排斥。 Fabric网络可以具有多种排序服务,支持不同的应用或应用要求。
区块链平台的性能可能会受到许多变量的影响,例如事务大小,块大小,网络大小以及硬件限制等.Hyperledger社区目前正在开发性能和规模工作组中的一组度量标准,以及称为Hyperledger Caliper的基准测试框架的相应实现。
虽然这项工作仍在继续开发,应该被视为区块链平台性能和规模特征的明确衡量标准,但IBM Research的一个团队发表了一份同行评审论文,评估了Hyperledger Fabric的架构和性能。本文提供了对Fabric架构的深入讨论,然后使用Hyperledger Fabric v1.1的初步版本报告团队对平台的性能评估。
研究团队所做的基准测试工作为Fabric v1.1.0版本提供了大量的性能改进,使平台的总体性能比v1.0.0版本高出一倍多。
任何对区块链平台的认真评估都应该在其名单中包括Hyperledger Fabric。
总的来说,Fabric的独特功能使其成为一个高度可扩展的系统,用于支持灵活的信任假设的许可区块链,使平台能够支持从政府、金融、供应链物流、医疗保健等广泛的行业用例。
更重要的是,hyperledger Fabric是十个(当前)hyperledger项目中最活跃的。围绕平台的社区建设正在稳步发展,每一次连续发布所带来的创新远远超过其他任何企业区块链平台。
记录每天解决的小问题,积累起来去解决大问题