热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

技术角度详解zkSync2.0的特性与ZKRollup的未来

深入研究ZK-Rollup的原理和实践,解释作为一个项目的zkSyncv2.0的关键技术特征,并探索这一期待已久的技术的潜在未来影响。
深入研究 ZK-Rollup 的原理和实践,解释作为一个项目的 zkSync v2.0 的关键技术特征,并探索这一期待已久的技术的潜在未来影响。

原文标题:《Rollup:zkSync v2.0 和 ZK-Rollup 的未来》(zk-Sync v2.0 and the Future of zk-Rollups

撰文:Web3.com Ventures

编译:ChinaDeFi

简介

「ZK-Rollup」可能是今年最热门的网络流行语。随着 zkSync2.0 版本「baby alpha」主网的推出,这种兴奋情绪已经达到了顶峰。但在所有这些流行语背后,「ZK-Rollup」真正指的是什么?zkSync 会在哪里发挥作用呢?在本文中,我将努力深入研究 ZK-Rollup 的原理和实践,解释作为一个项目的 zkSync v2.0 的关键技术特征,并探索这一期待已久的技术的潜在未来影响。

ZK-Rollup 的原理

为什么我们需要 ZK-Rollup?以太坊很棒,但在目前的状态下,该网络从根本上来说是一种规模不经济。随着网络活动的增加,gas 价格昂贵得令人望而却步。随着以太坊在过去几年中越来越受欢迎,其目前有限的可扩展性已成为该网络的致命弱点。

这就是「Rollup」发挥作用的地方——以太坊的 Rollup 本质上是一个「插件」,为以太坊提供了额外的可扩展性,从而解决了其固有的规模不经济问题。这个想法的背后逻辑是比较简单的。假设你有 5 件物品需要从 A 点搬运到 B 点。「常规」方式是依次搬运第 1 件、第 2 件等。但这显然是缓慢和繁琐的。「Rollup」本质上是将所有 5 件物品「打包」到一个包中,这样你就可以只搬运 1 次而不是 5 次。

但有两点需要注意:

  • 我们如何确保 Rollup 能够「适合」所有内容?
  • 我们如何确保 Rollup 没有被欺骗?

ZK-Rollup 是一种主要的 Rollup 技术 ( 另一种是 Optimistic Rollup),它利用「零知识证明」来解决这两个问题。为了解决这些问题,ZK-Rollup 将一定数量的交易捆绑在一起,在 L2 上进行计算,并向 L1 上的验证者提交状态更改和「有效性证明」,以表明计算是完整的。这种「有效性证明」是以「零知识证明」的形式进行的,这是一种数学方法,告诉别人你知道某件事,而不告诉他们你知道什么。

零知识证明的一个简单例子是代码自动评分程序 ( 用于 CS 作业 )。自动评分程序是一个「验证者」,它为我们提供一堆随机生成的测试用例,而我们是一个「证明者」,必须能够通过所有的测试用例,以证明自己有正确的代码。一直以来,我们都不会直接与自动评分程序共享代码。刚刚我们就进行了一个「零知识证明」,证明我们知道一些事情,而不用说出知道什么。

代码自动评分程序——零知识证明的简单示例。资料来源:Gradescope。

上面的代码自动评分程序使用「交互式零知识证明」,自动评分程序和代码提供者直接「交互」。相比之下,大多数 ZK-Rollup 使用数学上更复杂的非交互式证明 ( 如 zk-SNARK),这与交互式证明相比节省了时间和空间。虽然 zk-SNARK 的技术细节超出了本文的范围,但是测试用例传递的基本原则是相同的。

ZK-Rollup 的圣杯是零知识以太坊虚拟机 (zkEVM),允许开发人员在不修改的情况下将任何以太坊智能合约移植到 ZK-Rollup 链上。但这很难。因为每个「问题」都需要不同的「测试用例」集,开发一个可以解决每个想象得到的测试用例的「证明算法」是零知识证明和 ZK-Rollup 的技术瓶颈。

正如 Vitalik Buterin 所说:

总的来说,我个人的观点是,在短期内,Optimistic Rollup 可能会在通用 EVM 计算中胜出,而 ZK-Rollup 可能会在简单的支付、交换和其他特定于应用程序的用例中胜出,但从中长期来看,随着 zk-SNARK 技术的改进,ZK-Rollup 将在所有用例中胜出。

因此,从历史上看,ZK-Rollup 只是针对特定应用程序的用例建立的技术,其中「测试用例」的定义明确且范围有限。然而,一些项目正在迅速朝着「山上城堡」的方向发展——一种与 EVM 兼容的通用 ZK-Rollup 算法。

zkSync v2.0

zkSync v2.0 是目前开发 zkEVM 的众多项目中的一个 ( 其他项目包括 StarkNet、Polygon Hermez 和 Scroll)。zkSync v1.0 它要求用户重新构建大部分代码库以从 EVM 移植到 zkSync,在 zkSync v2.0 中,程序员可以在几乎不做任何更改的情况下部署他们的应用程序。

在实践中,并非所有 zkEVM 都是一样的。在可组合性 ( 它与原始 EVM 合约的接近程度 ) 和性能 (ZK-Rollup 的运行速度 ) 之间存在明显的权衡。在这种权衡中,zkSync 选择完全优化性能,从而牺牲了组合性。

在 Vitalik Buterin 看来,zkEVM 有四种不同的类型,归纳如下表:

zkEVM 的类型

注释和改编自 https://vitalik.ca/general/2022/08/04/zkevm.html

正如 Vitalik 所言,zkSync v2.0 目前的状态是 Type 4 zkEVM,它能够使用自己的编译器编译 Solidity 和高级语言编写的合约,这与 EVM 不同。因为 zkSync 可以完全控制编译器的设计,所以他们能够积极地优化速度和吞吐量。这样做的代价是,一些 dApp 和 EVM 调试工具链可能与 zkSync v2.0 不兼容。本质上,zkSync 是与以太坊相同的汽车外壳,但更换了引擎。

事实上,在其开发人员文档中,Matter Labs 声称,虽然智能合约的「读」操作可以在不改变任何代码的情况下集成,但智能合约的「写」操作需要「额外的代码」,因为「L1 和 L2 之间有根本差异」。实际上,这有点误导人。这与其说是由于 L1 和 L2 之间的「根本差异」,不如说是由于 Matter Labs 决定追求的 ZK-Rollup 的类型——Type 4 Rollup。因为 zkSync 基本上是使用不同编译器和字节码的 Type 4 Rollup,这意味着智能合约有不同的地址,依赖字节码分析的调试器基础设施可能无法在 zk-Sync v2.0 上工作。

未来,zkSync 可能会添加更多对 EVM 字节码的本地支持,允许系统慢慢过渡到支持更广泛的「边缘情况」的 Type 3 Rollup。但 zkSync 的 Type 4 或 Type 3 ZK-Rollup 要想与 Polygon Hermez 和 Scroll Labs 的 Type 2 Rollup 更成功,就必须满足两个重要的先决条件。首先,只有一小部分不重要的项目与 zkSync 的自定义编译器不兼容。其次,与 Type 2 zkEVM 相比,zkSync 的执行速度存在质的差异。

但是,任何高级的开发生态系统都依赖于成熟的「脚手架」基础设施,包括方便的、模块化的、调试和测试工具。如果正如 Vitalik 所假设的那样,由于字节码的差异,大部分 EVM 本地调试工具将无法移植到 zkSync,那么 zkSync 将不得不开发自己的测试和调试工具套件。与更可组合的 Type 2 zkEVM 竞争对手 ( 如 Polygon Hermez 和 Scroll) 相比,这是额外的开销,可能最终会阻碍 zkSync 作为 L2 解决方案的采用速度。

ZK-Rollup 的未来

在 zkEVM 的竞争中有许多竞争对手,可以说,我们看到一个功能齐全的 zkEVM 只是一个时间问题。但接下来呢?ZK-Rollup 的长期优势来自于使用该解决方案的项目。

目前,DeFi、GameFi 和移动应用程序是 ZK-Rollup 基础设施的主要受益者。DeFi 和 GameFi 从根本上来说都是规模经济,因为它们在有很多人使用它们的环境中蓬勃发展。像移动钱包这样的移动应用程序也给大众消费者打开了闸门。因此,在这些情况下使用 ZK-Rollup 非常有意义。

但这绝不是 ZK-Rollup 用途的极限。现在这仅仅是一个开始。ZK-Rollup 之于以太坊,就像 5G 之于互联网。正如 5G 可以实现物联网应用和系统的新世界一样,ZK-Rollup 也可能打开「区块链物联网」的闸门,允许我们物理世界的数字设备——冰箱、手表、红绿灯等——与以太坊上的智能合约集成。

反对物联网的最大论点之一是,它将允许大型科技公司越界进入我们的日常生活。但是有了「区块链物联网」,我们就可以享受物联网带来的便利,而不用担心我们的智能设备在一个集中的数据库中被泄露。我们可以拥有便利和隐私,而不是方便或隐私。这就是 ZK-Rollup 向我们承诺的世界。


推荐阅读
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文比较了eBPF和WebAssembly作为云原生VM的特点和应用领域。eBPF作为运行在Linux内核中的轻量级代码执行沙箱,适用于网络或安全相关的任务;而WebAssembly作为图灵完备的语言,在商业应用中具有优势。同时,介绍了WebAssembly在Linux内核中运行的尝试以及基于LLVM的云原生WebAssembly编译器WasmEdge Runtime的案例,展示了WebAssembly作为原生应用程序的潜力。 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 本文介绍了使用postman进行接口测试的方法,以测试用户管理模块为例。首先需要下载并安装postman,然后创建基本的请求并填写用户名密码进行登录测试。接下来可以进行用户查询和新增的测试。在新增时,可以进行异常测试,包括用户名超长和输入特殊字符的情况。通过测试发现后台没有对参数长度和特殊字符进行检查和过滤。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • 本文介绍了一种处理AJAX操作授权过期的全局方式,以解决Asp.net MVC中Session过期异常的问题。同时还介绍了基于WebImage的图片上传工具类。详细内容请参考链接:https://www.cnblogs.com/starluck/p/8284949.html ... [详细]
  • 本文介绍了自动化测试专家Elfriede Dustin在2008年的文章中讨论了自动化测试项目失败的原因。同时,引用了IDT在2007年进行的一次软件自动化测试的研究调查结果,调查显示很多公司认为自动化测试很有用,但很少有公司成功实施。调查结果表明,缺乏资源是导致自动化测试失败的主要原因,其中37%的人认为缺乏时间。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • GPT-3发布,动动手指就能自动生成代码的神器来了!
    近日,OpenAI发布了最新的NLP模型GPT-3,该模型在GitHub趋势榜上名列前茅。GPT-3使用的数据集容量达到45TB,参数个数高达1750亿,训练好的模型需要700G的硬盘空间来存储。一位开发者根据GPT-3模型上线了一个名为debuid的网站,用户只需用英语描述需求,前端代码就能自动生成。这个神奇的功能让许多程序员感到惊讶。去年,OpenAI在与世界冠军OG战队的表演赛中展示了他们的强化学习模型,在限定条件下以2:0完胜人类冠军。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • Final关键字的含义及用法详解
    本文详细介绍了Java中final关键字的含义和用法。final关键字可以修饰非抽象类、非抽象类成员方法和变量。final类不能被继承,final类中的方法默认是final的。final方法不能被子类的方法覆盖,但可以被继承。final成员变量表示常量,只能被赋值一次,赋值后值不再改变。文章还讨论了final类和final方法的应用场景,以及使用final方法的两个原因:锁定方法防止修改和提高执行效率。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • C语言注释工具及快捷键,删除C语言注释工具的实现思路
    本文介绍了C语言中注释的两种方式以及注释的作用,提供了删除C语言注释的工具实现思路,并分享了C语言中注释的快捷键操作方法。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
author-avatar
潇潇沐林风_921
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有