mcpField
S
solidity

solidity

github.com/mindrally开发287725 次安装3 周前更新
代码仓库

关于 solidity

面向智能合约与 Web3 前端开发者的 Solidity 技能,涵盖安全、Gas、测试及合约集成实践。

主要功能

  1. 01智能合约安全模式
  2. 02Gas 与存储优化
  3. 03测试和静态分析指引
  4. 04Web3 前端集成实践

适用场景

  1. 01检查合约设计安全性
  2. 02降低部署和运行 Gas
  3. 03规划合约测试覆盖
  4. 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