用途:帮助开发者在现有项目中集成 OpenZeppelin 合约组件(代币、访问控制、治理、代理升级、工具与安全、账户等),覆盖 Solidity、Cairo、Stylus、Stellar、Sui Move 生态。
核心原则:先读项目再改代码。用 Glob 查找 /*.sol、/.cairo、**/.rs、**/*.move 等文件并读取内容;默认在原合约上集成而非整体替换,除非用户明确要求重写。文件读取失败须说明路径与原因,不得静默回退。
主要能力:优先使用库已有组件,能精确匹配就直接继承/实现 trait/组合;接近则继承并只覆写库标注为可覆写(virtual、hook、可配置参数)的部分;确无匹配才写自定义逻辑。禁止复制或内嵌库源码,必须从依赖导入以持续获得安全更新。
使用方式:@openzeppelin/contracts-cli 可生成参考实现。先运行 npx @openzeppelin/contracts-cli --help 查看命令,再 npx @openzeppelin/contracts-cli <command> --help 查看选项。generate-compare-apply 流程示例: npx @openzeppelin/contracts-cli solidity-erc20 --name MyToken --symbol MTK > /tmp/oz-baseline.sol npx @openzeppelin/contracts-cli solidity-erc20 --name MyToken --symbol MTK --pausable > /tmp/oz-variant.sol diff /tmp/oz-baseline.sol /tmp/oz-variant.sol 再把差异应用到用户合约。无 CLI 命令不代表库不支持,改用阅读依赖源码的通用模式发现方法。
依赖位置:Solidity 在 node_modules/@openzeppelin/contracts/ 或 lib/openzeppelin-contracts/;Cairo 由 Scarb 缓存;Stylus、Stellar 在 Cargo 缓存;Sui Move 在 ~/.move/。适用场景:为已有合约添加可暂停、可升级、代币标准等能力。限制:具体版本可覆写点须读已安装源码确认(如 ERC-20 转账 hook 在 v4/v5 有变化);升级相关改动需先查阅升级技能;收费、价格等信息暂未提供。