HyperledgerFabric官⽅⽂档——Introduction 研究⽣⼀直在折腾区块链这⽅⾯的东西,翻来覆去感觉Hyperledger Fabric是个挺有前景的,,,怎么说呢,⽅向吧。⾃⼰脑⼦⾥想的东西全让它实现了,⼜觉得难过⼜觉得开⼼。超级账本值得学习的地⽅有很多,⼜打算把官⽅⽂档翻出来读⼀遍。因为英语六级连五百都没有,所以还是决定把⽂档转成中⽂的看,⼤部分是百度google翻译,语句不通我也尽量调整了,包括⼀些名词翻译之类的尽量改过来,就形成了下⾯这篇有点狗屁不通的辣鸡译⽂。
⽣活还要继续,科研还要努⼒,,,你说呢,熊⼆。
原⽂地址:
Introduction
Introduction
⼀般来说,区块链是在分布式⽹络对等节点中维护的不可变的交易账本。每个节点都维护着由共识机制验证过的事务组成的,并包含前⼀个区块的哈希值的为区块组成的该交易账本的副本。
区块链的第⼀个也是最⼴为认可的应⽤是⽐特币加密货币,尽管其他⼈也追随它的脚步。另⼀种加密货币以太坊采⽤了不同的⽅法,整合了许多与⽐特币相同的特征,但添加了智能合约,为分布式应⽤程序创建了⼀个平台。⽐特币和以太坊属于⼀类区块链,我们将其归类为公共的⽆许可区块链。从根本上说,它们
都构建在公共⽹络,对任何⼈开放,参与者匿名互动。
随着⽐特币、以太坊以及其他⼀些衍⽣技术的普及,⼈们对将区块链、分布式账本和分布式应⽤平台的底层技术应⽤于更具创新性的企业⽤例的兴趣也随之增长。然⽽,许多企业⽤例,使⽤⽆许可区块链技术(⽬前)⽆法提供的⾜够的性能。
对于企业使⽤,我们需要考虑以下要求:
· 参与者必须是被识别的/能够被识别的
· 需要企业许可才能接⼊⽹络
· ⾜够⾼的交易吞吐量性能
· ⾜够低的交易确认时延
· 与商业交易有关交易和数据的隐私和保密
虽然许多早期的区块链平台⽬前正有企业使⽤,但Hyperledger结构从⼀开始就设计⽤于企业使⽤。以下各节描述了Hyperledger Fabric(Fabric)如何与其他区块链平台区分开来,并描述了⼀些决定设计当今fabric架构的动机。
Hyperledger Fabric
Hyperledger Fabric是⼀个开源企业级许可分布式账本技术(DLT)平台,它被设计⽤于企业环境,与其他流⾏的分布式账本或区块链平台相⽐,它提供了⼀些与众不同的关键能⼒。
⼀个关键的不同点是Hyperledger是在Linux基⾦会下建⽴的,在培育开源项⽬的历史悠久且⾮常成功,这些项⽬发展了强⼤的可持续社区和繁荣的⽣态系统。Hyperledger由⼀个各⾏各业组成的技术指导委员会管理,hyperledger结构项⽬由来⾃多个组织的不同维护⼈员组成。
Fabric具有⾼度模块化和可配置的架构,能够为银⾏、⾦融、保险、医疗保健、⼈⼒资源、供应链甚⾄数字⾳乐交付等⼴泛的⾏业⽤例提供创新、多功能性和优化。
Fabric是第⼀个⽀持以通⽤编程语⾔(如Java、GO和NoDE.JS)编写智能合约,⽽不是受约束的特定于域的语⾔(DSL)的分布式区块链平台。这意味着⼤多数企业已经具备了开发智能合约所需的技能,并且不需要额外的培训来学习新语⾔或DSL。
Fabric平台是需要许可的,这意味着,与没有公共许可的⽹络不同,参与者彼此都是已知的,⽽不是匿名的、彼此完全不信任的。这意味着,虽然参与者可能⽆法完全信任彼此(例如,他们可能是同⼀⾏业的竞争对⼿),但⽹络可以在基于参与者之间存在信任的治理模式下运⾏,例如处理争议的法律协议或框架。
Fabric最关键的不同点是它⽀持可插拔的共识协议使平台能够更有效地定制以适应特定的⽤例和信任模型。例如,当部署在单个企业中或由受信任的权威机构操作时,完全拜占庭式的容错共识可能被认为是不必要的,并且会对性能和吞吐量造成过度的拖累。在这种情况下,崩溃容错(CFT)共识协议可能会更充分,⽽在多⽅分散的⽤例中,可能需要更传统的拜占庭容错(BFT)共识协议。
Fabric可以使⽤不需要的共识协议来产⽣区块或推动智能合约的执⾏。避免使⽤加密货币可以减少⼀些重要的风险/攻击问题,并且没有挖矿意味着可以以与任何其他分布式系统⼤致相同的操作成本部署平台。
这些与众不同的设计功能的结合使Fabric成为当今在事务处理和事务确认延迟⽅⾯性能更好的平台之⼀,它⽀持事务的隐私和机密性以及实现它们的智能合约(Fabric称之为“链码”)。
让我们更详细地探讨这些差异化特性。
Modularity
Fabric被专门设计成模块化架构。⽆论是可插拔共识、可插拔⾝份管理协议(如LDAP或OpenID Connect)、密钥管理协议或加密库,该平台都在其核⼼进⾏了设计,以满⾜企业⽤例需求的多样性。
从⾼层的⾓度来看,Fabric由以下模块化组件组成:
· 可插拔的共识服务建⽴了对事务顺序的共识,然后将块⼴播给对等⽅。
· 可插⼊的成员⾝份服务可以使程序负责将⽹络中的实体与加密⾝份关联起来。
· 可选点对点gossip服务将区块⼴播给订阅服务的其他节点。solidity
· 智能合约(链码)在容器环境(例如Docker)中运⾏以进⾏隔离。可以⽤标准编程语⾔编写,但不能直接访问账本状态。
· 可插拔的背书和确认机制确保能够为每个应⽤程序独⽴配置。
· Fabric能够通过设置配置⽀持各种数据库
业界有⼀个共识:没有⼀种区块链能够适⽤于所有业界产品。Fabric能够通过不同的配置来满⾜不同⾏业⽤例去解决不⽤的需求⽅案。Permissioned vs Permissionless Blockchains
在⼀个⽆许可区块链中,⼏乎任何⼈都可以参与,⽽且每个参与者都是匿名的。在这样的背景下,除了区块链的状态在具有⼀定⾼度之前是不可变的之外,没有其他信任。为了缓解这种信任缺失,⽆许可区块链通常使⽤挖矿或获取交易费⽤来提供经济激励,以抵消基于“⼯作证明”(POW)的共识形式参与的额外成本。
另⼀⽅⾯,许可区块链在⼀组已知的、已识别的、经常审查的参与者之间运⾏区块链,这些参与者在⼀个产⽣⼀定程度信任的治理模型下运⾏。许可的区块链提供了⼀种⽅法来确保具有共同⽬标但可能不完全信任彼此的⼀组实体之间的交互。通过依赖参与者的⾝份,许可的区块链可以使⽤更传统的崩溃容错(CFT)或拜占庭容错(BFT)共识协议,这些协议不需要⾮常耗资源的挖掘过程。
此外,在这种允许的情况下,参与者通过智能合约故意引⼊恶意代码的风险会降低。⾸先,参与者相互了解,所有的⾏为,⽆论是提交应⽤程序交易、修改⽹络配置或部署智能合约,都按照为⽹络和相关交易类型建⽴的认可政策记录在区块链上。Fabric不是完全匿名的,根据治理模型能够很容易地识别犯罪⽅并处理事件。
Smart Contracts
智能合约或Fabric中的“链码”,作为⼀个可信的分布式应⽤程序发挥作⽤,通过区块链和同⾏之间的基本共识获得其安全/信任。它是区块链应⽤程序的业务逻辑。
智能合约有三个关键点,尤其是应⽤于平台时:
· 许多链码在⽹络中同时运⾏
· 链码能够动态部署,在许多情况下,任何⼈都可以
· 应⽤程序代码应被视为不可信的,甚⾄可能是恶意的。
⼤多数现有的智能合约区块链平台遵循排序执⾏架构,其中共识协议:
· 验证和排序事务,然后将它们传播到所有对等节点,
· 然后,每个对等节点按顺序执⾏事务。
排序执⾏架构可以在⼏乎所有现有的区块链系统中到,从公共/⽆许可平台(如以太坊(基于POW的共识))到许可平台(如Tendermint、Chain和Quorum)。
在与排序执⾏架构⼀起运⾏的区块链中执⾏的智能合约必须具有确定性;否则,可能永远⽆法达成共识。为了解决不确定性问题,许多平台都要求⽤⾮标准或特定于域的语⾔(如solidity)编写智能合约,以便消除不确定性操作。这阻碍了适⽤性,因为它要求编写智能合约的开发⼈员学习新的语⾔,并可能导致编程错误。
此外,由于所有事务都是由所有节点顺序执⾏的,因此性能和规模都受到限制。智能合约代码在系统中的每个节点上执⾏的事实要求采取复杂的措施来保护整个系统不受潜在恶意合约的影响,以确保整个系统的弹性。
A New Approach
Fabric引⼊⼀种新的交易架构,我们称之为 执⾏-排序-验证。通过将排序执⾏模型拆分为三个步骤来解决原有的扩展性、灵活性、性能和机密性的挑战:
· 执⾏事务并检查其正确性,再为它背书。
· 通过(可插拔)共识协议排序交易,以及
· 在将交易提交到区块链之前,根据特定于应⽤程序的背书策略验证交易
这种设计从根本上背离了排序执⾏模式,即结构在对交易达成最终同意之前执⾏事务。
在Fabric中,特定于应⽤程序的背书策略指定哪些对等节点或其中多少节点需要保证给定智能合约的正确执⾏。因此,每个事务只需要由满⾜事务的认可策略所必需的对等节点⼦集执⾏(认可)。这允许并⾏执⾏提⾼系统的整体性能和规模。第⼀个阶段还消除了任何不确定性,因为不⼀致的结果可以在排序之前过滤掉。
因为我们已经消除了不确定性,Fabric是第⼀个允许使⽤标准编程语⾔的区块链技术。在1.1.0版本中,智能合同可以写在GO或NoDE.JS中,⽽在后续版本中有⽀持其他流⾏语⾔的计划,包括Java。
Privacy and Confidentiality
正如我们之前讲到的,在使⽤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.
Pluggable Consensus
事务的顺序被委托给模块化组件以达成共识,该组件在逻辑上与执⾏事务和维护分类帐的对等体分离。特别是排序服务。由于共识是模块化的,因此可以根据特定部署或解决⽅案的信任假设进⾏定制。这种模块化架构允许平台依赖于成熟的⼯具包来进⾏CFT(崩溃容错)或BFT(拜占庭容错)排序。
Fabric⽬前提供两种CFT排序服务实现。第⼀个是基于Raft协议的etcd库。另⼀个是kafka(内部使⽤zoo
keeper)。有关当前可⽤排序服务的信息,请参阅我们有关排序的概念⽂档。
另请注意,这些并不相互排斥。 Fabric⽹络可以具有多种排序服务,⽀持不同的应⽤或应⽤要求。
Performance and Scalability
区块链平台的性能可能会受到许多变量的影响,例如事务⼤⼩,块⼤⼩,⽹络⼤⼩以及硬件限制等.Hyperledger社区⽬前正在开发性能和规模⼯作组中的⼀组度量标准,以及称为Hyperledger Caliper的基准测试框架的相应实现。
虽然这项⼯作仍在继续开发,应该被视为区块链平台性能和规模特征的明确衡量标准,但IBM Research的⼀个团队发表了⼀份同⾏评审论⽂,评估了Hyperledger Fabric的架构和性能。本⽂提供了对Fabric架构的深⼊讨论,然后使⽤Hyperledger Fabric v1.1的初步版本报告团队对平台的性能评估。
研究团队所做的基准测试⼯作为Fabric v1.1.0版本提供了⼤量的性能改进,使平台的总体性能⽐v1.0.0版本⾼出⼀倍多。Conclusion
任何对区块链平台的认真评估都应该在其名单中包括Hyperledger Fabric。
总的来说,Fabric的独特功能使其成为⼀个⾼度可扩展的系统,⽤于⽀持灵活的信任假设的许可区块链,使平台能够⽀持从政府、⾦融、供应链物流、医疗保健等⼴泛的⾏业⽤例。
更重要的是,hyperledger Fabric是⼗个(当前)hyperledger项⽬中最活跃的。围绕平台的社区建设正在稳步发展,每⼀次连续发布所带来的创新远远超过其他任何企业区块链平台。
记录每天解决的⼩问题,积累起来去解决⼤问题