PPIO Code Talks 致力于打造一个以上海为中心,辐射全球的高质量区块链学习,分享,交友平台。
9月7日,PPIO 举办了第三期 Code Talks 闭门技术交流分享会。在这一期的活动中,我们有幸邀请到技术大咖 Stanley 老师和学术大牛阚嘉老师,两位重量级嘉宾来做主题分享。本期分享的主题是:1、《联盟链价值观与技术实践 》, 2、《区块链方向学术踩出的坑》。两位老师分享的内容可谓干货满满,在本期文章中,我们先向大家介绍由 Stanley 老师带来的《联盟链价值观与技术实践 》主题分享和现场交流情况。
我们都知道,在区块链世界里,有两大划分,公有链和联盟链。在分享开始之前,Stanley 老师用幽默的举例为我们介绍了联盟链和公有链的发展历程和相互“鄙视”的现状,做公有链开发的认为联盟链不够去中心化,从事联盟链研究的认为公链吞吐量太低,无法商用落地。
接着,Stanley 老师通过三个方面,分享了联盟链的价值和技术上的实践方法。第一个部分是联盟链的所处环境和挑战,第二个部分是联盟链目前商用的解决方案,第三个部分,通过实际案例讲解整个联盟链的运转流程。
区块链发展的现状和挑战
目前,金融行业依然是区块链技术应用落地的主要场景。在全行业分布中,占比超过50%。其中区块链在保险和支付领域被应用的较多,分别是22%和13%。而在过去的5年中,资本在金融行业的区块链应用投入也是最多的,从2014年的0.4亿美金,到目前2019年已经增长到约4亿美金,并且还在持续增加。这些数据说明,现在区块链正在一个高速发展的阶段。并且在现有阶段,区块链在金融行业有更多落地场景的行业。
我们都知道区块链有很多优点,但是在解决金融行业问题时候,是否更具有优势呢?
1、不可篡改?我们知道区块链有防止数据被篡改的优势。但是问题来了,很早前有一种技术叫数字签名。通过数字签名技术,就能够解决数据篡改的问题。那么为什么还要采用区块链的解决方案?
2、可追溯,更安全?金融机构可以把数据记录在区块链上,所有增加,删除,修改的过程都会记录留存,追溯可查。那么问题来了,数据库的功能很早就实现了可溯源。更安全?可是对于企业方来说,可以通过设置数据库的门槛来提高安全性。也可以做到只有被授权的相关者对数据进行增删改查。
3、提高效率?区块链的实现是分布式的、去中心化的,所有的数据要在每个节点做验证和共识,按照逻辑效率更低了才对。
4、数据共享?通过数据上链,共享在整个网络,可以提高效率,让价值最大化。可是对于金融企业来说,数据就是企业的黄金,同时涉及到用户的隐私,又有谁愿意共享,商业逻辑是否太理想化?
这么看来,好像区块链看似美好,实则并无实用价值。那么真是这样么?让我们一起来重新审视区块链的价值。
而目前阶段,更多是金融行业的企业级需求居多,也最有商业落地的可能性。比如金融机构、监管机构、审计机构等。但是对于 B 端的企业,必然会提出四个重要问题:1、高隐私安全 。2、高可用性 。3、高性能。4、高扩展性。
这四个问题都很尖锐,比如高性能,像信用卡的使用,每秒可以处理交易7万笔,而现在的区块链远远不及。那么联盟链是否能解决,如何解决的呢?
联盟链和公链的区别
我们先来看一下联盟链和公链的区别
我们知道,联盟链和公链在技术层面,应用层面的区别很多。但是我认为最重要的是两者的逻辑基点不同,即他们的“准入门槛”的不同。公链里所有的节点都可以加入网络,但是联盟链中会对进行预设,满足条件的节点才能加入网络。今天我们也从这个准入门槛的不同为切入点,来聊一聊联盟链有什么区别,以及它如何解决上述提到的落地问题。
举一个生物学例子:蜂鸟 vs CPU
蜂鸟是生物界最小的鸟,大小在2-5厘米,主要生活在南美洲。蜂鸟的大脑只有数百个神经元,传输速度数百万每秒。蜂鸟可以觅食,寻偶,繁殖,规避风险。但是,为什么我们的通用 CPU 二极管的个数在几十个亿的级别,却没有蜂鸟聪明,没法做到这些事情?现在的神经网络之父,神经元深度算法的提出者特伦斯·谢诺夫斯基,给出的解释是蜂鸟在数百万年的进化中,神经元经过长期打磨进化,是高度专业化的,数百个神经元只对这些事情专注,所以效率极高。
理论上,通用芯片经过编程训练是可以做任何事的。于是我们认为,当联盟链有了准入门槛,则变得更加聚焦,更专注,避免了多余资源的浪费,同样可以建立更高效的可协作行业生态。可以更加专注 B 端企业客户的需求。比如共识问题,在公链中非常复杂,比如 PoW ,PoS ,PBFT,但是联盟链里则变得极为简单。由于节点的准入设定,50%的投票机制则变得极为高效。通常一个数百节点的联盟链,而真正参与共识的节点也就在20-30个之间,甚至更少。对于一个网络而言,并非所有的节点都看重权利,拥有权利也就要付出相应的义务,付出相应的计算,网络的成本也会增加。而对于节点用户,核心需求则是能从新的网络体系中获取多大价值,而非行驶不必要的权利。
在性能方面,目前的公链 TPS 较高的也只能达到几千,主流的厂商的联盟链的 TPS 能在万级以上。由于联盟链节点的准入机制,数量的限制,业务可以更加专注,运作成本也远低于公有链。同时也因为联盟链的多中心化可加密,所以更容易做到用户的隐私保护。
基于以上的优势,联盟链的使命就是更好的服务企业级商业应用,建设一个可协作的行业生态。而现阶段,方向和应用场景主要应用在资产相关领域。比如资产证券化,保险,银行借贷,大宗商品交易,股权交易交割等。
联盟链基本架构
下面我们讲解一下联盟链基本架构。这里介绍的是 HyperLedger Fabric 官方的一种联盟链架构方案的数据流向。我们知道区块链的账本由 peer 节点维护,并不是由 ordering service 集群维护,所以,只有 peer 节点上可以找到完整的区块链信息,而 order service 集群只负责对交易进行排序,只保留处理过程中的一部分区块链信息。其中, Endorsing peer 校验客户端的签名,然后执行智能合约代码模拟交易。交易处理完成后,对交易信息签名,返回给客户端。客户端收到签名后的交易信息后,发给 order 节点排序。Order节点将交易信息排序打包成区块后,广播发给 committing peers,写入区块链中。
详细解释下上图的交易流程:
- 首先,client 发起一个 transaction 交易,含有 <clientID, chaincodeID, txPayLoad, timestamp, clientSig> 等信息,指明了3W 要素:消息是谁 who 在什么时间 when 发送了什么 what。该消息根据 chaincode 中的背书策略,发向 EP1、EP2、EP3 这三个 peer 节点。
- 这三个 peer 节点模拟执行智能合约,并将结果及其各自的 CA 证书签名发还 client。client 收集到足够数量的结果后再进行下一步。
- client 将含背书结果的 tx 交易发向 ordering service。
- ordering service 将打包好的 block 交给 committing peer CP1 以及 EP1、EP2、EP3这三个背书者,背书者此时会校验结果并写入世界状态以及账本中。同时,client 由于订阅了消息,也会收到通知。
这个架构中有两个特点
- 共识方法,一个节点发布一个指令的时候,他可以指定哪些联盟节点来参与共识。就等于智能合约在部署时可以定制化。
- 将共识和读写硬盘分开了。区块链的性能瓶颈很大程度上来源于硬盘读写的瓶颈。将其分开后,前面的共识,速度会非常快。这样的一个原生架构,TPS 就可以达到3000—4000/s。
解决的方法
如果让用户有意愿分享个人数据到区块链中,那么必须保证用户的隐私保护没有问题。即用户 A 的数据传输到区块链中,并且该数据只有用户 A 可以访问、修改。如果有其他人需要查看或者调取用户A的数据,必须要得到用户 A 的授权。采取的解决方式就是数据加密,而在联盟链中,几乎所有的数据都是经过加密的。那么加密后,就会带来合规问题。因为现有联盟链的应用场景中,必须要保证数据的合规合法性,交叉性验证。
联盟链的技术实践
在联盟链的技术实践上,有两个尤为核心的实现技术,一个是可授权加解密,另一个是零知识证明
#1、可授权加解密
可授权加解密解决的问题是用户的数据隐私和数据共享的矛盾。业务场景是当参与方 A 有一套需要和联盟节点共享的信息, 但是 A 希望 参与方 B,参与方 C,参与方 D 只能接收到被授权的信息。 实现流程是将数据或是线下、或是线上加密后传输到区块中, 参与方 A 通过可授权加解密的方式,针对不同的信息分享需求,给参与方 B,参与方 C,参与方 D 分别进行授权。最终参与方 B,参与方 C,参与方 D 只能接收到被授权的信息。当然在这实现过程中需要应用其他技术,比如密钥管理,密钥安全,密钥的传输等。
另外。在联盟链中是一般会有监管节点,通常监管节点可以查看链上的所有数据,来保护用户的使用权益。
#2、零知识证明
第二个核心的实现技术就是零知识证明。主要用于数据库的交叉性验证。验证包含两个部分:
数据在密文状态下的四则运算。
数据在全加密的状态下,可以被校验合法合规性。
举一个银行的融资校验的例子。比如有买方 A,和卖方 B。当 A 从 B 处买东西时,会生成一个订单账本,并且生成应收账款的数据。当 B 要给 A 发货时,则会生成物流数据。当卖家 B 收到账款时,会自动生成发票账单数据。那么在整个流程中,不同的环节产生的数据提供方不同,比如订单数据由买家提供,发票单据由卖家提供,物流信息由物流公司提供。这时,链上就可以实现各个环节的不同数据的相关计算进行验证。比如验证应收账款小于或等于订单总额,比如验证物流数据,单价✖️ 数量等于物流账单的总额,比如验证发票数据与用户订单相等关系。此时,如果该价值链中的任何一方向银行提出融资申请,银行则可以通过以上供应链的验证结果,在不解密各个环节数据的情况下,进行相应的合法合规验证,就是在这个场景下零知识证明解决的问题。
当这些来自不同渠道的数据,在区块链网络可以进行相互校验的时候,银行则可以大大降低放款风险。
当然,在联盟链的实现过程中还涉及到一些其他的技术方法。比如在隐私保护方向,有全同态加密,多方安全计算,可信执行环境等研究。在众多技术中如何做出取舍,各个主流机构都有自己的观点和着重方向。但最终会还会回归商业需求本质,依据不同的商业场景,来进行差异化的探索和升级。
观众问题:如果节点数很多,比如几百个的时候, TPS 指数级下降 。
老师回答: 和共识方式有关,如果预设指令需要几百个节点确认,效率一定会降低,还要根据具体业务场景来看。其二就是网络传输的消耗。比如一些大厂对外宣称自有的联盟链经过升级过后,TPS 可以达到万级别,但了解实际情况可能并不尽如人意,更多都是在不公开的测试环境下测试,甚至有的放弃运行智能合约。当然,由于区块链还属于发展阶段,一些企业为了跑马圈地,也是商业战略安排。
在这一期的 Code Talks 活动中, Stanley 老师从基础架构层和业务应用层为我们分享了联盟链价值观与技术实践。又通过一个实际案例,让我们了解了联盟链的交易流程,和两大主要底层技术,以及商业落地方向。不知您是否对联盟链有了更全面的了解了呢?如果您也是区块链从业者,对区块链技术有自己独特的心得,或者你有区块链相关技术干货希望与志同道合的技术爱好者分享,欢迎报名参加我们 PPIO Code Talks沙龙活动!