【Fabric学习】什么是HyperLedger Fabric?

本文总结自Fabric官方文档,描述了Fabric产生的背景、特性、主要组件。

背景

区块链是不可更改的交易账本,由同等节点(peer nodes)组成的分布式网络来维护。

  • 比特币:第一个使用区块链的应用;
  • 以太坊:引入智能合约来开发分布式应用。

二者都是公有链public / permissionless),所有人都可以参与,在链上匿名活动。

随着区块链技术的发展,越来越多的企业需求涌现。对于企业使用场合,我们需要考虑以下要求:

  • 参与者身份公开;
  • 网络需要有权限才能参与;
  • 高交易吞吐量;
  • 低交易确认延迟;
  • 交易隐私性、机密性。

其他的区块链平台都是适用于企业需求,而Fabric是为企业需求而设计的。

Fabric的出现是为了解决其他公链的隐私、效率问题。

Hyperledger Fabric

Fabric是一个开源、企业级、私有的(permissioned )分布式账本平台,专用于企业场景。

Fabric的特性,与其他区块链的不同在哪里:

  1. Linux基金会名下,良好的开源背景;
  2. 高度模块化可配置的架构;
  3. 允许使用通用编程语言编写智能合约,例如Java、Go、Node.Js。不需要学习其他DSL(领域特定语言)的成本;
  4. 私有性permissioned),相比于公链,参与者互相知道身份。参与者可能不会完全相信其他人,但网络可以在基于参与者之间存在的信任的治理模型下运行。
  5. 支持可定制的共识协议:根据不同使用场合、隐私需求,使用不同的共识协议,例如CFT、BFT。
  6. Fabric的共识协议可以不使用原生的加密货币

模块化

Fabric拥有模块化的架构,允许定制共识协议、身份管理协议(LDAP or OpenID)、密钥管理协议、密码库。

广义上,Fabric提供以下的模块化组件:

  • 可定制的ordering service:交易接收、被广播的顺序
  • 可定制的 membership service provider:管理用户的密码身份
  • 可选的peer-to-peer gossip service
  • 容器中运行的链码(Chaincode,即智能合约)
  • 支持不同的DBMS(关系型数据库)
  • 可定制的背书、验证策略

Permissioned vs Permissionless Blockchains

  • Permissionless的区块链中:所有人可以匿名参与。为了增加信任,引入挖矿机制交易小费来激励信任的产生。
  • Permissioned的区块链中:参与者有一定的信任,经过授权、审查,区块链可以采用CFT、BFT等传统共识策略,不需要进行消耗极大的挖矿。

智能合约

智能合约(Fabric中称为链码,“Chaincode”)是可信的分布式应用。

传统的智能合约

目前,现有的支持智能合约的平台(以太坊、Tendermint等)采用的都是order-execute交易架构

  1. 验证、排序交易,再传播给所有对等节点;
  2. 每个对等节点按顺序执行交易;

order-execute架构下的智能合约都要是确定性的(deterministic),否则无法达到共识;为了解决这个问题,以太坊采用了领域特定语言(Solidity)来消除非确定性操作。这阻碍了通用性。

Fabric的智能合约

Fabric引入了新的交易架构execute-order-validate,分为三个步骤:

  1. 执行交易,并检验正确性(为它背书);
  2. 排序交易(通过可定制的共识协议);
  3. 提交给账本之前,验证交易(通过app特定的背书政策)

Fabric中,app特定的背书政策(application-specific endorsement policy )规定了哪些节点需要为合约的正确执行做出保证。因此,一个交易只需要由部分背书节点执行。这提高了并行速度、系统的可扩展性。

步骤1消除了任何的不确定性,不同的执行结果会再排序前被过滤掉。因此,Fabric可以采用通用编程语言来编写智能合约。

Privacy

公链中,智能合约、交易数据都是公开的。

Fabric采用通道(channel)和隐私数据(private data)来实现隐私。

  • 通道:参与者使用通道建立一个子网络,只有网络的参与者能看见特定的交易。因此,处于通道中的节点才能访问链码、交易的数据。
  • 隐私数据:允许在同一个通道的参与者中分发。

版权声明:本文为Noak7原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。