本文总结自Fabric官方文档,描述了Fabric产生的背景、特性、主要组件。
背景
区块链是不可更改的交易账本,由同等节点(peer nodes)组成的分布式网络来维护。
- 比特币:第一个使用区块链的应用;
- 以太坊:引入智能合约来开发分布式应用。
二者都是公有链(public / permissionless),所有人都可以参与,在链上匿名活动。
随着区块链技术的发展,越来越多的企业需求涌现。对于企业使用场合,我们需要考虑以下要求:
- 参与者身份公开;
- 网络需要有权限才能参与;
- 高交易吞吐量;
- 低交易确认延迟;
- 交易隐私性、机密性。
其他的区块链平台都是适用于企业需求,而Fabric是为企业需求而设计的。
Fabric的出现是为了解决其他公链的隐私、效率问题。
Hyperledger Fabric
Fabric是一个开源、企业级、私有的(permissioned )分布式账本平台,专用于企业场景。
Fabric的特性,与其他区块链的不同在哪里:
- 在Linux基金会名下,良好的开源背景;
- 高度模块化、可配置的架构;
- 允许使用通用编程语言编写智能合约,例如Java、Go、Node.Js。不需要学习其他DSL(领域特定语言)的成本;
- 私有性(permissioned),相比于公链,参与者互相知道身份。参与者可能不会完全相信其他人,但网络可以在基于参与者之间存在的信任的治理模型下运行。
- 支持可定制的共识协议:根据不同使用场合、隐私需求,使用不同的共识协议,例如CFT、BFT。
- 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交易架构:
- 验证、排序交易,再传播给所有对等节点;
- 每个对等节点按顺序执行交易;
order-execute架构下的智能合约都要是确定性的(deterministic),否则无法达到共识;为了解决这个问题,以太坊采用了领域特定语言(Solidity)来消除非确定性操作。这阻碍了通用性。
Fabric的智能合约
Fabric引入了新的交易架构execute-order-validate,分为三个步骤:
- 执行交易,并检验正确性(为它背书);
- 排序交易(通过可定制的共识协议);
- 提交给账本之前,验证交易(通过app特定的背书政策)
Fabric中,app特定的背书政策(application-specific endorsement policy )规定了哪些节点需要为合约的正确执行做出保证。因此,一个交易只需要由部分背书节点执行。这提高了并行速度、系统的可扩展性。
步骤1消除了任何的不确定性,不同的执行结果会再排序前被过滤掉。因此,Fabric可以采用通用编程语言来编写智能合约。
Privacy
公链中,智能合约、交易数据都是公开的。文章来源:https://www.toymoban.com/news/detail-802968.html
Fabric采用通道(channel)和隐私数据(private data)来实现隐私。文章来源地址https://www.toymoban.com/news/detail-802968.html
- 通道:参与者使用通道建立一个子网络,只有网络的参与者能看见特定的交易。因此,处于通道中的节点才能访问链码、交易的数据。
- 隐私数据:允许在同一个通道的参与者中分发。
到了这里,关于【Fabric学习】什么是HyperLedger Fabric?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!