解释 EIP-3540 的 EOF 容器:带版本号的段结构、一次性部署验证取代逐次运行期试探、代码与数据分离,以及同族提案与官方页面标注的 Stagnant 状态边界。
汇总与「字节码」相关的文章,帮助你系统了解该主题。
解释 EIP-3540 的 EOF 容器:带版本号的段结构、一次性部署验证取代逐次运行期试探、代码与数据分离,以及同族提案与官方页面标注的 Stagnant 状态边界。
EVM 世界运行多年「一切皆跳转」的规矩:函数调用靠把地址压栈再执行动态 JUMP 模拟,验证器不得不在每个跳转点做全码扫描。EIP-4750 是 EOF 字节码集装箱计划里的函数篇:把每个函数拆成独立代码段,配类型段声明输入输出与栈增量,用带立即数的 CALLF 与 RETF 取代动态跳转,另设 1024 深度的独立返回栈。这份 2022 年 1 月的提案最终停在 Stagnant,但它定义的调用模型仍是 EVM 控制流改革最完整的蓝本。
EVM的字节码天生没有函数边界,参数怎么传、返回到哪、局部变量放哪儿全靠编译器口头约定。EIP-4573提出用一组指令把过程正式写进指令集。本文介绍它依赖的跳转表与容器框架,以及五条新指令各自管什么。
EOF格式把合约字节码装进带数据段的容器,旧的CODECOPY读码指令被弃用,读数据段需要新工具。EIP-7480提出DATALOAD、DATALOADN、DATASIZE、DATACOPY四条指令。本文逐条拆解它们的语义、Gas定价和越界补零规则。
EVM执行了十年只进不出的JUMP,没有真正的函数调用。EIP-7979用三条新操作码CALLSUB、CALLDEST、RETURNSUB给字节码加上调用与返回,靠一条返回栈记账,不依赖EOF容器格式。本文拆解三条指令的分工与异常规则。
EVM代码执行到一半才炸栈上溢或下溢,是运行时错误里最常见也最浪费的一种。EOF系列改进中的EIP-5450把检查挪到部署时:对每个函数做一遍控制流分析,逐指令记录栈高度上下界,凡可能触界的代码直接拒绝部署。本文拆解它的两阶段验证、界值传递规则,以及省掉哪些运行时检查。
本文拆解合约部署的完整流程:编译产物(字节码 + ABI)、部署交易的结构(data = 字节码 + 构造函数参数)、部署成本为什么高、验证/源代码发布的作用,以及工厂模式的意义。