返回顶部
S

SoliditySolidity避坑指南

Avoid common Solidity mistakes — reentrancy, gas traps, storage collisions, and security pitfalls.

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.0
安全检测
已通过
1,091
下载量
免费
免费
2
收藏
概述
安装方式
版本历史

Solidity

重入攻击

  • - 状态更新前进行外部调用——攻击者可在状态变更前重新进入
  • 检查-生效-交互模式——先验证、更新状态,最后执行外部调用
  • 使用OpenZeppelin的ReentrancyGuard——在易受攻击函数上添加nonReentrant修饰符
  • transfer()和send()有2300 gas限制——但不要依赖此机制保障安全

整数处理

  • - Solidity 0.8+版本溢出会自动回滚——但unchecked {}代码块可绕过此限制
  • 除法向零截断——5 / 2 = 2,不支持小数
  • 使用定点数运算保证精度——先乘后除,或使用数学库
  • 用type(uint256).max表示最大值——不要硬编码大数值

Gas陷阱

  • - 无界循环可能超过区块gas限制——采用分页或限制迭代次数
  • 存储写入消耗20k gas——内存/调用数据成本低得多
  • delete可退还gas但有上限——退款有封顶,不要依赖此机制
  • 循环中读取存储——先在内存变量中缓存

可见性与访问控制

  • - 状态变量默认为internal——非private,派生合约可访问
  • private不代表隐藏——所有区块链数据公开,仅其他合约无法访问
  • tx.origin是原始发送者——应使用msg.sender,tx.origin易受钓鱼攻击
  • external函数无法内部调用——使用public或this.func()(浪费gas)

以太币处理

  • - 接收以太币需payable修饰——非payable函数会拒绝以太币
  • selfdestruct可绕过fallback发送以太币——合约无receive函数也能接收
  • 检查send()返回值——失败返回false,不会自动回滚
  • 优先使用call{value: x}()而非transfer()——可转发所有gas,需检查返回值

存储与内存

  • - storage持久化,memory临时——存储消耗gas,内存不持久
  • 结构体/数组参数默认为memory——显式声明storage可修改状态
  • calldata用于外部函数输入——只读,比内存更便宜
  • 存储布局影响合约升级——切勿重排或删除存储变量

可升级合约

  • - 构造函数在代理中不执行——使用带initializer修饰符的initialize()函数
  • 代理与实现合约的存储冲突——采用EIP-1967存储槽
  • 切勿对实现合约执行selfdestruct——会破坏所有指向它的代理
  • delegatecall使用调用者存储——实现合约存储布局必须与代理匹配

常见错误

  • - 区块时间戳可被轻微操纵——勿用于随机数或精确计时
  • require用于用户错误,assert用于不变性检查——assert失败表示代码缺陷
  • 字符串不能用==比较——使用keccak256(abi.encodePacked(a)) == keccak256(abi.encodePacked(b))
  • 事件未索引——前3个参数可设为indexed以实现高效过滤

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 solidity-1776328812 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 solidity-1776328812 技能

通过命令行安装

skillhub install solidity-1776328812

下载

⬇ 下载 Solidity v1.0.0(免费)

文件大小: 2.06 KB | 发布时间: 2026-4-17 15:09

v1.0.0 最新 2026-4-17 15:09
Initial release

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部