介绍 EVM 等效性

article/2025/10/30 23:34:51

介绍 EVM 等效性

未标题-3

上个月,我们宣布了Optimistic 以太坊历史上最重要的升级。最近,我们将Optimistic Kovan迁移到真正的一键式部署,并增加了稳定性,主网在不到三周的时间内就会跟上。

这篇文章是关于我们相信EVM 等效性——完全符合以太坊虚拟机规范——将成为L2领域的下一个通用标准。

Optimistic 争议协议简史

首先,让我们回顾一下我们已经采取的当代Rollup路径。

Rollup的黎明

Optimistic 的L2都是关于争议的。如果你认为以太坊是一个全能的、去中心化的法庭,那么L2可扩展性的核心观点是:“不要去法庭兑现支票——如果支票被退回,就去呗。”

实际上,过去6年的可扩展性研究可以归结为一件事:什么样的“拒付支票”可以被强制执行。首先,只有一组预先商定的参与者可以在彼此之间进行交易(状态通道)。然后,任何人都可以交易,但也可以被审查(plasma)。最终,我们也解决了审查问题(rollup)。

img

在Rollup之前,我们已经知道如何在所有这些模型上运行智能合约——只是没有多大意义。谁愿意只在几个朋友之间运行Uniswap,或者以一种可以被审查一周的方式运行?Rollup承诺提供真实的以太坊风格的L2体验。

兼容时代

当然,仅仅“承诺”一个真正的以太坊风格的L2体验并不能真正创建实现。对于Unipig,有史以来第一个L2 AMM,我们必须使用与Rollup争议合约兼容的自定义代码重新创建 Uniswap,而不是 EVM 本身。

由于Uniswap的设计相对简单,这是可行的,但当基本的Solidity变量不能再使用时,这就不是一个好兆头了。对于非开发人员;Uniswap 是目前最简单的 DeFi 智能合约之一,这并不意味着Uniswap需要彻底修改才能实现“Rollup兼容”。

到目前为止,以太坊已经超过了退出速度。一个指数级增长的生态系统根本无法围绕非EVM接口重新构建。因此,L2的责任是除了提供“原始”规模之外,确保L1法院系统与EVM的区别最小。这迫使Rollup同时在两个方面成为先锋:

  • 构建可扩展的、生产就绪的Rollup基础设施。
  • 解决久负盛名的EVM-in-EVM问题。

以太坊的图灵完整性意味着我们知道它可以完成,但在我们的研究过程中,我们了解到,为了在合理的时间框架内将以太坊引入L2,需要牺牲一些东西。

这种牺牲被称为EVM“兼容性”。

理由很简单:只要以太坊应用可以被合理地移植到Rollup上运行——不管这是如何在幕后完成的——我们就可以捕获以太坊的退出速度。

img

洪水

起初,这种妥协取得了成功。在2020年,我们竞相推出OVM,因为用户纷纷逃离以太坊,转向其他L1竞争对手,后者在“廉价费用”的幌子下放弃了安全性和价值。

但以太坊的网络效应产生的退出速度有多种形式,我们的使用量激增突出了L1-以太坊的另一个组件,这是其他L1和L2所缺乏的:基础设施。在过去的6年里,以太坊的全球社区让它从一个简单的原型,发展到更多:

  • 成千上万的开发工具已经被深度集成到EVM中。
  • 数十亿美元的公司已经崛起,只是为了服务和改进节点软件。
  • 以太坊本身变得越来越快。

以太坊的网络效应浪潮只会越来越大。由于一切都是开源的,人们可能会认为这些巨大的胜利也适用于以太坊的L2。

但并没有那么多。

EVM兼容性与EVM等效性并不相同,仅仅满足于兼容性意味着你不得不修改,甚至完全重新实现以太坊支持基础设施所依赖的底层代码。如果L2想要在以太坊的基础设施网络效应浪潮中冲浪,它们必须成为EVM的对等物。

随着Optimistic 以太坊的发展,我们发现越来越多的以太坊工具不断发现自己无法使用,这是由于我们旧的EVM兼容性设计理念。

我们知道我们可以做得更好。为了真正支持大众,我们需要的不仅仅是与EVM合约兼容的东西,而是从根本上等同于EVM本身的东西。

EVM等效性是我们如何弥合以太坊L1的基础设施网络效应和以太坊L2的执行环境之间的差距。

EVM等效性:搭乘以太坊的采用浪潮

img

什么是EVM等效性?

简而言之:EVM等效性完全符合以太坊黄皮书,即协议的正式定义。根据定义,L1以太坊软件必须符合该规范。

这意味着——深入到最深处——现有的以太坊堆栈现在也将与L2系统集成。每一个调试器。每一个工具链。每个节点的实现。我们相信任何L2提供任何EVM体验都必须达到这个标准-任何不足都是不可接受的。

为什么EVM等效性好?

OVM v1引入了一个容器化系统,它位于Geth的EVM之上,有助于避免在L1上冗长地重新实现整个EVM。

这种组合在早期取得了一些胜利,但由于EVM本身不支持容器化,所以它不是免费的。随着Optimistic 以太坊的发展,不可忽视的等价性的力量不容忽视:

  • 像Solidity、Vyper和Hardhat这样的项目都在开发他们的OVM版本的开发工具,
  • 随着每一行代码的改变,采用像Erigon这样的实验性实现变得越来越困难。这告诉我们,我们总是需要投入大量的精力来集成未来的客户端实现。
  • 与现有的超优化版本相比,重新实现EVM的某些部分会带来gas开销。这让我们认识到,要实现气体成本的最小化,就必须采用EVM等效设计理念。

现在是时候寻求一种更好的方法了。

我们如何实现EVM等效?

值得庆幸的是,我们找到了一种比在EVM中冗长地重新实现EVM更好的方法。

分离区块生成和执行

在实践中,我们确实需要对以太坊L2-ify做一些改变:特别是区块是如何生成的。在L1上,节点使用工作证明共识机制来确定区块;在L2上,批量交易通过发送到“父链”(L1以太坊)的批量应用。如果一个L2使用它自己的工作证明,那么它将是一个L1!所以在这个层面上,“等效性”根本就是无稽之谈。

区块链模块化的一个核心模式是将共识与执行分离——也就是说,使用不同的流程来确定和执行下一个区块。我们可以借用这个模式在L2中使用。基本上,我们只需要定义一个函数,它接受L1区块,对它们进行Rollup处理,然后输出L2区块——格式与L1区块完全相同。从那以后,L2的执行可以被定义为等效于L1。

img

ETH2合并API

那么,现有L1客户端实现之间的共识/执行模块化的现状如何?它即将在所有以太坊实现中标准化。

截屏2021-11-02 上午9.09.51

事实证明,ETH2合并需要与EVM等效性Rollup完全相同的抽象:信标链提供与L1对Rollup完全相同的“父链”角色。这使得在L2中使用L1客户端变得非常简单。

img

执行标准

好了,我们已经讨论了为什么等效性为强大的、模块化的抽象和非常简单的客户端实现打开了大门。但是我们如何在链上执行这个呢?首先,模块化的强大之处在于它的灵活性——只要解决方案与EVM等效,我们就可以使用它。这意味着欺诈证明的改进,甚至是EVM等效性的零知识证明(当它们变得可行时),都可以被简单地放入现有的链下堆栈中。

不过,在短期内,我们今天需要一些可行的措施——我们已经发现了这一点。一种解决方案是在Solidity中实现一个完美的EVM等效实现,但EVM是一个包含许多VM指令的复杂工具,因此这是一项重要的任务。此外,未来对EVM的更新也必须在Solidity中重新实现。

我们的解决方案:不是在Solidity中实现EVM,而是用更小、更简单的指令集实现一个VM,并在欺诈证明期间在这个VM中运行EVM。为此,我们必须简单地编译一个现有的EVM解释器,例如geth,以便在更简单的VM中运行。

我们允许Geth本身在一个有争议的环境中运行。由于Geth是EVM等效的,所以环境也是如此。这使我们能够绕过在链上重新实现EVM,并使系统能够适应未来对EVM的升级。

以太坊的未来

如果以太坊要实现其以Rollup为中心的未来,那么Rollup必须以以太坊为中心。

这就是等效性所提供的。

欺诈证明

这种模块化的、以Geth为中心的设计不仅仅是一个可供我们使用的优雅的实现——它是向防欺诈基础设施商品化迈出的一大步。今天,安全地设计和启动一个Rollup需要对L2争议有深入的了解,以及它们如何与节点软件一起工作。这严重限制了创新——想象这样一个世界,每个web开发人员都必须是IP网络、系统管理和微芯片制造方面的专家。

未来的Rollup将非常简单,不需要L2专家来部署。这意味着L2将不再在如何或是否提供安全性上竞争,而是在提供安全性的内容上竞争。这包括在:

  • 性能、稳定性和正常运行时间
  • 网络效应、生态系统专业化和社区
  • MEV预防和测序工具

总之,这意味着EVM等效性的Rollup在去中心化上竞争。这是整个生态系统民主化的巨大胜利,也是使我们整个行业更加脆弱和抵制审查的重要一步。

这也意味着我们的团队最终可以专注于我们的核心竞争力——最重要的部分——打造世界上最快、最可靠、最安全的L2 Geth。

以太坊兼容性的枷锁已经解除。

#ETHTheStandard

EVM等效性性的威力归结于标准化。

在多链的世界中,“一次编写,随处部署”变得至关重要。

拥有许多“兼容”链(每个链都略有不同)会导致碎片化:从需要单个EVM专家团队处理单个代码库,到需要为每个链的每个代码库组建EVM专家团队。

Vitalik在首次公开EVM时就将其与Javascript进行了比较,这种类比在本文中得到了很好的体现。在互联网的早期,浏览器之间的不兼容性困扰着网络开发,并导致开发者和生态系统分裂。

Web3完全是关于协调和开源标准的,而等效性为即将成为标准的EVM提供了一条路径,以避免重复过去的错误。

即使随着这个标准的发展,我们对欺诈证明的方法意味着L2可以毫不费力地协同发展。L1和L2手牵手一起前进。

这一好处是双向的——几乎所有以太坊EIP都可以在L2上被采用,并且Rollup成为一个激动人心的创新实时测试环境。想象一下,一个位于激励测试网和主网之间的Rollup,验证新的交易类型、预编译和EOF,在它们升级到L1之前测试不可预见的结果。

DeFi最大的障碍之一是,测试所有你想要的,无法取代 DeFi 的现场环境。你不能在测试网络上“重新创建”DeFi,所以当你想测试更改时,它总是“在产品中测试”。

EVM等效性允许我们在实时环境中测试EIP,并对整个以太坊环境做出更安全、长期的改进,而不需要“交叉硬分叉”。

L2早就承诺了一个多链以太坊的未来,充满活力的城市深入到这个新网络空间的前沿。虽然我们可以期待这些链是多样化和丰富的,但EVM 等效性引入了一种与以太坊的新连接——不仅仅是作为结算层,而是在其组成的最深层。

关于

ChinaDeFi - ChinaDeFi.com 是一个研究驱动的DeFi创新组织,同时我们也是区块链开发团队。每天从全球超过500个优质信息源的近900篇内容中,寻找思考更具深度、梳理更为系统的内容,以最快的速度同步到中国市场提供决策辅助材料。

Layer 2道友 - 欢迎对Layer 2感兴趣的区块链技术爱好者、研究分析人与Gavin(微信: chinadefi)联系,共同探讨Layer 2带来的落地机遇。敬请关注我们的微信公众号 “去中心化金融社区”

640


http://chatgpt.dhexx.cn/article/jtgwXoHY.shtml

相关文章

EVM的深入研究和分析

最终目标是能够完整地理解已编译的Solidity合同 1、执行 evm-tools 安装 https://github.com/CoinCulture/evm-tools/blob/master/INSTALL.md /home/xue/go/bin/evm --debug --code 366020036101000a600035045b6001900380600c57 --input 05 不同字节码编译成不同EVM指令 1、基…

Ethereum EVM简介

1. 引言 首先需了解以下基本概念: 1)区块链2)世界状态3)账号4)交易5)消息6)去中心化账本7)原子性和顺序性 1.1 何为以太坊区块链? 以太坊可看成是基于交易的状态机&a…

误差向量幅度(EVM)

转自:http://blog.sina.com.cn/s/blog_6c46cb860100otm3.html 误差向量幅度(EVM):误差向量(包括幅度和相位的矢量)是在一个给定时刻理想无误差基准信号与实际发射信号的向量差。Error Vector Magnitude E…

WiFi基础知识

术语和定义 1. 发射功率RF Power 在给定频段范围内发射机通过天线对空间辐射的能量。 2. 矢量误差(EVM) EVM是发射信号理想状态下的IQ分量与实际发送信号的IQ分量之间的矢量差,如图1 所示,其数值等于误差矢量幅度与最大符号幅度之比(取百…

三分钟读懂什么是EVM

虚拟机指的是,通过软件模拟的、具备完整硬件系统功能并运行在隔离环境下的完整计算机系统,比如虚拟化物理机VMware、Java虚拟机等。实际上在PC上常见的各种手机模拟器、主机模拟器,也都是一种虚拟机。这样的虚拟机往往需要固件运行&#xff0…

射频指标之EVM

说到EVM首先先介绍下EVM是什么,其是指目标功率与实际功率的一个矢量差,用下图可以比较详细的表示: 下面就以几个问题来讨论EVM的问题: 1.问题背景: TC芯片输出的EVM正常,单独测试PA输出的EVM也正常&#…

.lib 静态链接库 的破解方法(局限)(1)

因为之前程序调用了一个试用版的.lib库 , 而这个库有时间限制 , 导致程序在试用期过后不能使用 . 然后编译之后要破解一下编译出来的程序 , 很难受 闲来无事,突然想破解一下.lib , 毕竟是个代码库 , 看看是不是破解完了在编译 , 能正常使用 结果当然是能正常用了 不然就没这…

InfluxDB源码编译、安装、配置及主从同步实现

先扯点蛋 公司有个项目要求使用InfluxDB时序数据库储存点东西。第一次听说还有这种数据库,哈哈哈,孤陋寡闻了,先从各位大佬的博客看起,慢慢学习,逐渐了解了之后在服务器上进行安装。直接使用官方包进行安装很简单&…

一种破解静态链接库(.lib)的简单方法

一种破解静态链接库(.lib)的简单方法 作者:游蓝海 博客:http://blog.csdn.net/you_lan_hai 最近,在研究某代码时,遇到这样一个问题:整个解决方案中,有一个工程没有cpp源码,只有头文件跟一个静…

Linux下静态库生成和使用

一.静态库概念 1.库是预编译的目标文件(object files)的集合,它们可以被链接进程序。静态库以后缀为”.a”的特殊的存档(archive file)存储。 2.标准系统库可在目录/usr/lib与/lib中找到。比如,在类Unix系统中C语言的数序库一般…

libuvc介绍及简单使用

libuvc是一个用于USB视频设备的跨平台库,构建在libusb之上,编译libuvc时需要依赖libusb。libuvc的License为BSD,最新发布版本为0.0.6,源码地址: https://github.com/libuvc/libuvc libuvc支持在非windows系统上直接编译&#xff0…

linux下封装函数库——动态库.so和静态库.a(代码实现及链接方式)

在linux环境下的链接库分为静态链接库(.a库)和动态链接库(.so库),其作用是把C程序编译好做成一种可执行链接文件,主程序文件调用这些程序的函数接口是可以使用a库或so库,在主程序中只需要includ…

Hyperledger fabric应用的多机部署(自动化一键部署)

前面关于fabric部署的介绍都是基于单机环境下的,实际生产环境中一般会根据应用场景将节点分开部署在多台物理机上,面临的难题主要是不同主机间的节点如何通过网络进行通信。文章最后会分享一键完成多机增加组织的自动化部署脚本。 前言 这里仍然以balan…

Linux系统编程makefile制作动态库和静态库

目录 制作动态库 制作静态库 首先准备简单的add.c&#xff0c;sub.c,main.c,head.h.具体代码如下 #head.h文件 int Add(int a, int b); int Sub(int a, int b);#add.c文件 #include <stdio.h> int Add(int a, int b) {return a b; }#sub.c文件 #include <stdio.h&…

Linux动态库的下载与配置(以libevent库为例)

** Linux动态库的下载与配置 ** 本章以下载、安装、配置libevent库为例(安装libevent的前提是已经成功安装openssl库) 一、libevent的下载 https://libevent.org/ //官网下载源码包如果学习下载1.0版本为好&#xff0c;使用可以下载2.0版本 1.如果Linux已经进行桥接联网&am…

Linux下编译安装libusb动态库(.so) - libus1-0 vs libusb-0.1

最近在调试代码的过程中&#xff0c;发现libusb库中的一些方法没办法debug到&#xff0c;所以试着下载了一版源码&#xff0c;编译安装到指定的目录。这样&#xff0c;在工程的pro文件中&#xff0c;直接指定库和头文件的目录就可以引用自己编译的libusb库了。 在网上查了相关的…

linux编译生成动态库、静态库,以及使用

一、介绍 在实际开发过程中&#xff0c;当代码的文件较多&#xff0c;可以将一部分代码编译成动态库或者静态库然后再加载到程序中使用 编译过程 1、预编译 2、编译 3、汇编 4、链接 静态库和动态库的差异 1、链接静态库简单理解就是复制目标代码嵌入可执行文件中 2、动态库是…

Linux·libusb源码编译

libusb系列--Linux下libusb源码编译​​ ​ ​源码下载及解压​​ ​​下载源码​​ ​​解压下载的源码压缩包​​ ​​打开终端​​ ​​准备编译环境​​ ​​安装make dh-autoreconf​​ ​​安装 libudev-dev​​ sudo ​./autogen.sh​ ​​​​sudo ./configure --prefi…

ESP32如何用makefile直接编译生成.a静态库

目录 编译痛点前提环境编译准备makefile代码编译痛点 开发过esp系列的攻城狮们都知道,esp32的sdk包含了编译器、组件代码和例程代码,编译都是基于cmake的,都是整体一起编译,CMakeList.txt,component.mk,project.mk等等一系列和编译相关的文件,如果你想要自己编译一个自…

Linux 环境下的静态库生成与使用

目录 一&#xff0c;简介 二&#xff0c;如何生成静态链接库 1.准备测试程序 三&#xff0c;如何使用静态链接库 1.生成静态链接库 2.使用静态链接库 一&#xff0c;简介 这里我们只讲 Linux 环境下的静态库与动态库的生成与使用&#xff0c; Windows直接用VS直接就能生成…