题图摄于加拿大西蒙弗雷泽大学
Academic Quadrangle
上期介绍了超级账本的组织结构,这次介绍超级账本中Fabric子项目。更多区块链相关的技术细节,请参考笔者的新书《区块链技术指南》。(参见文末) 另外,由于本书和杨保华老师的电子版gitbook同名,尽管内容上没有关联,但仍给部分读者造成误解,在此表示歉意。杨老师的电子书从2015年开始以开源的形式发布,内容全面,感兴趣的读者可在这里下载: https://www.gitbook.com/book/yeasy/blockchain_guide/details
(接上期)
Fabric项目概述
Fabric项目的目标是实现一个通用的权限区块链(Permissioned Chain)的底层基础框架,为了适用于不同的场合,采用模块化架构提供可切换和可扩展的组件,包括共识算法、加密安全、数字资产、记录仓库、智能合约和身份鉴权等服务。Fabric克服了比特币等公有链项目的缺陷,如吞吐量低、无隐私性、无最终确定性以及共识算法低效等问题,使得用户能够方便地开发商业应用。
在超级账本联盟成立之前,IBM公司就已经开源了一个叫做“开放区块链”(Open Blockchain,OBC)项目。在联盟成立之后,IBM把OBC项目约44 000行代码贡献给了Linux基金会,这部分代码成为了Fabric的代码的主要组成部分。在2016年3月的一次黑客松编程活动中,Blockstream和数字资产两个成员公司把各自的区块链功能代码融合到OBC中,最终建立了Fabric的雏形,也就是Fabric项目进入孵化阶段的基础代码。
应用场景
超级账本有个重要的设计原则就是按照“用例驱动”(use case driven)的方式来实现的,所有功能都应该有对应的用例需求。鉴于超级账本是个通用型框架,无法预先确定将来所有的应用场景,因此,定义出部分典型的用例,可使超级账本先满足这部分代表性的区块链应用需求,然后再用可替换模块了满足其他需求。目前,Fabric项目针对的主要有下面几种用例:金融资产管存、公司行为、供应链、主数据管理以及分享经济。需要指出的是,这些用例并非一成不变的,随着项目的推进,可能会有所调整和增减。
(1)金融资产管存
金融行业最关心的区块链应用估计是资产的分布式管存,因为把资产(如证券等)数据存放在区块链网络后,资产的利益相关人可以直接访问资产数据,而无需经过传统的中间人,可大幅提高效率和节约成本。与公有区块链应用有较大区别的是,金融资产及其相关的交易、业务规则通常是保密的,例如,资产的余额只有持有人才能知道,其他人无法查看。
(2)公司行为
公司行为通常是上市公司发起的有关公司证券的事件,一般和股东有关,有时需要股东做适时的回应,例如要约收购、分红扩股、收购合并等事情。在事件处理整个过程中,应该保护股东的隐私,以确保投资者所作决定不受外界因素的左右。
(3)供应链
在供应链中,所有的参与者都通过区块链记录、追踪和共享各种数据,例如原材料来源、零部件检测结果以及货物的出处等等。这些数据记录在区块链里面并贯穿货物的生产、运输和销售等环节,从而提供深度回溯查询等核心功能。
(4)主数据管理
在很多的行业里,不同的组织之间往往共享一些主数据(Master Data)。例如,不同的移动运营商之间,共同需要维护一份发射机站地理位置的数据。虽然主数据不是交易类型的商业信息,但是作为各组织间唯一的全局性数据,采用分布式的区块链来保证数据的质量和完整性具有非常重要的意义。
(5)分享经济
分享经济是指将闲置或没有被充分利用的实物资源分享出来,有偿地供陌生人暂时使用的一种商业模式。在分享经济的模式下,最需要解决的就是陌生人之间的信任问题,即资源的提供方和资源的租用者,如何在缺乏信任的基础上安全地完成交易。分布式区块链将是全新的一种去信任的方式,不使用任何中间平台,达到各方参与者的可靠交易的目的。
项目架构
Fabric的逻辑架构如下图所示,底层由4种服务构成:身份服务、策略服务、区块链服务和智能合约服务。在这些服务的基础上提供给上层应用的编程接口(API),软件开发工具(SDK)以及命令行工具(CLI)。
Fabric项目的架构
(1)身份服务
Fabric是权限区块链(Permissioned Chain),与比特币、以太坊这类匿名的无权限区块链网络最大差别就是具有身份识别能力。在Fabric账本各类事件和交易中,参与者和对象都具有明确的身份信息。身份服务(Identity Service)管理着系统中各种实体、参与者和对象的身份信息,验证者在Fabric网络建立的时候可以确定参加交易的权限级别。
(2)策略服务
Fabric里面许多功能需要用策略(policy)方式驱动,因此有独立的策略服务来提供系统的策略配置和管理功能。策略服务最重要的是访问控制和授权功能,Fabric的交易通常要求参与方具有相关权限才能进行。
(3)区块链服务
Fabric的区块链服务提供构建分布式账本最基础的能力,实现数据传输、共识达成等底层功能,并且提供发布/订阅的事件管理框架,分布式账本内部的各种事件可通知到外部监听的应用。Fabric的区块链服务主要包含4个组件:P2P协议组件、分布式账本组件、共识管理器组件和账本存储组件。
(4)智能合约服务
Fabric的智能合约(smart contract)也称为链上代码(chaincode),其实质是在验证节点(validating node)上运行的分布式交易程序,用以自动执行特定的业务规则,最终会更新账本的状态。智能合约分为公开、保密和访问控制几种类型。智能合约服务为合约代码提供安全的运行环境以及合约的生命周期管理。
(5)应用编程接口(API)
Fabric项目的目标是提供构建分布式账本的基本能力,如账本数据结构、智能合约执行环境、模块化框架,网络通信等。用户可以在Fabric基础之上调用应用编程接口(API),实现丰富的应用逻辑。Fabric的主接口采用REST API,基本与Fabric服务相对应,API分为身份、策略、区块链、交易(对应区块链服务)和智能合约等几类。为了方便应用开发,Fabric还提供命令行接口(CLI),可覆盖部分API的功能,方便测试智能合约代码以及查询交易状态。
(未完待续)
http://item.jd.com/12007317.html