EVM的字节码天生没有函数边界,参数怎么传、返回到哪、局部变量放哪儿全靠编译器口头约定。EIP-4573提出用一组指令把过程正式写进指令集。本文介绍它依赖的跳转表与容器框架,以及五条新指令各自管什么。
EVM的字节码天生没有函数边界,参数怎么传、返回到哪、局部变量放哪儿全靠编译器口头约定。EIP-4573提出用一组指令把过程正式写进指令集。本文介绍它依赖的跳转表与容器框架,以及五条新指令各自管什么。
EVM的内存没有静态变量概念,合约里的每个变量访问都要先执行一次地址加法。EIP-3337提出引入帧指针:GETFP、SETFP和带偏移的存取指令,让编译器把变量放进可寻址范围后直接读。这份2021年的提案现在处于Stagnant,但它记录了EVM内存模型的一个真实痛点。
账户抽象想让普通地址也能像合约一样验证签名和代付,但预验证调用可能在模拟阶段被拒。EIP-2970提出一条IS_STATIC指令,让合约区分自己正在真实执行还是静态模拟。这份Vitalik的提案停在Stagnant,问题本身却随着4337的落地越发真实。
经过代理和委托调用的连环转发后,合约里的CALLER只能看到上一跳,看不到最初发起交易的用户。EIP-3520提出一条ENTRYPOINT指令,返回当前交易最开始的接收地址。这份2021年的提案停在Stagnant,但身份认错的麻烦每天都在发生。
以太坊上的隐私协议和ZK应用都绕不开alt_bn128曲线的三条预编译指令,EIP-1108在2018年把它们的Gas价格大幅下调:加法从五百降到一百五,配对检查的固定成本砍掉近六成。这份Final提案的定价方法本身就是一次成本审计。
网站连钱包时到底拿到了什么能力,今天大多说不清。EIP-2255在2019年给出了标准答案的雏形:wallet_getPermissions和wallet_requestPermissions两个方法,加一套按网站、按方法、带附加限制的权限记录。这份Final提案定义了接口,也暴露了理想与现实的差距。
以太坊节点会向外暴露运行指标,各家客户端命名五花八门,同一块仪表盘要写四套查询。EIP-2159给最常用的链同步与连接数指标定了统一名字,本文解释这份Final提案为什么只有四个指标,以及统一命名怎么把节点告警从方言推向普通话。
以太坊的升级长期随到随发,各方排期靠抢。EIP-1872在2018年提出把全年划成四个固定升级窗口,按路线图、紧急、危急三档分流。提案停在Stagnant,但它回答了升级治理的真问题,也解释了为什么理想排期斗不过紧急现实。
今天网页调钱包只有一句provider.request。这个形状由EIP-2696在2020年定义:一个单一方法承载所有调用,替代散装的回调接口。这份Final提案是EIP-1193的地基,也决定了钓鱼网站与正规网站面对的是同一扇门。
EVM的CALL指令把Gas参数当上限而不是配额,给不够就少给点也要跑。EIP-1930在2019年提出严格语义:指定多少必须给多少,给不出就revert,并提出用高位标志区分新旧语义的免加指令方案。提案停在Stagnant,但它点破了Gas语义里一个沿用至今的模糊地带。