AAAT

张海宁:超级账本:助力企业级区块链应用与开发

时间:2017年03月20日 作者:张海宁 

导读:

一、超级账本项目概述  首先对超级账本作一个定位,历史上 2008 年 10 月中本聪发表论文之后,比 特币机制开始运行,成为第一个由区块链技术支持的加密数字货币;2016 年 Linux 基金会成立超级账本项目。现在区块
阅读全文
一、超级账本项目概述  首先对超级账本作一个定位,历史上 2008 年 10 月中本聪发表论文之后,比 特币机制开始运行,成为第一个由区块链技术支持的加密数字货币;2016 年 Linux 基金会成立超级账本项目。现在区块链这个领域里的三大开元项目基本形 成,即 2009 年的比特币、2015 年以太坊、2016 年的超级账本,其中前两个项目 是基于数字货币,第三个系统主要面向商务应用。比特币具有去中心化、集体维 护、不可篡改、数据透明、用户匿名等特性,这些技术特征与公有货币体系非常 适合。 区块链是支持比特币的底层网络技术,打个比方,比特币就像一辆跑车,它 跑起来需要有很宽敞的路,这条路就是区块链。区块链的价值逐渐被发现之后, 大家开始考虑 blockchain 能否用于解决一些非比特币或者非数字货币的一些问 题,慢慢就产生了这样的应用,使用最多的领域就是金融,除了金融领域还有数 字身份,财产确权等很多方面。大家在区块链里面尝试做各种各样的业务时总结 出区块链需要这样几个特征:第一,需要共享的账本来共享数据,也就是分布式 账本;第二,需要在这个账本里有一定的隐私保护,因为我们做交易做业务的时 候,不可以让大家都看见;第三,需要智能合约,也就是区块链上的代码;第四, 需要共识算法。这几个特点是区块链在商业应用里所应具备的特征。 公有链的不足之处有以下几个方面。第一点,数据透明性,由于很多交易与 反洗钱有关系,真正的商业环境里匿名性是不合适的,比如我签一个合同要知道 对方是谁,对方匿名就不太适合做交易。第二点,去中心化,比特币的去中心化 是说它使得这个系统没有中心监管的情况下可以自由运行,一个商业系统里面这 样的自主运行可能会有问题,从政府的角度或者法律的角度来说希望有一个能够 监管控制的手段,所以去中心化在商业领域,不一定是完全不需要,可能是半中 心化到去中心化。剩下的两点集体维护和不可篡改在商业里面是非常有用的,希 望能够持续下来做很公正完整的记录,同时积极维护希望多方参与进账,保证数 据不被篡改。无保密性问题,无法保护商业机密;确认时间长,比特币要一个小 时才能基本确认这笔交易;无最终性,交易容易被推翻;吞吐量低,这是技术层 面的问题,比特币每秒 7 笔的交易是不可接受的。还有很重要的一点是游离于法 律体系之外,因为没有一个政府或者国家可以控制这种系统,没有办法洞察,这 是比较现实的问题,最后一点是极客主导,比特币系统是一些计算机玩家编写出 来的,换句话说这些人都是黑客类型的人,完全不受商业环境的控制。可以看出, 比特币系统有一些我们需要的特征,有一些我们不需要的特征,这时候我们需要 对比特币系统做一些改造,使其符合商业应用的系统,这是超级账本的出发点。 HYPERLEDGER 超级账本是基于两个方向的考虑;一个是希望更加去中心化更加开 放,一个是在商业环境里更高的效率,相对少的去中心化。 二、超级账本项目 超级账本是公有链不能满足系统要求而产生的,超级账本的建立是由大型的 开源社区来牵头,开始有 30 个创始成员,分成这几大类,一类是金融公司,包 括摩根大通,富国银行、荷兰银行这样的一些银行,他们看到了区块链上面的应 用场景;第二是属于科技巨头,IBM、INTEL,思科等,他们希望捕捉商业;第三是专著区块链的公司,R3,consensys,他们也希望能够在这个项目贡献他们的 力量。现在一年多的时间已经发展到一百多个成员,写代码的人很多,八千多个 commits,这个发展是非常迅速的,也得到了广泛的支持。 hyperledger 这个项目里面可以同时允许有多个不同的子项目运行,不同的子 项目能够解决不同商业的问题,需要有提案孵化成熟。如果被接受会进入到孵化 期,现在有五个项目在孵化期里,包括 IBM 主导的 fabric、Sawtooth Lake、lroha、 Blockchain Explorer、以及 Cello 等等。  三、Fabric 子项目  fabric 这个子项目是在 hyperledger 投入最多的,我尽量淡化一些技术方面, 讲讲它的一些商业出发点。第一点就是这个项目的定位,整个 hyperledger fabric 项目主要是做底层的平台,就像区块链一样,修了一条大家都能用的高速公路。 第二点,实现了一些共识算法,然后实现了一些基本的特征。IBM 全球在 2016 年的上半年做了不少的尝试,做了很多尝试之后发现商业的领域里面有很多的技 术问题,其中之一就是要保持机密性比较困难,因为它最早是仿制比特币公有链 做的,成员之间保密性比较差。第一阶段 0.6 这个版本,节点数、吞吐量、扩展 性比较差,当节点增加需要的计算量是平方级别的增长,不可升级系统也是不足 之处之一,所以最近他们做了比较大的改动。做了这个改动之后整个系统比较适 合做一些分布式商业应用的改造。这个部署首先有一个分控的 order,共识算法 核心,怎么达成一致需要一套技术,需要有这样公共的服务帮助大家培育共识, 如果是一个银行需要加入这个共识网络,首先需要做一个节点叫做 peer,就可以 接到这个里面来,单个节点通过这样的应用可以接入到共识网络里面去跟其他的 机构发生各种各样共识交易。然后第二个用户可能是另外一个银行或者另外一个 机构也加入到共识网络来,越来越多的节点加进来之后就变成一个运行共享数据 的商业网络环境,网络环境之间互相发现就可以形成区块链,形成之后,身份是 很重要的,没有身份的话商业银行建立不起来,所有这些人加入这个网络之后需 要有一个统一身份的服务,给他们发一份证书,简单讲计算机就是证书银行网银 的 U 盾一样,有了这个证书知道这个人是谁,你做的所有业务通过证书牵引,证 书就是身份的一种形式。区块链并不是说没有中心,中心体现在哪里?体现在身份一样。共识网络其实也是有中心的,因为它表示几个大的信任机构帮你去建立 这样一个共识网络,相信它们决定的交易协议,这是整个共识架构。可以看到这 是有中心化的区块链系统。 每个应用做交易的东西很多步骤,通过这样一些来来回回的节点之间的交互 之后,最终的数据会记录在每一个节点的账本上,这个就是区块链。所有的公有 链、私有链,最终核心结构都是一个链式的区块,区块是联在一起的。超级账本 也有区块链,区块链这些数据帮助他们快速存储,这个涉及到一些技术细节,总 之这是一个有具体存储结构的区块链。重要的是在并发交易的时候要做到杜绝所 谓的双花问题,比如说你有 10 块钱,两个人尝试同时给这个账号做一个交易, 有一个人尝试从你的账号扣掉 5 块钱,有一个人尝试扣掉 3 块钱,他们同时发出 来这笔交易,到底谁成功呢?谁先谁后有一个过程,这就是区块链分布式要解决 的问题。在超级账本里面他们采用了一种谱写技术,原理就是这两笔交易先把余 额记下来,如果你扣两块钱可能从十块钱变成八块钱,另外一个交易扣三块钱可 能从十块钱变成七块钱,这两笔交易通过刚才说的共识法算法之后,就会达到一 个先后顺序,总有一笔会先过来,另一笔后过来,这个系统能保障先过来的那笔 成功,后过来那笔失败,因为每一笔钱不能花两遍。也就是说第一个钱过来做了 十减二等于八扣款的交易,第二笔钱过来如果他要尝试再做一个十减三等于七这 个扣款交易就会失败,因为那个时候你这个余额不是十了,所以十减三这个交易 点是失败的,通过这种机制使得交易失败的机会被杜绝,从技术上保障了双花的 不存在。 还有一个很重要的问题就是在一个网络里面,这些人之间互相通讯有点像, 举个例子像一个微信群,可能一百个人在这个群里面,每个人之间说一句话,这 一百个人都能看见,这个时候这些做交易的人不希望自己做的交易也是一百个人 都看见,所以这个时候需要有这些技术帮助他们,只有其中几个人知道这些交易, 这个时候有点像微信建个小群,这样做的目的是什么?保证了交易的私有性。超 级账本实现了这么一个机制帮助大家实现所有交易,这是所有交易非常重要的点, 总的思路就是说通过一个公有的环境里面子级的通讯渠道建立交易。 比较技术方面的内容是,超级账本怎么样帮助我们解决实际上的应用场景的 问题。各个领域都可以用区块链去解决各种各样的问题,但是不是所有的问题都适合用区块链去做呢?实际上在实际使用中有几个点要认真的去考虑。第一点就 是共享数据,就是在这个场景里面,必须有 N 个不同的实体去贡献一个或者一份 一类数据,这样才具备它的价值。如果是一个很大的机构来贡献数字信息的话, 其实是不需要区块链来做的,那么在哪些场景需要区块链?N 个不是隶属单位的 机构互相之间贡献数据可能有价值一点,传统机构之间要交互很多数据,带来很 多烦琐的交易或者是交互的成本,共享机制使得这个成本降低,N 个场景之间不 需要再互相交换,而是统一模型这样的关系。第二个问题是多个的写入者,一份 数据可能很多人往里写数据大家一起改,会发现也是用刚才点对点的方式分别改 结果不一致,中间有很多的对账接入成本,如果用区块链的统一就可以减少这些 成本的存在。第三个,成员的互相不信任性,大家知道人与人之间有亲和疏关系, 在真正做各种经济业务的时候其实也有这种远近的关系,不同的公司,如果控股 股东是一个人可能关系比较近一些,如果只有小股东关系远一点,如果只是普通 业务来往关系更疏远。不信任成员的程度决定了区块链的价值,也就是说这些成 员之间的疏远关系越远的话带来的价值越大一些。还有去中介化,比如说租房子 买房子需要中介,如果通过区块链把中介去掉了价值比较明显。 这是区块链常用的一些标准判定,在互联网金融这个领域里面,通过区块链 可以满足到像快速结算、不可篡改、容易审计以及标准化这样一些优势。举一个 很简单的例子,就像银行都有它所谓的银行编码,用于银行之间的转账。我们区 块链做的分布式方式,就是说大家之间建立一个账本数据,每个银行把自己的联 行号写到里面去,全部人都会有这个数据,就不需要中心去维护这样一套数据, 这个例子不是很复杂的业务逻辑。可以看到,通过区块链共享数据之后,能够帮 助大家化解很多流程上机构上的操作。第二个例子是 L/C(银行信用证),这是 一个很常见,也是很多创业公司在做的事情。L/C 是非常复杂的业务,买家告诉 我有多少钱,你把货物发给我,我打给你,相当于淘宝里面的支付宝功能,当卖 家把货发出去之后,通过一系列过程,钱才能从买家银行支付给他。这是 L/C 主 要的原理,它的成本非常高,周期也非常长,最早是用纸质的文档,后来电子化 之后有文档在传递,很多过程即使是电子化之后也要保证它的成本。区块链做这 个交易的时候是全新的一种数据方式,比如说在区块链上面我们把买家卖家各个 相关的方的数据打进去,大家看到同样的数据之后,然后通过刚才讲到的智能合约,在区块链上满足一定条件之后自动复发,这个是通过区块链实现最基本的概 念原理,通过它可以降低风险执行速度,有几个银行像美国银行和恒生等几个银 行已经做了试点,通过区块链实现它的业务上的掉点。 四、Fabric 应用场景  前面介绍了买家和卖家移入,后续的话如果真正做场景更复杂一点,到供应 链的一个场景,这个时候不仅仅是有买家卖家和银行三方在里面,其实有更多的 事情在里面,包括运输的各种各样的场景,物流的运转,而且每个数据之间需要 做数据更新的动作,这个时候成员之间它的交易保护,交易还需要有保密的需求, 这就是我们今天讲的 hyperledger 需要解决的很重要的问题。这个场景更复杂一 点,假定有 N 个商店需要买这个农场的商品,真正做交易的时候 A 买了农场 X 东西的时候,需要建立这样一个私有的链去把这个交易记录下来,在 hyperledger 这个环境里面,就只有一个公有链和一个私有链区分两种不同需求,那么当一旦 这个交易做下来之后需要涉及到很多更复杂的地方,整个公路上有很多的交易相 关方,刚才说了银行只是其中的一部分,可以建立一个区块链,那么在运输过程 中可以生成另外一个区块链,它知道运输物流的情况,到了运输的时候海关有各 种各样的场景,这种情况下就是有不同的,在大的环境里面区分很多小的能力, 记账的能力或者叫记账的账本,这是超级账本最终要解决的问题,像传统的系统 是没有办法解决很复杂实际的多方参与的交易环境数据,所以现在的超级账本最 终为了实现这样很复杂的行为去集中基础服务。 最后介绍一下 hyperledger fabric 交易的机密性,在权限管理控制方面都要有 中心化身份认证的管理,同时具备后面那些特点,是偏技术一点的,这个是超级 账本主要做到的一些方面吧。所以我这边的分享的内容可能主要是这些,因为比 较偏技术一点,希望各位老师给点意见,看看有什么样可以讨论的问题。以从这 几方面可以考虑一下,有没有好的选题。
分享到:
0
扩展阅读

VMware 中国研发中心云原生应用首席架构师,西蒙弗雷泽大学计算机科学博士,Harbor企业级容器Registry开源项目负责人

专家工作室EXPERTS
热门视点VIEWS
文章标签TAGS