超级账本-面向企业的分布式账本

超级账本-面向企业的分布式账本

超级账本(Hyperledger)项目是首个面向企业应用场景的开源分布式账本平台。

在Linux基金会的支持下,超级账本项目吸引了包括IBM、Intel、Cisco、DAH、摩根大通、R3等在内的众多科技和金融巨头的贡献参与,以及在银行、供应链等领域的积极应用实践。超级账本社区在成立一年多时间以来,也得到了广泛的关注和飞速的发展,目前已经拥有超过140家企业会员。

本章将介绍超级账本项目的发展历史和社区组织,以及旗下的多个顶级开源项目的情况,还将展示开源社区提供的多个高效开发工具。最后面向开发者介绍如何参与到超级账本项目中,进行代码贡献。

一、超级账本项目简介

2015年12月,由开源世界的旗舰组织Linux基金会牵头,30家初始企业成员(包括IBM、Accenture、Intel、J.P.Morgan、R3、DAH、DTCC、FUJITSU、HITACHI、SWIFT、Cisco等),共同宣布了Hyperledger联合项目成立。超级账本项目为透明、公开、去中心化的企业级分布式账本技术提供开源参考实现,并推动区块链和分布式账本相关协议、规范和标准的发展。项目官方网站为hyperledger.org。


这里写图片描述

超级账本成立之初,就收到了众多的开源技术贡献。IBM贡献了4万多行已有的Open Blockchain代码,Digital Asset则贡献了企业和开发者相关资源,R3贡献了新的金融交易架构,Intel也贡献了分布式账本相关的代码。

作为一个联合项目(collaborative project),超级账本由面向不同目的和场景的子项目构成。目前包括Fabric、Sawtooth、Iroha、Blockchain Explorer、Cello、Indy、Composer、Burrow等8大顶级项目,所有项目都遵守Apache v2许可,并约定共同遵守如下的基本原则:

  • 重视模块化设计:包括交易、合同、一致性、身份、存储等技术场景;

  • 重视代码可读性:保障新功能和模块都可以很容易添加和扩展;

  • 可持续的演化路线:随着需求的深入和更多的应用场景,不断增加和演化新的项目。

超级账本项目的企业会员和技术项目发展都十分迅速,如图8-1所示。


这里写图片描述
图8-1 超级账本项目快速成长

超级账本社区目前拥有超过140家全球知名企业和机构(大部分均为各自行业的领导者)会员,其中包括30多家来自中国本土的企业,例如:艾亿数融科技公司(2016.05.19加入)、Onchain(2016.06.22加入)、比邻共赢(Belink)信息技术有限公司(2016.06.22加入)、BitSE(2016.06.22加入)、布比(2016.07.27加入)、三一重工(2016.08.30加入)、万达科技(2016.09.08加入)、华为(2016.10.24加入)等。

如果说以比特币为代表的数字货币提供了区块链技术应用的原型,以太坊为代表的智能合同平台延伸了区块链技术的功能,那么进一步引入权限控制和安全保障的超级账本项目则开拓了区块链技术的全新领域。超级账本首次将区块链技术引入到了分布式联盟账本的应用场景,这就为未来基于区块链技术打造高效率的商业网络打下了坚实的基础。

超级账本项目的出现,实际上宣布区块链技术已经不仅局限在单一应用场景中,也不仅局限在完全开放的公有链模式下,区块链技术已经正式被主流企业市场认可并在实践中采用。同时,超级账本项目中提出和实现了许多创新的设计和理念,包括完备的权限和审查管理、细粒度隐私保护,以及可拔插、可扩展的实现框架,对于区块链相关技术和产业的发展都将产生深远的影响。

提示:Apache v2许可协议是商业友好的知名开源协议,鼓励代码共享,尊重原作者的著作权,允许对代码进行修改和再发布(作为开源或商业软件)。

二、社区组织结构

每一个成功的开源项目都离不开一个健康、繁荣的社区。超级账本社区自成立之日起就借鉴了众多开源社区组织的经验,形成了以技术开发为主体、积极面向应用的体系结构。

超级账本社区的项目开发工作由技术委员会(Technical Steering Committee,TSC)指导,首任主席由来自IBM开源技术部的CTO Chris Ferris担任;管理委员会主席则由来自Digital Asset Holdings的CEO Blythe Masters担任。另外,自2016年5月起,Apache基金会创始人Brian Behlendorf担任超级账本项目的首位执行总监(Executive Director)。

社区十分重视大中华地区的应用落地和开发情况,2016年12月,“大中华区技术工作组”正式成立,负责推动本土社区组织建设和相关的技术发展和应用工作。

2.1、基本结构

超级账本社区目前主要是三驾马车领导的结构(见图8-2):


这里写图片描述
图8-2 超级账本社区组织结构

  • 技术委员会(Technical Steering Committee,TSC):负责技术相关的工作,下设多个工作组,具体带动各个项目和方向的发展;

  • 管理董事会(Governing Board):负责社区组织的整体决策,由超级账本会员中推选出代表;

  • Linux基金会(Linux Foundation,LF):负责基金管理,协助Hyperledger社区在Linux基金会的支持下发展。

2.2、大中华区技术工作组

随着开源精神和开源文化在中国的普及,越来越多的企业和组织开始意识到共同构建一个健康生态系统的重要性,也愿意为开源事业做出一定贡献。

Linux基金会和Hyperledger社区十分重视项目在大中华区的应用和落地情况,并希望能为中国技术人员贡献于开源社区提供便利。在此背景下,超级账本首任执行董事Brian Behlendorf于2016年12月1日提议成立“大中华区技术工作组”(TWG-China),并得到了TSC成员们的一致支持和通过。工作组的Wiki首页地址为http://wiki.hyperledger.org/groups/tsc/technical-working-group-china

技术工作组的主要职责包括:

  • 带领和引导大中华区的技术相关活动,包括贡献代码、指南文档、项目提案等;

  • 推动技术相关的交流,促进会员企业之间的合作和实践案例的落地;
    通过邮件列表、RocketChat、论坛等方式促进社区开发者们的技术交流;

  • 协助举办社区活动,包括Meetup、黑客松、Hackfest、技术分享、培训等。

目前,工作组由来自IBM、万达、华为等超级账本成员企业的数十名技术专家组成,并得到了社区众多志愿者的支持。工作组的各项会议和活动内容都是开放的,可以在Wiki首页上找到相关参与方式。

三、顶级项目介绍


这里写图片描述

超级账本(Hyperledger)所有项目代码托管在Gerrit和GitHub(只读,自动从Gerrit上同步)上。

目前,主要包括如下顶级项目:

  • Fabric:包括Fabric、Fabric CA、Fabric SDK(包括Node.Js、Python和Java等语言)和fabric-api等,目标是区块链的基础核心平台,支持PBFT等新的共识机制,支持权限管理,最早由IBM和DAH发起;

  • Sawtooth:包括arcade、core、dev-tools、validator、mktplace等。是Intel主要发起和贡献的区块链平台,支持全新的基于硬件芯片的共识机制Proof of Elapsed Time(PoET);

  • Iroha:账本平台项目,基于C++实现,带有不少面向Web和Mobile的特性,主要由Soramitsu发起和贡献;

  • Blockchain Explorer:提供Web操作界面,通过界面快速查看查询绑定区块链的状态(区块个数、交易历史)信息等,由DTCC、IBM、Intel等开发支持;

  • Cello:提供区块链平台的部署和运行时管理功能。使用Cello,管理员可以轻松部署和管理多条区块链;应用开发者可以无需关心如何搭建和维护区块链,由IBM团队发起;

  • Indy:提供基于分布式账本技术的数字身份管理机制,由Sovrin基金会发起;

  • Composer:提供面向链码开发的高级语言支持,自动生成链码等,由IBM团队发起并维护;

  • Burrow:提供以太坊虚拟机的支持,实现支持高效交易的带权限的区块链平台,由Monax公司发起支持。

这些顶级项目相互协作,构成了完善的生态系统,如图8-3所示。


这里写图片描述
图8-3 顶级项目

所有项目一般都需要经历提案(Proposal)、孵化(Incubation)、活跃(Active)、退出(Deprecated)、终结(End of Life)等5个生命周期。

任何希望加入到Hyperledger社区中的项目,必须首先由发起人编写提案。描述项目的目的、范围和开发计划等重要信息,并由技术委员会来进行评审投票,评审通过则可以进入到社区内进行孵化。项目成熟后可以申请进入到活跃状态,发布正式的版本,最后从社区中退出并结束。

3.1、Fabric项目

Fabric是最早加入到超级账本项目中的顶级项目,Fabric由IBM、DAH等企业于2015年底提交到社区。项目在GitHub上,地址为http://github.com/hyperledger/fabric

该项目的定位是面向企业的分布式账本平台,创新地引入了权限管理支持,设计上支持可插拔、可扩展,是首个面向联盟链场景的开源项目。

Fabric基于Go语言实现,目前提交次数已经超过5000次,核心代码超过8万行。

Fabric项目目前处于活跃状态,已发布1.0正式版本,同时包括Fabric CA、Fabric SDK等多个相关的子项目。

3.2、Sawtooth项目
Sawtooth项目由Intel等企业于2016年4月提交到社区。核心代码在GitHub上地址为http://github.com/hyperledger/sawtooth-core


这里写图片描述

该项目的定位也是分布式账本平台,基于Python语言实现,目前提交次数已经超过3000次。

Sawtooth项目利用Intel芯片的专属功能,实现了低功耗的Proof of Elasped Time(PoET)共识机制,并支持交易族(Transaction Family),方便用户使用它来快速开发应用。

3.3、Iroha项目

Iroha项目由Soramitsu等企业于2016年10月提交到社区。核心代码在GitHub上地址为http://github.com/hyperledger/iroha


这里写图片描述

该项目的定位是分布式账本平台框架,基于C++语言实现,目前提交次数已经超过2000次。

Iroha项目在设计上类似Fabric,同时提供了基于C++的区块链开发环境,并考虑了移动端和Web端的一些需求。

3.4、Blockchain Explorer项目


这里写图片描述

Blockchain Explorer项目由Intel、DTCC、IBM等企业于2016年8月提交到社区。核心代码在GitHub上,地址为 http://github.com/hyperledger/blockchain-explorer

该项目的定位是区块链平台的浏览器,基于Node.js语言实现,提供Web操作界面。用户可以使用它来快速查看底层区块链平台的运行信息,如区块个数、交易情况、网络状况等。

3.5、Cello项目


这里写图片描述

Cello项目IBM技术团队于2017年1月贡献到社区。GitHub上仓库地址为 http://github.com/hyperledger/cello(核心代码)和 http://github.com/hyperledger/cello-analytics(侧重数据分析)。

该项目的定位为区块链管理平台,同时提供区块链即服务(Blockchain-as-a-Service),实现区块链环境的快速部署,以及对区块链平台的运行时管理。使用Cello,可以让区块链应用人员专注到应用开发,而无需关心底层平台的管理和维护。

Cello的主要开发语言为Python和JavaScript等,底层支持包括裸机、虚拟机、容器云(包括Swarm、Kubernetes)等多种基础架构。

3.6、Indy项目
Indy项目由Sovrin基金会牵头进行开发,致力于打造一个基于区块链和分布式账本技术的数字中心管理平台。该平台支持去中心化,支持跨区块链和跨应用的操作,可实现全球化的身份管理。Indy项目于2017年3月底正式加入到超级账本项目。

该项目主要由Python语言开发,包括服务节点、客户端和通用库等,目前已有超过1000次提交。

3.7、Composer项目
Composer项目由IBM团队于2017年3月底贡献到社区,试图提供一个Hyperledger Fabric的开发辅助框架。使用Composer,开发人员可以使用JavaScript语言定义应用逻辑,再加上资源、参与者、交易等模型和访问规则,生成Hyperledger Fabric支持的链码。

该项目主要由NodeJs语言开发,目前已有超过4000次提交。

3.8、Burrow项目
Burrow项目由Monax、Intel等企业于2017年4月提交到社区。核心代码在GitHub上地址为http://github.com/hyperledger/burrow

该项目的前身为eris-db,基于Go语言实现,目前提交次数已经超过1000次。

Burrow项目提供了支持以太坊虚拟机的智能合约区块链平台,并支持Proof-of-Stake共识机制和权限管理,可以提供快速的区块链交易。

四、开发必备工具

工欲善其事,必先利其器。开源社区提供了大量易用的开发协作工具。掌握好这些工具,对于高效开发十分重要。下面分别介绍一些工具。

4.1、Linux Foundation ID

超级账本项目受到Linux基金会的支持,采用Linux Foundation ID(LF ID)作为社区唯一的ID。

个人申请ID是完全免费的。可以到http://identity.linuxfoundation.org/进行注册。

用户使用该ID即可访问到包括Jira、Gerrit、RocketChat等社区的开发工具。

4.2、Jira-任务和进度管理


这里写图片描述

Jira是Atlassian公司开发的一套任务管理和事项跟踪的追踪平台,提供Web操作界面,使用十分方便。

社区采用jira.hyperledger.org作为所有项目开发计划和任务追踪的入口,使用LF ID即可登录。

登录之后,可以通过最上面的Project菜单来查看某个项目相关的事项,还可以通过Create按钮来快速创建事项(常见的包括task、bug、improvement等)。

用户打开事项后可以通过assign按钮分配给自己来领取该事项。

一般情况下,事项分为To Do(待处理)、In Process(处理中)、In Review(补丁已提交、待审查)、Done(事项已完成)等多个状态,由事项所有者来进行维护。

4.3、Gerrit——代码仓库和Review管理


这里写图片描述

Gerrit是一个负责代码协同的开源项目,很多企业和团队都使用它负责代码仓库管理和代码的审阅工作。Gerrit使用十分方便,提供了基于Web的操作界面。

社区采用gerrit.hyperledger.org作为官方的代码仓库,并实时同步代码到github.com/hyperledger作为只读的镜像。

用户使用自己的LF ID登录之后,可以查看所有项目信息,也可以查看自己提交的补丁等信息。每个补丁的页面上会自动追踪修改历史,审阅人可以通过页面进行审阅操作,赞同提交则可以加分,发现问题则注明问题并进行减分。

4.4、RocketChat-在线沟通


这里写图片描述

除了邮件列表外,社区也为开发者们提供了在线沟通的渠道-RocketChat。

RocketChat是一款功能十分强大的在线沟通软件,支持多媒体消息、附件、提醒、搜索等功能,虽然是开源软件,但在体验上可以跟商业软件Slack媲美。支持网页、桌面端、移动端等多种客户端。

社区采用chat.hyperledger.org作为服务器。最简单的,用户直接使用自己的LF ID登录该网站即可访问。之后可以自行添加感兴趣的频道。

用户也可以下载RocketChat客户端,添加chat.hyperledger.org作为服务器即可访问社区内的频道,跟广大开发者进行在线交流。

每个项目一般都有一个同名的频道作为主频道,例如#Fabric、#Cello等。同时,各个工作组也往往有自己的频道,例如大中华区技术工作组的频道为#twg-china。

五、小结

超级账本项目是Linux基金会近些年来重点支持的面向企业的分布式账本平台。它同时也是开源界和工业界技术力量颇有历史意义的携手合作,共同为分布式账本技术提供了在代码实现、协议和规范标准上的技术参考。

成立一年多以来,超级账本社区已经吸引了国内外来自各行业的大量关注,并从最初的一个项目、三十位成员,发展到今天的近十个顶级项目,过百个企业会员。这些项目和各行业的领军企业,共同构造了完善的企业级区块链生态系统。同时,超级账本项目中提出的许多创新技术和设计,已经被企业界和开源界借鉴和认可。

超级账本社区重视技术研发的同时也十分重视应用的落地。目前基于超级账本相关技术,已经出现了大量的企业应用案例。这些技术案例,为更多企业尝试利用区块链技术提高商业效率都带来了很多的参考。

摘自:区块链原理、设计与应用


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