【密码学探秘】EVM链和并行执行交易

article/2025/10/30 16:39:13

概述

在web3.0世界中,交易的处理性能一直是公链面临的一大技术挑战,如何在不降低安全性和去中心化程度的前提下显著的提升区块链交易的TPS无疑成为众多公链技术专家追逐的目标。以Solana、Aptos为代表的新一代公链的出现更是吹响了通过并行执行交易来攻克公链可扩展性瓶颈的号角。

以太坊虚拟机因其最早在区块链中引入智能合约,不仅拥有最多的DApp开发者,更有众多新生公链直接将EVM采用作为其智能合约交易执行引擎,其在web3.0中的受欢迎程度可见一斑,然而受限于顺序执行(Sequential Execution)EVM无疑在扩展性方面广受诟病。

是否也可以既做到对EVM的兼容,又可以通过并行执行交易来达到提升性能的目的呢?今天我们就来对这个话题做一些探讨。

EVM交易执行机制

众所周知,EVM中交易的执行实际上是状态的转换,交易执行前的状态 σt和交易transaction作为EVM的输入,输出为交易执行后的状态σt+1为输出:

在这里插入图片描述

要说明的是,每个交易执行前的状态 σt 和执行后的状态 σt+1 都是‘世界状态’,也就是整个账本所有账户的实时状态(如balance、nonce、storageroot等),这种账户模型在一定程度上方便了实际应用的开发,但由于每笔交易的执行都需要依赖一个确定的’世界状态‘,这也给可扩展性带来诸多限制,正是因为这一点,EVM-based链鲜有通过并行执行交易提升TPS的案例。

并行执行的挑战

基于这种账户模型,想要通过并行执行重复利用节点的硬件资源提高网络吞吐量是很困难的。

举个简单的例子:A转账给B的交易tx1和C转账给D的交易tx2在理论上是可以并行执行的,因为两个交易没有任何关联,但如果将tx2调整为B转账给C情况会是怎么样呢?假如最初B的余额是0,tx1中A转给B5个Token,tx2中B转给C3个Token,我们会发现,tx1没有执行前tx2注定会失败,因为B此时的状态是余额不足。这种情况在链上被称为’状态冲突‘(State conflicts)。

当然,对于只做转账的交易,是可以通过静态分析来确定交易彼此的依赖关系的,事实上,DApp开发者们经常通过复杂的智能合约逻辑在EVM虚机中实现某些特殊的业务需求,在一个智能合约交易中,EVM会根据合约的Code逻辑执行用户千奇百怪的操作,这就不能通过简单的对交易内容分析来确定交易间的依赖关系了。

在这里插入图片描述

可尝试的改进

Solidity被称为图灵完备的智能合约语言,通过对交易指令集的静态分析来确定交易依赖关系的可行性基本是不存在的,但这并不意味着我们只能按顺序执行,我们可以从近期一些优秀的区块链项目中得到更多启发。

乐观执行是一种可尝试的方案

既然不能事先分析交易的关联关系, 那我们是否可以先乐观的将交易全部独立执行,然后再事后分析呢?

Aptos项目的PE(parallel execution) 方案便是这种思路的代表,根据项目方公布的数据,在低关联交易集合的场景(low inter-dependence),交易的执行效率最高可以是串行执行的16倍之多。

EVM中虽然没有类似Block-STM的机制,但我们完全可以通过对区块中交易的执行逻辑稍加优化就可以做到既和EVM保持兼容,又能支持将明显无关的交易分成不同批次进行支持,即:

可以先根据交易发送方和接受方账户地址将交易依赖关系构建成可逐批执行的交易集合,乐观的在不同的线程(或协程)中独立执行,等所有交易都被执行完以后,再将执行过程中使用的读集(所有用到的状态变量)和写集(所有由交易产生的需要记录到链上的结果)做对比分析,检查交易序号(区块中的交易顺序编号)靠后的交易的读集是否与交易序号靠前的所有交易写集有交集,如果没有,说明执行结果是正确的, 否则意味着该交易需要依赖之前交易的最新状态, 需要根据前面交易的结果重新执行。

在这里插入图片描述

由用户指定交易的读写集

普通的转账交易可以简单的通过 from 和 to 确定交易彼此的依赖关系,而智能合约交易虽然在EVM执行它之前不能确定其对哪些账户有依赖,但发送交易的用户多数情况下是可以确定交易的读写集的,而Sui项目正是将交易的依赖和结果完全交由用户来指定并最终签名确定,这将极大的简化了分析交易关联性的逻辑。

然而EVM现在并没有这种机制,虽然 Vitalik 和 Holiman 提交的关于指定交易访问lists的提案 [EIP-2930](EIPs/eip-2930.md at master · ethereum/EIPs · GitHub) 已经在以太坊上通过并实施,但该提案并没有强制要求用户必须指定所有的access lists, 如果要在EVM中实现用户指定读写集,需要在以太坊提交新的EIP提案,除此之外,用户确定读写集还需要SDK的支持。

通过DAG构建交易的依赖关系

对于单纯的转账交易或是上面提到的由用户指定了读集的交易,是完全可以事先确定交易的依赖关系的,有向无环图(Directed Acyclic Graph)可以有效的解析这种依赖关系。关于如何使用DAG分批并行执行交易的内容可以参见我们之前的技术文章。

一些要思考的问题

  • EVM架构适合并行执行吗?

虽然并行执行可以做到有效利用硬件资源,提升链处理交易的能力,但正如我们在开头提到的这绝不能以牺牲安全性和去中心化程度为代价,Ilya Sergey 就曾经在 EVM 技术架构基础上对并行执行做过深入的研究,根据其研究的结论,对于非垃圾回收类语言,对象在内存中的重复声明和使用过程必然会违反状态完整性,这给形式化验证智能合约带来巨大的挑战。这或许是 EVM 设计者在最初的设计中没有考虑到的问题。

  • 公链适合处理海量的交易吗?

公链是公众基础设施,其用户可以是任何人或团体,不可否认的是它处理能力越强越好,然而这并不意味着任何交易都需要上链,虽然 gas 机制可以减少垃圾数据上链的可能性,但随着节点处理交易能力的提升, 矿工为了增加收入必然会打包尽可能多的交易,这将必然使gas价格越来越低,链上将不可避免的充斥着大量垃圾数据,这将使账本数据越来越膨胀,到难以维护的程度。

  • 过度依赖硬件资源将使网络去中心化程度降低

通过提升CPU核心数可以做到高交易处理性能,增加磁盘容量可以存储更多数据,这将不断提升节点的运行维护成本,最终导致的结果必然是只有少数人或团体有能力支付这些成本,不利于去中心化。


http://chatgpt.dhexx.cn/article/3k0voCl0.shtml

相关文章

MATLAB计算EVM函数

function [rmsEVM,maxEVM,pctEVM,numSym] EVMcalculate(RxSig,TxSig)%RxSig为接收信号解调后复基带信号;TxSig是发射信号的复基带信号。 %计算接收信号EVM和画星座图 %RxSig,TxSig长度要一样; evm comm.EVM(‘MaximumEVMOutputPort’,true,… ‘XPerce…

通信算法之149:EVM测量

1.星座图 h scatterplot(sqrt(sps)*txSig(sps*span1:end-sps*span),sps,offset); hold on scatterplot(rxSigFilt(span1:end-span),n,offset,bx,h) scatterplot(dataMod,n,offset,r,h) legend(Transmit Signal,Received Signal,Ideal,location,best) 2. 眼图 Eye Diagram D…

以太坊虚拟机 EVM(2)Solidity运行原理

作者:储雨知|FISCO BCOS 核心开发者 引 言 作为一门面向智能合约的语言,Solidity与其他经典语言既有差异也有相似之处。 一方面,服务于区块链的属性使其与其他语言存在差异。例如,合约的部署与调用均要经过区块链网…

IMA/EVM完整性检测代码分析

IMA/EVM完整性检测 IMA(Integrity Measurement Architecture)是一个内核安全子系统,用于检测文件或数据的完整性和安全性。IMA的hook机制指的是内核接口钩子(kernel interface hooks),用于向IMA注册和实现…

为何Cable Loss没补好 EVM会变差

当EVM不好 或是灵敏度不好时 先别急着找硬件问题 先检查Cable Loss 先说结论 先谈谈标题 为何Cable Loss没补好 EVM会变差 多数射频功放输出 会接一个耦合器 将输出功率 耦合到收发器 用意是校正时 侦测输出功率的正确性与否 假设天线头为20dBm Cable loss为5dB 假设天线头…

TI毫米波级联雷达评估板 MMWCAS-DSP-EVM 和MMWCAS-RF-EVM

1. 前言 本文主要是TI的MMWCAS-DSP-EVM 和MMWCAS-RF-EVM 两块评估板的一些使用心得和毫米波雷达的学习总结。 2. 相关原理 毫米波(mmWave)是一类使用短波长电磁波的特殊雷达技术。通过捕捉反射的信号,雷达系统可以确定物体的距离、速度和角度。毫米波雷达可发射波…

DCA1000EVM使用指南

DCA1000EVM使用指南 一、开发环境 1、硬件 AWR1243/xWR1443/xWR1642BOOST(本文以IWR1642BOOST为例)DCA1000EVM5V/2.5A(电流要求不小于2.5A)电源适配器1个或2个 micro USB线2条RJ45网线1根60引脚Samtec连接线(DCA100…

EVM误差矢量幅度

EVM误差矢量幅度是衡量调制精度的一个主要指标,镜像频率的抑制度对EVM的影响取决于镜像频率的抑制度,一般镜像频率抑制度达到31dBc时,对EVM的影响约为5%。镜像频率对信号的影响是因为镜像频率的信号带宽与所需信号的带宽一样,而无…

区块链 以太坊 虚拟机 EVM 详解

一、虚拟机 虚拟机用来 执行以太坊上的交易,更改以太坊状态。 交易分两种: 普通交易智能合约交易。 在执行交易时需要支付油费。 智能合约之间的调用有四种方式。 二、以太坊虚拟机 以太坊虚拟机,简称 EVM,是用来执行以太坊…

以太坊EVM智能合约中的数据存储

目录 EVM基本信息 数据管理 Stack Args Memory Storage 固定长度的值 动态长度数组 Mappings 复杂类型的组合 总结 EVM基本信息 以太坊是一种基于栈的虚拟机,基于栈的虚拟机数据的存取为先进先出,在后面介绍EVM指令的时候会看到这个特性。同时基…

以太坊虚拟机EVM究竟是个啥

基本概念 EVM(ETHereum Virtual Machine)是「以太坊虚拟机」的缩写。如果你有一些软件开发的背景,一定听过java虚拟机。通俗的解释java虚拟机的就是: 我们写的java代码(不只是java,groovy,scala等也可以&a…

介绍 EVM 等效性

介绍 EVM 等效性 上个月,我们宣布了Optimistic 以太坊历史上最重要的升级。最近,我们将Optimistic Kovan迁移到真正的一键式部署,并增加了稳定性,主网在不到三周的时间内就会跟上。 这篇文章是关于我们相信EVM 等效性——完全符合…

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时序数据库储存点东西。第一次听说还有这种数据库,哈哈哈,孤陋寡闻了,先从各位大佬的博客看起,慢慢学习,逐渐了解了之后在服务器上进行安装。直接使用官方包进行安装很简单&…