以太坊:零知识证明如何解决以太坊性能问题

2月26日21:00,BlockManiaAMA51期继续进行,本期主题为《零知识证明如何解决以太坊性能问题》,分享嘉宾为安比实验室工程师p0n1,他为大家解读了零知识证明在以太坊扩容问题上的发展现状和未来方向,以下为本次分享的文字整理。当我们谈论区块链性能时,我们谈些什么?

很多人喜欢用「不可能三角」这种模型来讨论一个系统面临的设计难题。区块链也不例外,大家一定听过关于安全、去中心化、高效这三个方面的不可能三角或者说三元悖论吧。在这个很流行的说法中,「高效」其实就是我们常说的「性能」,也叫「可扩展性」或者Scalability。可以认为,以太坊和比特币从设计上更侧重于「安全」和「去中心化」这两点,因此不可避免地显得不是很「高效」。尤其是以太坊,作为拥有最多开发者和应用的区块链平台,越来越多的人在上面尝试开发好玩有用的应用,但平台能提供的性能支撑极其有限,因此大家长期以来都在高喊「以太坊需要扩容」!!!这也是为什么在以太坊之后,市场上又出现了很多「以太坊杀手」——许多想从性能层面超越以太坊的项目。怎么超越以太坊呢?

其实超越的方法其实也不难,「只需要」牺牲不可能三角中的另外两点即可。但可能大部分人还是觉得「安全」和「去中心化」是不能放弃的,选择继续留在以太坊。这导致「以太坊杀手们」冷冷清清凄凄惨惨无人问津,能开飞机的公路上却没有车,性能「优势」完全没有空间展现。所以当我们谈论区块链性能时,我们还是希望区块链的两大根基不动摇——「安全」和「去中心化」尽量少受影响。以太坊性能到底怎么样?

Aztec Network推出零知识证明语言Noir:10月8日消息,基于ZK Rollup的隐私和扩容解决方案Aztec Network宣布推出零知识证明语言Noir。Noir是一种基于Rust的领域特定语言(DSL),用于创建和验证零知识证明。同时,Aztec Network还发布两个新的Typescript库,分别为NoirJS(可以在浏览器中编译Noir电路)和Barretenberg.js(可以在浏览器中证明和验证这些电路)。[2022/10/8 12:49:18]

以太坊目前性能十分有限。对于普通区块链用户来说,手续费和交易确认时间很大程度决定了使用体验。而以太坊目前的使用体验波动非常大。打个比方,整个网络空闲的时候就好比最近疫情期间的高速,而拥堵的时候就像国庆黄金周时候的旅游景点。从性能参数TPS上看,国际信用卡Visa交易处理速度至少2000笔/秒,而以太坊则不超过30笔/秒,这个数值只能说比老大哥比特币7笔/秒好了一些。并且,造成以太坊网络拥堵的成本非常低。大多数时候,一个热门dApp就会让整个网络变得拥堵不堪。说实话目前这个TPS水平让以太坊很难真正大规模应用。随着更多的人使用,以太坊网络交易手续费注定会越来越高,并且普通交易的确认时间会越来越久。以太坊社区在可扩展性上做了哪些努力?

以太坊令人尴尬的性能现状让其核心开发团队和社区一直在探索各类扩容方案。于是大家经常听到一系列花哨的名词:分片、支付通道、状态通道、Plasma、Truebit、ZK-Rollup、OptimisticRollup等等,以及一个概念Layer-2。上面提到的大部分方案都属于二层扩容方案。其中ZK-Rollup和OptimisticRollup则是最近最热门的。我们今天要重点讨论的就是ZK-Rollup,而它的核心就是零知识证明技术。零知识证明为什么有用?

QitChain network通过零知识证明(ZKPs)实现网络的隐私性升级:据官方消息,在2022年12月底前,QitChain底层网络将完成“零知识证明(ZKPs)实现QitChain network网络的隐私性”升级。据悉,此次升级能够在目前QTC网络系统中利用隐私保护数据集。允许用户和企业在执行智能合约时保护私有数据集,而不会泄露底层数据。[2022/6/15 4:28:44]

零知识证明,可能是目前最具应用前景和想象力的密码学黑科技,可以在不泄露任何其他信息的前提下证明一个命题的正确性。两个关键词——「不泄漏」和「证明」,一结合可以说威力无穷,可以实现很多反直觉的炫酷特性。在扩容方向上,我们并不需要太关注零知识证明技术的「不泄露」特性,这个往往跟隐私保护相关,我们重点关注其「证明」的能力。简而言之,链上资源或者说带宽是有限的,我们需要把大量计算迁移到链下进行,因此需要技术能够「证明」这些计算在区块链链下真正发生过。关于零知识证明的更多背景知识和技术细节这里就不再展开介绍了,欢迎大家关注我们安比实验室的系列文章,如《初识「零知识」与「证明」》。真正要理解零知识证明可能会有些烧脑,但真心很有趣,大家感兴趣不妨试试。好了,回到今天的主题上来。为什么说基于零知识证明扩容方案可能是更好的方向?

我们不妨回顾一下开始的第一个问题,当我们谈论区块链性能时,我们还是希望区块链的两大根基——「安全」和「去中心化」尽量少受影响。如果有扩容方案能做到这个,就是真的是非常难能可贵的。基于零知识证明的二层扩容方案ZK-Rollup,就居然真的可以在不牺牲「安全」和「去中心化」这两点的前提下,很好地解决区块链性能问题!不熟悉的同学可能会问:零知识证明扩容代表方案ZK-Rollup到底是什么?首先我们最好来理解下什么是Rollup。Rollup顾名思义,有「卷起」和「汇总」的意思,可认为是一大类Layer-2扩容方案的统称。Rollup特指先在链下进行复杂的计算和状态维护,再将与状态更改相关的数据通过合约调用的方式,利用更便宜的CALLDATA在链上保存数据,将大量交易「卷起/汇总」打包成一个交易,最终在保证了「数据可用性」的前提下提高TPS。Rollup方案的共同点是强调链上「数据可用性」,即任何人都能根据链上保存的数据,复原出全局的状态,从而消除数据可用性问题带来的安全风险。这一特点让Rollup方案相对于Plasma这类dataoffchain的方案设计更简洁且更易实现。Layer-2这个概念其实特别好,因为这类方案的设计思路就是以太坊的底层几乎不需要任何改动,底层还是向往常一样处理交易,所以不会影响底层的安全性,让各种各样的海量交易在二层来处理,从而减轻底层链的压力。Plasma是前两年最火的以太坊二层扩容概念,整个社区花费了非常多的精力来讨论和实现,过程中演变出来一系列方案,比如PlasmaMVP、PlasmaCash、PlasmaDebit、PlasmaPrime......Plasma家族的中间方案非常多,理论上都可行,但是就是迟迟不能落地。这里面的核心原因就在于Plasma各类方案都没有保证「数据可用性」,从而使协议变得比较复杂,实现难度很大,显得很不实用。而ZK-Rollup方案起源于18年下半年,由BarryWhitehat和Vitalik先后提出。其关键就在于ZK,每一次的状态转变都需要提供零知识证明,由主链上的合约进行验证,只有验证通过才能更改状态。即每一次状态转变都严格依赖密码学证明。ZK-Rollup方案利用了目前最流行的零知识证明技术zkSNARK在压缩链上计算量的同时保障了数据正确性。利用一棵MerkleTree存储账户状态,合约只保存MerkleRoot。Operator收集用户的交易,批量打包这些交易,并生成zkSNARK证明,具体会证明交易的合法性,以及前后状态下的MerkleRoot。Operator把MerkleRoot连同各交易数据和zkSNARK证明提交至合约,合约验证通过才将新的状态写入。由于所有交易的计算过程不用在合约中执行,无需将大量状态写入合约storage,并且zkSNARK证明大小与验证时间是常数,不跟随交易数量增长,因此ZK-Rollup可以极大地提高交易TPS。ZK-Rollup的链上性能限制仅依赖于CALLDATA存储数据的成本。随着以太坊Istanbul升级,CALLDATA使用成本降为原来的1/4,ZK-Rollup的性能则获得4倍提升,TPS可达到近2000!TLDR,ZK-Rollup的原理其实可以用一句话讲清:链下进行复杂的计算和证明的生成,链上进行证明的验证和关键状态的维护。上面提到Rollup,可能有同学会问:ZK-Rollup与其他Rollup方案的核心区别是什么?的确还有其他多个Rollup方案,比如OptimisticRollup就是当中较为热门的一个,它与ZK-Rollup的核心区别在于具体如何保证状态更改的正确性。OptimisticRollup方案形成于19年下半年,由JohnAdler首次提出,后面主要由PlasmaGroup从Plasma、ZK-Rollup、shadowchain等方案中借鉴,进一步完善和扩展。与ZK-Rollup的最大区别在于,每次状态转变无需严格验证,先乐观地假设每次转变都是正确的,这就是Optimistic一词的由来。然后在一定时限内可以对某次转变进行挑战,如果挑战成功就证明了之前的提交有问题,会惩罚提交者并将状态回滚。可以认为OptimisticRollup最终依赖经济激励和博弈来约束状态正确转变。两种方案的差别还可以从证明模型角度来对比:ZK-Rollup为ValidityProof,只有提供了「正确性证明」的状态才会被写入主链合约;而OptimisticRollup为FraudProof,用户需要在挑战期内对异常提供「欺诈证明」,负责举报不正确的状态。关注以太坊的同学对Plasma一定不会陌生。AlexGluchowski和RyuyaNakamura这两位研究人员分别提出了在PoW和PoS共识下,对OptimisticRollup或基于FraudProof的二层扩容协议的攻击模型,且攻击成本并不高:这类二层方案必须在挑战期内进行投诉举报,而当合约中聚集了大量资产时,则有希望构造一个场景,让矿工配合做恶,在挑战期内拒绝掉所有提交FraudProof的投诉交易,这样不正确的状态转变会被确认,最终可从合约中盗取所有资金。这种攻击对ZK-Rollup无效,因为合约中始终有正确性校验做保障。ZK-Rollup的发展现状究竟如何?

FMex已完成零知识证明开发工作:据了解,FMex目前已完成零知识证明开发工作,平台启动运营时将同步上线。通过零知识证明可实现平台资产数据公开透明,不可伪造。届时社区用户可通过开源工具验证资产数据。[2020/5/26]

目前已有多个团队基于ZK-Rollup方案开发新一代产品,毫无疑问ZK-Rollup是目前落地速度最快、最有前景的二层扩容方案,在众多扩容方案中独占鳌头。例如Loopring团队已经率先上线了基于ZK-Rollup的去中心化交易所,无需用户抵押资产,在性能上却能媲美中心化交易所,不再受底层链性能制约,订单交易TPS达到了惊人的2025!另外MatterLabs发布了无需信任的扩容和隐私方案ZKSync。ZKSync底层也依赖ZK-Rollup,目标在确保安全性的前提下提升交易性能。产品路线为先专注提高简单转账的性能和易用性,再实现通用智能合约的扩容,最后再加上隐私保护。目前扩容的目标也接近达成,至于隐私保护则依旧是凭借零知识证明技术。ZKSync中还包含一个新的SNARK方案Redshift,和零知识证明合约编程框架Zinc,这两者或是其未来实现通用隐私智能合约的关键。可以说ZK-Rollup目前在以太坊发展的劲头十足。零知识证明在以太坊扩容方向上具体有哪些发展趋势?

我们再次回顾一下,零知识证明二层扩容方案最大的优势在于不牺牲「安全」和「去中心化」,也不需要对以太坊底层做任何改动,却能获得巨大的性能提升。这一切源于零知识证明技术近年来的快速发展,以及以太坊团队大概在四五年前就在底层链层面为这一切做好了技术准备,提供了必要的密码学运算支持。零知识证明技术真正让以太坊扩容从理论走向了实际,我相信未来这个方向还会有更多新的突破。而以太坊社区很可能会从解决智能合约通用性问题、降低零知识证明应用开发难度、尝试更多类型的应用等方面来进一步探索扩容。二层扩容概念下,各类普通的或者追求性能的交易可以在高效地跑在二层,享受更快的响应速度和低廉的使用成本,而一层也就是主链则专门负责承载更高价值的交易,并为此付出更高的成本。另外,零知识证明还是解决区块链隐私问题的唯一解决方案。这一方面以太坊社区也有着很棒的进展。我觉得ZK-Rollup在安全性上更有优势。所以我觉得以太坊即使不升级2.0也能再战好几年。

V神:以太坊即将过时的采矿硬件可以直接用于零知识证明:在采访中,Ethereum联合创始人V神(Vitalik Buterin)被问及一旦网络从其当前的共识算法切换到不再需要这种专用硬件的模型时,人们应该如何使用以太坊矿工。Ethereum联合创始人表示,以太坊即将过时的采矿硬件可以直接用于零知识证明。(cointelegraph)[2020/4/26]

动态 | 安永为以太坊提供零知识证明技术:据coindesk报道,会计公司安永(EY)宣布了一项工具,此工具将把私密交易带到以太坊。其EY Ops Chain公共版原型是第一个用于以太坊的零知识证明(ZKP)技术。ZKP是一种加密技术,它允许双方证明一个私密信息是真实的,这通常是关于交易的数据。[2018/10/31]

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金星链

[0:0ms0-1:429ms