关于 solidity
面向智能合约与 Web3 前端开发者的 Solidity 技能,涵盖安全、Gas、测试及合约集成实践。
主要功能
- 01智能合约安全模式
- 02Gas 与存储优化
- 03测试和静态分析指引
- 04Web3 前端集成实践
适用场景
- 01检查合约设计安全性
- 02降低部署和运行 Gas
- 03规划合约测试覆盖
- 04将类型化前端连接到合约
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ mindrally/ skills --skill solidity安装后在 Claude Code 中输入/solidity确认已加载。
详细介绍
Solidity
本技能涵盖 Solidity 智能合约开发的最佳实践,包括安全模式、Gas 优化、测试与工具,以及将合约集成到 Web3 React 前端。
核心原则
- 去掉冗余内容,只提供代码或详细说明
- 保持简洁,同时优先确保准确性和深度
- 先给出答案,再根据需要解释
代码结构与安全
- 使用明确的可见性修饰符和 NatSpec 文档
- 使用函数修饰符以减少重复
- 遵循命名约定:
- 合约使用 CamelCase
- 接口使用 PascalCase(前缀为“I”)
- 实施接口隔离原则
- 对可升级合约使用代理模式
- 为状态变更发出完整事件
- 遵循 Checks-Effects-Interactions 模式以防止重入
安全最佳实践
- 使用 OpenZeppelin 的 AccessControl 管理权限
- 要求使用 Solidity 0.8.0+,以防止溢出和下溢
- 使用 Pausable 模式作为紧急熔断机制
- 使用 ReentrancyGuard 提供额外保护
- 使用 SafeERC20 进行代币交互
- 采用先拉取、后推送的支付模式
- 为敏感操作实施 timelock 和多签控制
Gas 优化
- 优化 Gas 消耗(部署和运行时)
- 对构造函数设置的值使用 immutable 变量
- 使用自定义错误代替 revert 字符串
- 高效打包存储变量
- 使用恰当的数据类型
工具与分析
- 集成 Slither 和 Mythril 进行静态分析
- 利用 Hardhat 的测试和开发环境
- 实施稳健的 CI/CD 流水线
- 使用提交前代码检查工具
高级模式
- 使用 Chainlink VRF 实现随机数
- 有策略地使用 assembly,并提供详尽文档
- 对复杂逻辑采用状态机模式
- 使用 ERC20Snapshot、ERC20Permit 和 ERC20Votes 实现专用代币
测试与质量
- 全面进行单元、集成和端到端测试
- 采用基于属性的测试方法
- 设定较高的覆盖率目标
- 定期进行安全审计
Web3 前端集成
- 确保与合约交互的前端代码类型安全且明确——根据 ABI 生成 TypeScript 类型(例如通过 TypeChain 或 wagmi/viem codegen),而不是手写合约调用签名
- 将钱包连接、链/网络状态和交易状态作为明确的类型化状态(已连接/连接中/网络错误/出错)处理,而不是隐式布尔值
- 在 UI 中清楚呈现交易生命周期:已提交、等待确认、已确认、已回退——切勿假定已提交的交易一定成功
- 在提示用户签名前验证并模拟交易(例如
eth_call/Gas 估算),以便及早发现回退 - 切勿信任客户端读取的合约状态来做授权决策——务必在合约本身重新进行链上验证
- 将提供程序/RPC 故障和用户拒绝签名请求视为预期的、可恢复的错误状态
评论
支持 Markdown