从技术角度解析招商银行在区块链方面的探索与实践
【编者按】2017年1月13日,由中国互联网协会、中国网络空间安全协会、中国电子金融产业联盟、中国互联网协会互联网金融工作委员会主办的“首届中国 金融科技 创新大会暨第十届中国互联网金融年会”在北京举行。 招商银行 信息技术部总经理周天虹分享了招行在 区块链 方面的探索和实践。
本文转载于微信公号CIF互联网金融汇,作者CIF;由亿欧编辑整理,供行业人士参考。
以下是周天虹的演讲全文。
大家下午好,下面给大家报告一下招商银行关于区块链的一些认识以及在这方面的实践。
区块链是最近这一两年来非常热门的一个课题,关于区块链的书籍已经出了一些,还有更多关于区块链的文章。
总的来说,大家对区块链这个新生事物非常的肯定,甚至可以说有不少舆论把它摆的很高了。
最近流行的一个说法,说互联网是解决了信息传播的问题,可以叫做信息互联网。 而区块链解决了价值交换的问题,叫价值互联网。 把区块链的地位和现在已经非常大的改变了我们经济生活形态的互联网相提并论,这是一方面。
另外一方面,大家又很困扰,为什么?因为区块链这么好的一个技术,大家都很关注,投入很多资源,很多高水平的专家在里面工作,但是除了比特币以及跟比特币类似的一些币,除了这些应用几乎看不到什么有价值的应用,到底怎么回事?
这里面一定有一些问题,这些问题从招商银行我们的体会来说,你看一些书和文章,可能越看越糊涂,搞不明白。还是从技术角度去研究比特币到底是怎么回事,区块链到底是什么东西。技术角度搞明白了,刚才我说的那些问题,背后的一些原因基本上能看的比较清楚, 我下面的报告主要从这个角度来说。
区块链的概念大家都比较熟悉了,比较流行的说法叫做 去中心化 、去信任化的分布式账本, 我们需要进一步关心区块链的核心技术机制是什么。
从去中心化的角度来说,最重要的是一个分布式的架构,P2P的方式来解决点对点之间的交互;从去信任的角度来说,最重要的是两个机制:一个公私钥机制,一个是共识机制。
区块链单链的数据结构很简单很巧妙的解决很多问题,但是我们搞软件的应该知道,什么叫程序。以前有这么一个定义,叫做数据结构加算法等于程序。所以一个系统数据结构是一个核心,而系统的数据结构是要跟它解决问题的那个问题域相匹配的。
那么我们就可以想象,可以理解,一个单链的数据结构,对于某些问题可能就不是那么适配了。所以区块链能解决所有的问题、能解决各种各样的问题吗?我想这个可能有一个答案。
我刚才在这页主要讲了, 区块链五个重要的技术基础。 区块链大致有这样一个分类:公有链、联盟链、私有链。这些定义并不重要,大家都知道。我想说的是, 这三种分类把区块链分为三类应用,其实很重要的一点是看它的开放程度。 一个区块链应用的开放程度是什么样?完全开放的,半开放的,完全封闭的。开放程度不同,它的实现方式会不一样。比如说共识机制的选择会不同,链上链下数据分布会不一样。安全机制的具体实现方式也会不同。这个是我们要认识到的。
我们研究区块链不是为了写文章做报告,实际上最重要的还是干点实事,所以需要用这个技术来建设相关的系统。下面谈一谈区块链技术对于一个系统的架构会有什么样的影响。
这张图主要是以联盟链和私有链为背景,可能公有链场景比较少。 但是在联盟链和私有链这种类型的应用会有一些。那引入了区块链以后,这个系统架构一定发生变化,那些变化这图上可以看到,右下角那一块多了区块链这么一块东西。当然也有一些不变,传统系统的一部分还是存在的。所以在联盟链和私有链场景下,一个区块链的应用落地的时候,它一定是要把传统的那部分基于区块链系统整合在一起。
这是一个典型架构,上面两层展现层和应用层基本上不变,业务层和数据层会应用区块链技术,业务层是处理业务逻辑的事情,在这一层有一些业务逻辑跟区块链没有关系,我们没有必要它布到链上,因为在区块链实现一些东西有很多约束,很多制约,所以存在链下逻辑,那就是左边那一块,还有一部分业务逻辑是布到链上,那就是右边那两块。
链下业务逻辑跟区块链没有关系,这块操作的数据那也没有必要跟区块链发生关系。 总之跟区块链发生关系会比较麻烦,所以会有独立的数据。
链上逻辑操作的数据处理比较复杂,当前是比较难以完全布链上,我前面讲了一个原因, 主要是由于单链数据结构,一些功能实现难度大,比方说很难查询、查询起来很慢等等。 所以 区块链相关的数据一部分是布在链上,必然有一些数据在链下。 链上和链下这两块数据共同来支持区块链的运作,并且链下这块数据存储还可以对链上数据进行备份,出现问题还可以恢复等等。
这个图是讲的一个区块链出现以后架构的变迁。最左边是说的互联网出现之前两个不同的企业进行信息交互,首先系统各是各的。然后系统之间要进行交互,在互联网出现之前,基本上是用非标准的协议,非标准的接口。
互联网促进之后,每个单位自己家的系统还是放在自己家,但互联网把一些东西标准化了,通讯协议标准化了,系统之间交互的接口标准化了,但是仍然是松耦合的架构。
区块链出现之后,他走向另外一个方向,走向一个反面。
实际上是用一套系统来覆盖不同的机构,不同的企业,共同承载一个商业模式。实际上讲的通俗点,用一套系统来支持很多单位和机构。那它变成一个紧耦合的模式,不是一般的紧,变成一个系统了,非常紧。它有它的好处,比如说在一些场景,不同的机构大家都要实现自己的系统,其实干的是类似的事情,很多是重复的工作。
比如说在支付清算这么一个场景。大家各自一本帐,关于那本帐大家做的事情是差不多的。但是因为各记各的帐,需要对帐,谁犯错误还要冲正。能不能搞成一笔帐,就像比特币?这么多单位用一个系统去覆盖,大家要协调起来就很麻烦。很多时候坐下来谈,对大家都有利,大家愿意共同做这个系统,但是还有很多的细节,一个紧耦合的系统也是有它的问题的,跨组织的这个协调沟通是一个比较大的问题。所以这是区块链第二个问题。
这边借用一些麦肯锡一张图,这张图的意思是说,最近这几年不断的出现新的技术,对金融技术体系是产生了比较多的影响。那互联网主要是影响了交互产品,
云计算
对业务产生影响更大,
大数据
技术对风控影响很大,而
区块链是对金融机构技术下面那三层:清算基础设施、系统交互、规则设定有比较大的影响。
当然金融机构的技术栈表达方式有比较多,这个是麦肯锡的描述,总的来说意思是说,区块链会对金融机构基础设施产生非常大的影响。是不是会产生非常大的影响呢?我觉得今天这个问题可能还很难回答。
刚才说区块链两个问题, 下面讲第三个问题,分布式共享帐本带来的安全隐私问题。 区块链是一种分布式共享帐本方式,解决了一些问题,也带来了一些问题。
其中首先是公钥和私钥, 私钥丢失对资产的所有权就没了,因为用私钥来识别你。而现在我们能看到的很多一些应用,对于私钥保护基本是用软件来保护的,理论上都是可以被攻破。实践当中如果你的反攻击技术实现,总的水平不是很高的话,对于现在网络犯罪团伙的技术水平可能被攻破的门槛也不是特别高。
这里面非常复杂,包括软件反跟踪,反调试,各种加密算法和实用,最后依赖某个对策,包括加密的东西。 整个这一套体系实现不能做到水平很高的话,都是比较容易被攻破的。你即使做的水平很高,理论上还是可以被攻破。所以这里面是一个比较大的问题。
我们都知道比特币曾经发生一些比较重大的损失,甚至某个著名比特币交易所的比特币完全都丢了,所以现在有一个改进,就是用这边叫冷存储的方式,实际上是私钥在离线被使用,把结果倒回到安全终端上。但是从信息案件专业的角度还是有一些问题。因为你还是要通过一个介质倒换。另外一个还是非常的不方便,可以想象。这个是一个问题。
第二个问题,我们在区块链上实现了应用,我们希望重要的信息对于无关者是看不见的,对于相关者来说在一些场景下信息要被其他方验证。 这两个显然是矛盾的,既要被看不见,又要被验证,技术上比较难,比较有挑战。这边列了三个技术,都正在发展当中,比如说环签名可以隐藏交易发起人,同时可以同态加密,这技术在发展过程当中,还是有比较高的门槛。还有区块链在一些场景的应用如金融场景,金融被严格监管,对监管者来说,他想知道的东西都应能获取,这些技术目前也是在发展当中。
智能合约的问题, 智能合约确实是一个比较重要的发明,商业的合同里面一些条款可以用代码来表述, 有人概括的说可能就会出现这种情况:“代码即法律”,听起来非常厉害。但是实际上要解决的问题很多,通常这种大而化之的说法把人搞的很困惑,实际上不是那么回事。首先还有一系列的法律问题没有解决。比如说法官律师他们,这些从业人员对法律智能合约的理解怎样,现有的法律体系怎么把这个东西融合进去,还很远,根本要解决这个问题现在还看不到曙光,非常复杂。
第二个问题是代码很抽象 ,怎么能够对抽象代码有理解呢,商业合同涉及到很多人,最起码甲乙双方当事人,双方律师一堆人,大家都去读代码?读文字相对来说理解是比较容易的,比较通俗的。
代码怎么理解?不理解怎么知道我这个当事人请别人给我写的合同是我的本意?显然还有一些条款不适合于用代码来表达,如范畴描述的问题,合作意愿的问题,法律问题很多。技术问题解决起来也很多,如代码逻辑漏洞和缺陷难以杜绝,这个软件发展好几十年,所以我们软件行业有个说法就是没有没有缺陷的代码,代码有缺陷很正常,但是在商业合同里面如果有一个比较大的缺陷的问题,或者存在漏洞,后果会比较严重。
第二个问题图灵停机这个问题不可判定。
第三个同一个商业合同在一些节点上的版本升级,如果执行结果不一样呢?这个也是一个难题,也是现在在研究当中。
共识机制是非常核心的一个机制,当然共识机制看当前大家的共识是什么?没有完美的共识算法。共识算法都是有这样和那样的问题,比如公有链POW优点非常好,完全去中心化,扩展应用很好,容错做到上限50%也还可以,但是延迟非常高,资源消耗非常高,中国人在炒比特币一年电量很吓人。
联盟链比较多用拜占庭,还有改良的做法,跟POW比这个能耗低,但是扩展性有限,容错上限只能做到30%多。 不存在完美的共识算法,就要求不同的场景、不同的应用,你要去选择合适的共识算法,而且要进行调整。我们做一个应用的时候要懂那个东西,你要能够去修正它,去调整它,所以这个不是跟谁合作解决的问题。
实际上区块链非常复杂,要把这个区块链的应用真的做好,发挥作用,一定要比较深入的了解技术, 特别是提到区块链的五个问题,单链数据结构的适应性问题;一个紧耦合的系统跨越不同的组织,怎么去统筹协调?安全隐私保护的问题等等。 今天区块链难以被非常广泛的应用起来,我的认识这个还要持续一些时间,跟这些问题非常相关的。
招行在区块链的探索,首先主要的方向第一跟大家合作交流,一些重点的领域去研究。
还有就是我今天讲很重要的,你要真的认清区块链一定要懂区块链,一定懂区块链的细节,那就要有一个队伍,你要真正把区块链用起来,下面一定要有一个区块链的平台。
这个能够看到一些开源的,首先都有缺陷,第二可用性也是有一些问题的,不是你能够拿来直接就用的,所以不是那么简单的。开源的软件拿来自己很简单弄一弄,在上面跑一个非常重要的区块链应用,没有这样的平台。所以这个你要解决。
工作方向我提了几点,在不同的场景用不同的共识机制,一定要了解共识机制的细节,另外对它进行调整。智能合约在金融领域是有用的,但是存在一些问题,你怎么去解决那些问题,或者让那些问题出现的时候不至于产生非常严重的后果,这些问题要研究要解决。隐私加密一样存在一些问题。一定要有一个平台,达到要求的平台。
我们有一个区块链应用的系统,搞区块链不能够只停留在纸面,要真正做一些事情。
这就是招行的基于区块链的跨境清算系统,这个系统开发完毕了,马上正式投产,在生产系统里投产,真正解决招商银行跨境清算的问题。招行有六个海外机构,一个子行五个分行,子行是我们永隆银行,五家分行是香港分行、新加坡分行、伦敦分行、卢森堡分行、纽约分行,他们相互之间以及和总行有资金往来,所以要解决清算的问题。
我们当前有一个系统:直联清算系统, 这个系统存在一些问题,只支持总行与分行之间交换,海外分行之间没有办法直接交换,比较多的人工环节以及和核心系统耦合过于紧密了,带来了一些问题。比如说审批环节多,操作复杂,新的海外机构加入是很麻烦的,实施周期很长。
我们为了改造这套系统,不是为了搞区块链而去搞区块链, 这个时候研究了区块链的技术,觉得区块链这个去中心分布式架构与我们行当前这个跨境清算场景是比较适配的,所以就决定用区块链来改造,实施一套基于区块链的跨境清算系统。六个海外机构加总行,大家都连区块链上,任何两个机构之间都可以发起清算的请求,任何两个机构都可以进行清算,带来了一些好处。
基于区块链的跨境清算系统的优势,总结起来有四点:
第一点是去中心, 大家是一个P2P的架构,就不是原来星型的结构了,减少了转发环节提高效率,任何两个机构都可以互联互通,原来我们报文传递要六分钟,现在是秒级了;
第二是高安全, 在私有链封闭的网络环境下,安全性已经非常好了,所以是一个高安全的,报文伪造是非常难的,篡改也很难,这个情况下我们就不需要繁琐的对照,系统被简化了;
第三是高可用, 因为是一个分布式架构,没有一个核心节点,不会哪个节点一倒整个系统就完蛋了,其中任何一个结点出故障不影响整个系统运作。这个系统实施完毕以后,在这个场景下区块链这个技术确实是有用的;
第四点是可扩展, 新的参与者可以快速便捷地部署和加入系统。
上面跟大家分享了招商银行关于区块链的认识,以及我们做的工作,谢谢大家!