链课堂01 | 解密超级账本-Fabric运行机制

01 引言

区块链已成为当下最受关注的技术。从最初比特币的爆红,到基于以太坊的ICO项目遍地开花,大众的目光被各类应运而生的加密货币牵引着,交易投资的热情日益高涨。相比之下,区块链技术相关的企业项目却没有得到太多关注。

然而,国内众多知名企业,如京东、华为等,都在积极部署企业级的区块链项目。并且,他们无一例外地选择了可监管、部分去中心化、高性能的联盟链。

联盟链究竟有何“魅力”,能得到如此多大企业的青睐?今天,小编将通过介绍一个基于联盟链的项目—Hyperledger Fabric,为大家抛砖引玉。

说起联盟链,就不得不提到超级账本(Hyperledger)。它是linux基金会下的一个区块链项目,由科技公司如IBM、英特尔,金融公司如GP摩根,以及其他联合机构于2015年提出。目前,Hyperledger已有140多个成员,其中1/4来自中国。中国技术组主要由万达、华为、IBM构成,职责包括中国地区及中国会员的需求提供,以及代码的推进。大量基于超级账本技术的企业界区块链项目已经成功落地。

Hyperledger包括4个框架项目:Sawtooth、Iroha、Fabric、Burrow。Fabric是其中最广为人知的一个,也是最早加入超级账本的顶级项目。它具有完备的权限和审查管理、细粒度的隐私保护,以及可插拔、可扩展的实现框架。目前代码提交数量近6000次,核心代码约10万行,可以说是一个相当的活跃的项目。

本文将主要介绍Fabric的运行机制和原理,之后还会陆续更新包括更深层的Fabric开发指南,及更广阔的Fabric应用场景和实例等内容,大家敬请期待。

02 架构

Fabric在2017年7月发布1.0正式版,相对于实验版本(发布于2016 年 9 月),在扩展性、可维护性、安全性、业务隔离等方面实现大幅度的提升和改进,更加接近于企业级应用场景。下面,我们直接通过1.0版本进入Fabric的世界。

图1. Fabric 1.0 架构图

图2. 运行时架构

➤Identity,也就是身份管理。由于身份管理的重要性,Fabric把原有的Membership service抽离出来作为单独的模块Fabric-CA。Fabric作为非许可网络,采用数字证书机制来实现对身份的鉴别和权限控制,CA节点实现了PKI服务,负责对身份证书的生成、撤销等。

➤Chaincode(链码)源自智能合约的思想,并进行了进一步扩展,支持Java、Go等高级编程语言。运行时靠容器和状态机实现处理逻辑。

➤Blockchain&Transactions,Fabric采用和公有链类似的区块链存储结构。运行时有File System(Blockchain)、Block Index、World State、History Index四个存储结构,其中World State存储一组变量的集合,支持CouchDB,提供丰富的富查询接口。

图3. 账本存储

➤底层采用P2P网络和gRPC协议实现对分布式账本结构的连通,包括Peer、OSNs、Client等参与角色。通过Gossip协议进行状态同步、数据分发和成员探测。

➤除了基于命令行的客户端外,Fabric提供多种语言的SDK,包括Node.js、Python、Java、Go等,SDK封装了底层gRPC接口的调用,提供更完善的客户端和开发支持。在区块链网络里,节点和chaincode会发送events来触发一些监听动作,方便与其他外部系统的集成。

03 多通道

图4.多通道示例

通道(channel)与绑定到该通道上的配置和数据(包括交易、账本、链码实例、成员身份等),一起构成一条完整的区块链(Chain)。Peer节点可以基于应用访问控制策略来订阅任意数量的通道,这些Peer只接受订阅通道上的区块数据。通道与通道之间数据相互隔离和保密,通道外的成员无法访问通道内数据。

04 交易流程

图5. Fabric交易流程

  1. 客户端(SDK)登录CA获得签名证书(ECert)。
  2. 客户端(SDK)向一定的背书节点(Endorser)发送交易请求(Proposal)。
  3. 背书节点(Endorser)进行权限检验,并模拟Chaincode交易,结果Yes/No,并签名返回背书结果(Endorserment)。
  4. 客户端(SDK)收到足够多的背书(Endorserment),检查背书数量及是否合法。
  5. 客户端(SDK)把经过背书的交易发送到排序节点(Orders)。
  6. 排序节点(Orders)对读写集排序,并根据出块配置构造区块(Block)。并发送区块到确认节点(Committer)。
  7. 确认节点(Committer)对区块(Block)、交易读写集、背书策略等进行校验,写入Blockchain并更新World State DB。

05 共识机制

在0.6版本,Fabric支持PBFT(实用拜占庭容错算法)共识算法,1.0及以后版本中不再支持。之所以把0.6版本中的PBFT共识算法暂时取消可能是因为:

1、PBFT提供(n-1)/3的容错性,但是O(N^2)消息复杂度使得随着节点的增加,交易性能大幅下降。

2、Fabric是准入型网络,对PBFT这种共识算法要求不高。

Fabric 1.0版本共识过程包括背书、排序、和验证三个环节的保障。

➤背书

Chaincode在实例化的时候,需要指定背书策略。如:

  • AND(‘Org1.member’, ‘Org2.member’, ‘Org3.member’) ,请求3个org成员的签名。
  • OR(‘Org1.member’, ‘Org2.member’) 请求两个Org中的任意一个Org的成员的签名。
  • OR(‘Org1.member’, AND(‘Org2.member’, ‘Org3.member’)) ,请求来自Org1 的成员签名,或者来自Org2 的成员和来自Org3 的成员签名。

➤排序

Orderer的排序分Solo和Kafka两种模式;

Solo:单节点排序功能,实验性质,不具备可扩展性和容错,不能够在生产环境使用;Kafka:集群排序,支持CFT容错,支持可持久化和可扩展性。可在生产环境使用。

➤验证

由Committer Peer完成,对排序后的一批交易进行提交到账本之前最终检查的过程。交易合法与否都会上链,在交易状态位体现是否是合法交易,不合法交易不会改变World State。

06 特征

除了以上提到的具有数据隔离、模块化、支持高级语言的Chaincode等外,它和Bitcoin和Ethereum等公有链相比还有更多的不一样:

➤代币

Fabric上没有代币机制,仅提供了一张类似白纸一样的平台,完全靠自己去实现;公有链的节点是逐利型的,代币一种激励制度,来保证网络的安全和可持续性。而Fabric作为准入型网络,节点具有很大的可信度和目的性,自然代币就不是很必要。

➤Block打包

Fabric出块可配置时间、大小,甚至交易的上限大小,非常灵活。另外Fabric不出空块,只有有交易时才会出块;公有链因其激励机制,定时出块,一定程度上浪费了存储。而且作为共识的一部分,出块时间和块大小很难改变。

➤最终性

Fabric基于No-op(无需共识)或者PBFT共识具有最终性,一旦达成共识就不可逆转,更适合一些企业场景如金融业务等;公有链以Pow为代表的概率性算法没有最终性,共识结果则是临时的,随着时间推移或某种强化,共识结果被推翻的概率越来越小,成为事实上的最终结果。

➤监管和隐私

基于PKI证书体系,Fabric可以实现交易的追踪、认责、不可抵赖、数据授权访问、监管和审计等特性;公有链数据全公开、完全匿名且无监管,成为了部分不法分子的交易天堂。

➤性能

Fabric作为一个非许可的联盟区块链,参与节点不会过多,可达几百甚至上千并发。相对于比特币或者以太坊等公有链的几十并发有很大的提升。

07 小结

Fabric的可插拔、高性能、完整的身份管理机制及丰富的开发模块支持更容易与企业应用相结合。小编相信,Fabric未来将在金融乃至更广阔的领域大放异彩。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏SAP最佳业务实践

从SAP最佳业务实践看企业管理(196)-FI-月结/年结

1、MMPV/MMRV 关闭待结期间物料帐,并打开下一期间物料帐 2、OB52打开下一个会计期间财务帐 3、F-02,VF01,MIRO等,确认本期间业务全部入...

2973
来自专栏区块链大本营

避坑! 避雷! 3大“钞级骗局”与真伪 EOS的那些猫腻儿!

当下正值各种 EOS DApp 火爆的时期,许多项目方纷纷开发自己的 EOS 游戏吸引玩家。由于 EOS 官方并没有提供随机数接口,EOS 游戏在随机数生成问题...

1293
来自专栏区块链入门

【以太坊通证标准】ERC20系列,ERC721系列,ERC865

【本文目标】 通过本文学习,了解ERC定义及知名ERC协议标准,如ERC20以及ERC223、ERC621,ERC827协议,ERC721以及 ERC875,...

1322
来自专栏吾真本

架构操练Kata:金融风险系统

(译自Simon Brown的Software Architecture for Developers II;译者:伍斌) 背景 一家办公室设在伦敦、纽约和...

894
来自专栏Netkiller

区块链银行应用探索(Hyperledger fabric)

中国广东省深圳市龙华新区民治街道溪山美地 518131 +86 13113668890 <netkiller@msn.com>

2.4K23
来自专栏java学习

逻辑思维训练第1题

做我们这一行少不了的就是逻辑思维!为了锻炼大家的逻辑思维!我会定期出逻辑训练题让大家做,来提高大家的逻辑思维!希望大家踊跃参加! 1,魔方(初级) 下图是一个魔...

2936
来自专栏区块链大本营

币圈乱象终结者! 以太坊新STO方案详解

随着数字货币和ICO市场的逐渐冷却,以监管合规为特点的证券型通证发行(Security Token Offering,证券型通证发行,简称STO)开始获得广泛关...

1171
来自专栏区块链技术指北

Python 统计个人加密货币资产

这是「区块链技术指北」的第 7 篇文章。 如果对我感兴趣,想和我交流,我的微信号:Wentasy,加我时简单介绍下自己,并注明来自「区块链技术指北」。同时我会把...

3636
来自专栏liuchengxu

Ethereum Casper 101 词汇表

Proof of Stake -- 公有链的一类共识算法,基于验证人(validator)在网络中的经济权益(economic stake)。

902
来自专栏FreeBuf

《绝地求生》辅助程序暗藏挖矿木马

0x1 概述 数字货币“挖矿”, 通俗讲就是猜数字求解,猜对即可获得数字货币奖励。目前已知的数字货币约有100多种,包括比特币、莱卡币、门罗币等常见类型,并且近...

3337

扫码关注云+社区