中科院博导区块链实验室主任张毅:真正“杀手级”应用是需要靠沉淀慢慢的发掘的
Kyle12月26日-27日,2021CCF中国区块链技术大会在海南海口举办,本次会议由中国计算机学会(CCF)主办,中国计算机学会区块链专业委员会、海南大学承办,中科国鼎数据科学研究院协办。大会战略合作媒体巴比特现场报道。
中科院计算所研究员、博导区块链实验室主任张毅出席并发表主题演讲《区块链轻量化技术》。他在演讲中表示,跨链本身是一个复杂的问题,有架构上面设计轻量化的考虑,有算法方面设计轻量的考虑。我们基本核心的思想就是要按需,针对不同场景我们选择不同的技术路线。真正“杀手级”的应用是需要靠沉淀慢慢的发掘的。
以下整理的演讲全文(略有删减):
十四五科技部立了区块链重点研发的专门的专项,在国家的层面已经把区块链技术放到了一个非常重要的位置和高度,我们作为专家组的一员,我们在企业十四五专项实施方案的时候,突然思考了一些问题。
首先,区块链核心的科学问题到底是什么。针对这个我们的专家组经过了一系列讨论,提出了区块链里面当前所面临的几个关键的科学问题。
第一个科学问题是大家总是在提的,我们的CAP的问题,我们的三大困境的问题,我们的区块链要在性能安全性和我们所谓的公平性之间做一个联合优化的问题,其实我们提的是一个三难的困境,因为三难困境分布式系统里面一个非常经典的问题,实际上区块链上可能我们要同时兼顾的会更加多,而且他们的关系是错综复杂的,我们改善一维的时候,通常就意味着我们在另外的维度上会有所损失、有所牺牲。
怎么样解决多种指标之间复杂耦合的问题,这可能是我们区块链系统里面面临的第一个科学问题。
第二个科学问题是,区块链是一个大家共同维护的多方的帐本,在这种情况下,当我的数据被别人存储了以后,我一定非常关心的是我的隐私如何得到保护,隐私保护机制一直是在区块链做数据共享里面一个不可回避、不可绕过的问题,今天上午有很多的报告,金老师的报告在医疗领域里面特别强调了隐私性对于大家选用区块链技术是多么重要,但是从另一个层面,在隐私保护的时候,也给我们的监管带来一定的挑战和问题。怎么样保证我们监管友好的隐私技术,怎么样在隐私保护和可监管性之间做一个协同的优化,这也是一个非常值得去研究的问题。
第三个问题是区块链系统。前两天我跟闫莺总在工信部的可信区块链的峰会上做了一场原作,我们提到区块链作为一个单一的技术,他其实并没有办法提供全链条、闭环的信任,区块链能保证数据一旦上链以后是不可篡改、不可消除、不可替代,不可伪造的,区块链保证不了数据在上链之前、下链之后如何是真实、可信的。
所以,怎么样把区块链系统和外部的实践高效可信的互联起来,怎么样让真实的数据从外部可信的传到区块链上,怎么样让区块链系统的数据能够真实的传到链外,区块链系统和外部世界的高效可信互联问题是一个非常值得去研究的问题,这里面就牵扯到区块链和很多技术的交叉融合。
我们要考虑跟可信硬件技术的融合,要考虑跟物联网的融合,跟AI的融合等等。
第四个问题,我们说了区块链作为一个规则治理的分布式系统,它是有它自己非常重要的优势,如果说我们现在很多辅助系统的人为治理,人为治理不可绕过的就是我们有规则不透明、规则不公开,规则会被任意篡改的问题,但是在区块链上我们强调代码即法律,当我们把规则变成区块链的代码,写到区块链系统里面的时候,这个一定可以按照我们即定的规则自动化出现。
我们哪些规则可以被写到区块链上,哪些规则容易使用我们现在的技术可编成来指导我们的行动,这是一个非常重要的问题,这个问题是一个前技术的问题,因为我们现在在智能合约里面大家都知道,我们很多时候在这份合约里面的能力有限,并不是所有复杂的技术都可以放到合约里面。
当然了,它也不仅仅是一个信息技术,它还牵扯到我们跟法律、跟很多政策交叉融合的问题,不管怎么说,怎么把经济活动,特别是区块链未来在元宇宙这个大的空间里面,怎么样更好的承担规则的功能,一直是一个非常重要的问题。
这就是我们现在根据当前的形势整理出的四个区块链领域的科学问题,科学问题一定是随着技术的发展不断变化的,我们也相信未来会有更多更新的科学问题出现。
今天,我们主要想谈一下轻量级的区块链。所谓轻量级区块链就是指在资源受限的情况下部署区块链的系统,这里的资源包括我们的计算资源,我们的存储资源,也包括我们的带宽资源,也包括我们的能量资源,设置一个轻量化的区块链的系统,它一定是一个全链条的,多层级的设计的方案,贯穿了整个区块链系统里面设计的各个层面,从我们的系统机构,到我们的存储方式,到我们的共识机制,到我们的算法,到我们的协议,到我们的合约等等,在所有的层面里我们都应该去考虑轻量化设计的一些需求。那么首先我们在架构的层面,大家现在考虑做区块链轻量化的时候,一个非常朴素的想法就是我分而治之,我把传统的一条链给它打散,但是很多的通道,很多的子链,很多的共识组等等说法不一样,但是基本的思想就是我减少,我把它采用分而治之的方法来平衡大家资源的损耗。
但是传统的这种分片的系统,其实有一些不同的架构,有一些是基于星型的架构,比如说以太坊最早提出来的,它就是基于这种架构,我用一个主分片来连接其他分片的时候,我们原来就发现他这里面会有性能的一些瓶颈,所以我们认真的去分析和建模了一下。在不同的时候,它的这种采用分辨星型架构的分辨系统时,它的TPS会存在一些不同性能的瓶颈。
在负载比较低的时候,在我们分片程度不是特别大的时候,在我们并行化程度还不是特别高的时候,那么这时候我们系统整体的性能实际上可以随着我们并行化程度的提高,随着我们分片数量的增加而提升,但是如果采用星型架构当数量一旦超过一定的范围,超过一定的限制,我们会发现这个主分片会成为你新的性能瓶颈。
这个在进一步去做并行化时可能你的性能是不升反降的,那我们这部分理论分析的结果做了真实的实践很好的去模拟出了一些效果。
当然我们把这条链发成多条链以后,其实我们刚才说了为什么他会出现一个性能的拐点,很重要的一点是采用星型架构的时候,如果我们跨链的交易,跨分片的交易太多后,所有跨分片的交易就要涉及到主分片的处理。所以主分片就会变成新的瓶颈。
那么怎么减少跨分片的交易,这其实就是会影响到我们这个性能的拐点出现的位置。我们做的越好,我们的拐点出现的越好,这里面我们采用了一些很简单的,也很朴素AI的方法,我们通过去学习链上的行为,然后改进我们的策略,从而使得我们对这个性能瓶颈有明显的提升。
那么这是第一步,如果我们采用星型的架构,怎么样会出现性能分析的问题,更近一步的是我们考虑到即使我们采用再好的方法,我们仍然没办法完全避免我们跨片交易的这种产品。那么跨片交易一旦出现之后,它一定会非常显著影响我们整个系统的性能。
有没有可能我们不采用星型的架构,我们就采用完全分布式网状的架构去设计,那么在这块我们最新提出了一种,基于同构多链设计的“无中继链”平行的架构,我们这里面部署了自己的一些协议,然后保证它的原子性,另外我们也提出一系列处理负载均衡的算法。
我们把我们这个同构多链的设计用到了很多的链条上去实现,我们在比特币上去实现了,都去链的性能有很重要的提升,我们也拿国产比较好的联盟链去实现,现在基本上TPS是可以达到10万以上的。
那么更近一步在共识算法的层面,其实做轻量化大家主要的思想还是在确保公平性、安全性的前提下,尽可能去减少参与共识节点的开销,那么我们共识算法,我们知道把它分为工链和联盟链的话,我们会发现这两个共识算法他们性能的瓶颈可能是由不同的因素去制约的,那么在供应链的里面,其实更多采用的是竞争性的共识。
竞争性的共识其实就是一开始大家提到的,不可避免的一些能量的损耗、一些资源的损耗,而联盟链的这些共识我们现在采用BFT类的共识,很多时候它的性能瓶颈是局限在消息传输的时候造成的,所以我们把那部分我们一会方法到传输那块。那么在这部分共识里面,我们主要想跟大家分享的还是在竞争性共识里面所做的工作。
当然,竞争性共识其实对我们现在的联盟链用的一些,协作共识或者说这种,其实他比起来还是有自己的一些特殊点和优势,比如说在竞争共识时,我们在没有数块之前我们永远是猜不到下一个的节点,但是我们现在如果用BFT类这种方法,我们实际上是在一个块产生完了之后就可以预见到下一个的一些节点。
那么在竞争性共识里面,我们现在要解决保证他的不可预测性,保证他的这种情况下来提升他其他的性能,这里面其实我们做了一些简单的工作,比如说我们原来在针对POW这种方法,我们提了一系列改进POW的方法,针对单个节点在纯POW的这种环境里面,它的共识开销、能量损耗、算力损耗太高的问题,我们提出了一个基于一致性的共识机制。
我们采用了两个阶段,先通过筛选,然后再用POW去完成竞争,这样的话在每一轮里面其实参与竞争的这些节点,数量相对比较有些受控,可以减少我们竞争的开销。
更尽一步,其实我们现在也在研究在这种场景下,如果我们针对我们大规模的联盟链的场景,我们的节点更多,我们要保证联盟链的公平性,还要保证联盟链节点不可预测性,我们叫做随机性。
那么在保证这种情况下还要保证它的高效性,我们也提出了一条新共识机制,我们现在在初步的实验结果里面,也都证实了我们的有效性。在单链上的共识或者在多链的环境下,我们跟创新工厂我们有一个区块链联合实验室,这是在2019年的时候我们做了一套共识的机制,其实它就是把单一的一笔交易划分成两笔交易,然后把它放到不同的分片上去做。
原来如果我们分片之前采用同步的机制,那么整个系统的性能就会被阻塞到另外的分片上,随着我们分片的数量增多,我们单一分片里面的结果数目变低后,整个安全性会受到影响。
我们这里面提了一个链路共识的机制,我们把一个同步的共识分成了异步,把异步交易拆成两笔交易,我们保证最终的一致性,通过这个机制,让一个节点在一个分片上的竞争共识的这种机制扩散到整个全链上,从而使得对单个分片的攻击难度,就跟我们对整条链的供给难度一样。这里面我们也做了一些实践,取得了很不错的效果,这是在共识的层面。
那么在存储的层面,大家现在针对区块链的存储资源相对比较宝贵,在这种情况下提出了各种各样数据压缩的方法,所以大家都要靠数据压缩来解决,那么我们在比较早期的时候其实也提出了一些数据压缩的方法,当时我们针对像传统比特币等那种数据库,我们提出了一个节段和一致性冲突检测的机制,我们可以把我们放到更低的位数上,但是会产生冲突,那我们又设计了一套冲突检测。
对这部分我们是区分热数据和冷数据,我们把当前的热数据放在第一层上,把他历史上一些数据放到二层上,这样根据我们的经验,其实大家绝大多数的时候还是在热数据上,所以在底层里面就能够帮助我们解决很多的问题。
那么这一块我们的数据压缩力和整个通过我们做数据压缩以后,对性能都做了测试。接下来就是传输层面,传输层面其实会在整个区块链系统的设计里面还是一个非常重要的,现在随着我们节点规模越来越多,随着我们要在链上传的东西越来越多的时候,怎么样减少数据的冗余传输,可能会成为影响我们系统非常重要的因素。
传统大家基本上都是在采用经典的一些B2B传输的协议,无论是基于BCT的方案提出各种各样传输的协议,但是这些传输的协议,这些B2B传输的协议,其实无论是结构化的也好,还是非结构化的也好,最早期的时候,他其实都不是为了区块链来设计的。
那么他跟区块链做B2B传输的需求,是有明显的不同。我们有两个分析的发现,那么第一个就是在传统的B2B的场景里,无论我们传一个视频还是传一个文件,我们要传输的内容是很多的,我们数据载荷这个阶段是很多的,从而使得我们前面的区块头,他的开销没有那么明显,但在区块链上我们可能一笔交易很短,我们甚至也很多空区块,这个时候我们前面头部的开销尽量要压缩,这是第一。
第二,我们传统做B2B的时候,我们开发一个直播系统,开发一个文件下载系统,我们要把一个单一的数据源把它扩散到全网里面去,我们关心的是最早一批能够接受到我这个数据拷贝的那些节点,它的性能。
换句话说早期有人帮我接收了以后,我就可以有人来帮我更多的去分担我下游传输的需求。但是在区块链上不一样,区块链我们因为是在为共识机制去设计了很多B2B的传输,所以我们关注的是最晚那一批的节点,当网络中绝大多数的节点,他们收到我们的数据拷贝他的性能,所以优化的目标不一样,以前人家一定是关注最早那一批人,让他们要尽快的去输导。
而我们现在更关注的是所有的人都要在规定的时间内尽快接收到。针对这个问题我们也提出我们自己的一套专门针对区块链的B2B传输协议,现在已经做了真实的实验,针对我们现有区块链系统,无论是结构化还是我们针对现在已有的经典的结构化方法,我们都有一个比较明显的性能提升。
那么在合约的层面我们刚才也讲了,我们现在虽然不断的再去优化,但是对于很多轻量化应用里面,他可能我们还是很难去满足他的需求,特别是现在大家核心的思想都是通过优化虚拟机,通过增加一些操作,来把我们合约方面的一些处理下沉到区块链的底层去做。
这一部分我们也有一些简单的尝试,比如说我们最几年一块去承担的科学部的项目里面,我们在区块链域名项目里,针对专门的域名系统,区块链域名的操作设计了专门的操作服务。我们来支持区块链上做运营查找的一些高效和安全。
那么在跨链里面也是,我们需要一个什么样的跨链架构,其实跨链它本身也是一个复杂的问题,它这里面有架构上面设计轻量化的考虑,有算法方面设计轻量的考虑。我们基本核心的思想就是要按需,针对不同场景我们选择不同的技术路线。
在跨链时或者在单链里面,其实我们都有一个问题,我们现在如果说是一个节点它的能力特别弱,我们现在给它提了一些轻量级的验证方法,我们可以让它做一个新客户端,做SPV的验证,但是即使是做这种验证,其实仍然是需要去算一些东西,所以你还需要有一定计算的能力。那么SPV验证时你可能需要去保存一些关键的、头部的信息,所以你还有一定存储的开销。
在做SPV验证时,你可能跟一个节点通信不能够完全保证真实性的时候,你需要去跟多个节点通信,所以对你的传输带宽也有一定的要求,如果我一个节点特别弱,我连这样的计算、存储和传输都承受不了时,我们也给它提出一套新的区块链轻量级,区块链验证的方法,我们采用一个随机分组的方式,通过组内一致性的执行,帮助每一个我们这里面的客户端,他其实只需要一次就可以零次计算帮助他得到可信的验证结果。
在这里我们也去看了一下跟SPV比起来,它的存储、通信和确认时间这方面都有一些改善。那么最后我想讲一下,因为这次也是在上一次场合里讨论时大家很关注的问题。
区块链技术诞生到现在其实才十几年,我们火起来这个技术也就是最近五六年的时候,而您现在想到的这些问题,哪个其实都是在区块链之前都已经存在的问题。对于这种场景里的问题它怎么可能没有区块链技术,就完全做不到,所以我们现在不需要过多的去纠结什么场景一定离了区块链不行。
也就所谓的,只有区块链才能解决这种“杀手级”的应用,真正“杀手级”的应用是需要靠沉淀慢慢的发掘的,我们的互联网就是一个例子,我们早期的互联网传个文字、视频,那时候传个图片都费劲,到了九十年代初我们有了门户网站,大家说互联网的“杀手级”应用出现了。
再到今天真正互联网进入到我们生活的方方面面,进入到我们衣食住行各个方面时,我们才会发现这才是真正它的一些“杀手级”应用,所以区块链技术当前我们可能很难去预见将来完全基于它。也可能元宇宙里面将来就会有一些技术,只有区块链能去解决,有一些应用的场景。
但当前这个阶段,我们还是踏踏实实的,我们就找我们现实生活中的场景,如果这个东西用了区块链以后它的成本能降起来,它的效率能提上去,我觉得对区块链技术的使用应该是加以支持的。