本文是智能合约安全系列文章的第一部分,主要讨论了智能合约中拒绝服务(DoS)攻击的威胁与防范。文章通过实际案例Fomo3D,讲解了DoS攻击如何利用以太坊的gas限制使合约不可用,并重点介绍了利用无限制循环和外部调用失败两种主要攻击手段。文章还提供了使用“拉取而非推送”模式、限制状态增长、熔断器等多种缓解措施,以及Slither、MythX、Foundry等高级工具,以构建更具弹性的智能合约。
文章讨论了在以太坊以L2为主的生态系统中,提高L1 Gas限制的重要性。作者从多个角度分析了提高L1 Gas限制的价值,包括抗审查性、跨L2资产转移、L2大规模退出、L1上的ERC20发行、Keystore钱包操作和L2证明提交等。
本文解释了Solodit checklist中关于防范Griefing攻击的两项检查(SOL-AM-GA-1和SOL-AM-GA-2),Griefing攻击旨在干扰或阻止正常用户执行功能,攻击者通常会付出成本(如gas费)。文章通过具体合约代码示例展示了攻击原理和PoC,并提供了修复建议,强调开发者需要从对抗的角度去思考,验证外部交互,确保状态一致性。