一个用于安全智能合约开发的库。 建立在经过社区审核的代码基础之上。
- ERC20和ERC721等标准的实现。
- 灵活的基于角色的权限方案。
- 可重用的Solidity组件,用于构建自定义合约和复杂的去中心化系统。
:mage: 不确定如何开始? 查看合约向导 — 一个交互式智能合约生成器。
:building_construction: 想要扩展你的去中心化应用? 查看OpenZeppelin Defender — 一个关键的开发者安全平台,用于自信地编码、审计、部署、监控和操作。
[!重要] OpenZeppelin Contracts使用语义化版本控制来传达其API和存储布局的向后兼容性。对于可升级合约,不同主要版本的存储布局应被视为不兼容,例如,从4.9.3升级到5.0.0是不安全的。在向后兼容性中了解更多。
概述
安装
Hardhat (npm)
$ npm install @openzeppelin/contracts
Foundry (git)
[!警告] 通过git安装时,一个常见错误是使用
master
分支。这是一个开发分支,应避免使用,而应使用标记的发布版本。发布过程涉及master
分支无法保证的安全措施。
[!警告] Foundry最初安装最新版本,但后续的
forge update
命令将使用master
分支。
$ forge install OpenZeppelin/openzeppelin-contracts
在remappings.txt
中添加@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/
。
使用
安装完成后,你可以通过导入来使用库中的合约:
pragma solidity ^0.8.20;
import {ERC721} from "@openzeppelin/contracts/token/ERC721/ERC721.sol";
contract MyCollectible is ERC721 {
constructor() ERC721("MyCollectible", "MCO") {
}
}
如果你是智能合约开发新手,请前往开发智能合约了解如何创建新项目和编译合约。
为了保持系统安全,你应该始终按原样使用安装的代码,不要从在线源复制粘贴,也不要自行修改。该库的设计使得只有你使用的合约和函数会被部署,所以你不必担心它会不必要地增加gas成本。
了解更多
文档网站中的指南将教你不同的概念,以及如何使用OpenZeppelin Contracts提供的相关合约:
完整API也有详细的文档,在开发智能合约应用时可作为很好的参考。你还可以在社区论坛寻求帮助或关注Contracts的开发。
最后,你可能想看看我们博客上的指南,它们涵盖了几个常见用例和最佳实践。以下文章提供了很好的背景阅读,但请注意,由于生态系统中的工具持续快速发展,一些提到的工具可能已经发生变化。
- 以太坊智能合约开发者指南将帮助你了解智能合约开发可用的各种工具,并帮助你设置环境。
- 以太坊编程温和介绍,第1部分提供了入门级的非常有用的信息,包括以太坊平台的许多基本概念。
- 如需更深入的探讨,你可以阅读设计以太坊应用程序的架构指南,该指南讨论了如何更好地构建你的应用程序及其与现实世界的关系。
安全
本项目由OpenZeppelin维护,旨在为生态系统提供安全可靠的智能合约组件库。我们通过在工程和开源最佳实践、范围和API设计、多层审查流程以及事件响应准备等多个领域的风险管理来解决安全问题。
OpenZeppelin Contracts安全中心包含了有关安全开发过程的更多详细信息。
安全政策详细说明在SECURITY.md
中,并指定了如何报告安全漏洞、哪些版本将收到安全补丁以及如何及时了解这些信息。我们在Immunefi上运行一个漏洞赏金计划,以奖励负责任的漏洞披露。
我们遵循的工程准则可以在GUIDELINES.md
中找到,这些准则旨在提高项目质量。
过去的审计可以在audits/
中找到。
智能合约是一项新兴技术,带有高度的技术风险和不确定性。尽管OpenZeppelin以其安全审计而闻名,但使用OpenZeppelin Contracts并不能替代安全审计。
OpenZeppelin Contracts根据MIT许可证提供,该许可证免除了与项目相关的所有担保,并限制了为项目做出贡献和维护项目的人员的责任。如条款中进一步规定,你承认你对使用OpenZeppelin Contracts负全责,并承担与任何此类使用相关的所有风险。
贡献
OpenZeppelin Contracts的存在要归功于其贡献者。有很多方式你可以参与并帮助构建高质量的软件。查看贡献指南!
许可证
OpenZeppelin Contracts根据MIT许可证发布。
法律
你对本项目的使用受www.openzeppelin.com/tos("条款")中的条款约束。