metamask安卓版下载|扩容与隐私计算技术的发展现状_MarsBit

简介

随着以太坊网络使用需求的不断增加,网络拥堵现象愈发严重,并以此推高了对象的交易成本。扩容,作为提升以太坊性能的解决方案,在过去的两年,一直是用户和极客所BUILd的焦点。特别是在今年,POW到POS,区块链不可能三角、Rollups+分片、zk等一系列热点词,在以太坊合并事件的助推下,频繁出现在大众视野,也催生了很多以扩容为需求场景的技术探讨与实践,这其中不乏老调重弹,也有新技术,映入眼帘。

随着ZK技术的发展助力,对扩容及其关联性较强的隐私计算领域的未来发展,产生很多积极的影响。DAOrayaki认为有必要在2022年收官之际,跟社区的小伙伴做一次系统性的总结,扩容的技术发展至今都有了哪些突破,产生了哪些解决方案,ZK技术的崛起,对扩容,对隐私计算技术的未来发展,又有着怎样的影响?与之前播客不同的是,本次我们邀请到的嘉宾,是一位来自DAOrayaki社区内部的贡献者,DAOrayaki在该领域的部分研究文献,就是由他加工并创作完成,今天就让他跟大家一起来聊一聊,扩容与隐私计算技术的发展现状。

技术

主持人:Shaun

(DAOrayaki 负责人)

嘉宾:HTseaat

(在读研究生,研究领域也是主要关注在区块链和应用密码学层面)

技术

正文

Q:欢迎,seaat,我们从最基础的入门课程来梳理,我觉得我们在聊整个扩容,可能第一个涉及到的话题,还是从状态通道开始,就是state channel,所以,有请seaat先跟大家交流一下什么是状态通道,State channel,欢迎seaat。

状态通道其实属于是一个链下扩容的技术,而我们平时不是叫它状态通道,而是管它叫做支付通道。支付通道和状态通道有什么区别呢?支付通道我们主要要解决的问题就是目前区块链链上的处理交易性能不足,支付通道主要是把这些计算移到链下,我们要在链下开启通道,在这个通道里面进行交易,从而来提高链上的和整个区块链的处理交易的性能。

而状态通道,是一个更general一点儿的说法,就相当于说我们不光想在这个通道里面执行交易,其实交易我们抽象出来变成计算的话,就相当于是一加一减,毕竟交易就是相当我给你一块钱,那我的钱包就要减一,对方的钱包就要加一,而状态通道是一个相当于是我们可以在这个通道里面做任意的计算,通用的计算,比如说一些链上的游戏,就比如说链上的棋类的游戏,它需要每一个回合需要同时在线,这种游戏我们也可以放到通道来进行,当然这个时候就不能作为支付通道了,我们需要一个更广泛的概念,就是状态通道,但是在接下来的讨论可以先简单的称为支付通道,因为状态通道这个概念还是比较广泛我们可以先细化一下。

Q:所以作为老概念,对今天整个行业的发展有什么影响呢,比如说接着刚才聊到的这个话题我们再谈支付通道Payment channel,像Payment channel这类技术应用都会应用在哪些比较广泛的,实际的技术应用中呢?

相信大家对于链上和链下扩容都会有些了解,毕竟区块链处理性能的局限性已经有一段时间了。所以说关于我们就要运用一个公式去提高区块链的性能,也就是吞吐量除以这个验证交易的一个开销。

所以说针对这个公式,我们可能就有不同的方法。比如说,我们针对降低这个验证交易的开销的话,我们可以优化一下共识算法,例如从POW换成POS,或者再来换成DPOS。另一种方式是我们可以增加吞吐量,这其实就有很多方法,比如说链上的就是扩大区块的容量,是最最简单粗暴的一种方法。当然这个带来的问题,就是扩大区块容量之后,我们能验证这些区块的硬件的条件肯定会增加,从而导致了这个矿工,也就是整个可以验证,参与共识的这些节点,会慢慢变少。这就造成了一个中心化的问题。

所以说,其实所有的扩容技术,我们想要达到的最终目标就是打破这个区块链的不可能三角。因为我们也知道,区块链的不可能三角是由安全性,中心化和可扩展性组成的。安全性是我们不能妥协的一个属性。因为安全性代表了网络受到攻击的运行能力。所以说,我们更多是做一个去中心化和可扩展性的一个trade off,也就是权衡取舍。所以说,我们的目标就是如何在保证去中心化的同时增加可扩展性。而如果我们简单粗暴地把区块链的扩容作为一个就增加区块儿链容区块儿的这个容量的话,其实就违背了这个区中变化的特性。所以,Sharding之类的链上的扩容有一个问题,就是它需要对链上的整个区块链框架进行修改。因此,它对现存的一些区块链系统,像是比特币和以太坊的改动会是比较大的。

而链下扩容的核心思想是这样的:既然链上的验证成本开销这么大,我们为什么不能把这个计算放到链下来执行呢?毕竟并不是所有的交易,我们都有必要把它记录在链上的所以说,链下计算这个核心思想告诉我们并不需要对现存的区块链的整个架构进行一个改变,而链下扩容这些方案是更适合,也可以更加容易地融入到比特币,或者以太坊这些现存的区块链系统。而且这些现存区块链系统,它确实都有自己的这个链下扩容的一些方案。比如说比特币,它有闪电网络,以太坊,它有雷电网络。

目前的这些应用的话可以等会再讲。我们可以先把整个过程先梳理一下。其实主要的问题,就是区块链目前存在一个链上处理能力不足的一个问题,所以说我们要怎么解决问题呢?我们就是分出了两部分,一部分链上扩容,就是通过修改区块链,它本身来提高整个区块链的处理交易的性能,或者我们另外一个技能树呢就是把交易放到链下来就行,也就是链下扩容。而支付通道,也是属于链下扩容的技术之一,当然这个链下扩容里也会涵盖其他的一些技术。

Q:所以听下来,目前支付通道应该算是在链下扩容里面比较主流的方式。

对,其实目前主流的几种链下扩容有Payment channel支付通道和Rollups。其实大家可能听的更多的是Rollups这个技术,比如说zk rollups,或者openingRollups,现在很多项目其实是这个。我先来简单介绍一下这个支付通道和Rollups,它俩虽然都是链下扩容的技术,但它俩有些什么区别?

首先,支付通道想解决的问题是频次高的一个小微交易,就像我们日常生活中的场景。但是我们目前关于区块链的共识以及它的整个特性,决定了它并不适合于普及到我们的日常生活中这种小微交易的场景,为什么呢?首先是它的处理交易速度相对于主流的那些交易方式根本不是一个数量级的,这个得承认。其次就是,因为这些共识算法的不同,我们需要给矿工支付一定的手续费,而这一部分就很大程度上限制了它作为日常生活的一种支付的方式。比如说不可能我在商店里面买两块钱的水,我需要给矿工支付五块钱的手续费,那肯定是不可能的。所以说,支付通道就是为了解决这样的问题。

其实我们也刚才也说了,我们并不是需要所有的交易都要放在链上进行记录,所以我们就把这个交易放到链下来执行,支付通道简单来说,其实就是这个通道的双方各自在链上锁定一笔钱,然后在链下开启一个通道。这个通道,这个链上锁定的钱,它可以作为面向通道双方的初始余额。比如我在链上锁了十块钱,你在链上锁了八块钱,那么我们开启了这个通道之后,我的初始余额就是十块钱,而你的这个初始余额就是八块钱。而且在这个通道内,所有的交易,是可以及时发送的,相当于说我就可以使用日常的那些支付方式直接转给你。这个速度一般按理论上来说是一样的,并且它不需要矿工进行验证。这个为什么不需要矿工验证呢?换一个角度来看,我们为什么要旷工来验证这个交易?我们需要全部的节点,对这个交易的有效性达成一个共识,而在我们的这个链下通道里面,我们的通道只有两方,所以说,就不需要那么多节点来对这个交易的有效性进行共识了。只要我给你转了一块钱,钱上面带了我的签名,你验证了我的签名,那么就可以验证钱是由我来发出的。这个共识其实就是我们两方达成的共识,不需要一个多么复杂的共识算法,也就免去了矿工验证的成本。

也就是说我们在链上锁定了钱,我们开启了通道,因此我们可以在这个通道里进行任意笔次的交易,而且不需要手续费之类的。只需要在我们做完所有的交易后上传,比如我有十块钱,你有八块钱,我一块钱一块钱地转给你,最后我把所有钱都转给你了,你有18,我没有钱了,我们只需要把最终的通道里面各自的余额,我们也可以叫状态,然后上传到链上,链上根据我们最终的状态进行余额的分配,核心思想就是我们不需要把所有的交易都记录在链上,我们只需要记录最终的交易多少钱就行了。

我们举一个不是很恰当的例子,比如在一个大型商超里面,我们购物后,在结账的时候,不可能把每个购物车里面的每个商品都扫一下,然后打张发票;我们肯定是需要把购物车里的所有商品都扫描一遍,扫描完了之后打出来一张总账单,根据这个来付款。

所以在支付通道也是同理,我们只需要把最终的钱,最终的各自通道内的余额上链,进行一个金额的分配就可以了。而rollups技术跟支付通道技术,有区别的一点是在哪里呢?支付通道是只需要把最终的状态上传到链上,但是rollups技术,我也不具体说是用什么技术了,主要来说它很简单,就是需要把一些中间的状态上传到链上。其实rollups技术,就是在链上,只存储链下这些节点的一些状态信息,而状态信息是什么?状态就相当于是你链下的节点,它的地址是什么,它在链下的余额是什么。这个我们都可以统称为状态。也就是说,链上的合约,其实只是存储链下节点的状态,而链下,整个过程之中发生的一些交易就会导致这些节点状态的改变,就比如有些账户链下节点的账户余额减少,有些节点的链下余额增多,而在这个链下发生交易周围当中状态的改变会导致了链上记录的合约状态发生一些更改。每隔一段时间,链下需要把这一段时间内更新的这些交易以及这个更新的节点状态打包上链,供链上进行验证,以防止一些节点恶意篡改自己的状态。比如这个链下节点里面只有十块钱,但是我偷偷把自己的状态改成我有50块钱,这种问题是需要避免的,所以我们需要把这段时间所有的交易放到链上,供大家来做交易有效性的验证。

而支付通道和rollups技术这两个链下扩容技术有什么区别?其实大家也能看出来这些区别,就是这个支付通道只是提供最终的状态,而rollups技术它需要提交一个中间的状态,其实我们也能换个角度思考,就是支付通道它是把链上的计算和存储全都转移到链下,其实在这个链下开启通道之后,在这个通道里面进行任意的交易,其实是除了你通道之外是没有人知道的,你也不需要放到链上去记录,而rollups技术,是将这个计算和一部分存储转移到了链下,因为支付通道它是没有一个时间限制的,你想开启这个支付通道不想关的话,它是可以永久不关的。

所以如果只是单纯的和通道内的这一方进行交易的话,其实完全不需要和链上做任何交互。而这个rollups技术是有时间限制的,是需要隔一段时间将这段时间内的这个交易类似压缩包的形式上传到链上,但这同时也会导致一个问题,就是支付通道的话就是两个点,所以如果我这个节点想和别人做一些交易,没有直接连接建立通道交易的话,这是个非常麻烦的过程,但是在rollups技术他的这种实践逻辑下面,其实可以和链下的任意节点进行任意相互的交易,毕竟他是要每隔一段时间要把这一段时间内的所有交易更新后的状态要打包上链,是要验证的,所以这就是这两个技术带来的一个区别。

Q:感谢感谢,讲的很详细,我也认真的在听,边学习边在思考。

有什么不懂的吗?不懂的也可以再问。

Q:但我听下来,实际上rollups它的技术在应用层次会更方便一些,是吗?我这么理解对吧?

对,毕竟更多的场景并不是我们两个节点之间建立通道就一直交易,更多日常生活中的场景是在这个商店买一点儿,下次再去另一个商店,并不会建立一个永久的通道进行交易。其实这个场景是比较有限的。所以rollups是更加贴合现实场景的一种技术,但它的缺点也是有的,就是你需要隔一段时间把这段时间内的信息上链。所以它就是把一部分的计算和存储放到链下,另一部分存储是在链上的。

Q:所以接着我们刚才聊到的,因为现在主流应用Payment channel的可能会更多。那您可以分享一下更多关于Payment channel的主流应用场景吗?

目前来说,Payment channel的应用场景更多还是放在链下计算,如果你要说具体应用在什么场景比如说医院或者什么之类的话,其实我倒也举不出来比较详细的例子。因为线下扩容的这个技术,大家更多是把目光放在了rollsup上面。在支付通道这方面其实是比较小众的。最近还有很多zk rollsup的方案很火热。

Q:但实际上会有一个支付通道网络的概念是不是?这个可以跟大家聊一聊吗?

这是因为,如果我想和没有建立通道的链下节点进行交易的话, 我们应该怎么做呢?这其实是支付通道的一个问题。支付通道不管是从学术上,还是工程实现上来说的话就是非常简单的。在链上,不管是在合约还是什么东西里面,我们存一笔钱,其实就相当于是在链下做一些协议的要求。相当于是在链下开启一个通道,抽象出来一个通道,所以说它并没有什么问题可研究的。主要的问题就在于如果我想和没有和我直接建立通道的节点进行交易,那我这时候应该怎么做呢?这时候其实就引入了一个叫支付通道网络的概念。为了解决问题,这里就引入了六度空间理论(又,六度分隔理论(英语:Six Degrees of Separation)认为世界上任何互不相识的两人,只需要很少的中间人就能够建立起联系。哈佛大学心理学教授斯坦利·米尔格拉姆证明平均只需要6步就可以联系任何两个互不相识的人。),通过六个中间人就可以认识一个陌生人。如果我们把每个人之间的联系抽象成线的话,我们就得到了一张社交网络的图。在支付通道中也是同理。我们把链下节点作为点,而把两个点之间连接的支付通道作为一条线,我们得到类似的一张图。所以说就算我和别人没有直接的通道的连接,我们可以通过一些中间的节点合建通道连接,让他们作为转发。如果A想和D进行一笔交易的话,A和B连接了有支付通道,B和C有连接,C和D有支付通道连接,那么我们就可以把这个钱从A转到B,从B转到C,然后从C转到D。这其实就间接地完成了这笔交易,通过了B和C两个节点的转发,就能在链下的整个支付通道网络里面完成这种间接的交易。所以这也是为什么比特币的Payment channel项目叫闪电网络,而以太坊的叫雷电网络。都带了“网络“这个词。这也会引出来一些理所当然的问题。我们怎么能保证中间B和C收到钱之后继续往后转呢?为了解决这种问题,我们就会有一些技术来解决这样的问题。

比如说闪电网络,就提出了一种智能合约,我们也就是Hashed Timelock Contract,简称一般都叫HTLC,这个技术是什么意思呢?比如接收方D,它随机生成一个密钥,以及对密钥生成一个哈希,相当于是这个D,它有一把锁和一把钥匙,它需要把这个钥匙给这个交易的发送方,于是这个我们把这个钱先放到一个箱子里面,然后拿锁锁上,然后我们一直传递的是带上锁的箱子,一直传递到了D这块,如果B和C节点想要得到中间转发的这些钱的话,就需要最终的接收方D在收到消息之后,要把这个钥匙给其他人,才能把这个金额拿出来,简单来说就是这么一个思想,也就是通过技术是要保证原子性,原子性是什么呢?就是多通道路由的转发交易,我们要保证这个交易要么成功,要么失败,就是不可能存在一个零和一之间的状态,不可能一个交易卡在B这里永远不动了,所以说用了HTLC技术,就能保证这个钱要么成功的转到了D这里,要么这个钱原封不动的再退回A,这个技术主要解决的是之前中间这些节点转发交易的做恶的问题。

Q:他压缩了B和C做恶的空间,不给他们做恶的机会。

其实后面也能衍生出来一些支付通道网络特有的问题,我也可以和大家简单说一说,比如两个节点建立了一个支付通道,在通道里面我们都有100块钱,这时候通道就是双向的,我可以给你支付,你也可以给我支付,但如果我们通道里面钱变成了我是0,你是200的话,那通道变成了一条单向的通道,这个场景有什么应用场景呢?

两个节点的身份可能是一个是商店,一个是买家,交易的流向只有买家一直给商家转钱,因为买家需要买东西,万一这个通道里面金额耗尽了会怎么办?

一般的话是需要把这个通道关闭,然后再从链上重新开启一个通道。但是这个方法带来一个问题,就是需要和链上进行交互,交互的话就会产生手续费,这就是比较小的问题,所以比特币的闪电网络提供了比如loop的非托管服务来解决这样的问题,相当于是我们可以不和链上进行交互,相当于通过一些技术能够把钱再转回我这里而不造成金额的损失,这个就是通道再平衡的问题。这是一个比较小的问题。还有一个问题就是如何保证转发的交易是成功的呢?比如我想转发10块钱,但是B和C的通道,B只有5块钱,就算B和C没有做恶,这个交易必定是不成功的,因为通道里的金额是小于我想交易的金额。

这个问题有两个解决办法,第一种解决办法就是,比如节点A知道网络里面所有其他节点个余额,比如知道B和C通道里面有所有的钱了,可以走这条路转换发交易,但这就会带来隐私的问题,毕竟谁都不希望让别人知道自己钱包里面有多少钱。

所以比特币的闪电网络,就想了这么一个办法,不公布通道里面各方的余额是多少,但是公布在网络上的是什么信息?是两方通道余额加起来的总和,把这个信息公布在网络之上,你可以根据公布在网络上的通道的余额总和,去猜它有没有足够的钱来完成交易,这个是能保护隐私的,但带来的问题是整个网络的交易成功率不高,这个问题怎么解决?其实有一些方法,比如既不能公布真实的余额在网络里面,它可能会造成隐私泄露,那么能不能在网络上公布虚假的余额,比如我和你这个通道里面,我们分别有十块钱和八块钱,那么能不能公布在网络上各自通道里面的余额是七块钱和七块钱,就是相当于是用临时证明技术,我证明通道里面的真实余额是要大于等于公布在网络上的虚假余额的,这样既能保护到隐私又可以保证交易成功率。另一个问题就是,比如我B和C公布在网络上的余额,是一和八,而我想转六块钱,这时候我就能确定它的通道里面是至少有七块钱和八块钱的,比如说用零知识证明我生成一个proof来证明这个通道内的真实余额是要大于公布在网络上的余额的,相当于是用了一些密码学的技术来statement真实余额是要大于虚假余额的。

我给其他人证明这个陈述是正确的,其他人就可以看虚假余额,进行交易的转发,这个就是一些大家在新研究的技术来能在保证隐私的情况下,提高整个网络的交易成功率,但这些其实还没有实际部署在这些具体的工程实践上。

Q:OK,我稍微做个总结,不对你纠正我,因为我不是技术背景出身,实际上现在用到的其实更多的是引出了支付通道整体网络的概念。那在支付网络里面,其实能够发现现在有些问题,比如有一个存在这种多通道多通道交易的问题,A转B转C,那么CB和C的作恶的问题,它现在有一个大体的解决思路,它会有HTLC这种技术去解决通道交易,同时,好像在整个的这个环节中,它还会有一个金额的问题,因为它涉及到了一个可能重新关闭再开启通道,和链上交互的开销的问题,那可过这种像loop这种你谈到的非托管的服务来解决。

当然还有一个可能就是涉及到刚才我觉得还是蛮重要的,就是你谈到的这个隐私的问题。因为确实我们本身在在做这个领域研究时候,会从各个角度去去讨论,那最终都会落到一个点,就是关于隐私,因为去中心化这件事情本身,它对于对于隐私来讲,就是有一点儿矛盾的,当去中心化对隐私属性就要变弱,但是隐私,本身它又是一个强属性的东西,所以刚才我们有聊到了关于问题去解决方案,所以在这里,就会引出话题也是我想问到的,我这两年在研究隐私计算,其实我对隐私计算,我还没有特别明确的概念,所以今天也是想借这个机会,我想请教您的隐私计算

它大体说通俗化理解是一个什么概念?它跟我们今天谈到的,这种隐私问题什么的,它是有什么样的关系呢?

其实我对隐私这方面研究也不深,我只能提出个人的一些拙见。

其实隐私计算,我们通俗化理解就是,隐私计算,一个隐私一个计算,那其实把这两个词拆解出来看的话,就是我有一些隐私的数据,而我们想用这些隐私的数据进行计算,得到的一些结果,这就是隐私计算一个通俗化理解,这个理解起来也会有一些有些拗口,有感觉是个矛盾的问题。就不想把这些数据公开,但是我们一百个想把这些数据不公开,又想把这个数据拿出去做计算,但其实这个场景也在我们生活中其实挺常见的,比如说拿最常见的医院,医院病人的数据,我们想去拿这些数据去训练一些模型,比如说训练出来这个模型,可能就是能输入一些病人的一些这个病状特征,他能通过训练出来的模型,我们能够得到诊断,可以简单的归咎到哪一哪一类的病例,可能这个就其实很大程度上其实能减少医院的压力,相当于这相当于是就是马上就医,但是医院的病人的病例数据,他是不能公开出来的

所以说,这其实就和隐私计算的场景非常非常符合了。这样的场景其实还有很多的,比如说一些公司的一些客户的一些数据是不能公开出来的,但是我们又想拿这些数据和其他的公司进行一些交流,这个场景是在生活中是有很多的。

Q:那现有的就是区块链领域,围绕隐私计算的技术的类型都会有哪些?它会解决什么?区块链的分类之类的。

其实区块链的话,目前的应用场景主要还是金融以及虚拟货币方面,它的隐私保护其实就是保护交易的隐私,毕竟现在电商的一些交易,输入取款哈希的话,都能查到交易,但有时候我们就是不希望交易是被大家看到的,这方面对隐私计算的关系,更多的就是保护支付的隐私。我不想让网络上所有的节点知道我给谁转钱了,转给谁,转了多少钱,但是其实是跟目前去中心化的想法是违背的,就是既然我不知道这笔交易是由谁发送的,是发送到哪里,那我怎么判断这个就是他发送这笔金额,他到底有没有大于他自己本身的钱?

比如说我在这笔匿名的交易里面,我说我要发送90块钱,但是我本身账户里面我只有50块钱,如果是在一个驱动性化公开的网络里的话,他可以通过交易发送方的地址很容易查到账户里面是有多少钱的,但是如果把这个交易的发送方和接收方连起来的话,就并不知道交易的发送方,他到底有多少钱,到底他的钱数能不能够支撑他完成这笔交易,所以这其实就是隐私计算和区块链之间矛盾的一个地方,也是主要研究的一个地方,这也就是为什么这时候大家特别想用零知识证明,就是之前火的,他其实用零知识证明可以做匿名交易的区块链,他们主要用了零知识证明的什么属性呢?其实他们用的那个方案,基本都叫ZK ,大家其实应该听说过,就是零知识证明就是listproof里面的一条技术路线,这条技术线比较好的一点是什么呢?它生成的proof具有简洁性,就相当于它到proof,不管输入,电路,你前端的电路是多大,但它最后生成出来的proof,它都是一个常数,而且都是很小的大小,而且验证时间都是在微秒级的,相当于是就是把所有的交易接收方作为隐私输入,放到这个零知识证明里面,我们通过生成一个证明去向大家去验证,大家只要验证了这个证明proof放到链上,而链上这个共识节点,只要验证这个proof。通过了之后,就证明我们这个交易是没有问题了,那么这个交易通过这个proof,也看不出来交易的发送方是谁,其实方是谁,然后就能完成这一点其实这就其实也挺奇妙的,这个如果大家对这个零知识证明这个概念不是很熟悉的话,其实我这里可以简单介绍用一个例子,举个一个例子,我们在一张全是海豹的图里面我说这个图里面它有一只企鹅,但是我又不想指出来这个企鹅在哪里,那么这时候我们可以怎么做?就可以把整个张图拿一张黑布盖上,我们在企鹅在的位置,把那一块儿挖出来,把企鹅在的那个地方暴露出来,剩下的地方全是拿黑布我们盖上,然后给大家看黑布,这样的话,我既没有暴露企鹅的位置在哪,我也向大家证明了这个图里面确实是有企鹅的,这其实就是零知识证明,其实它也没有泄露企鹅的位置在哪,但是也向大家证明了这个图里面确实是有企鹅的,这就是一个非常简单易懂的零知识证明的例子,当然这个具体复杂的零知识证明的一些技术的话,它就涉及非常非常复杂一些数学密码,所以说这里话就不跟大家介绍,然后还有一种技术,就是多方安全计算,想想大家也是应该是比较熟悉的,它主要应用的场景和区块链的是什么场景呢?其实它的场景主要是每一方都有一些隐私输入,而我们都想用这个隐私输入,都将把各方的隐私输入结合起来,进行计算得到一些结果之类的,那么就是举个最简单的例子,我有两个百万富翁,这两个百万富翁,想在就不自己不想暴露自己的这个钱多少,但又想两方比较一下,这个谁的这个钱数更多,这其实是很经典的一个多方计算的场景。

所以说,放到区块链里面,我们可能肯定是会有这样的场景的,我们在智能合约里面,我们有一点隐私输入,而这个隐私输入我并不想暴露出来,而我我们又想在这个链上进行一些通用的计算,比如说我们在一些这个图灵语,有图灵完备的计算语言的,图灵完备语言的,我们在智能合约上想计算一些东西,想用一些隐私的数据,这时候的话就就会用到安全多方计算,目前安全多方计算在区块链里面应用的场景,更多的就是智能分类里面,因为安全多方计算就是需要进行复杂计算的,它并不是一个比如说只是物理交易,这个一下一点这样的简单的算术,所以说,它可能更多应用场景,就是在能处理稍微复杂计算的一些区块链,就比如说以太坊,它有智能合约,它可以处理一些计算,那么就是就可以把这个安全多方计算部署到合约里面进行计算,其实零知识证明大家都能看到,其实零知识证明它的应用场景,更多的像是一个外方计算的场景,相当于是我们有数据,但是我们这个本地的算力又不够。那时候我们需要再做到云上的服务器之类的计算,可能还是把这个数据给到服务器,计算跑出来的结果,然后同时生成证明,我们是通过用了服务器上指定的模型跑出来结果,而不是用了个随便的模型,我们来抛出来结果。这两个隐私计算的场景,它并不是一个互斥的。

而是一个可以交叉重叠的一个场景,在区块链里面应用的话,我可以简单简讲一个,现在还应用场景没有那么那么广泛的一个例子,就比如安全多方计算,计算出来的结果,参与安全多方计算的这个中间内,是认可这个计算结果的正确性的,但是如果把计算结果放到成员以外,就是让其他人去看我们的这个结果的话,他凭什么认定这个结果就是正确的?因为首先他不知道你的隐私输入是什么,他可能知道你计算的流程过程,但是他不知道你的输入,所以说他不知道这个结果是否是正确的。它会存在这样的问题,所以我们这时候就可以用零知识证明对安全多方计算的结果,我们生成一个prove,去验证,去给所有人去公开,然后给所有人来验证成员内的安全多方计算的结果,它是正确的。其实这个问题也叫公开可验证的一个MPC,这个更多的是在学术研究上比较关心这个问题。工程实践,是这种例子是不是很多的,但是我举这个例子就是这两个技术,它是可以交叉融合在一起的,并不是互斥的关系,隐私计算目前技术,和区块链主结合比较紧密的就是零知识证明和MPC,关于这个还有一部分,就是这个联邦学习,但联邦学习这块儿和和这个区块链的联系,它并不是那么的紧密。而且还有一部分就是基于硬件的隐私计算,隐私计算也说来也很简单,就相当于是我们把这个计算放到特定设计的一个硬件上面进行计算,在这个硬件上,跑我们的隐私数据,这就能算隐私计算了,可信执行环境一般都叫PE,这但是其实说实话目前这些。零知识证明也好,安全通话计算也好,它虽然有比较强的密码学,以及理论上的安全性的证明的严格的理论证明,但代价就开销非常的大,目前其实更多的应用,如果想应用一次计算的话,还是应用一亿这种的可信硬件来做计算,虽然你的这个计算说实话,这是依托于你相信这个这个硬件是安全的,其实这类的方法其实都可以叫直觉的,就隐私内存,其实就是你相信它很安全的。那也可以用,就是但是它是没有经过严格的一个理论证明,就是严格的安全性证明,而像灵零知识明或者ipc,用一套UC框架,能证明它的安全性,但代价就是它的这个计算成本非常高。

尤其是在我们链上,算力本来就非常有限的情况下,我们再去计算这些密码学的计算,不是特别现实,这也是目前阻碍,比如说这些密码学知识,密码学的这些技术,这就证明进一步放大链上进行计算的问题但其实。零知识证明它是和我们之前说的roll ups,是每隔一段时间需要提交这段时间一些交易的数据,相当于是打包上传链上,这种我们其实可以用零知识证明,其实零知识证明是作为一个很好链上和链下的一个桥接点,相当于是就是dick snack,就我们比如说我们用dick snack 。还有一个特性就是刚刚说的那个简洁性的那个特性,我们生成的proof,它是一个常数级别的。比如说最近特别火的那种ZKZKY,那我们是否就可以通过生成一个proof,把这个proof放到链上,供这个大家进行一个验证,来验证这段时间的交易的这个是否是正确的状态的转换是否是正确的,而不需要把所有的交易在。在一并上传了,当然这个虽然这个链上的交易都是经过压缩的,但其实还是会有一定开销的,所以说,用零知识证明的话是可以,就是把这个开销再降,当然这里它是其实没有用到零知识证明的,因为它不需要隐藏什么内容,它更多是用到了简洁性,就相当于是我们生成了一个常数大小的一个prove,我们只是把这个proof链上进行验证就能行,我们这段时间所有的交易所有的状态更新都是正确的,而不需要把所有的交易来放到链上并行存储,这其实也是一笔比较大的开销的,就是零知识证明做放在这里,作为这个点的话,其实是蛮好的。

所以说这也是为什么目前这么多的这些项目,现在在研究,就比如说bk rap,像那个研究CPVMCPVM,现在有很多项目在研究这些。

Q:OK,感谢感谢,今天最后一个话题了,就是我们刚刚聊到扩容,聊到计算,然后我们其实也聊了一些通讯的和一些新型的一些技术。你怎么看待未来,不管是扩容,或者是我们今天聊到隐私计算的,技术的发展,尤其是刚才我们谈了一部分,就是ZK这种老技术新应用,你怎么看待未来整个这个领域的发展,这是开放式问题,你随便聊这个这个问题。

这个问题的话,其实我感觉就是目前这个区块链扩容肯定是一个已经延沿用了很多年的问题,而链下扩容,我觉得相比链上扩容来说,它能更好的和这个链上,在不改变区块链本质框架情况下,它能和区块链能做更好的结合,就我觉得虽说链下扩容相比链上扩容,我觉得是未来。可能是个更火爆的发展的方向,而且从目前来看的话,不管是我们,而且从目前来看不管是这个项目的数量,以及项目的开发,不管是规模来看的话,链下尤其是rollups,这一系列的这些链框和技术,它是这些规模是远远大于链上控,比如说沙琳,或者是这个共识,修改工人算法之类的,这种方案以及像支付通道这种方案,他们这个质量是完全不一样的,所以我感觉就是目前未来的话,更多的是会关注点是在链下这一块儿,我觉得未来模块的区块链是好的方向,就相当于是把各个层结构,之前的话是相当于是共识节点,区块链链上的一个节点,既要共识验证交易有效性,又要存储这些交易所有的布局,然后又要发交易,其实这个算力有限的,就是绝大多数人靠自己的算力有限的这些设备的编辑的,这些设备的话,它是实现不了这一点的。所以说这也会导致了随着区块链它的这个区块的链越来越长,这个体量越来越大,能够参与共识的这些共识节点,它会越来越少,因为它的硬件成本会越来越高,因为它毕竟要把整条链都要荡下来,就是所有的这个链的数据都要荡下来。

所以,这其实跟我们去中心化的思想是背道而驰的。所以我们我觉得未来更多可能就是把区块链的各层结构,就比如共识层,就是分给共识节点来做。还有一些可能是存储节点,就是专门存储链上的数据,还有一些新节点,可能就是从这个存储节点,就是单纯的就是从那拿出数据来用,比如说链下扩容,这些技术能更好的结合起来,这种其实就也就不太分链上链下了,这时候可能就分各个层了,这时候可能链下的话,我们可能就能叫他。上层,比如说共识化为共识层,就是说可能就不是分链上链下这么细了,但目前想把比如目前这些现存的这些区块链,以太坊,比特币改成模块化,区块链它当然也有工作也在改,但是这个效率,以及并不是比较慢的,但我觉得模块化区块链是未来很好一个发展方向,我觉得是能从根本上来解决的交易的扩容的问题,并且隐私计算它虽然是个老概念,但它并没有说它老概念的话,它可以很老,它可以八几年提出来零知识证明这些技术,但它实际应用的话还是在最近在一零年以后,就比如说第一个协议,它是可以相当于是能把研制证明能够真正实际应用起来,但所以说它离真正的怎么降低密码学的计算开销,其实还是需要很大的一段路来走的,所以说未来零知识证明以及东华经济。不管是学术研究还是实践,他如何对去跟我们区块链结合是一个研究的方向,它有一很大一部分是在研究,可能这这很大一部分是与学术研究,就是研究我们怎么去把这些开销降低一级,可能我们针对某些特定的场景,我们去做怎么做零知识证明的优化,而且肯定不可能就是把这个零知识证明这个组件,按这个密码键组件先搬过来用,我们就能做一个很好的结合,这肯定是有难度的,所以目前发展的话,就是我们如何这个提高性能,降低这些计算开销。

另一个就是如何和目前现存的这些一些方向,比如说匿名交易,或者是rollups,和这些做更好的结合,可能前面一个降低开销,这个是学术界做的事情,而后面这个人事证明MPC和区块链间结合,这可能更多是工业界需要研究的一个问题。其实我对计算区块链发展,我是这么看的,

总结

以太坊的「共识逻辑改变」与「扩容」,构成了以太坊升级的两大主题。其中以太坊的扩容进程,旨在提升以太坊的处理性能/TPS,只有在供给能力提升后,依靠供需关系定价的手续费才能变得更加便宜。短期来看, 现有 rollup技术更加成熟、运用更广泛,但从长远来看,ZK Rollup随着大量优秀的开发人员投入到相关研究中,在未来会是更优的扩容方案。ZK-Rollup 技术的基本原理,将使其,有能力达到更快的速度、更高的安全性,更全的性能,从而带来更加广泛的应用。而ZK技术本身,除了用于交易隐私保护,也可以用于数据隐私保护,结合隐私计算旨在打破数据孤岛,促进数据流通的背景,辅助于区块链技术良好的可扩展性,未来可以支持更大规模的隐私计算场景,满足不断增长的数据分析需求。

再次感谢HTseaat的分享,让社区的小伙伴收益良多,关于扩容与隐私计算,我们今天只是开了个小小的话头,在新的一年,我们会更加不断的进行相关领域的研究、探讨与分享。

今天相关讨论的音频晚些时候会上传在 DAOrayaki 官网,DAOrayaki.org 的专属播客频道里。我们也会同时发布在国内的小宇宙播客平台,喜马拉雅FM,全球各大流媒体平台,例如苹果播客、谷歌播客、YouTube 以及 Spotify 上,欢迎大家收听及订阅。祝大家圣诞快乐,我们下期不见不散。