尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
EIP-7609 解读:为 TLOAD/TSTORE 引入超线性定价模型,重构瞬态存储 Gas 成本
EIP-7609 解读为 TLOAD/TSTORE 引入超线性定价模型重构瞬态存储 Gas 成本【免费下载链接】EIPsThe Ethereum Improvement Proposal repository项目地址: https://gitcode.com/GitHub_Trending/ei/EIPsEIP-7609 是 Ethereum Improvement Proposal 仓库中的一份 Core 类标准提案旨在通过降低TLOAD/TSTORE的基础 Gas 费用并引入与已分配槽位数量相关的超线性superlinear扩展费用在显著提升瞬态存储transient storage常规使用效率的同时从定价层面彻底封堵针对瞬态存储的 DoS 攻击向量。阅读本文后你将掌握 EIP-7609 的完整定价公式与伪代码、其相对 EIP-1153 原定价的改进逻辑以及提案中经过严格数学推导的单合约 / 单交易内存分配上限并理解其与仓库中重入保护相关提案如 EIP-7705的演进关系。背景瞬态存储是什么为什么它被“系统性高估”要理解 EIP-7609 的价值必须先回顾它的地基——EIP-1153Transient storage opcodesFinal 状态。EIP-1153 引入了一对新的 EVM 操作码TLOAD (0x5c) TSTORE (0x5d)瞬态存储的行为与常规存储高度相似按 32 字节字寻址、在调用帧之间持续存在但在每笔交易结束时被完全清除值永远不会被序列化/反序列化到磁盘。它由TLOAD弹出一个 32 字节栈字作为地址并读取与TSTORE弹出地址与值并写入操作寻址方式与SLOAD/SSTORE完全一致。EIP-1153 的原始定价将TSTORE设为与暖存储脏槽写入相同当时为 100 gas将TLOAD设为与热SLOAD相同当时为 100 gas。这个定价在当时出于两个考量一是概念上的简洁性二是回应两个相关 DoS 向量——攻击者可能分配过量的瞬态存储以及回滚revert时的状态回滚成本。然而 EIP-7609 的动机部分给出了一个关键观察瞬态存储从根本上被高估了。理由有三它的定价不涉及退款refund机制它只在合约加载时要求一次新的分配与之相对内存MSTORE每次调用都需要全新分配它与物理数据库没有任何交互不落盘。这意味着瞬态存储的实际资源成本远低于其 100 gas 的定价所暗示的水平存在大幅降价的空间。EIP-7609 的规范基础价下调 超线性扩展费EIP-7609 的规范非常简洁核心是两句话TLOAD的 Gas 成本被提议为5 gasTSTORE的 Gas 成本被提议为8 gas expansion_cost其中当 key 尚不存在于瞬态存储映射中时expansion_cost 1 gas × len(transient storage mapping)否则为0 gas。也就是说写入一个新槽位时额外成本等于当前瞬态存储中已占用槽位的总数写入一个已存在槽位时只付 8 gas 的基础价。这是一条随分配规模线性增长的收费曲线——由于每次新增写入都要叠加当前总量总成本随槽位数量呈**平方级超线性**增长。官方伪代码EIP-7609 给出了可直接落地的 Python 伪代码是理解该模型的最清晰入口G_LOW 5 G_MID 8 SLOPE 1 def gas_tload(_key): return G_LOW def gas_tstore(key, transient_mapping): cost G_MID if key not in transient_mapping: cost SLOPE * transient_mapping.size() return cost参数语义如下参数值含义G_LOW5TLOAD固定基础费用G_MID8TSTORE固定基础费用SLOPE1每个已占用槽位对新增写入的扩展费系数gas/slotexpansion_cost1 × mapping.size()仅当 key 尚未存在时征收一个直观的推论写入第n个新槽位时费用为8 ngas连续写入N个新槽位的累计费用约为Σ(8 i) 8N N(N-1)/2呈平方增长。为什么“便宜的前几个槽位”如此重要重入保护用例EIP-7609 的动机部分强调了 EIP-1153 最重要的用例之一——廉价的重入保护。在瞬态存储足够便宜尤其对最初的几个槽位的前提下重入锁可以在语言层默认启用而不会给用户带来过重负担同时可以预防智能合约中最大、代价最高的一类漏洞重入攻击。这一思路在仓库中是连贯的。例如作者之一的 Charles Cooper 还在 EIP-7705NONREENTRANT / REENTRANT 操作码中延续了这条技术路线该提案的动机同样指出“重入攻击占 EVM 链上用户资金被盗的很大一部分”而瞬态存储虽然降低了防护成本“但还不足以让默认启用变得理所当然”。EIP-7609 正是试图把最后这段成本差距补上。Rationale定价依据来自真实基准测试EIP-7609 的定价不是拍脑袋而是基于基准测试benchmarkingTLOAD实测消耗的 CPU 时间与MUL操作码相近TSTORE实测约为MUL的 1.5 倍。因此G_LOW 5与G_MID 8分别被选定为TLOAD与TSTORE的基础费用——与 5/8 的低廉算术操作费用处于同一量级而非与 100 gas 的存储操作对齐。安全考量超线性模型如何封堵 DoS降价必然伴随风险更便宜的TSTORE意味着攻击者可以更低成本地分配大量瞬态内存。EIP-7609 的安全考量部分用两道数学推导严谨地论证了超线性模型为什么能把 DoS 限制在可接受的范围内。单合约场景约 7,739 个槽位 / 248KB给定 30M gas 区块上限单合约内可分配的瞬态槽位最大数量是方程x(x-1)/2*1 8*x 30_000_000的解约为7,739 个槽位合计248KB。跨合约场景约 23,000 个槽位 / 736KB如果攻击者采用“每个新合约都专为最大化瞬态分配而设计”的策略当单次TSTORE成本超过调用冷合约的成本2600 gas时便切换合约推导过程如下solve for SLOPE * num slots 2600, num_slots 2600 gas_used_by_contract 2600 SLOPE * num_slots * (num_slots - 1) / 2 G_MID * num_slots 3402100 block_gas_limit 30_000_000 num_calls_per_txn block_gas_limit // gas_used_by_contract ~ 8.8 max_transient_slots num_calls_per_txn * num_slots 22927即单笔交易最多可分配约23,000 个槽位 / 736KB。与现状的对比更紧的资源上界EIP-7609 进一步给出了一组对比数据证明该模型整体收紧了客户端可被分配的内存上限分配途径单笔交易可分配内存当前计价表下瞬态存储30_000_000 / 100 * 32约 9.6MB本 EIP 计价下瞬态存储跨合约策略约 736KBSSTORE30_000_000 / 20_000 * 32约 48KB与当前计价表允许的 9.6MB 相比EIP-7609 是净缩减即对客户端资源使用提出了更强的约束。同时提案特别指出这个上限随区块 Gas 上限线性扩展因此在未来区块 Gas 上限提升时该性质依然成立、无需重新论证。向后兼容性EIP-7609 声明未发现向后兼容性问题。这与其姐妹提案 EIP-1153“不改变任何既有操作码行为向后兼容所有现存智能合约”的兼容性立场一致本提案只改变TLOAD/TSTORE的 Gas 计价不改变任何操作码的语义因此存量合约的行为不受影响仅涉及 Gas 成本变化且是成本下降。总结一条“便宜到默认启用、贵到无法滥用”的定价曲线EIP-7609 的核心设计哲学可以浓缩为一句话让常规用例每合约写入少于约 95 个槽位变得便宜让 DoS 攻击变得贵得难以承受。通过TLOAD 5、TSTORE 8 每槽位 1 gas的超线性模型它既把瞬态存储的基础成本拉低到接近算术操作的水平为语言级默认重入保护铺路又将单交易最大可分配瞬态内存从上不封顶约束到约 736KB 的硬上限。需要注意的是该 EIP 目前状态为Stagnant停滞尚未被纳入任何硬分叉计划属于设计探索阶段的提案。不过它提出的“基础价降低 按分配规模线性扩展费”这一计价范式连同 EIP-7705 等围绕重入防护的提案共同构成了瞬态存储定价与安全边界演进的重要参考。如果你正在实现或审计使用TLOAD/TSTORE的合约、客户端或编译器理解这条超线性定价曲线及其背后的 DoS 边界推导将帮助你准确评估瞬态存储在不同槽位规模下的真实成本与资源约束。本文内容以 EIP-7609 原文为骨架相关语义细节可进一步参阅 EIP-1153瞬态存储操作码、EIP-7705重入防护操作码以及 EIP-2200、EIP-3529存储计价与退款上限。版权声明参见仓库根目录的 LICENSE.md。【免费下载链接】EIPsThe Ethereum Improvement Proposal repository项目地址: https://gitcode.com/GitHub_Trending/ei/EIPs创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

网页的制作与建设全流程拆解:一份保姆级建站教程

网页的制作与建设全流程拆解:一份保姆级建站教程

网页的制作与建设全流程拆解:一份保姆级建站教程 域名买好了,服务器租下了,为什么网站还是打不开?这是我在过去十年接到的最频繁的问题。很多客户以为只要交了钱,网页就会像变魔术一样出现,结果卡在 DNS 解析、SSL…

📅 2026/9/15 17:55:28
百元内蓝牙耳机选购指南:品牌、技术与避坑技巧

百元内蓝牙耳机选购指南:品牌、技术与避坑技巧

我这几年帮身边朋友挑过的百元内蓝牙耳机,没有三十副也有二十副了。先说个结论:100元以下蓝牙耳机的市场早就不是几年前那种"能响就行"的水平了,现在这个价位段里有正经品牌的成熟方案、有够用的通话降噪、也有能打六个小时的单次续…

📅 2026/9/15 17:55:28
mold 仓库内置 zstdgrep 实战:无需解压直接 grep 检索 .zst 压缩文件

mold 仓库内置 zstdgrep 实战:无需解压直接 grep 检索 .zst 压缩文件

mold 仓库内置 zstdgrep 实战:无需解压直接 grep 检索 .zst 压缩文件 【免费下载链接】mold mold: A Modern Linker 🦠 项目地址: https://gitcode.com/GitHub_Trending/mo/mold 导读 zstdgrep 是 zstd 压缩工具族中的一员,它把 grep…

📅 2026/9/15 17:50:28
MORE NEWS

更多资讯

📰

2023年免费FTP客户端推荐:Win11下五大工具实测对比与安全配置指南

干IT这行的,谁电脑里没装过两三个FTP客户端?从给同事传个安装包,到把整站静态资源推到服务器,再到从生产环境拉日志排查问题,这工具看着不起眼,真用起来却天天离不开。尤其是换到Windows 11之后&#xff0c…

📰

Qinglong 面板首次访问如何初始化登录账号并进入系统

Qinglong 面板首次访问如何初始化登录账号并进入系统 【免费下载链接】qinglong 支持 Python3、JavaScript、Shell、Typescript 的定时任务管理平台(Timed task management platform supporting Python3, JavaScript, Shell, Typescript) 项目地址: ht…

📰

阅读与社交能力的科学解析

1. 阅读量与性格特质的迷思:数据与现实的碰撞"读书多的人越不开朗"这个观点在社交网络上时常被提起,乍看似乎有些道理——我们印象中那些埋头书堆的学者确实常常给人沉默寡言的印象。但当我真正开始梳理相关研究和数据时,发现这个命…

📰

Uvicorn 快速上手:用 Python 构建 ASGI Web 服务的完整实战指南

Uvicorn 快速上手:用 Python 构建 ASGI Web 服务的完整实战指南 【免费下载链接】uvicorn An ASGI web server, for Python. 🦄 项目地址: https://gitcode.com/GitHub_Trending/uv/uvicorn Uvicorn 是一个基于 ASGI(Asynchronous Ser…

📰

LangChain4j OceanBase 向量存储集成实战:从相似度检索到混合检索的完整指南

LangChain4j OceanBase 向量存储集成实战:从相似度检索到混合检索的完整指南 【免费下载链接】langchain4j LangChain4j is an idiomatic, open-source Java library for building LLM-powered applications on the JVM. It offers a unified API over popular LLM …

📰

真机Canvas导出失败?用剪贴板文案替代canvasToTempFilePath

1. 项目概述:为什么真机上Canvas导出总失败?这根本不是代码写错了“真机Canvas导出失败”——这句话在微信小程序开发群里每天至少刷屏二十次。我去年带三个团队做教育类互动课件,几乎每个项目都卡在这个环节:开发者工具里一切正常…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬