错误一:在循环中使用 unchecked 忽略边界
unchecked 块跳过溢出检查,看似节省 gas,但若循环上限来自外部输入,可能被构造极端值导致整数环绕。修复:只在严格证明边界安全时使用,并补 fuzz 测试覆盖。许多 Binance 智能链审计案例都把它列为高频问题。
错误二:合并 storage 槽未处理对齐
把多个变量打包进一个 slot 时,没有考虑结构体对齐,反而导致编译器自动补齐空字节,gas 不降反升。修复:用 forge inspect storage-layout 验证打包结果,确保符合预期。
错误三:误删 require 错误信息
为节省字符串 gas 删除所有错误信息,导致问题发生时无法定位。修复:改用 custom errors 替代,保留语义同时节省 gas。这是 币安 上币审核常见反馈。
错误四:过度使用内联汇编
91 赞同