8月25日,在超级账本金融专场北京见面会上,民生银行区块链实验室主管王连诚分享了其团队在区块链实践过程中的经验与思考。
民生银行从2016年开始对区块链的探索,最早做的是一个基于以太坊的星球挖矿营销项目,这是一个私有链。后来真正意义上的区块链产品是在2017年,同中信银行合作完成的跨银行间的联盟链,在此基础上,完成了贸易金融领域基于区块链的信用证项目。随着其他银行的陆续加入,该项目将扩展至整个金融区块链平台及更多应用场景。
本文将介绍民生银行在贸易金融领域基于区块链的两大落地产品:国内信用证系统(BCLC) 和福费廷交易(BCFT) ,并深入探究民生银行区块链改造的系统框架,技术难点与解决方案。
一、基于区块链的国内信用证系统(BCLC)
1、什么是信用证?
信用证,是指银行根据进口人(买方)的请求,开给出口人(卖方)的一种保证承担支付货款责任的书面凭证。
大家可以把它想象成一个贸易金融领域的支付宝,它解决了买方与卖方先发货还是先付款的问题。
2、传统信用证业务有什么痛点?
效率低:信用证正本及单据通过邮寄传递,成本较高,耗时较长;
不规范:要素及样式不统一,往往在行内流通;
不自主:需要通过SWIFT发送确定电,但SWIFT不支持中文 ;
风险多:完全依靠企业及银行的信用,容易产生拒付纠纷;
信任弱:纸质信用证不易保存,容易伪造;
传统的信用证业务完全通过线下纸质操作。比如申请人通过开证行开出了一张信用证,他需要通过线下EMS或者快递邮寄到通知行,再有通知行告知受益人。整个过程完全通过线下操作,而且要来回记大量的票据、发票及其他文本。另外,信用证本身是一个国际的规范标准,它是不支持中文的,它需要向国际组织SWIFT发送英文,存在很多不便利性。
3、BCLC的底层逻辑是怎样的?
基于Fabric 1.0 联盟链实现;
数据上链通过前置网关(golang);
附件哈希上链,文件p2p网络传输;
所有机构共享同一通道;
业务数据JSON化存储,后期可以线下查询;
基于区块链的信用证是怎么改造的?大家可以看到,在这个图里有三家银行,它们完全通过区块链节点连接起来。
对于传统已有业务,BCLC提供两个模块,一个是BP系统,用以对接区块链与传统业务系统。第二个是区块链节点组,基于Fabric底层做了一些改造。另外还有一个Baas平台,提供可视化服务。
对于新生业务,BCLC对报文采用JSON格式传输,不用上链。之所以这么做,是为了后期做复查询。同时对于信用证过程中需要传递的一些特殊文件,比如发票,是将扫描件哈希上链,通过文件的P2P网络传输。
二、基于区块链的福费廷交易(BCFT)
1、什么是福费廷?
福费廷是出口信贷的一种类型。最早产生于二战后的东西方贸易,后来逐步由欧洲向亚洲及全世界扩展。随着福费廷交易方式日益灵活,交易的金额不断增加,逐渐形成了一个世界范围内的福费廷交易市场。
2、福费廷和信用证有什么关系?
福费廷和信用证有直接的相关性,福费廷就是把信用证形成的债券进行有条件的转让。
打个比方,你要做一份锅包肉,前提肯定是要有肉,信用证就是肉,福费廷就是锅包肉。
3、传统福费廷二级市场有什么问题?
效率低
在传统的福费廷领域,大家进行债权转让的时候,询价、报价基本依赖电话微信渠道沟通,效率很低。由于缺乏统一的报价渠道,资产买卖达成的周期也很长。而且很容易造成报价受地域、时间、客户关系等因素的影响。
不透明
由于信息的不透明,基础交易背景的真实性存在风险,完全依赖于开证行对贸易背景的调查。而且,福费廷转让的违约成本很低,并没有建立起有效的信用市场。
4、区块链怎么解决这一问题?
民生银行将福费廷交易业放到区块链上,但相比于信用证,新增了一个包买商的身份,包买商可以是银行,也可以是任何有资质购买这种资产的金融机构,通过区块链实现报价、询价,乃至资产发布,从而形成从信用证到资产买卖、债权转让的完整闭环。未来,还可以在二次资产转移、资产拆分方面有更多尝试。
民生银行同中信银行合作的基于区块链的BCFT平台,将于9月底上线,届时还会有重量级机构加入。
三、构建基于区块链的贸易金融系统
1、民生银行区块链技术平台
如图所示,是民生银行和中信银行联合开发的联盟链技术平台。目前,这一平台还仅用于金融同业的业务,但在设计时,已经考虑到未来在核心企业、基金券商、三方机构更大范围的应用。
基础设施层,民生银行有自己的云服务计算平台,用的是基于K8S的部署方案,支持Docker、镜像。数据层,除了Fabric自带的数据库,民生银行也自行开发了数据归档、数据二次离线的功能。平台层,是Fabric本身提供的包括共识、隐私保护、账本维护等机制。
开放接口层,主要实现了四种服务,一是链玛协议,解决的是数据如何上链的问题。二是区块链服务接口,提供了最基本的底层逻辑查询。三是为新加入成员提供验证服务的身份认证接口。四是轻客户端,意味着别人可以无需任何部署,或者以最轻的节点加入进来。
最上面是大家能够直观感受到的应用层,信用证已经开始使用,福费廷也即将上线,未来还会拓展供应链金融、智慧零售等业务。
2、联盟链发展的关键点
在构建联盟链时,有哪些关键点是需要解决的?
资源的弹性扩容
动态成员管理
业务接入成本
可视化管理监控需要
首先,新机构加入的时候,最容易遇到资源扩容的问题,这个扩容可能是横向扩张,也可能是新身份的扩容。其次,是新机构怎么加入的问题,包括它的通道、网络、合约,能不能支持动态加入?再者是区块链的门槛相对较高,传统金融机构的业务该怎么接入?最后,对区块链的一些账本、合约,需要进行可视化的监控。
3、区块链改造的经验教训
在落地业务时,会遇到哪些实际问题?王连诚将民生银行的经验分享出来,予以借鉴。
银行的网络开通都是点对点白名单开通,区块链是典型的p2p架构
出网入网IP地址要求一致
使用kubernetes部署peer节点,智能合约无法本地运行
区块链去中心化的设计,要求协调各方项目进度和上线窗口
我们在使用区块链部署时确实遇到了很多问题。首先,民生银行有自己的一套容器管理平台,它不会对所有的应用程序开放管理权限,使得我们所有的智能合约都没有在容器里面运行,而单独找了一台远程机器进行部署,结果发现我们所有的智能合约频繁重启,原因就是合约没有在本地部署造成了跨网络,五分钟内如果没有任何数据流量会把报文断掉。
还有一个问题,区块链网络是P2P的,而银行网络实际上都需要白名单单向开通,这本身就是一个需要权衡的问题。
另外,在一开始和中信对接的过程中,我们也遇到了一个问题,就是我们两家银行出网的地址和入网的地址完全不对等。
未来可以改进的方向:
集成Fabric1.2实现同一通道内的数据权限管理
切换CouchDB, 实现本地State中业务数据的Mango Query
支持RAFT共识算法,简化Kafka、ZK带来的部署复杂性
交易全链路分析工具,降低区块链问题分析的成本
轻量级部署方案,更便捷的节点接入方式
在后期发展的过程,我们也紧跟着社区的一些新技术,包括Fabric 1.2通道内加密,也就是任何通道的数据可以在通道成员之间点对点发放,而其他成员无法看到,这在一定程度省略了原先采用的公钥加密的方法。另外我们也会切换到CouchDB,实现离线数据的复查询。最后是Fabric1.0的公式算法还停留在消息队列,也就是Kafka、ZK,我们也会去尝试用RAFT共识算法来简化网络配置的问题。
通过上文对民生银行区块链项目从业务场景、平台设计到技术模型的全方位解读,相信大家可以理解传统金融业务进行区块链改造并非一蹴而就,在实践的过程中,社区成员贡献的每一点创新,都将区块链从技术理念推向大规模应用的路途中更进一步。
注:上文内容来源于民生银行总行信息科技部区块链实验室主管王连诚的技术分享,由整理发布。