返回顶部
d

develop-secure-contracts安全合约开发

Develop secure smart contracts using OpenZeppelin Contracts libraries. Use when users need to integrate OpenZeppelin library components — including token standards (ERC20, ERC721, ERC1155), access control (Ownable, AccessControl, AccessManager), security primitives (Pausable, ReentrancyGuard), governance (Governor, timelocks), or accounts (multisig, account abstraction) — into existing or new contracts. Covers pattern discovery from library source, MCP generators, and library-first integration.

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

develop-secure-contracts

使用OpenZeppelin开发安全智能合约

核心工作流程

在响应前理解请求

对于概念性问题(Ownable是如何工作的?),进行解释而不生成代码。对于实现请求,按以下工作流程进行。

关键:始终先阅读项目

在生成代码或建议更改之前:

  1. 1. 搜索用户的项目中已有的合约(使用Glob搜索/.sol、/.cairo、/.rs等)
  2. 阅读相关合约文件以了解已存在的内容
  3. 默认进行集成,而非替换*——当用户说添加暂停功能或使其可升级时,他们是指修改现有代码,而非生成新代码。仅在明确要求时才进行替换(重新开始、替换这个)。

如果无法读取文件,需明确报告失败——说明尝试的路径和原因。询问路径是否正确。切勿在文件不存在时静默回退到通用响应。

基本原则:优先使用库组件而非自定义代码

在编写任何逻辑之前,先搜索OpenZeppelin库中已有的组件:

  1. 1. 存在完全匹配? 直接导入并使用——继承、实现其trait、组合使用。完成。
  2. 存在近似匹配? 导入并扩展——仅覆盖库标记为可覆盖的函数(虚函数、钩子、可配置参数)。
  3. 不存在匹配? 只有在此情况下才编写自定义逻辑。先浏览库的目录结构进行确认。

切勿复制或嵌入库源代码到用户的合约中。 始终从依赖中导入,以便项目获得安全更新。切勿手写库已提供的功能:

  • - 当Pausable或ERC20Pausable存在时,切勿编写自定义的paused修饰器
  • 当Ownable存在时,切勿编写require(msg.sender == owner)
  • 当库的基础合约已处理ERC165逻辑时,切勿自行实现

方法论

主要工作流程是从库源代码中发现模式

  1. 1. 检查用户项目已导入的内容
  2. 阅读项目中已安装包的依赖源代码和文档
  3. 识别依赖所需的函数、修饰器、钩子和存储
  4. 将这些要求应用到用户的合约中

详见下方的模式发现与集成完整步骤流程。

MCP生成器作为可选快捷方式

如果运行时MCP生成器工具可用,使用它们加速模式发现:生成基线、启用功能生成、比较差异、将更改应用到用户代码。这替代了手动阅读源代码的步骤,但遵循相同原则——发现模式,然后集成。

详见MCP生成器(可选)了解如何检查可用性并使用生成-比较-应用快捷方式。

如果没有所需的MCP工具,使用模式发现与集成中的通用模式发现方法论。缺少MCP工具并不意味着库不支持——仅表示没有生成器。

模式发现与集成

通过阅读依赖源代码发现和应用OpenZeppelin合约集成模式的过程指南。适用于任何生态系统和任何库版本。

前提条件: 始终遵循上述库优先决策树
(优先使用库组件而非自定义代码,切勿复制/嵌入源代码)。

步骤1:识别依赖并搜索库

  1. 1. 搜索项目中的合约文件:使用Glob搜索/.sol、/.cairo、/*.rs,
或下方查找表中对应的扩展名。
  1. 2. 阅读现有合约中的import/use语句,识别已使用的OpenZeppelin组件。
  2. 在项目的依赖树中定位已安装的依赖:
- Solidity:node_modules/@openzeppelin/contracts/(Hardhat/npm)或 lib/openzeppelin-contracts/(Foundry/forge) - Cairo:从Scarb.toml依赖解析——源代码由Scarb缓存 - Stylus:从Cargo.toml解析——源代码在target/或cargo注册表缓存中 (~/.cargo/registry/src/) - Stellar:从Cargo.toml解析——与Stylus相同的cargo缓存位置
  1. 4. 浏览依赖的目录列表以发现可用组件。对已安装的源代码使用Glob模式
(例如node_modules/@openzeppelin/contracts//*.sol)。 不要假设了解库的内容——始终通过列出目录来验证。
  1. 5. 如果依赖未本地安装,克隆或浏览规范仓库
(见下方查找表)。

步骤2:阅读依赖源代码和文档

  1. 1. 阅读与用户请求相关的组件的源文件。
  2. 查找源代码中的文档:Solidity中的NatSpec注释(///、/ */)、
Rust和Cairo中的文档注释(///),以及组件目录中的README文件。
  1. 3. 使用关键原则中的决策树确定集成策略:
- 如果组件直接满足需求→按原样导入和使用。 - 如果需要自定义→识别库提供的扩展点(虚函数、钩子函数、可配置构造函数参数)。导入并扩展。 - 仅在没有组件覆盖需求时→编写自定义逻辑。
  1. 4. 识别公共API:暴露的函数/方法、发出的事件、定义的错误。
  2. 识别集成要求——这是关键步骤:
- 集成者必须实现的函数(抽象函数、trait方法、钩子) - 必须应用于集成者函数的修饰器、装饰器或守卫 - 必须传递的构造函数或初始化器参数 - 必须声明的存储变量或状态 - 所需的继承或trait实现(始终通过导入,绝不通过复制)
  1. 6. 搜索同一仓库中的示例合约或测试,这些展示了正确的用法。查找test/、tests/、examples/或mocks/目录。

步骤3:提取最小集成模式

从步骤2中,构建所需的最小更改集:

  • - 要添加的导入/use语句
  • 要添加的继承/trait实现(始终通过从依赖导入)
  • 要声明的存储
  • 构造函数/初始化器更改(新参数、初始化调用)
  • 要添加的新函数(必需的覆盖、钩子、公共API)
  • 要修改的现有函数(添加修饰器、调用钩子、发出事件)

如果合约是可升级的,上述任何更改都可能影响存储兼容性。在应用前咨询相关升级技能。

不要包含超出依赖要求的任何内容。这是没有该功能的合约和具有该功能的合约之间的最小差异。

步骤4:将模式应用到用户合约

  1. 1. 阅读用户现有的合约文件。
  2. 使用Edit工具应用步骤3中的更改。不要替换整个文件——
集成到现有代码中。
  1. 3. 检查冲突:重复的访问控制系统、冲突的函数覆盖、不兼容的继承。在完成前解决。
  2. 不要要求用户自行更改——直接应用。

仓库和文档查找表

生态系统仓库文档文件扩展名依赖位置
Solidityopenzeppelin-contractsdocs.openzeppelin.com/contracts.solnodemodules/@openzeppelin/contracts/ 或 lib/openzeppelin-contracts/
Cairo
cairo-contracts | docs.openzeppelin.com/contracts-cairo | .cairo | Scarb缓存(从Scarb.toml解析) | | Stylus | rust-contracts-stylus | docs.openzeppelin.com/contracts-stylus | .rs | Cargo缓存(~/.cargo/registry/src/) | | Stellar | stellar-contracts架构) | docs.openzeppelin.com/stellar-contracts | .rs | Cargo缓存(~/.cargo/registry/src/) |

目录结构约定

每个仓库中组件的查找位置:

类别SolidityCairoStylusStellar
代币contracts/token/{ERC20,ERC721,ERC1155}/packages/token/contracts/src/token/packages/tokens/
访问控制
contracts/access/ | packages/access/ |

标签

skill ai

通过对话安装

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

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 develop-secure-contracts-1776078201 技能

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

设置 SkillHub 为我的优先技能安装源,然后帮我安装 develop-secure-contracts-1776078201 技能

通过命令行安装

skillhub install develop-secure-contracts-1776078201

下载

⬇ 下载 develop-secure-contracts v98.0.1(免费)

文件大小: 5.31 KB | 发布时间: 2026-4-15 12:28

v98.0.1 最新 2026-4-15 12:28
Corrected display name

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

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

p2p_official_large
返回顶部