区块链的前世今生:走向高可靠企业应用

转载 2018年04月17日 13:38:16

作者:潘秋菱 周瑛达 刘再耀

2009年一个笔名为中本聪的人在密码学论坛中发布了一篇名为《比特币----一种点对点的电子现金系统》的文章,比特币这一概念就此诞生。而其背后的区块链技术则在近十年的时间长河中逐渐浮出水面:从密码学极客范围内流传的实验性概念,到各金融机构和科技企业间争相布局的前沿技术,再到媒体宣传火热的信任机器,区块链成了科技圈近年来的弄潮儿,风头一时无两。我国也将区块链纳入了《“十三五”国家信息化规划》,其重要性不言而喻。

然而,区块链概念虽然火热,实际落地则取决于企业使用区块链的程度和规模。目前区块链的发展可谓“百链争鸣”,继比特币之后各类区块链技术平台层出不穷,如何选择合适的区块链技术平台以满足业务需求是摆在企业探索区块链应用之前的重要问题之一。

基于这种现状,本文首先对区块链技术和发展现状进行概述,并指出开源对于区块链技术的重要性;随后结合企业运用区块链技术的需求和特点,对目前现存的几个重要区块链开源技术平台进行对比。

源起比特币:公账与共识构筑的区块链

解释区块链的概念应该从其最早的应用—-比特币谈起。在传统的电子支付系统中,一笔交易的真实性需要一个中心机构(如银行)来验证,以防止一笔钱被重复花费了两次,即所谓的“双花“问题:对于一个电子系统来说,钱只是数字意义上的一种符号,必须保证一串字符在发给a的同时没有发给b。这种情况下系统中用户账户的余额和资金流向其实可以视为一个账本,而该账本的记账权在中心机构手中。

而比特币则通过区块链技术实现了一个不需要第三方来验证交易真实性的去中心化电子现金交易系统:

 

图一:比特币运行机制图

首先,系统内任意一笔交易的发生需要向全网进行广播,其他节点随机的将自己听到的若干交易打包进一个区块。你可以将此时的区块理解成一段时间内已发生但还未被系统判定为真实有效的交易集合,且由于广播的随机性,不同节点打包的交易集合并不相同。

接下来系统中打包区块的节点会对自己区块内的交易记录进行一次验证。以a转给b一个比特币这笔交易为例,验证这笔交易的真实性需要判断a是否拥有一个比特币,以及该枚比特币是否只发给了b。

如果上述验证通过,则所有打包区块的节点要开始一场竞赛:大家争先恐后的尝试解一道难于计算但易于验证的计算题,而这场计算竞赛的胜出者所打包的区块将被系统判定为有效,进而该区块中的所有交易将被判定为真实合法。作为奖励,该打包区块的节点将会被系统奖励一定数量的比特币,这种节点也被俗称为矿工。

随后该区块将向全网进行广播,其他节点在收到该区块后也可以对区块中的交易和计算题的答案进行验证,系统中的节点将先后同步该区块并认可区块中交易的真实性。可以预见,在一段时间之后,全网节点对历史交易记录将达成一致,因为他们都验证并同步更新了相同的区块。而一段时间间隔之后新发生的交易则按照上述同样的方法打包进区块,通过计算竞赛的胜出结果使得其他节点承认该块的真实有效,进而承认另一批交易的有效性。同时通过哈希指针链和时间戳,将区块之间进行连接,以保证下一个区块发生的交易内容是基于历史区块的交易内容。

通俗来说,区块链就是一个公共账本,系统中的所有参与者都拥有这个账本,且账本上已经写下的交易往来都经过了所有参与者的共识并被判定为真实有效。区块即账本中的每一页,记录了一段时间内发生的交易内容;而链则可以理解为翻页的方式,它将账本的每一页以时间顺序串连起来,并且账本下一页发生的交易内容总是以上一页的内容为基础。通过公共账本的设计,系统中的所有参与者达到了去中心化的信任,即人人都拥有相同的一本账,并对记录内容和记账规则达成了共识。

同源不同途:公有链和联盟链竞相发展

    比特币证明了区块链可以以去中心化的方式来解决转账中的信任问题。但转账只是诸多价值转移中的一种。人们逐渐意识到,区块链并不仅限于在转账和支付中使用,它更可以作为一种普适的底层技术机制来解决广义价值转移中的信任问题:事物状态/价值的变化都可以记录在区块链中,如房产所有权的更迭,供应链各环节商品信息的更新等,各相关方共同维护该状态的更新并对更新结果达成共识。

然而,由于比特币系统设计的非图灵完备性,其底层的区块链系统难以承载除转账之外的其他功能,区块链更广阔的应用前景受到了限制。基于这种现状,同时由于比特币的代码开源,开发者们先后对比特币底层的区块链技术进行着不断的改良和创新,逐渐形成了多种区块链技术共同发展的局面:

一类针对比特币交易性能低,挖矿算法资源消耗大,无法做到完全匿名等缺点进行改良,如莱特币,达世币,门罗币和Zcash等成百上千的数字货币,但其应用场景仍仅限于使用数字货币进行转账交易,每一种新的数字货币背后都对应着经过改进的区块链系统;

另一类则是将数字货币作为系统中的一种token(通证),而非单纯用作如比特币那样的转账和交易:创建业务需要以消耗token作为代价,执行业务以事先设置好的智能合约为基础并通过预置条件来触发,业务结果和状态变更则记录在区块链中,典型代表如以太坊等。

此外一类区块链不从数字货币出发,一般不存在token但专注于为企业运用区块链或分布式账本技术搭建平台,使得企业能够根据自己的业务需求方便快捷的部署自己的应用,典型代表如支持功能可插拔的通用区块链底层框架Hyperledger fabric和专注于金融机构之间对账应用的corda等。

     总的来看,存在数字货币或token且没有准入机制的区块链一般被称为公有链,而专注于解决若干企业间信任问题的区块链被称为联盟链,在此不同的技术平台上,根据主要运行业务环境的不同,业界也对应着“币圈”和“链圈”。

 

图二:币圈和链圈及主要发展趋势

殊途却同归:开源成为企业布局区块链的必然选择

虽然区块链发展的路径存在区别,但有一个现象不容忽视:无论是公有链还是联盟链,它们都选择了开源去构建自己的技术平台。深究其原因,可以发现开源区块链的存在是一种必然之选:

首先,区块链创造了一种信任机制,开源才能让该信任机制本身变的可信。想象一个声称能用去中心化方式解决信任问题但闭源的区块链。如果仅采纳技术提供方的方案而无法对其代码进行审阅,那么这个区块链无异于魔术师手上的戏法,效果神奇但让人怀疑其真实性。因为这种情况下参与方只能依赖技术提供方的声誉和背书对区块链形成有限的信任,这与区块链本身去中心化的信任模式相违背。

其次,开源增加了多方参与的意愿,区块链的生态更容易发展壮大。多方参与是区块链技术的重要特征之一,但是否决定参与则是区块链能否落地的先觉条件。开源让区块链变得透明和友好,参与者可以提前对将要加入的区块链从技术和功能上进行全方位的评估和审视,直接降低了参与方对陌生技术信任成本。

更为重要的是,开源已经成为各公司布局区块链的重要手段。科技公司如IBM,Intel,微软以及华为等已先后加入区块链开源社区,通过发布或参与开源的区块链解决方案来吸引合作伙伴加入,从而壮大自己的区块链生态,以求在竞争中取得优势。对企业级的商用场景来说,目前两个较大的开源区块链解决方案为超级账本项目(Hyperledger)、企业以太坊联盟(Enterprise EthereumAlliance)

图三:超级账本和EEA

超级账本(Hyperledger)项目由Linux基金会牵头在2015年12月成立,创始会员包括IBM,Intel,思科,埃森哲,J.P.Morgan等,目前已有150余位来自世界各地的会员,国内公司如华为、百度、腾讯、小米等也位列其中。超级账本项目的意图是建立一个跨行业的、开放的、标准的、领先的分布式加密账本技术,改变全球商业交易进行的模式。该项目提供通用的区块链底层框架,使得用户可以简单方便的在框架上部署应用,满足企业对分布式账本技术的需求。IBM、Digital Asset、Intel等公司在该项目的早期贡献了大量的代码和开发资源,项目规模也不断扩张。截止目前为止,超级账本项目已经拥有了4个区块链框架子项目和5个辅助开发工具项目,生态日益完善。子项目中的Fabric拥有较高的知名度,在设计上贴近联盟链的思想,是企业搭建区块链选用较多的技术平台。

企业以太坊联盟(Enterprise EthereumAlliance,下称EEA)于去年成立(2017年2月),主要牵头者是微软,创始会员也包括了Intel,埃森哲和J.P.Morgan等,但目前成员规模与超级账本相近,发展势头迅猛。EEA中所有孵化的项目都是以开源的以太坊公有链为基础版本,意图通过以太坊的公链技术来解决企业级的区块链部署和使用需求。该项目已成立技术指导委员会和针对不同行业的工作组,相关子项和标准后续也会公之于众。

概念需落地:开源区块链解决方案的对比

抛开概念的炒作和资本的狂欢,区块链的本质仍是一种新的技术。技术的落地永远离不开企业的大规模使用和布局。

为了满足商业场景的需求,企业在部署和应用区块链的过程中更多的需要考虑架构设计、节点设计、性能、权限管理、隐私等各方面的实际问题。并非所有企业都有强大的技术实力来自研区块链,因此选用开源的区块链解决方案或技术平台以满足上述需求就成为了企业布局区块链的上佳选择。下文将对目前市场上具有代表性的两大开源区块链解决方案Hyperledger Fabric和以太坊从不同的技术维度进行对比,为企业布局区块链的技术选型提供参考。

整体架构设计:

Fabric在系统的架构设计上采用了可插拔的方案,对区块链核心组件如共识算法,身份验证等进行模块化分类,好处是用户可以根据自己的需求灵活的选择和搭配对应模块,做到了系统上的松耦合。相较而言以太坊在架构设计上偏向紧耦合,共识、合约及应用层中不存在可以插拔的设计;对整个系统的灵活性而言,目前以太坊的网络状态更新依赖于单节点处理事务再进行全网广播,后续以太坊计划实施分片机制,同一片内的节点达到处理的同步性和一致性,而不同分片之间可以存在异步。因此从总体架构设计来看,Fabric更为灵活,企业可以进行更多的个性化配置。

节点类型:

一般区块链的节点从大功能上来说可以分为记账节点和客户端节点。记账节点负责对区块链中系统中的交易进行验证,并对交易状态的变更达成共识并进行记录,进而同步到全网;客户端节点可以不必考虑共识和账本方面的事务,只需要能够顺利执行交易即可。Fabric和以太坊中都有记账节点和客户端节点,但Fabric中划分的更细,将记账节点按照不同的角色分为了背书节点和验证节点,前者专门对客户端发起的交易请求进行预处理,后者则对预处理后的交易进行验证。这样的设计解耦了区块链中交易处理节点的功能,可以减轻节点的工作负担。

共识机制与性能:

Fabric目前主要采用Kalfka共识算法,其本身是一种分布式消息队列中间件,基于zookeeper进行Paxos算法进行选举达成共识。该共识算法允许网络中的节点失效,但不能允许恶意节点的出现。在系统中存在f个失效节点的情况下,只要节点总数大于2f+1,系统仍能够安全运行并达成共识,即Kalfka能够容忍半数节点失效。在上述共识算法下,Fabric的TPS(每秒交易量)在10000左右,平均交易确认速度在几百毫秒左右。以上数据基本能满足企业部署区块链进行商用的需求。同时Fabric支持共识算法可拔插机制,方便企业可以加入其他共识算法如拜占庭容错共识算法PBFT,满足不同场景需求。

以太坊前期采用了同比特币一致的PoW(工作量证明)算法,即通常所说的挖矿。该算法在灵活性上优于PBFT,系统中的记账节点可以随时下线和退出,并不影响其他节点达成共识;但与PoW相伴的则是交易确认速度的缓慢和TPS的下降:以太坊的区块链每隔12秒产生一个区块,一笔交易被验证有效的时间也是12秒左右;受制于CPU的单线程,其TPS在50左右,难以满足一些高频交易的商业场景需求。目前以太坊的共识算法正在由PoW向PoS(权益证明)转变,后者的交易效率更高;同时以太坊也正在部署Raiden(雷电网络)解决方案,力求将交易确认时间控制在毫秒级。可以预见未来以太坊的性能将会变得更加优秀,但从目前来看Fabric更适合企业商用。

权限与隐私方面:

在权限控制方面,Fabric按照联盟链的思路来设计,对系统中的成员能否发起交易进行了严格的权限控制。系统参与者需要从RA(注册中心)处取得注册许可,然后通过CA(认证中心)颁发的证书来获取交易安全证书。只有被上述注册中心和验证中心签名后的节点才有权力发起交易。而以太坊则以公有链设计思路出发,对用户身份做了匿名处理,系统中的用户很难匹配到其自然人的身份。理论上参与者都有权发起交易,只需支付一定量的以太币即可。可以看出以太坊通过其自带的以太币作为Token来作为发起交易所需付出的代价和资源,通过经济性的设计来控制用户发起交易的权限,但其权限控制力是要弱于Fabric的。

在安全隐私方面,Fabric提供Channel的设计允许系统中的参与方拥有多个交易通道而业务内容则互不可见,这种设计为企业间的业务安全和隔离性创造了良好的空间。与之对应的是以太坊提供State Channel(状态旁路)方案,区块链账本上记录的只是粗颗粒度的“批发”,可以理解为出入备付金操作,真正细颗粒度的双边或者多边交易的明晰,则不作为交易出现在账本中,而仅仅作为有争议时进行核查的证据,通过状态旁路的方式“曲线执行”。这样就在一定程度上使得其他的账本所有者无法通过查阅账本获取到交易内容的明细,保证了交易方的安全性和隐私。因此对比来看,Fabric和以太坊都有着安全隐私的保护方案,难以评估孰优孰劣。

     综上以表来概括,可以看出Fabric在初期各技术维度上更加适合企业进行采用。


      表一:Fabric和以太坊各方面对比

结语

        区块链撬动多个行业,甚至将互联网转变成了基础设施,在多个方面引起关注。区块链技术仍在发展之中,后续一定会有更多的技术革新和改良。目前公有链和联盟链争相发展的格局预计将在一段时间内保持不变。在联盟链方面,目前Fabric已经逐渐成为企业级开源区块链解决方案的事实标准,业内玩家先后入局,相关概念验证和商用项目不断涌现,它也将成为企业探索区块链业务进行技术选型的重要参考之一。同时,华为等领先厂商均推出了BaaS(Blockchain asa Service)方案,其中华为云近期推出的企业级区块链云服务产品BCS(Blockchainservice),优势明显:

l 简单几步配置后,几分钟就能构建好一条区块链,这对不太懂区块链底层技术的企业是一大福音。

l 支持Solo,kafka,PBFT等多种共识算法用户可以在不同阶段有不同选择。

l 可视化支持链代码的查看、安装和实例化,这对不习惯脚本操作的小白也是利好消息。

l 同时支持私有链和联盟链也给用户更多的选择。

正确利用BaaS平台可以帮助有意使用区块链进行创新的企业,大幅降低区块链使用的难度和开发、部署以及运行成本,助力商业成功。

参考文献:

1.   《好风借力,直上青云—区块链平台调研与分析》,安永咨询报告

2.   《区块链技术指南》,yeasy,gitbook

3.   《比特币-一种点对点的电子现金系统》,中本聪

 

区块链的前世今生

就如云计算当前被人们所熟知一样,区块链将会是未来十年改变世界的技术浪潮和革命。 --  佚名 一、引子     你或许听说过比特币一种争议不断的数字货币,比特币的最大特点是去中心化(Decentr...
  • owndiandian
  • owndiandian
  • 2016-12-06 14:14:30
  • 3702

正态分布前世今生高清无目录pdf

  • 2017年09月01日 15:55
  • 1.13MB
  • 下载

今天,区块链家族全都聚集在这里,区块链亲自讲述它自己的“前世今生”!

大家好!我就是传说中的区块链本人,首先非常感谢大家对我个人极大的关注。在过去的几年,尤其是去年,包括今天的会场,我都能深深感受到大家的热情。但是今天的我承载了太多本该属于我整个家族的荣耀。我有一个非常...
  • r6Auo52bK
  • r6Auo52bK
  • 2018-03-08 00:00:00
  • 137

java之三篇:java的前世今生

jaVa最早的雏形开始于1991年,那也是个意气风发、思想碰撞的年代,Sun公司想进入电子消费领域,当然这方面的文章大有,不是我今天想说的,且从开发工具的历程上缀述。 1)、八十年代末、九十年代中前...
  • yuxhe896155
  • yuxhe896155
  • 2015-09-11 16:04:38
  • 445

java《前世今生》

什么是java? 早期oak就是java的前世,          "今生提着刀,还你前世笑。来世未必能遇到。" oak前期不算是编程语言,是传统的解释性,中间经过更新换代,期间也改过名,直...
  • qq_30240677
  • qq_30240677
  • 2016-06-23 20:06:28
  • 612

VB.NET的前世今生

【前言】初次见到这个强大的东西,一看名字就没有了陌生感,因为它和我以前见过的VB肯定有很多的联系。俗话说,看人看相,了解看感觉(O(∩_∩)O~~差不多这个意思吧)。要想了解VB.net 就要从它的兄...
  • mayfla
  • mayfla
  • 2014-09-19 15:21:23
  • 1614

前端开发的前世今生

从静态页面,到从前端到后端再到移动应用,给前端开发者创造了巨大挑战和无数可能...
  • elwingao
  • elwingao
  • 2016-09-02 11:25:17
  • 1844

郭健: Linux进程调度技术的前世今生之“今生”

本文紧接着: 郭健: Linux进程调度技术的前世今生之“前世” 作者简介          郭健,一名普通的内核工程师,以钻研Linux内核代码为乐,热衷于技术分享,和朋友一起...
  • juS3Ve
  • juS3Ve
  • 2017-12-01 00:00:00
  • 243

word2vec前世今生

word2vec前世今生:点击打开链接
  • u012871493
  • u012871493
  • 2016-07-21 16:37:56
  • 498

Python的前世今生

Python 是由其设计者,Guido van Rossum,在1991年2月首次发布的一种解释性、可交互的面向对象设计的编程语言。正如Guido van Rossum在1999年向DARPA(美国国...
  • wyxpuma
  • wyxpuma
  • 2016-08-01 23:45:38
  • 215
收藏助手
不良信息举报
您举报文章:区块链的前世今生:走向高可靠企业应用
举报原因:
原因补充:

(最多只允许输入30个字)