EIP-4760 对合约自毁指令的处理不走一刀切:把 SELFDESTRUCT 改名 SENDALL、只保留转账语义,同时让它的 Gas 成本每隔约九天(两万多个槽)翻倍一次、经历十三次翻倍后完成转换。本文拆解这条总长约四个月的指数涨价曲线如何给开发者留出可预期的逃生期。
汇总与「合约安全」相关的文章,帮助你系统了解该主题。
EIP-4760 对合约自毁指令的处理不走一刀切:把 SELFDESTRUCT 改名 SENDALL、只保留转账语义,同时让它的 Gas 成本每隔约九天(两万多个槽)翻倍一次、经历十三次翻倍后完成转换。本文拆解这条总长约四个月的指数涨价曲线如何给开发者留出可预期的逃生期。
智能合约的传统重入锁要读写一个存储槽,而 2022 年 7 月提出的 EIP-5283 想在地址 0x0A 放一个叫信号量的预编译合约:只检查调用栈上有没有出现过同一个地址,完全不写存储,每次固定消耗 100 Gas。这份提案处于 Stagnant 停摆状态。本文讲清存储锁的工作原理、信号量方案的算法与账本、瞬态存储等三条竞争路线,以及普通用户从这场技术竞赛里能带走什么判断。
SELFDESTRUCT 让合约可以销毁自身代码,也让依赖它的公共库存在被一纸调用连根拔起的风险。2020 年 9 月维塔利克提交的 EIP-2937 给合约一个选择权:执行 SET_INDESTRUCTIBLE 操作码后,本笔交易里谁也别想再销毁它。本文讲这份 Stagnant 提案怎么用交易级全局变量实现"不可毁承诺",它与整条禁用自毁路线的分歧,以及 2024 年后自毁语义收窄让它走向怎样的尾声。
合约里查"谁发起了这笔交易"有两个答案:tx.origin 给最初的点火者,CALLER 给直接调用者,钓鱼合约正是利用两者的落差骗过授权检查。2024 年 3 月的 EIP-7645 提议让 0x32 操作码永远返回与 0x33 相同的值,把这块运营了近十年的技术债直接抹平。本文讲清两个操作码的分工、钓鱼利用路径,以及这份 Stagnant 提案与账户抽象的关系。
ERC-897 创建于 2018 年 2 月 21 日,仓库记录状态为 Stagnant。它不规定代理合约怎么写,只规定代理合约怎么自报家门:任何代理应当实现 `proxyType()` 和 `implementation()` 两个函数,让工具用统一方式判断一个地址是不是代理、代理指向哪个实现。本文按原文拆解转发型与可升级型两种代理类型编号、返回 0 视为非代理的约定,以及查代理时它管不到的那半部分。
在 EVM 里给一个合约地址转 ETH,等于顺带执行了对方合约里的接收函数,重入风险由此而来。EIP-5065 提出一条只转账、不移交执行流的指令,连 Gas 数字都算好了。本文拆解它相对自毁转账技巧的成本账、与重入防御的关系,以及它停在 Stagnant 的原因。
可升级合约在升级窗口内可能改变资金规则。本文教普通用户看懂时间锁等待期、管理员地址与升级公告里的关键信息,并给出升级窗口的三档应对动作。
合约经过审计是安全信号,但徽章只是图片、报告是 PDF,两者都能伪造、过期或张冠李戴。本文给出四步核验法:核机构名录、核对像、看覆盖范围、比对部署版本。
一些金库合约用份额与资产的比例记账,第一笔存入的金额和方式会成为攻击面:先存一笔极小份额、再向金库直接捐赠资产,就能让后续存款人的份额数被舍入归零。本文拆解这类份额通胀攻击的记账原理与主流防御写法。
多数 DeFi 协议的存款地址只是代理合约,真正的逻辑在背后可以被整体替换。本文解释代理模式的原理、升级权限的常见归属形态,以及存款前应该逐项确认的升级权、时间锁、暂停权和不可变范围。