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

从技术原理解读:zkSync2.0和zkRollups的未来

简化的 ZK-Rollup 架构Source:https://immutablex.medium.com/ground-up-guide-zkevm-evm-compatibility-rollups


简化的 ZK-Rollup 架构

Source:https://immutablex.medium.com/ground-up-guide-zkevm-evm-compatibility-rollups-787b6e88108e


零知识证明的一个简单例子是一个代码自动生成器(用于 CS 作业)。自动生成器是一个 "验证者",给你一堆随机生成的测试代码,而你是一个 "证明者",必须能够通过所有的测试代码来证明你有正确的代码。同时,你不会直接与自动交易器分享你的代码。你看,你刚刚就进行了一次 "零知识证明",你证明了你知道的东西,但你没有说你是怎么知道的。[2]

零知识证明案例,Source:Gradescope


上面的代码自动生成器是使用 "交互式零知识证明"的方式,自动生成器和代码提供者直接 "交互"。相比之下,大多数 zk-Rollups 使用的是数学上更复杂的非交互式证明(如 zk-SNARK,即零知识简洁的非交互式知识证明)。与交互式证明相比,非交互式证明既节省时间又节省空间。虽然 zk-SNARKs 的技术细节超出了本文的范围,但测试代码通过的基本原理是相通的。

zk-Rollups 的圣杯在于零知识以太坊虚拟机 ( zk-EVM ),它允许开发人员在不修改以太坊智能合约的情况下对 DApps 进行转移但这是存在一定难度的,因为每个"问题"都需要不同的"测试代码",所以开发一个"证明算法"来解决所有可以想象的测试代码的“证明算法”,是零知识证明和 zk-Rollups 的技术瓶颈。

正如 Vitalik所说的:总的来说,我认为在短期内 optimistic rollup可能会在通用的 EVM 计算中胜出,而 ZK Rollup可能会在简单的支付、交和其他特定应用案例中胜出。但从中长期来看,随着 ZK-SNARK 技术的改进,ZK Rollup将在所有案例中胜出。[3]

因此,从历史上看,zk-Rollups 仅是针对特定应用用例的技术,其中“测试用例”定义明确且范围有限。但是一些项目正在迅速向“山上的城堡”推进,一种通用的 EVM 兼容 zk-Rollup 算法。 [4]

03

zk-Sync 2.0

zk-Sync 2.0 是目前在开发 zk-EVM 的众多项目之一(其他项目包括 StarkNet、Polygon Hermez 和 Scroll)。zk-Sync 1.0 要求用户重新构建其代码库的大部分内容,以便从 EVM移到 zk-Sync。与 zk-Sync v1.0 不同,在 zk-Sync 2.0 中,程序员可以在几乎没有变化的情况下部署其应用程序。

实际上,并非所有的 zk-EVM 都是等效的。它们在可组合性(与原始 EVM 合的接近程度)和高性能(zk-Rollups 的运行速度)之间存在着明显的权衡[6]在这种权衡中,zk-Sync 选择了高性能,从而牺牲了可组合性。

在 Vitalik看来,目前主要有四种不同类型的 zk-EVM,这四种类型如下图所示:

zk-EVMs 的类型,改编自:https://vitalik.ca/general/2022/08/04/zkevm.html

正如 Vitalik所述,在目前的状态下,zk-Sync 2.0 是4zk-EVM。与 EVM 不同,zk-Sync 2.0 能够使用自己的编译器编译,可以使用 Solidity 和高级语言编写智能合约。由于 zk-Sync 可以完全控制其编译器的设计,因此他们能够积极优化速度和吞吐量。但这样做的代价是,一些 DApps 和 EVM 调试工具链可能与 zk-Sync 2.0 不兼容。从本质上看,zk-Sync 与 Ethereum 有相同的“汽车外壳”,但换了一个引擎[5]

事实上,在 zk-Sync 开发者文档中,Matter Labs 声称,虽然智能合约 "读取 "操作可以在不改变代码的情况下集成,但智能合约的 "写入 "操作需要 "附加代码",因为 "Layer1 和 Layer2 之间存在根本差异" [6] 。实际上,这略有误导。与其说是由于 Layer1 和 Layer2 之间的 "根本差异",不如说是由于 Matter Labs 所追求的4Rollups。因为 zk-Sync 本质上是使用不同的编译器和字节码,基于4的 Rollups 意味着智能合约有不同的地址,但依赖于字节码分析的调试器基础设施可能无法在 zk-Sync 2.0 上运行[7]

在未来,zk-Sync 可能会加入更多对 EVM 字节码的本地支持,允许系统慢慢过渡到支持更广泛的 "边缘情况 ",也就是指3的 Rollups。但是,对于 zk-Sync 的3类和第4的 zk-Rollup 来说,与 Polygon Hermez 和 Scroll Labs 的2的 Rollups(基本上是以速度换取更广泛的兼容性)相比,必须有两个重要的前提条件才能成功。首先,只有一小部分不重要的项目与 zk-Sync 的自定义编译器不兼容。其次,与2zk-EVM 相比,zk-Sync 的执行速度需要有质的区别。

不幸的是,我个人认为这种情况不太可能发生。任何先进的开发生态系统都依赖于成熟 "框架 "的基础设施,包括便捷性、模块化、调试和测试工具。如果像 Vitalik 假设的那样,由于字节码的不同,大部分 EVM 原生调试工具将无法移植到 zk-Sync,那么 zk-Sync 将不得不开发自己的测试和调试工具套件。与 Polygon Hermez 和 Scroll 等可组合性更强的2zk-EVM 相比,这是会增加额外的开销,最终可能会影响 zk-Sync 作为 Layer2 解决方案的采纳进度。


点个【 在看 】,你最好看


推荐阅读
author-avatar
常州秆时尚女人帮
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有