以比特币为代表的加密数字货币获得了巨大成功,活跃用户数量和交易量逐年增长。人们也渐渐意识到区块链技术的潜在价值,它不仅可以用作比特币的底层技术,还能够应用到更多的业务场景中,因而出现了很多利用比特币公有链的新型应用,如资产登记、公证等等。但比特币的公有链无法克服自身固有的一些问题:例如,交易效率低,区块没有最终确定性(finality)等。这些问题,使得比特币等公有链不能满足大多数商业应用的要求。
为了克服上述不足,设计适合商用的区块链平台成为迫在眉睫的事情。在各界强烈的呼声中,Linux基金会于2015年12月启动了名为“超级账本”(Hyperledger)的开源项目,旨在推动各方协作,共同打造基于区块链的企业级分布式账本底层技术,用于构建支撑业务的行业应用和平台,以便支持各种各样的商业应用场景。
从创始成员看,参与超级账本项目的公司阵容相当豪华,不仅有IBM、Intel、思科等科技巨头,也有摩根大通、富国银行、荷兰银行等金融大鳄,还有R3,ConsenSys等专注区块链的公司。截至2016年12月,超级账本项目已经汇集了全球100家公司(包括不少中国公司),声势之浩大是其他技术联盟或开源项目无法比拟的。不管是从代码数量还是从社区参与度来看,超级账本都是最大的区块链开源项目。和比特币、以太坊等由极客主导的公有链项目相比,超级账本则是大企业领衔的商业化联盟链项目。
项目管理形式
超级账本项目由会员公司组成。只要是Linux基金会的会员公司,缴纳一定的年费,即可成为超级账本项目的会员。按照所缴年费数额的多少,可分为首要会员(Premier Member)和普通会员(General Member)。还有一种无需缴费但无投票权的附属会员(Associate Member)。成为超级账本项目会员后,可以参加日常会议,并享有会员特权和履行会员义务。
超级账本项目设有理事会(Governing Board),负责日常事物管理,包括审核预算、监督项目和市场活动、表决重要事项等职责。每个首要会员可以委派一名理事会成员,普通会员中每年可推选不超过2名的理事会成员。技术指导委员会(Technical Steering Committee,TSC)主席以及一名用户顾问团(End User Technical Advisory Board,EU-TAB)也是理事会成员。
技术指导委员会(TSC)是由项目的贡献者(Contributor)或维护者(Maintainer)选举产生,主要任务是在技术上保证项目正常进行,包括制定技术方向、审批项目议案、设立工作组和工作流程以及和技术社区用户交流等。任何人都可以成为项目的贡献者,只需贡献代码、文档或其他技术性产品。部分项目贡献者将成为项目的维护者,拥有对代码库的管理权。TSC还会选举出一位主席,作为理事会成员,以加强TSC与理事会的沟通。
超级账本项目还设立了市场委员会(Marketing Committee)和用户顾问团。其中,用户顾问团有一名代表可以参与理事会的讨论和投票。
超级账本项目的目标是为商业区块链应用提供底层支持,因此,在知识产权上采用了商业友好的使用许可。所有添加到项目中的代码都要使用Apache V2.0的许可协议,项目对外提供的代码同样依照Apache V2.0的许可协议,这是非常宽泛的许可协议,可以满足绝大部分商业应用的需求。项目的文档遵循知识共享4.0国际许可协议(Creative Commons Attribution 4.0 International License),适合商业和非商业用途。
项目的生命周期管理
超级账本里包括很多不同的项目(project),每个项目是社区在某方面协同努力的工作内容,既可以是创建各类文档,也能够是开发特定功能的代码。超级账本采用了开源项目常见的孵化流程,一方面鼓励社区提出更多的新建议,另一方面给社区提供项目进展情况的指引,以便了解项目是否已经成熟可用,或是处于试验或开发阶段。
超级账本的项目根据发展程度可处于5种状态之中,分别是:提案、孵化、成熟、弃用和终止。项目在开展的过程中,可能会在数个状态之间迭代多次。
(1)提案
提案(Proposal)就是设立项目的建议,任何人都可以向技术指导委员会(TSC)递交提案。提案需要有清晰的描述和项目的范围,确认将投入开发的资源和项目维护者,同时必需是厂商中立的方案。如果TSC批准了提案,该项目就正式启动,交由相关的项目维护者管理,项目也就进入了孵化期。
(2)孵化
进入孵化(Incubation)阶段的项目,在超级账本的Github账号下创建专属的代码库,以便社区能协作开发、共同探索不同的方案,为项目添加所需的各种功能。超级账本会同时包含多个孵化期的项目,为了鼓励社区的创新,项目之间或许有重叠的部分。长远看,最终可取长补短,把项目间共性或互补的功能抽取合并到同一个项目的框架中,实现完整的技术方案。
孵化期项目的目标就是使代码达到质量稳定可用的标准,具有成熟的发布流程,并在社区拥有众多的活跃开发者。项目的维护者可向技术指导委员会提出审批申请,宣布项目转变为成熟的状态。当然,项目由于实施不当或目标改变等原因,也有可能最后无法从孵化状态转化为成熟状态。
(3)成熟
从孵化状态“毕业”的项目将进入成熟(Mature)状态,项目的成果适合在实际的应用中使用。和大多数开源项目一样,成熟态的项目还会持续的增加完善功能、修复错误以及定期发布更新版本。
(4)弃用
项目发展到一定阶段,由于各种原因,已经不适应实际需要,此时项目维护者可投票表决,是否让项目进入弃用(Deprecated)状态。投票如果通过了弃用决定,技术指导委员会将宣布项目进入弃用阶段。
(5)终止
在弃用阶段的6个月后,项目正式进入终止期(End of Life),不再维护和开发。
项目的发展状况
超级账本的初始成员公司中,不少已经开发了自己的区块链项目,他们都希望贡献这些代码给超级账本,成为其中的项目。这些成员公司的备选项目功能上既有侧重,也有重复,因此,较好的方式是把这些项目整合,互通有无,形成功能完整统一的方案。截至2016年12月,通过提案进入孵化状态的项目有3个:Fabric,Sawtooth Lake(锯齿湖)和Iroha(色彩)。
Fabric是由IBM、数字资产和Blockstream等三家公司的代码整合而成。由于这三家公司原来的代码分别使用不同的语言开发,因此无法直接合并到一起。通过一次黑客松编程,终于把原来不同语言编写的三个项目集成到一起,可实现基本的区块链交易和侦听余额变化的功能。这次黑客松的成果奠定了Fabric项目的基础。
Sawtooth Lake来自Intel贡献的代码,作为构建、部署和运行分布式账本的高度模块化平台。该项目主要提供了可扩展的分布式账本交易平台,以及两种共识算法,分别是时间消逝证明(Proof of Elapsed Time,PoET)和法定人数投票(Quorum Voting)。
Iroha是由日本创业公司Soramitsu和日立等几家公司开发的代码,主要作为Fabric和Sawtooth Lake的补充,侧重开发移动应用。
随着更多的提案通过审批,超级账本会包含越来越多的项目。后续将介绍Fabric和Sawtooth Lake等项目。
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)。
(1)身份服务
Fabric是权限区块链(Permissioned Chain),与比特币、以太坊这类匿名的无权限区块链网络最大差别就是具有身份识别能力。在Fabric账本各类事件和交易中,参与者和对象都具有明确的身份信息。身份服务(Identity Service)管理着系统中各种实体、参与者和对象的身份信息,验证者在Fabric网络建立的时候可以确定参加交易的权限级别。
(2)策略服务
Fabric里面许多功能需要用策略(policy)方式驱动,因此有独立的策略服务来提供系统的策略配置和管理功能。策略服务最重要的是访问控制和授权功能,Fabric的交易通常要求参与方具有相关权限才能进行。
(3)区块链服务
Fabric的区块链服务提供构建分布式账本最基础的能力,实现数据传输、共识达成等底层功能,并且提供发布/订阅的事件管理框架,分布式账本内部的各种事件可通知到外部监听的应用。Fabric的区块链服务主要包含4个组件:P2P协议组件、分布式账本组件、共识管理器组件和账本存储组件。
P2P协议组件主要提供区块链节点之间直接双向通信的能力,包括流式数据传输、流控制、多路复用等方面。
分布式账本组件管理着Fabric的区块链数据。区块链网络每个节点可以看作是一个状态机,分布式账本组件维护着区块链数据(即状态机的状态),维持各个状态机之间相同的状态。
共识管理器组件在各种共识算法之上定义了抽象的接口,提供给其他Fabric组件使用。由于不同的应用场景会使用不同的共识算法,Fabric的模块化架构能够支持可切换的共识模块,通过统一的抽象接口,共识管理器接收各种交易数据,然后根据共识算法来决定如何组织和执行交易,在交易执行成功后,再更改区块链账本的数据。Fabric提供了PBFT共识算法的参考实现。
在区块链上保存大文件等数据是非常低效的操作,因此,通常大文档要存放在链外存储中。账本存储组件提供了链外数据的持久化能力,每个链外文档的哈希值可保存在链上,从而保证链外数据的完整性。
(4)智能合约服务
Fabric的智能合约(smart contract)也称为链上代码(chaincode),其实质是在验证节点(validating node)上运行的分布式交易程序,用以自动执行特定的业务规则,最终会更新账本的状态。智能合约分为公开、保密和访问控制几种类型。智能合约服务为合约代码提供安全的运行环境以及合约的生命周期管理。
(5)应用编程接口(API)
Fabric项目的目标是提供构建分布式账本的基本能力,如账本数据结构、智能合约执行环境、模块化框架,网络通信等。用户可以在Fabric基础之上调用应用编程接口(API),实现丰富的应用逻辑。Fabric的主接口采用REST API,基本与Fabric服务相对应,API分为身份、策略、区块链、交易(对应区块链服务)和智能合约等几类。为了方便应用开发,Fabric还提供命令行接口(CLI),可覆盖部分API的功能,方便测试智能合约代码以及查询交易状态。
本文系共享财经专栏作者,VMware中国研发中心云应用首席架构师,公众号《亨利笔记》运营方张海宁(Henry Zhang)所著。
转自:
http://www.gongxiangcj.com/show-12-2783-1.html上一篇:没有了 下一篇:乐视金融宣布与St