恒生电子章乐焱:区块链技术在国内金融领域内应用的探讨引言:
银弹(英文:Silver Bullet),指由纯银质或镀银的子弹。在欧洲民间传说及19世纪以来哥特小说风潮的影响下,银色子弹往往被描绘成具有驱魔功效的武器,是针对狼人等超自然怪物的特效武器。后来也被比喻为具有极端有效性的解决方法,作为杀手锏、最强杀招、王牌等的代称。
在前两期的《恒生世界》里,给大家介绍了区块链技术在业界的主要动态以及三种主要的区块链实现:bitcoin、bitshares、ethereum。区块链技术也不是银弹,本文主要探讨区块链到底是一种什么样的技术,在金融行业它适用哪类场景。
在区块链技术相关信息刷爆朋友圈的时代,已经有太多的文章对区块链技术在金融领域的应用进行畅想,包括:跨境支付、存在性证明、数字资产存管、交易转让等,甚至发展到颠覆当前人类社会运作模式的程度。确实区块链技术诞生之初就是与金融应用相关,大多数人知道区块链技术始创于比特币,关于比特币的正式论述源于2008年中本聪的一篇名为《比特币:一个点对点的电子现金系统》的论文,所以今天区块链最熟悉的应用还是在支付领域,特别是跨境支付,它的低费用、快捷性吸引了众多使用者,当然比特币作为一种依赖加密技术实现的虚拟货币固有的一些问题也限制了它的使用,比如:货币主权、监管问题、性能问题、币值波动太大、流动性等问题,包括它目前仅有的400亿人民币左右的总市值。
在IT高度发达并且从严监管的金融领域,当一种新技术需要被引入到金融应用中时,我们的IT架构师都会对这种技术进行验证评估,以确认是否适用这种技术的应用场景。在评估分析之前,我们首先要搞清楚区块链技术到底是一种什么样的技术?
一个由参与者共同维护的公开账本
最常见的关于区块链的说法是一个由参与者共同维护的公开账本,账本上记载所有交易记录,所有参与者都可以拥有一份账本的拷贝,并可以对里面的记录进行校验,确保其正确性。在IT架构师眼里,这个显然就是一种类似高可用数据存储系统的解决方案,所以它绕不过所谓的分布式系统CAP理论。
CAP理论对分布式系统中的三个特性进行了如下归纳:
● 一致性(C):在分布式系统中的所有数据备份,在同一时刻是否具有同样的值。(等同于所有节点访问同一份最新的数据副本)
可用性(A):在集群中一部分节点出现故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性)
分区容错性(P):以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。
CAP理论就是说在分布式存储系统中,最多只能实现上面的两点。由于当前的网络条件,特别是基于互联网条件下的区块链部署,肯定会出现延迟丢包等问题,所以分区容错性是我们必须需要实现的,区块链技术在一致性和可用性之间选择了可用性,即区块链上的数据是做到最终一致性。说人话:往区块链上写入交易数据,在等待足够长的时间情况下,各个节点上的历史账本数据才能达到一致。
以比特币区块链举例:全世界比特币区块链上的参与者,主要通过互联相互连接,同步账本数据,每个参与者随时可以加入也随时可以退出这个网络;数据同步采用的技术与网上流行的下载高清电影的BT、电驴类似,是一种P2P通信机制,只是下载一部电影是固定大小,而区块链上的账本数据是一页接一页不停在增长的,和电影一样,前面的历史数据不会被更改,所以只要不停地同步新增加的账页(区块)就行,区块之间的顺序及区块中记录的交易数据,会通过算法进行校验合法性,从而达到不可篡改性。比特币上线7年以来,历史数据已达60多G,一般通过互联网同步一下需要2天左右,当然也可以从别人那边拷一份历史数据,然后在线同步后续产生的区块数据;当一个人发起一笔比特币转账交易时,他的交易请求同样通过P2P网络进行全网广播,传说中的矿工(记账员)会把收到的交易放入一个内存队列,如果它抢到下一个区块的记账权,它会把待入账的交易尽可能地写入到一个区块里,同时把这个区块的信息也广播出去,供全网同步校验,校验通过的会被参与者作为一个新区块同步记到本地存储里。互联网通信条件具有复杂性,当年比特币区块链把每个区块的产生间隔设定为10分钟左右,同时把一个区块的大小设定在1M,这就限制了每10分钟能被记录和同步的交易笔数(大约支持7笔/秒的交易量);如果要提升性能,必须要让所有参与者的软件进行更新,最近比特币区块扩容之争即来源于此;很多所谓的山寨币,就是通过修改这类参数来提升性能,吸引参与者,当然更高的性能依赖于更好的网络条件。
一个完全开放、自由参与的P2P网络,随时可能分裂成多个不连通的小网络,或者因为网络条件差异有些交易数据不能在一次记账间隔时间里被传递到全网,所以从分区容错性的角度,基于P2P网络进行记账权争抢和数据同步,必然是会导致不同节点上出现一定概率的账本数据不一致;根据区块链的设计,账本数据(新区块)只在尾部添加,历史数据不作修改,所以数据不一致情况时,区块链即在尾部发生分叉,并且分叉的子链长度(区块链术语叫高度)相同时,这种分叉状态将保持,直到某个子链长度大于其他子链,短子链将被抛弃,其中的交易记录被重新释放出来,未被记录到长子链的交易会重新排队,等待记录。显然区块链的这种最终一致性特性,会给它在金融应用使用中带来很多障碍。
摘自《精通比特币》
神来之笔-区块链中的经济激励机制
如果仅仅把区块链当作是一个公开的账本,或者当作一种带一定高可用特性的去中心数据库,显然是不够的。区块链技术脱胎于比特币这类“加密货币”技术,即便如今区块链技术相对于“加密货币”更受关注,但相应“代币”的概念一直伴随着区块链技术的发展,同时在保障区块链的正常运行中发挥着重要作用,特别是在公共区块链上,“代币”是维系生态发展的主要因素。矿工作为记账员为什么愿意去争抢记账权,为什么愿意投入资源去校验账本,是因为有“代币”的经济激励;在一些不采用矿工挖矿这种以消耗计算资源作为共识基础的区块链实现上,“代币”也会作为投票权的象征;在支持智能合约的区块链系统中,“代币”作为合约程序运行的“燃料”,是防止出现死循环或者低效代码过多消耗计算资源的重要手段;某种程度上,因为向区块链上发送的每笔交易都需要用“代币”支付交易费用,提高了通过网络发起恶意攻击的成本。“代币”的引入,使得那些公共的区块链系统带有更多的金融色彩,容易带来一些金融监管方面的问题,特别是“代币”与法币的兑换环节,往往成为监管与网络黑客关注的重点,“代币”价格的大幅波动也会给基于区块链的应用带来困扰。当然如果基于区块链的系统是部署在私有或者专有网络,不对外开放,这类问题的影响会小很多。既然“代币”这么重要,不同的区块链实现上,“代币”的发行机制也是应用时要考虑的重要因素。同时也要注意,驱动区块链运行的“代币”,与在区块链上为提升金融结算效率而发行的“代币”是需要区别对待的,后一种代币往往是由集中承兑机构从业务需要发行的,在现实世界是也很从常见,比如各类代金券。
第二代区块链平台的智能合约虚拟机
如果说以比特币区块链为代表的第一代区块链技术,是一个去中心的数据库,并利用其中有限的交易脚本实现上层应用的扩展。真正引发大家无限创意的是以太坊为代表的引入虚拟机技术的第二代区块链技术,即所谓具有图灵完备性的虚拟机,技术人员可以像写普通代码一样,将各种业务规则和相关数据封装在一个智能合约中,发布到区块链平台上,使用者如同发起一笔转账交易一样要求执行指定合约的相关业务规则,从而使得区块链技术演变成一个去中心的计算平台。不同区块链上,智能合约对业务规则的表达能力,受限于虚拟机支持的能力,区块链应用的设计开发人员不但要掌握区块链技术原先的特性,还要充分了解相应智能合约虚拟机的功能,比如在以太坊区块链上就要掌握Solidity或者一种类似python的编程语言Serpent来定义一个智能合约。也有人把8051虚拟机集成到区块链里,用开发单片机的C语言来定义智能合约。如果普通转账交易,智能合约的某段业务规则代码实际上是在矿工(记账者)的计算机上被调用者以交易的形式触发执行,所以合约所依赖的外部信息也需要设计成由外部通过交易来输入,比如:一些合约的执行所依赖的外部价格信息(汇率、股票行情),从这个角度讲智能合约并不那么“去中心”、“去信任”,它还得依赖于可信任的一方提供一些外部信息或者从外部来驱动合约执行。另一方面,开发一个“智能合约”实际上讲还是在开发一个运营在特定场景下的一个软件,“智能合约”也有所谓的不可篡改性,但是大家知道是软件总难免会有bug,需要升级维护,所以“智能合约”也要对它的升级维护、异常处理做出约定,近期震惊业界的以太坊The DAO合约漏洞,导致合约里近亿人民币市值的以太币被黑客转走,事情发生时因为合约本身缺少相应的缺限修正机制,事情处理时很是被动。如果智能合约应用于金融场景,这些问题都是合约开发者必须去面对的。
算法、算法
按说评估区块链技术,算法特别是加密算法应该是一个重点,它们是区块链技术去中心、去信任、防篡改、匿名性等特性的基础,包括传说中矿工通过挖矿来争抢记账权也依赖于算法,不同的区块链实现确实也经常变换其所依赖的算法。但从上层应用适用的角度,笔者并不觉得算法是重点,因为区块链技术基础上采用的是常见成熟算法,比如SHA2安全散列算法、ECC椭圆曲线算法,对算法的应用也是相当常规的用法。也许正是因为采用了常见算法而不是去创造发明一个什么特别的算法,区块链技术才更容易被大家理解和接受。如果一定要说在区块链在金融应用中对算法部分需要注意什么,用“国密”算法来替代,可能会是一些金融监管机构的要求。
什么样的场景适用区块链技术
综上所述,在金融行业什么样的场景可能适用区块链技术?笔者认为:
1、基于性能考虑,相对低频、小数据量的业务更为适合;这种场景也往往存在大量手工业务操作,容易导致人员信任风险;长远来讲规避性能问题也有多种解决方案,比如侧链、分片,但这也会使系统变得复杂。
2、从区块链去中心化的连接特性考虑,那些业已建成的大量分立系统,同时存在互连需求的场景,用区块链可以一定程度会比建集中互连系统更容易实施;
3、从部署角度,公有链应用于金融相对来说存在的困难较大,所以联盟链的形式更容易被金融机构接受;而私有链形式,则往往很难在与传统架构的分布式系统PK中体现优势。
4、从用户体验角度,区块链交易的异步和不确定特性不容易被小白用户理解,这可能也是现有区块链应用往往在特定圈子里被使用的原因之一。
区块链技术不是银弹,但基于区块链技术构建的金融应用确实可能带来一些比较显著的特性,比如:
——降低信任风险:所有人工操作环节记录区块链之后不可篡改、可公开审计;
——提升系统可用性:无中心集群,区块链天然保证了达到“多地多中心”的高可用等级;
——降低运营成本:新成员引入方便,有一台设备入网同步账本即完成接入,由于接口相对标准、简单,使成员拥入其IT系统对接的充分自主权;通过智能合约,可很方便满足个性化业务需求;
——提高支付、交易、结算效率:可以引入DVP交收、7*24小时业务连续;
——通过智能合约满足监管和审计要求:公开性、匿名性、权限可个性化编程。
也许大家觉得怎么不提区块链“去中心”、“去信任”的好处,这里笔者想说的,在金融领域内应用区块链,所谓的“去中心”、“去信任”仅仅是针对区块链这个公共账本的维护工作是“去中心”、“去信任”的,并不是整个应用彻底“去中心”、“去信任”,金融应用必定会跟链外的现实世界打交道,链上链下的对接仍然需要可信任的金融机构来驱动,包括满足法律上的一些要求。
最后,借用比特币官网上的一句话:它正探索以往从未被尝试过的理念,因此,没有人可以预测它的未来。