Vitalik Buterin提出了将零知识证明(ZK)版本的以太坊虚拟机(EVM)纳入以太坊核心设计的可能性,以提供更好的性能和更多的功能,包括几乎是EVM的版本、支持WASM的Arbitrum Stylus和对SNARK友好的Cairo语言,以及支持带状态验证者的好处。ZK-EVM可以提高系统的整体性能,减少所需的数据传输,同时允许更高效的计算。
原文作者:深潮 TechFlow
原文来源:深潮 TechFlow
昨天,Vitalik 在他的博客中更新了一篇名为《What might an “enshrined ZK-EVM” look like?》的文章,系统性的阐述了以太坊集成ZK-EVM的可行性、方法和预期效果等内容。
EVM的未来发展往往关联到多种与基础设施相关的叙事或方向变化,值得我们进行阅读和研究。
但考虑到该文章涉及太多技术细节,中文媒体和社区中大部分的材料都只是对该文章进行简单的翻译,很容易让人摸不清文章的来龙去脉和观点。
因此,深潮对该文章进行了解读,试图以更通俗的方式来还原Vitalik的写作思路和观点,为各位读者提供参考。
如果仅看直接翻译的文章,你很看get到英文语境下的某种暗示或自然表达。
在Vitalik这篇文章的标题中,出现了一个不怎么常用的英文单词 --- ”enshrined“。
简单查阅GPT或英文词典你就可以看到:
"Enshrined" 这个词在英文中原本的意思是“奉为神圣”,常用于形容将某物或某人的地位、重要性或价值提升到极高的水平,好比将其放置在一个神圣或受保护的位置上。
在法律或宗教文本中,"enshrine" 通常指的是将某些原则、权利或信仰正式地并且以尊重的方式记录或保留下来。
而在技术或软件领域,"enshrined" 通常意味着将某项技术、功能或原则正式地并且重要地集成到系统、框架或协议中。这通常意味着该技术或功能被认为是基础性的、核心的,或者至关重要的,因此被正式地并且持久地纳入系统。
因此,我们可以直接快速的从文章标题了解Vitalik这篇文章的意图:
探讨将零知识证明(ZK)版本的以太坊虚拟机(EVM)作为核心或官方部分,整合到以太坊协议中的可能性。
这也就是说,以太坊或许之后不只是将ZK-EVM作为一个附加组件来看待。
对不熟悉以太坊EVM和相关L2解决方案的读者来说,Vitalik 探讨将ZK-EVM作为以太坊主网的正式部分,很容易让人想到另一个问题:
在以前,ZK-EVM和以太坊是什么关系?以前ZK-EVM不是以太坊的“正式部分”吗?
让我们做一个非常轻度且快速的科普:
因此,现在的ZK-EVM大多以L2的形式出现,而不是直接在以太坊L1的设计中存在。通俗来说,是外挂组件。
比较知名的ZK-EVM解决方案大家都知道了,例如Starknet、zkSync、Polygon Hermez以及Scroll等。
有了以上背景知识储备后,再去理解Vitalik的博客就变得容易了很多。
顺着上文逻辑,你可能会问:ZK-EVM的L2方案做的好好的,为什么Vitalik试图讨论将ZK-EVM直接纳入以太坊的核心设计中?
Vitalik非常言简意赅的给出了回答:
通过探讨这些问题,Vitalik阐明了将ZK-EVM纳入以太坊核心设计的动机--- 主要是为了解决依赖外部代码库的风险、简化治理过程、减少功能重复,并利用以太坊网络本身具备的能力。
那么以太坊如果要内置ZK-EVM,应该具备怎样的功能和特性?Vitalik进一步给出了思路:
注意,这个almost-EVMs可能有读者不了解,实际上Vitalik之前也提到过类似观点,他认为有些ZK-EVM解决方案在执行时不应严格要求和EVM一模一样,而是可以变得“有些接近”于原始的EVM。
在Vitalik提出的ZK-EVM框架中,对almost-EVMs的支持意味着ZK-EVM可以更灵活地适应各种不同的需求和场景。这使得ZK-EVM不仅能够服务于完全遵循标准EVM规范的应用,也能够支持那些需要或希望进行轻微调整的系统。
顺着思路继续看Vitalik的原文,在这里很容易犯迷糊:怎么又突然讲到客户端的事情了?
回顾上文,你会发现Vitalik的阐述逻辑非常清晰:
“我想让ZK-EVM变成以太坊内置组件 --- 为什么要这么干?---这么干应该满足哪些功能?”
因此,下一个讨论点实际上变成了:这么干,具体落地时在不同的客户端上怎么运行?
Vitalik给出了2个方向,即在开放的多客户端系统运行,或者在封闭的多客户端系统运行。
此外,后文中Vitalik也谈到了做ZK-EVM更看重速度的重要性,如果ZK-EVM能够快速生成证明,它将更加适合集成到以太坊主协议中,因为它能够更好地满足网络的性能需求和用户的体验期望。
然而,实现这一目标需要克服重大的技术和工程挑战。Vitalik在这部分内容中明确了这些挑战,并提出了可能的解决方案和方法。
Vitalik也给出了ZK-EVM可能的实现方式。
他提出了一种新的交易类型——ZK-EVM声明交易(ZKEVMClaimTransaction),以及如何在以太坊网络中处理和验证这些交易。
由于这部分过于技术,建议没有基础的读者可以直接跳过技术细节。我们直接来看他的设计思路和大意:
此外,Vitalik 在这部分内容中讨论了对“almost-EVMs”(几乎等同于以太坊虚拟机的系统)的支持,这是ZK-EVM功能的一个期望目标。
这些系统内置了一些额外的特性,可能包括新的预编译合约、操作码、合约编写选项(比如可以选择在标准EVM或完全不同的虚拟机中编写,例如Arbitrum Stylus),甚至是支持同步交叉通信的多个并行EVM。
同时,Vitalik Buterin 讨论了ZK-EVM内如何支持带状态(stateful)的验证者,以及为什么这样做是有益的:
为什么支持状态验证者?
至于如何支持,原文中涉及太多的技术细节,在此难以做深入解读,我们只需要明白:
"支持状态验证者" 意味着在ZK-EVM中引入一个机制,使得系统能够记住和利用之前的状态,而不是在每次操作时都完全无状态。这样可以提高系统的整体性能,减少所需的数据传输,同时允许更高效的计算。这是对ZK-EVM设计的一个扩展,目的是提高其在真实世界应用中的可行性和效率。
在文章的最后,Vitalik稍微跳出了严肃的技术讨论,转而思考另外一个问题,即如果ZK-EVM变成了以太坊L1内置的功能,其他那些做ZK的L2,它们的角色会有什么变化?
在Vitalik的设想中,如果真要这么做,L2后续更多的可能要承担”辅助位“的角色,在以下几个方面发挥补充作用:
注意,目前这些都只是Vitalik个人的想法,还没有正式付诸实践。
但从这篇博客来看,Vitalik对以太坊自己做ZK-EVM的初衷、方法、功能和额外影响等都考虑的非常清楚,显然也不是临时起意。
从EVM,到性能更好的EVM,再到兼顾ZK的EVM,Vitalik作为以太坊的设计者,在让他的作品以递进的方式变得更加完善;
当然,在这个过程中他从未排斥过其他的L2解决方案的思路,但似乎也从未放弃以原生的方式将以太坊变得更好。
至于这个ZK-EVM的原生思路是否真的会通过,还要等到这些博客中的思路变成具体的提案才能见分分晓。
不过可以确定地是,当技术革新将至,整个生态也必将风起云涌。