ZK-EVM 即是围绕以太坊虚拟机(EVM),利用 ZK-SNARK 技术来制作的项目。随着以太坊2.0升级计划的发布,其所新采用的具备高扩展性的 ZK-rollup 也展现在人们的视野当中,一时之间,ZK-EVM 也成为了一个热门的项目,在市场中,诞生了许多各具特色的 ZK-EVM。
这里根据 ZK-EVM 的特性不同,分成了几种主要的类型。
类型一:完全等效以太坊
这种类型是一种和以太坊完全等效的 ZK-EVM。从哈希、状态树、交易数到预编译、共识逻辑等,都和以太坊一致。
这种完全等效的 ZK-EVM,和以太坊的自然有着完美的兼容性,能够无障碍验证以太坊区块,甚至也可以引入到以太坊中,让它更具可扩展性。
当然,完全等效以太坊,也继承了以太坊的一个不足之处。那就是以太坊对于 ZK 技术的兼容性。早期的以太坊设计是没有考虑到 ZK 技术的,因此,在现在的以太坊中,需要大量的额外计算才能进行 ZK 证明。这也意味着证明效率的低下,通常需要花费很多个小时才能完成。
类型二:完全等效 EVM
这是一种追求等效 EVM,而不追求等效以太坊的 ZK-EVM。这种 ZK-EVM 在内部和以太坊并没有多大差异,但在外部表现上,则存在一定的不同,比如区块结构或状态树。
它能够对现有以以太坊为基础设计的应用程序完全兼容,但会对以太坊的机构进行一些细微的修改,以求能够更加高效、快速地生成证明。不过,尽管它有了一定的改进,但依然没有完全解决以太坊中证明时间慢的问题。
类型三:几乎等效 EVM
这种类型的 ZK-EVM 为了缩短验证时间,放弃了一些在 ZK-EVM 比较难以实现的功能,使得它也更容易建设。不过,放弃的这些功能也并没有代价,这使得这些 ZK-EVM 在应用程序兼容 性上存在者不足,有一部分程序想要在 ZK-EVM 中运行,就需要进行重写。
类型四:高级语言等效
这种类型的 ZK-EVM 仅仅只是采用了以太坊中的 Solidity、Vyper 等高级编程语言,用来编写智能合约源代码等。
从设计方面来看,这已经和以太坊有了很大的区别,它直接摆脱了 EVM 中需要对每个步骤都执行的 ZK 证明,直接利用高级代码语言,使得验证时间大幅缩短。
当然,这种 ZK-EVM 尽管验证效率很高,但相应的,它的兼容性就变得比较低,尽管利用 Solidity 或 Vyper 编写的语言也能够正常运行,但很多时候,由于 ZK-EVM 和 EVM 的不同,也容易在一些地方产生问题。