随着一些领域的应用相继出现,区块链技术的发展取得了新的进展。但是这个行业的很多细节并不为社区外的人所熟知,包括开发进度和应用。本次公开课,雷锋网邀请了众安保险旗下众安科技CTO李雪峰进行讲解!
李雪峰,众安科技CTO,曾就职于摩根大通、亚马逊、东南融通、阿里巴巴,获不列颠哥伦比亚大学计算机软件、金融和工商管理硕士学位。
以下为公开课实录:
雷锋。com:众安科技将向金融领域输出技术,那么区块链的哪些技术主要用于整个金融领域的区块链应用场景?
李雪峰:我认为区块链的技术特点是:数据加密不泄露,分布式记录不丢失,网络广播防篡改。这些特点可以理解为这项技术的一个标准。现在这些标准有很多开源的实现,比如比特币,以太坊,Hyperledger。虽然目前还没有一个通用的标准,但实际上这些产品都是基于上述标准或者技术特点。但是,这些产品是不同的,因为它们主要解决不同的问题。比如比特币需要解决数字货币的转账,以太坊则侧重于提出新的账户模型,通过智能合约推动更多的应用开发。
安现在有了自己的链条,但为什么还要反复造轮子,自己实现呢?因为众安的很多业务场景都是金融场景,所以对技术有非常严格的要求,比如交易频率,数据存储和访问要求,接入证监会的审核,联盟之间需要互联、互信、互通。这些不是现有的链或几个链的组合。
现在摆在我们面前的真正问题是:区块链的技术特点和我们需要满足的业务场景无法一一映射,也无法将业务场景复制到区块链来实现,就像软件科学中的投影视图关系一样。大家可能都画过UML,模型图等。我们会发现,业务视图、部署视图等不同的视图永远不可能一一对应。
下面根据众安自身的经验,结合场景来谈谈区块链科技:
加密
提到区块链,人们首先想到的是加密。其常用的算法有椭圆曲线加密、公私钥对、哈希算法,以及最近提到的零知识证明。那么在加密的使用场景下,有数据就要隐私,有隐私就要加密。因此,我们需要加密来保护所有数据存储和查询中数据的隐私和安全。
那么在数据受到这种加密保护之后,接下来要做的就是授权。当调用数据时,首先要考虑的是数据确认的强制性。区块链是分布式账本,所有数据都可以共享。分享的前提是提供数据的人愿意给别人看,比如给谁看,看多长时间,看多少次。这个过程是一个高级算法问题。那么在众安的实践场景中,我们会在用户敏感数据的使用中,使用智能合约和一些授权算法来请求数据授权。
分布式记录不会丢失。
关于分布式的书籍和数据不丢失的问题,这就是多中心带来的优势。在传统的互联网架构上,我们通常跨机房进行容灾,或者异地多活动机制。而区块链网络天生就有这样的特点,因为节点是通过P2P连接的,每个节点都有完整的数据,这就导致了它固有的异地活跃的特点。即使某些节点挂机,也不会影响整个网络的可用性。除非所有节点都出故障,否则可能会影响整个网络,但这几乎是不可能的,因为所有节点都布置在世界各地。
现实生活中,保险、银行等金融机构的系统都是不一样的,即使同行业不同机构也很难保证数据的标准化。金融活动的日常交互需要一个第三方标准机构,可能是协会,也可能是企业。
比如对账,对于多方,每一方都有自己的账本。对账时,甲、乙双方互换账簿,用各自本地的账簿校对对方的账簿。如果发现问题需要人工处理,将涉及极高的成本。那么,当您通过区块链进行对账时,您可以首先消除多账簿的情况。所有对账参与方都有一个共同的账本,所有写入账本的数据都符合双方或多方的预期,即在写账本的时候实时准备账本,减少了成本和人工费用的浪费。
全网广播的防篡改
先说数据防篡改的特点。这个技术特性最适用的场景是数据可信度的场景。
基于共识机制的确认,区块链上的数据基本没有被篡改的可能。但是有一个错误,——。不是完全防篡改,只是理论上的。根据之前的统计,如果你准备了4亿美元,你也可以改变比特币上的所有交易。信用是金融的核心,信任是社会交往的基础。基于区块链的防篡改特性,可以解决很多金融保险领域的防欺诈问题。
时间戳,记录可追溯性
然后是时间戳。区块链中的每笔交易都有一个时间戳,表示交易在区块链中执行的时间。这个时间戳就是可追溯的关系,可以给我们提供所有操作的历史变化,自然提供可审计的功能。在供应链追溯等场景中可以发挥很大的作用。
共识自治
接下来说一致性算法,它本质上是一种分布式的一致性算法,具有拜占庭容错性。使用分布式一致性算法时,必须有一个前提,即——的环境是可信的,默认环境中没有恶意节点攻击网络或篡改数据。但是,这在区块链网络中很难保证,因为它是一个P2P网络,只要符合标准就可以访问。这时候就要在传统的分布式一致性算法中加入拜占庭容错机制。
也就是说,共识区块链算法的核心之一。
智能合同
然后是智能合约。说到智能合约,可能大家第一时间想到的就是以太坊。它实际上是将参与者的协议和共识转化为图灵的完整代码,它拆分了契约逻辑的实现权和执行权。你写合同,但你不必执行它。这就保证了契约一旦执行,谁也不能干涉,它只能按照共同约定的执行一定的业务逻辑。任何既定业务规则的执行,包括一些涉及信任危机的业务场景,如众筹、交易撮合、抽奖流程等。可以在智能合约上实现。但目前智能合约的发展还不是很成熟,我们可以把它理解为规则的升级版。
联盟链
最后是联盟链。众安用的是联盟链模式,这是最接近现实的模式。许多合作伙伴,一些将直接使用我们的区块链网络,另一些将部署他们自己的区块链网络并加入他们自己的区块链网络。这时候就需要解决联盟链之间的信任机制、通信机制、数据同步机制。
雷锋。com:保险行业有哪些痛点?这项技术对保险经济的价值和效益在哪里?区块链在保险领域的主要应用有哪些?
李雪峰:对应保险场景,有很多切入点。比如健康险的数据存储,淘宝和理赔流程中数据的可靠性验证,理赔的自动执行等。
下面从三大方面来说说区块链在保险领域的落地场景:
提高用户体验的关键是提高客户参与度,主要是提高用户的心理和行为感受。例如,它可以为用户控制个人数据,解决P2P保险等监管和数据跟踪问题,并使用智能合约提供自动理赔执行。
个人数据控制
一方面,客户害怕自己的数据提交给保险公司后失控。
其次,如果不能永久保存,用户每次购买保险产品都需要反复填写各种信息,对用户来说非常劳累。
有了区块链,我们可以通过区块链开发一个基于区块链的网络身份证,可以关联一个实体,对于用户隐私敏感的数据,比如购买健康保险产品时与健康相关的医疗数据等。我们可以将其存储在区块链,并通过数据加密和读取授权来保护数据。但事实上,在很多情况下,数据并不一定需要存储在区块链中。比如,我们即将推出一款基于区块链网络身份证的app,让用户的数据保存在移动端。在区块链,只有在需要时才注册,比较哈希。这样,用户可以将数据放在本地,在需要验证和比较时,也可以通过区块链控制数据的隐私性和权威性。
这种方法可以带来很大的好处。当数据量达到一定规模,非常充足的时候,可以减少很多重复的问题。比如很多行业,包括保险,都会做KYC的工作。但是他们为什么做不到呢?一方面,没有统一的标准来连接数据,也没有一个集中式的数据库来承担这样的角色,因为没有人会把数据托付给这样一个集中式的隐私数据库。然后根据区块链加密共享账本的特点,快速完成KYC,因为用户在不同的保险公司或者同一家保险公司购买不同的产品,可以减少大量重复的数据提交工作。
自动执行索赔
区块链改善用户参与和体验的另一个方法是——在理赔过程中提供更高的透明度和公平性。我们以航意险为例。当用户购买了航空保险,其指定航班取消或延误时,航空公司可以在区块链上触发事件通知智能合约,当智能合约获得这些外部数据后,可以直接为购买了该产品的消费者完成理赔支付。这个过程是全自动的,它的主要流程都在智能合约里。虽然这个过程没有区块链也可以实现,但是基于智能区块链的智能合约可以提供独特的公平机制,不仅可以为客户提供高透明度和可信度,还可以带来广泛的网络效应。
反欺诈和灵活定价区块链在保险应用中的第二大方面是提高反欺诈能力和定价灵活性。
反欺诈
根据之前的统计,有5%到10%的保险理赔是欺诈行为。通过区块链,我们可以构建一个跨行业的分布式客户资料登记平台,可以帮助我们更有效地识别客户的身份和虚假的人身伤害和损失报告。比如,当一家医院和一家保险公司在同一个区块链网络,客户不再需要线下向保险公司提交一些理赔凭证,然后保险公司花费大量人力财力到医院核实报告的真实性。相反,医院可以直接向区块链上的保险公司出具他们的医疗报告,因此当保险公司获得医院提供的报告时,它可以直接判断这些报告的所有权及其文件的真实性。在这种情况下,伤害保险的直接赔付成为可能,而不是像现在这样,用户先垫付再理赔,理赔前还要提交很多不必要的材料。
此外,如果能完整记录产品或资产在区块链的购买时间、权属及面积的历史变化,对产权证公证、财产盗窃等也有很大帮助。如果能拿到这些完善的材料,可以帮助保险行业大大提高自身的风险控制和反欺诈能力。
灵活定价
至于灵活定价的特点,我们以车险为例。今年车险要改革了。如果之前没有出过意外,优惠成本还是很大的,但其实他的步子可以迈得更大。比如,如果我们能得到驾驶行为、车辆、道路等数据。实时,并通过智能合约制定一些规则,实时计算相关费率,就可以在一些驾驶行为良好的司机的保费上获取更大的利润,让他们以更便宜的价格获得车险。
但在这个过程中需要强调的是,敏感数据的控制权还是应该在用户自己。将数据放在区块链,但区块链需要通过提供隐私授权等机制,允许用户控制使用自己数据的权利。
降低运营成本
区块链在保险业的最后一大作用是降低保险公司的运营成本。通过智能合同操作保单身份、检查合同有效性、通过理赔登记检查保险当事人资料、通过区块链技术进行支付等功能,可以帮助我们大大降低运营成本,帮助我们真正做到无纸化。
另一个典型的例子是再保险。当原保险公司的某个产品风险程度很高时,可以选择将一部分保单转让给一部分再保险公司来分担风险。在这个过程中,原保险公司和再保险公司之间会有相当多的交互,包括保单和理赔的数据共享以及理赔后的对账。如果这些数据可以通过区块链在区块链上共享,保险公司自动化执行的能力可以得到提高。此外,它还提供了一种可审计的方式来提高再保险公司的透明度。
雷锋。com:区块链开发技术的发展现状如何?区块链的哪些特点和优势已经实现了,哪些还没有实现?为什么?或者说,某些功能的整体效果不是很好。区块链应用开发的难点在哪里?还有哪些深层次的关键问题有待解决?为什么?
李雪峰:区块链技术近年来发展很快。众所周知,R3联盟上周开放了自己的区块链实现平台Corda。但它实际上不是真正的区块链,它只是一个——。据他们说,这是一个分散的账本。然后摩根大通也在以太坊上开放了自己的实现。现在国内外都有很多区块链创业公司。
那么最主要的区别就是国内企业更侧重于“链”的层面,而国外企业更侧重于垂直应用的方向,做一些业务创新或者创业。同时,今年出现了很多科研联盟和产业联盟,这其实对区块链落地的普及和推广有很大的帮助。安也有自己的产业推进联盟,也是围绕生态来构建的。
一般来说,实现的特点和优势包括多中心化、不可篡改、数据的安全拷贝、透明审计和数据的全局跟踪;尚未实现的主要集中在——的性能优化和隐私保护特性上,需要更复杂的技术要求。
在性能优化方面,目前业内的一些通用原则和做法是利用优化共识算法,将比特币或以太坊的POW算法转化为权益证明POS或PBFT。那么我觉得短期内这些都是好的解决方案,但是中长期的研究方向应该主要集中在分片上。
为什么我觉得应该在分片?就好像,很久以前,我们去IOE的时候,——,IOE完了之后,就是子数据库子表。趋势总是不可逆转的。无论是状态通道还是优化公式算法,其性能或吞吐量的提升目前都不是非常大规模的提升。要达到一个企业级,几万TPS或者十万TPS,不分片几乎不可能。使用分片策略的主要特点是让节点处理一些只与自己相关的事务,而不是把每个事务都放在所有节点上执行。
但是未来分片的方向肯定是横向的,横向刷可以带来吞吐量质的飞跃。一个区块链实际上是由很多自恋组成的,这使得区块链就像一个有子数据库和子表的数据库。当性能和容量都不够用的时候,只有不断增加子链,才能实现容量和性能的无缝横向扩展。目前无论是开源社区还是众安内部,大家都在积极讨论尝试验证的过程。不过,我相信分片不会让你等太久。
另一方面,从现阶段来看,有办法实现高频互联网交易,但不可能也没有必要将交易数据直接存储到区块链中。因为在区块链网络中,所有的交易都必须在整个网络上广播。如果我们这个区块链在性能和吞吐量上可以接受,那带宽也不能接受;就算带宽受得了,技术和存储也受不了。对于整个实施来说,每个环节都会有一些瓶颈。所以目前的高频处理方案是两朵花,一个表一个。
最后,需要强调的是,区块链的优势不能只建立在功能上。很多人认为区块链实践天然具有容灾和防数据篡改的特性。但事实上,并非如此。虽然是区块链的天然功能,但也和网络的体量、规模、生态、场景有关。只有把体量、规模、生态、场景结合起来,才能真正起到显著的作用。试想一下,无论区块链能实现到什么程度,如果只有一台服务器部署一个节点,那该有多强大?还是没什么。
雷锋。com:区块链产业在应用开发和商业落地方面存在哪些问题?
李雪峰:区块链本身是一个纯技术的东西,实际上是一个技术标准。因此,对于大多数人或企业来说,开发一个区块链实现是一个不现实的问题。因为真的很难,区块链虽然不是新学科,但是对密码学、计算数学、数据结构,甚至社会学、金融学都很温柔。那么每个人最终都会选择一个实现了区块链的产品,然后在这些产品上构建他们自己的区块链应用程序。那么刚才提到的这些产品,相对比较成熟的有Hyperledger,以太坊,Corda。这就好比大家在互联网架构中都会遇到的3354数据库来存储我们的应用数据,但是很少有公司会真正自己做数据库,一定会根据自己的特点选择一些合适的数据库。
所以我想告诉你的事实是,我们很难将它应用于区块链的产品。对于大多数用户来说,区块链的技术原理是什么可能永远都不需要,但这并不妨碍大家使用这项技术。原则上,用产品应该不会太难。但是现在的区块链还是比较新的,市面上比较完善的产品比较少,然后成熟完善的学习资料也比较少,这些产品的开发方向还是不一样的。比如Hyperledger是针对分布式图书运行的,而以太坊是针对智能合约在应用中的实现运行的。所以对于大家来说,如果应用到金融领域,无论选择哪一个,都需要大的改造。比如,众安早期研究以太坊并试图验证其落地,发现其共识机制并不太适合金融领域,很多功能没有实现,比如完整的隐私保护或者金融监管特性,性能无法满足。
基于这种情况,我个人认为发展难度主要体现在五点:
首先是区块链的准入门槛比较高。如前所述,区块链基于密码学、数学算法等。现有的产品非常不成熟,与传统的分布式应用程序有很大的不同。所以开发者在快速进入这个领域之前,可能会有一个很长的学习周期。
第二点是吞吐量,也就是性能差,容量差。因为目前任何区块链的吞吐量都是影响业务落地的痛点之一。例如,显而易见的场景是移动支付或保险索赔。事实上,这种金融场景需要非常高的吞吐量和事务性能。试想一下,如果你想通过手机向便利店进行支付,而你要在扫描二维码的同时原地等待30秒,那么体验是非常差的。
第三点是隐私和监管。区块链是一种共享账本,对隐私保护有更进一步的要求。因为数据是在账本上共享的,每个节点都可以得到完整的数据。如果不能完全保护隐私,可能会出现非常大的问题。我们多次提到,区块链的核心是权力下放。但监管是实际应用业务落地的必然要求,尤其是在金融场景下。我们必须确保我们的行为符合法律,我们必须杜绝一些洗钱活动。监管隐私和隐私其实是有一定冲突的。这也是一个很难平衡两者的地方。
第四是智能合约。虽然前面把智能合约命名为“智能”,但实际上现在的智能合约一点都不智能。目前智能合约中可以实现的业务逻辑在功能上比较单一。对于一些复杂的业务,比如保险领域的核保,或者银行的信用放贷,这些资质判断可能不是通过智能合约一步到位就能实现的。那么对于这样的问题,就需要通过链加链的方式来共同实现。
第五点不是技术问题,而是它的落地和推广成本太高。很多技术与区块链结合后,能产生的化学反应都是剧烈的、颠覆性的。这意味着我们需要大量的人力和成本来验证和推广这些应用。
说了这五点,个人来说,我最关心的是隐私的规制。这是一个非常关键的问题,因为这不全是技术性的,还关系到线上线下的法律融合。——个人资料的使用范围,以及法律的监管措施,也会存在一定程度的权利义务冲突。这将是一个涉及计算哲学的问题,应该说是一个系统分析的问题。
雷锋。com:不久前,深圳发生了一件闹得沸沸扬扬的“诈捐”事件:一位公众作家借女儿白血病筹款,得到了不少支持。但实际上这个人拥有三套房子,属于诈捐。收集了近300万笔捐款,捐赠者没有办法知道他们去了哪里并监督他们。对于这样的事情,区块链能做些什么来阻止改善呢?
李雪峰:这个问题要从多方面考虑。其实众安也在和他的联盟成员做类似的事情,火慈善。首先,如果我们通过区块链建立一个完整的用户体系,甚至是用户资产体系,那么“诈捐”的行为可能根本不会发生。因为一旦一个人提出众筹或者募捐,监管单位可以在区块链上核实他的资产,把他需要筹集的费用和他的资产匹配起来。如果发现是诈骗,这种捐款根本就不应该发生。
那么第二个问题是一个有了区块链后更容易解决的问题。正如我们之前说过的,区块链上的所有数据都不能被篡改,而且是有时间戳的。所以,我们只需要跟踪区块链上的300万捐款,跟踪每一笔转账和消费,费用到了谁的手里,最后发生在哪里,这样这些信息就可以让所有捐款人一目了然了。
雷锋。com:以太坊为什么这么容易被攻击?
李雪峰:出名会吸引人攻击。站在巨人的肩膀上成名。
至于攻击的内容,并不是以太坊容易出事故,而是以太坊搭建的系统防护不好,容易被攻陷。想想吧。区块链首先面对的是真正的大规模互联网,甚至是物联网。但是如果你不掌握互联网架构的精髓来构建区块链应用,你肯定不会走得很远。高频交易,数据一致性,安全防护,监控系统,这些是现在基于云计算的系统的本质,缺一不可。
我去过那里。希望大家注意,不要走弯路,在从事区块链之前好好学习互联网。
精彩问答:问:区块链技术介绍,涉及哪些编程语言?
李雪峰:就在前两天,我在一个区块链技术交流群里看到一个同学说:“我学了区块链一年,已经学会了18种不同的语言!”
目前主流的语言是Go语言和C,包括Java和Python。以太坊会用很多不同的语言实现,最主流的是编程用的Go语言;Go语言最多用于Hyperledger和比特币一样,用的最多的是c。
用什么语言,取决于你是想学习链条底层的实现,还是想做一些顶端的应用。无论实现哪种区块链,他们对外提供的RPC接口还是比较完整的,所以如果只是想做上层应用,用哪种编程语言都无所谓。