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

zkVM和zkEVM学习笔记

一、关于zkp和zk-SNARK,zk-STARK零知识证明在不透漏知识的具体内容的情况下,就可以实现证明参与者是否真正掌握了该知识。零知识证明在节省冗余

一、关于 zkp 和 zk-SNARK, zk-STARK

零知识证明在不透漏知识的具体内容的情况下,就可以实现证明参与者是否真正掌握了该知识。

零知识证明在节省冗余计算、压缩链上空间和保护用户隐私的方面有重要的应用价值。零知识证明的实现方法有很多,比如 zk-SNARK, zk-STARK, PLONK, Bulletproofs 等。

zk-SNARK 是 Zero-Knowledge Succinct Non-Interactive Argument of Knowledge 的缩写,意思是简洁非交互零知识证明。简洁代表了用这种方法生成的证明比实际证明的数据量小,非交互的意思是在证明构建完成之后,证明者仅需发送一条简单的信息给验证者,并且一般情况下,没有授权的任何人都可以进行验证。这减少了链上交互的次数,节省了证明的开销。论据 (Argument) 代表着在当前计算能力的情况下,生成证明所采用的加密算法的复杂性是不能以可接受的时间和经济代价强行破解的。知识 (of Knowledge) 代表着在不掌握该知识不知道要证明什么的情况下不可能构造出该证明。零知识代表着在证明过程中不透露与证明实体有关的任何有用信息。

zk-STARK 是 Zero-Knowledge Scalable Transparent Arguments of Knowledge 的缩写,意思是可扩展透明零知识证明。与 zk-SNARK 不同,STARK 通过允许开发人员将计算和存储转移到链下来提高可扩展性,在计算速度和大小方面更具可扩展性。透明的意思是它消除了初始的可信任方来初始设置 zk 证明系统,而是转为使用可公开验证的随机性来创建无需信任的可验证计算系统。并且 zk-STARK 是抗量子的,可以防止量子计算机的攻击。

二、Rollup 扩容方案和 zk-Rollup 的原理简述

Rollup 扩容方案在 Plasma 方案的基础之上,进而将经过巧妙压缩过后的数据提交到主链上,这样,任何人都能通过这些数据验证 Rollup 提交的结果是否正确,它实现了数据可用性,加强了安全性。

Rollup 在主链上有一系列合约,维护 Rollup 中的状态记录,通过用保存 Rollup 层账户信息的 Merkle Trie 的根节点的哈希值,来保证任意叶子节点的值改变都会影响最后默克尔树根的哈希值,从而确认了底层状态信息的一致性。

通过记录交易执行结束之后的世界状态的状态根,我们可以得到一个账户状态的键值表。在 Rollup 上发生交易之时,键值表会发生改变,产生新的状态根。Rollup 上的交易会被分批打包汇总,并提交新的 state root.提交者在向 Rollup 合约提交一个新的批次的时候,主链会验证新状态根是否正确,若正确,则完成状态转移。

下图是简化版的 Optimistic Rollup 的图解。

Optimistic Rollup 默认提交者提交的 batch 是正确的,如果任何人发现某个 batch 的后状态根不正确,他可以向区块链发布一个证明,证明该 batch 计算错误。合约会对证明进行验证,并且对该 batch 及其之后的 batches 进行回滚。这样为了防止回滚,资金需要在 Optimistic Rollup 锁定 7 天来确保验证结果是正确的。

Zk Rollup 默认提交者提交的 batch 是错误的,提交者需要额外提交一个 Zk-SNARK 证明来自证提交的 batch 是有效的。可以在不提交全部交易数据的情况下证明数据的有效性,可以减少向主链提交的数据量。

下图是简化版的 Zk Rollup 的图解。增加了 ZK Proof,减少了验证人。

下表是 Vitalik 文章中对于两种不同 Rollup 的对比。

下表是四大 Rollup 方案的开销对比。

为 Zk Rollup 生成一个 zk-SNARK 证明相当困难。需要单独的指令集来完成这一点。

三、zkVM 和 zkEVM 的简述和前景

3.1 zkVM

zkVM 是一种虚拟机,通过零知识证明,可以确保可信特征的安全性,即,输入原来的状态和程序将输出新的状态。

下图简要地解释了什么是 zkVM.

zkVM 实现了易用性、通用性、简洁性和递归性。开发者无需掌握零知识开发,可以实现图灵完备、不用重复生成整个虚拟机的电路、对虚拟机的验证可以通过虚拟机来进行。

zkVM 同样有计算架构特殊和一些需要优化电路的性能问题。

主流的 zkVM 分三类,分为主流 (WASM, RISC-V)、EVM (EVM bytecode)、ZK-Optimized ( 全新指令集, 针对零知识证明所优化, 比如 Cairo 和 zkSync),下图为三者的对比图:

zkVM 是一个很好的方向,它可以将 EVM 的垂直优化转化为 EVM 的横向扩展,从而摆脱 EVM 的局限。

3.2 zkEVM

zkEVM 在 Vitalik 的新作里已经写的很完备了,本文尝试做一个翻译和综述。

Polygon、ZKSync 和 Scroll 和 Privacy and Scaling Explorations 团队、Nicolas Liochon 的团队以及 Cairo 的 alpha 编译器都在最近发布了公告。本文将尝试描述 EVM 等价的不同类型的分类和每种类型的好处和成本。

下图为不同类型的概览:

类型 1(完全等效于以太坊)

类型 1 力图与以太坊完全等效,哈希、状态树、事物树、预编译、其他公式逻辑都不变。

优点:完美兼容

目标是与执行层端做到一样的验证方法。

一型 ZK-EVM 是 Rollup 的理想选择,因为以太坊执行客户端可以原样生成和处理 Rollup batch,区块浏览器和区块产生的过程都能复用。

缺点:证明时间

以太坊起初并没有以 ZK 友好为中心,所以很多以太坊协议的部件都要大量计算以进行 ZK 验证。类型 1 的目的是准确地拷贝以太坊,所以不能减轻这种低效。目前以太坊的区块证明需要数个小时才能产生。

谁在建造它?

隐私和扩展探索团队 ZK -EVM 正在构建 1 类 ZK-EVM。

类型 2(完全等效于 EVM)

类型 2 ZK-EVM 力求完全等同于 EVM,但不完全等同于以太坊。也就是说,它们“从内部”看起来与以太坊完全一样,但它们在外部存在一些差异,特别是在块结构和状态树等数据结构上。

目标是与现有应用程序完全兼容,但对以太坊进行一些小的修改,以使开发更容易并更快地生成证明。

优点:VM 级别的完美等价

类型 2 ZK-EVM 对保存诸如以太坊状态之类的数据结构进行更改。需要对以太坊执行客户端做微调使用 Type 2 ZK-EVM rollup。例外在于:对于验证历史以太坊区块的 Merkle 证明以验证有关历史交易、收据或状态的声明的应用程序出现了一种不兼容(例如,桥有时会这样做)。用不同的哈希函数替换 Keccak 的 ZK-EVM 会破坏这些证明。

缺点:改进但仍然很费证明时间

类型 2 删除了依赖于不必要的复杂和 ZK 不友好密码学的部分以太坊堆栈。例如改变以太坊的 Keccak 和基于 RLP 的 Merkle Patricia 树,可能还会改变区块和收据结构。

这减少了证明时间但必须按原样证明 EVM 的缓慢性以及 EVM 固有的所有低效率和 ZK 不友好性仍然存在。比如 MLOAD 可以读取任何 32 个字节,这可能是一个块或者两个连续的块。这造成了内存管理的问题。

谁在建造它?

Scroll 的 ZK-EVM 项目正朝着 Type 2 ZK-EVM 方向发展,Polygon Hermez 也是如此。也就是说,这两个项目都还没有完成。特别是,许多更复杂的预编译还没有实现。因此,目前这两个项目都被更好地考虑为 Type 3。

2.5 型(EVM 等效,gas 成本除外)

显着改善最坏情况证明者时间的一种方法是大大增加 EVM 中很难进行 ZK 证明的特定操作的 gas 成本。这可能涉及预编译、KECCAK 操作码,以及调用合约或访问内存或存储或恢复的可能特定模式。更改 gas 成本可能会降低开发人员工具的兼容性并破坏一些应用程序。

类型 3(几乎等效于 EVM)

3 类 ZK-EVM 几乎与 EVM 等效,但在精确等效性方面做出了一些牺牲,以进一步缩短验证器时间并使 EVM 更易于开发。

优势:更容易构建,更快的验证时间

类型 3 ZK-EVM 可能会删除一些在 ZK-EVM 实现中极难实现的功能,例如预编译。此外,Type 3 ZK-EVM 有时在处理合约代码、内存或堆栈方面也存在细微差别。

缺点:不兼容较多

使用 Type 3 ZK-EVM 删除的预编译的或者对其他删除功能有依赖的应用程序需要重写。

谁在建造它?

Scroll 和 Polygon 在其当前形式中都是 Type 3,尽管它们有望随着时间的推移提高兼容性。Polygon 使用了一些不同的内部逻辑来完成它。Type 3 只是一个过渡阶段,直到完成添加预编译的复杂工作并且项目可以移动到 Type 2.5。

类型 4(高级语言等效)

Type 4 系统通过获取以高级语言(例如 Solidity、Vyper 或两者都可以编译的中间语言)编写的智能合约源代码并将其编译为明确设计为 ZK-SNARK 友好的某种语言来工作.

优势:非常快的验证时间

如果没有 ZK 证明每个 EVM 的各个步骤,并且从高级语言代码开始,你就可以节省大量的开销。

缺点:不兼容较多

合约的地址因为 CREATE2 合约地址取决于确切的字节码而地址不同。手写的 EVM 字节码更难使用。很多调试基础设施不能被继承,因为这样的基础设施运行在 EVM 字节码上。

谁在建造它?

ZKSync 是一个 Type 4 系统,尽管随着时间的推移它可能会增加对 EVM 字节码的兼容性。Nethermind 的 Warp 项目正在构建一个从 Solidity 到 Starkware 的 Cairo 的编译器,这将把 StarkNet 变成事实上的 Type 4 系统。

3.3 zkEVM 的未来

编号较小的类型与现有基础架构的兼容性更高,但速度较慢,编号较高的类型与现有基础架构的兼容性较差,但速度更快。最理想的状况是一切都成为类型 1,要实现这样的未来,还需要相当长的时间。与此同时,我们将在扩展以太坊和基于以太坊的 ZK-rollup 的不同路径中看到许多创新。

四、zkEVM 的各项目基本面分析

4.1 Scroll

Scroll 在 7 月 19 日开启了 Scroll Pre-Alpha 测试网,融资情况:4 月 21 日,以太坊扩容网络 Scroll 完成 3000 万美元 A 轮融资,本轮融资由 Polychain Capital 领投,Bain Capital Crypto、Robot Ventures 和 Geometry DAO 等参投。此外,来自以太坊基金会的 Ying Tong 和 Carlos Aria、以及 Anthony Sassal、Ryan Adams 和 Santiago Santos 等以太坊社区成员也加入了此轮融资。

4.2 Polygon

Polygon 用户量 Unique 7 Days:845k,Unique 30 Days:2.26M,可以预见旧有用户转化到 Hermez 网络的转化率一旦提升,用户量基础巨大。现有市值:72 亿美元。Hermez 将提升 Polygon 网络的竞争力,并且提供与 ETH 网络等价的安全性。

4.3 zkSync

用户数:345596

融资情况:其开发公司 Matter Labs 获得了 5000 万美元的 B 轮融资。由 a16z Crypto 领投,其他投资方包括 Placeholder、Dragonfly 和 1kx 等,以及 Blockchain.com、Crypto.com、Consensys、ByBit、OKEx、Alchemy、Covalent 等战略合作伙伴,另外,还有来自 AAVE、Paraswap、Lido、Futureswap、Gnosis、Rarible、Aragon、Liquity、Celer Network、Connext、Perpetual Protocol、Euler、Opium 等 70 多个项目的创始人或高管参投。

TVL:$66.65 M

生态项目:Zigzag 是一个非托管的订单簿交换平台,是 zkSync 先行者之一。Yearn Finance 和 Taker Protocol 采用 zkSync 提供 DeFi 借贷服务。

4.4 StarkNet

用户数:23,557

融资情况:StarkWare 以 80 亿美元估值完成 1 亿美元 D 轮融资,Greenoaks Capital、Coatue、Tiger Global 和其他参与者领投,所筹资金将用于产品和业务开发、工程设计和周边生态系统的发展。

TVL:$1.09M

生态项目:StarkWare 生态中大部分原生项目处于早期阶段。

相关文章

https://vitalik.eth.limo/general/2022/08/04/zkevm.html https://www.ethereum.cn/an-incomplete-guide-to-rollups https://mirror.xyz/0x22034f804960B9B34353d6A7595cC4E83ac0daBe/vVgKwJ0L5A0lm-ysPNipUddrXK_64NcXE_WkkRP_DT8 https://threadreaderapp.com/thread/1538166119785111552.html https://ecn.mirror.xyz/rGHawBLJ0lJiRnwYd12W_gX6hzTOaWlPBKuwcq8_LuE https://mp.weixin.qq.com/s/808jMXvIUqB973aVHrAzGQ https://mp.weixin.qq.com/s/S9ajxMU4vfdomoCAXnvhpg https://web3caff.com/zh/archives/7573 https://www.panewslab.com/zh/articledetails/31jem01m37xk.html


推荐阅读
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • 提升Python编程效率的十点建议
    本文介绍了提升Python编程效率的十点建议,包括不使用分号、选择合适的代码编辑器、遵循Python代码规范等。这些建议可以帮助开发者节省时间,提高编程效率。同时,还提供了相关参考链接供读者深入学习。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • “你永远都不知道明天和‘公司的意外’哪个先来。”疫情期间,这是我们最战战兢兢的心情。但是显然,有些人体会不了。这份行业数据,让笔者“柠檬” ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
author-avatar
dmcm0008
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有