2017年是区块链的落地年,越来越多的银行经过了区块链的概念验证POC,不断将区块链技术应用到实际生产系统当中。尽管经过一定时间对区块链的研究和实践,很多银行科技团队已对区块链有比较深入的了解,但在实际整合区块链技术的过程中,不少传统银行科技仍旧对区块链是否安全稳定存有很多疑虑。实际上,根据我们的经验,区块链经过几年的发展,技术本身在容量、扩展性、TPS性能指标、稳定性上足已达到商用标准,更多考虑是如何让区块链和传统金融IT在整合上提供完整严密的落地方案和解决思路。以下文章就是在传统银行IT如何落地区块链技术这一领域进行探讨,适用于银行和金融机构的产品经理、系统架构师、开发工程师参照阅读。


为什么要上区块链系统

在应用区块链技术之前,首先要考虑清楚哪些场景和产品适合使用区块链架构实现,哪些不适合。这里参考了段新星在钛坦白的分享实录(http://www.tmtpost.com/2694378.html?from=timeline&isappinstalled=0),文章提出了应用三原则,我觉得点的非常到位,这里我再补充一些我的理解。

  1. 不要拿大炮打蚊子”。区块链技术更适宜于资产网络(Assets Over IP),针对这点,银行本身从事的就是资产相关业务,比较匹配。
  2. 使用区块链,一定是要有多方写入数据的需求。在某种角度上,如果把区块链作为一种数据库而言,这里边非常突出的特色就是:它是一个天生去适应多方进行协作的数据库,一个单一的写入者写入数据的数据库可以搞定的,就不需要用区块链。所以,在这里一定有多方协作需求。
  3. 区块链产品一定是天然的弱中心化的。区块链做在国内支付基本没有可能,因为中心化平台已经足够强势和足够好的体验,比如支付宝、微信、银联。但用区块链做打通多个不同国家商家、金融机构的跨境汇款、清算结算的成功案例则不少。原因也是很简单,后者在复杂多边市场中,缺乏“中心协调者”,存在严重对手风险的交易困境。比如,信用证就是一个很好的应用场景,今年7月份,中信银行已与民生银行合作推出首个银行业国内信用证区块链应用,为银行拓展国际结算、贸易融资等业务提供支撑。

另外,需要补充的是,在现阶段银行体系使用区块链来解决运营效率、降低运营成本也是一个非常明显的应用点,比如:招商银行通过区块链技术改造的跨境直联清算业务将正式实现商用,实现了总行与海外分行各节点的资金清算,并将交易时间由6分钟缩减至秒级

典型融合架构

以下为典型的银行IT和区块链的融合架构。部署在银行的区块链节点会在应用层、业务层、数据层和银行现有IT架构发生交互。

应用层:银行IT应用层,比较典型的,比如国际结算系统、外汇交易系统、支付系统等等,将会和区块链的连接层发生交互,通过Restful API发起区块链交易或者通过WebSocket机制接受区块链区块和交易结果。

业务层:通常风险控制策略、支付清算规则、AML规则在这一层制定,区块链通过智能合约(或称:链上代码 ChainCode)写入和交易关联方相关的业务规则,比如风控规则、清算分润等都可以通过智能合约写入。

数据层:区块链一般采用K/V数据库,适合区块链实现不间断链式存储和简单信息的存储,并不支持SQL语句复杂查询,当然也无法支撑进一步数据分析、挖掘。比如,在我们在一商业银行落地的区块链项目,基于UTXO的账户模型需要被抽取、初加工,并根据行内的AML规则再加工,实现资金流向监管,实现资金的精准投放。同时,银行数据层通常有更完善的容灾备份策略。所以,区块链架构方案需要配套为关系型数据库(Oracle、DB2、Mysql等等…)提供数据导入功能,一方面作为数据安全存储需要,一方面为数据再加工提供数据源头。

对账模式的变化

以哪个系统账目为准,对账周期怎么设定,在银行IT中一直是一个很原则性的问题,系统融合区块链之后,这点需要重新理解,并使用新的规则来实现。我们在一些落地项目中,需要花费很多精力来让银行IT人员理解并在新模式下实现新的对账模式。

为便于理解,我们以基于银联的跨行支付系统为例,来看一下传统对账模式。

清分Clearing一般发生在T日日终(比如23:00),银联完成清分后,向各个成员机构下发清分文件,各个成员银行根据中心的清分文件来对账,注意哦,一定要以银联为准。

PS:淸分Clearing是指对交易日志中记录的成功交易,逐笔计算交易本金及交易费用(手续费、分润等),然后按清算对象汇总轧差形成应收或应付金额。简言之,就是搞清楚今天应该向谁要多少钱?应该给谁多少钱?

相比现有中心机构模式,基于区块链模式下,每隔一段时间(一般几秒到十几秒之间)会生成区块(Block)的生成,这个区块中的交易明细已经在各个参与方节点的共识过程中形成一致性账本,意味着对账时时刻刻都在进行。所以,新的对账模式应调整为:

1、日终对账变为实时对账
2、以跨行转接机构(比如:银联)为准转变为以区块链一致性账本为准。

由此可以看出,显而易见的好处是:效率提高了,配合以良好的交易机制(在下一章节提到),可以将差错账发生率较低到几乎为零。

解决事务一致性

我们在某银行的一个区块链项目中,探讨一个场景,这个场景要求先从区块链进行数字资产交易,同时在银行本地账务系统进行电子账户相关账务操作,这两个动作要求实现事务一致性。

在银行现有系统架构中,事务一致性保证有一些传统做法,最简单的是通过本地关系数据库的强一致性来实现本地事务的一致性;或者是通过设计一些冲正交易模式来进行交易回滚;再者通过两阶段提交协议(2PC)来实现。

针对区块链交易以上均无法支持,原因很明显

一、区块链节点是独立应用,无法通过本地事务实现;
二、区块链使用的数据库是NoSQL数据库,这些非关系型数据库无法支持2PC;三、区块链没有交易回滚(Rollback)机制,只要区块上的交易,无法通过冲正交易回滚。

解决思路是从微服务架构中寻找事务一致性的解决方案。其实区块链应用节点就是一个独立微服务。微服务的实现事务一致性的模式有三种,可靠事件模式、业务补偿模式、TCC模式。其中最适合的是可靠实现模式,某种情况下可以使用业务补偿模式。原因是:TCC模式,要求支持Cancel操作,区块链均不适合。综上,我们建议使用基于外部事件系统的可靠事件模式来保证交易一致性。

具体方案设计如下:

外部事件系统记录事件消息全流程状态,从上图可以看出,从1-5是正常交易流程,其中可能发生异常情况:

  • 区块链交易失败
  • 区块链交易成功,但没有通知到事件系统
  • 账户系统交易失败(可能没有收到,也可能处理失败)
  • 账户系统交易成功,没有通知到事件系统

对账处理进程定时从事件系统库中找出A)已经登记的,但没有收到交易出块通知的交易 B)账户系统未置“完成”的交易。

针对A,对账处理进程从区块链中进行查询(包括对比区块,是不是已经过了超过2个以上区块),如果区块链没有完成交易,则将事件置“取消”,解决第一种异常;如果区块链交易成功,则更新事件状态为“待账务系统处理”,并送入消息队列,解决第二种异常;

针对B,再次通知账户系统,触发账户系统再次处理(本操作可以根据情况,设置多次),解决第三种和第四种异常。

PS:账户系统同时需要实现幂等性,不能因为重复收到事件而多次重复记账!

补充说明,账户系统对于记账失败可以反交易处理,在其他场景,我们也可以设计事务补偿的模式。平台亦可使用服务编排的方式降低这种模式的开发复杂度。

身份实名化及密钥管理

在公有区块链最初当中,均不需要进行身份实名,密钥管理也是交给个人自行管理。对于金融行业应用区块链,显然既不符合监管,也没法满足银行商用标准,所以,针对银行联盟链来说,最重要需要实现两个目标:

1、链上身份实名化
2、数字资产控制密钥的可管理,包括挂失、找回这样的异常管理

对此,我们建议的方案如下:

1、对于身份实名,基于银行已有成熟验证通道,我们建议借助银行现有的二、三类账户验证模式和KYC,比如银行卡四要素的认证方式。
2、鉴于用户对银行的信任度很高,密钥管理方案建议采用“可选托管方案”,用户可以选择自行生成和管理密钥,或者在用户许可下,由银行为用户托管密钥,并通过安全方式下发给用户终端,这样用户可以通过自己实名身份进行挂失、找回等。具体如下说明。

高可用的部署架构

银行IT对高可用一直有极高的要求,区块链的构建需要完全支持高可用(HA)的部署架构。

我们建议使用微服务架构建立区块链服务集群,区块链节点仅是一个逻辑概念,它由多个可自由伸缩的物理节点构成。

目前业界比较成熟的微服务框架有Netflix Spring Cloud、Apache ZooKeeper等。方案并不局限某一框架,我们以使用 Spring Cloud 提供的服务注册(Eureka)、服务发现(Ribbon)框架为例,具体的部署方案如下。

PS:每个银行在各自HA方案中有各自标准,基于微服务的架构方案仅为一种思路和选择,具体情况可以根据银行HA总体方案调整。

以上我们将所有区块链节点以服务注册到Eureka集群,让服务调用方(银行各类应用)能够方便地找到区块链节点,保证全服务无单点故障。
其中区块链集群中可以进行角色划分,设置性能比较好的物理机器作为记账节点,其他作为提供服务响应作用或数据备份作用的轻节点。

结语

区块链技术,已经成为主流金融机构战略部署的首要任务,这些技术将成为金融机构下一步发展的核心驱动力之一。对于银行金融IT人员来说,需要快速理解和学习区块链技术。此文正是站在金融IT角度,论述了应用区块链技术需要解决的部分关键性问题,希望能帮助银行IT人员更好地应用和落地区块链技术。

作者简介:
肖旻,Onchain分布科技的金融系统技术总监。肖先生曾供职于银联数据、国内大型支付机构,具有丰富的金融系统IT规划、架构及团队管理经验,熟悉跨境支付、账户、清算业务,对区块链和金融系统的结合有深刻理解和实践经验。
更多区块链内容请投稿:jingqi@csdn.net

区块链与金融IT“联姻”的思路和方案相关推荐

  1. 《筱静观察》第三季第2期丨区块链在金融开放与监管中的作用

    题记:金融在现代经济中处于核心地位,它是社会资金运动的总枢纽,是控制货币供给的总闸门,是发展经济.革新技术的重要杠杆.当前全球金融业已经呈现创新驱动发展的大趋势,区块链技术具有低成本信用创造.分布式. ...

  2. 拥抱区块链和金融科技,开启新金融时代

    什么是金融科技?金融科技英文叫FINTECH,国内最早的定义为"科技金融是促进科技开发.成果转化和高新技术产业发展的一系列金融工具.金融制度.金融政策与金融服务的系统性安排",而沃 ...

  3. 【区块链】研究报告:区块链+供应链金融

    自2016年区块链在国内掀起热潮以来,整个行业都在不断地探索各类落地场景,真可谓区块链如此多娇,引得无数创业者竞折腰.那么供应链金融这个赛道的优势何在?传统的模式存在哪些痛点?区块链能够创造出哪些新的 ...

  4. 区块链供应链金融有着怎样的意义?

    简单地说,在区块链技术和金融平台的帮助下,整个商业系统的信贷将变得传导性和可追踪性,而且,供应链中许多过去无法融资的中小企业预计将与核心企业建立更紧密的联系.从而获得信贷和融资.这正是传统供应链融资所 ...

  5. 泛融等多家业界权威通力合作,联合信通院发布《区块链供应链金融白皮书》

    2018年10月31日下午,区块链政策法律研究组成立会暨<区块链与供应链金融白皮书(2018 年)>发布会在中国信息通信研究院举行.会议当天,来自腾讯.百度.京东金融.泛融科技.SAP.西 ...

  6. 区块链与金融基础设施——兼论Facebook Libra

    前言 本文作者为万向区块链&PlatON云图首席经济学家邹传伟博士.邹博士研究了区块链对金融基础设施的影响,并从这个角度分析了近期备受关注的Facebook Libra.本文的结论是:金融基础 ...

  7. 清华北大教授联袂推荐的好书:《区块链:金融应用实践》

    终于可以利用我的博客做个硬广了,<区块链:金融应用实践>是我和何广峰老师最近新出的书,面向广大的区块链爱好者,感谢清华和北大的教授无私推荐,京东.亚马逊.当当.淘宝均有售. 一.相关评语 ...

  8. Hyperledger Fabric区块链供应链金融实战1

    我们在这里将利用Hyperledger Fabric最新版本v2.0.0 Beta,创建一个区块链供应链金融项目,实现应收账款.承兑汇票.合同融资功能.出于学习目的,我们将Hyperledger Fa ...

  9. 有信用就有明天!区块链+供应链金融助力企业融资的5种方式

    据互链脉搏不完全统计,中国各类机构设立的区块链+供应链项目近百例.疫情期间它们也在发挥作用. 钱荒+疫情,企业尤其是中小企业面临生死大考.除了中央调整货币政策和财政政策纾困,来自民间的力量也多了一种工 ...

最新文章

  1. 「文本信息抽取与结构化」目前NLP领域最有应用价值的子任务之一
  2. 快来支招~程序员怎么哄女朋友? | 每日趣闻
  3. 算法提高 c++_ch04_02_修正版
  4. 〔转〕Word域的应用和详解5_索引和目录
  5. web安全_皮卡丘_csrf
  6. 日程解读 | LiveVideoStackCon 2020北京站日程官宣了!
  7. 电脑软件:5个实用的Windows软件,大幅度提高你的工作效率!
  8. 【转】vmware 安装 osx 无法登录 appstore 的解决办法 (伪造smbios设备信息)
  9. python xlwt列宽设置_python xlwt 设置单元格样式
  10. c语言单链表怎么循环链表,链表之循环单链表(用C语言描述)
  11. cass连接复合线命令 lisp_在cass中如何使两个多段线合为一条
  12. 计算机鼠标右键的主要应用是什么原因,win7电脑桌面鼠标右键功能和作用|win7 64位桌面右键没反应,反应非常慢...
  13. 计算机如何设定远程,电脑远程控制功能怎么设置
  14. 516. Longest Palindromic Subsequence
  15. 计算机学硕专硕的区分,跟大家说说学硕、专硕、如何区别以及涉及到的一些政策问题...
  16. 云服务器的回收站在哪个文件夹,云主机无法从回收站删除解决办法
  17. 同步锁(synchronized)_37
  18. matlab 路由表,闭关修炼之zigbee路由
  19. linux基础命令 - ps
  20. 9个好用的生命科学研究工具分享

热门文章

  1. 5大代码规则,守护程序猿世界的爱与和平!
  2. 宽度优先搜索算法-BreadthFirstSearch(BFS)
  3. ffmpeg 保存图片 将rgb数据_FFMPEG 实现 YUV,RGB各种图像原始数据之间的转换(swscale)...
  4. windows设置某应用开机自启
  5. Linux 下 N 卡 GPU 测试
  6. MySQL练习题全部
  7. 分布式 - ElasticSearch解决大数据量检索难题
  8. uniapp如何实现时间轴会议预约显示?
  9. foxmail邮箱怎么导入邮件_Foxmail怎样导入和导出邮箱账户和邮件
  10. UG\NX二次开发 菜鸟欢乐多