安全与风控
编写或审计 Solidity 智能合约时防范重入…
在编写、审计或加固 Solidity 智能合约(尤其是 DeFi 协议)时,系统性地防范常见漏洞并做好审计准备。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 49/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 85/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
编写或审计 Solidity 智能合约时通用
解决思路
- 遵循 CEI(Checks-Effects-Interactions)模式:先做 require 检查,再更新状态变量,最后才进行外部调用,以防止重入攻击。
- 使用 ReentrancyGuard(如 OpenZeppelin 的 nonReentrant 修饰器)保护涉及外部调用的函数,使重入调用被回滚并抛出 'ReentrancyGuard: reentrant call'。
- 使用 Solidity 0.8+ 的内置溢出检查,或引入 SafeMath 等库,防止整数上溢/下溢;对转账等操作拒绝 MaxUint256 之类的越界值。
- 实施访问控制(如 Ownable 的 onlyOwner),对提款等敏感函数校验调用者身份,未授权调用应回滚并提示 'Ownable: caller is not the owner'。
- 用 Hardhat + Chai + ethers 编写安全测试:部署受害合约与攻击者合约,模拟重入攻击并断言交易被 revert。
- 为安全测试覆盖三类核心场景:重入攻击防护、整数溢出防护、访问控制强制。
- 在优化 gas 的同时保持上述安全措施不被削弱。
- 为合约编写完整 NatSpec 文档(@title、@dev、@notice、@param),便于专业审计。
- 在函数内用注释明确标注 CHECKS / EFFECTS / INTERACTIONS 各阶段,提升可审计性。
- 在准备专业审计前,先自查常见攻击向量并补齐文档与测试。
- 当导航层信息不足时,阅读 references/details.md 获取详细模式与完整示例。
适用边界 · 注意事项
- 非 EVM/Solidity 的区块链或非智能合约场景。
- 仅做前端或链下业务逻辑、不涉及合约状态与外部调用的开发。
- 已由成熟审计且不再改动的合约,重复套用全部流程收益有限。