OpenZeppelin/openzeppelin-contracts
GitHub: OpenZeppelin/openzeppelin-contracts
为 Solidity 智能合约开发提供经过审计的标准组件库,降低安全风险并加速去中心化应用开发。
Stars: 27200 | Forks: 12409
#
[](https://github.com/OpenZeppelin/openzeppelin-contracts/releases/latest)
[](https://www.npmjs.org/package/@openzeppelin/contracts)
[](https://codecov.io/gh/OpenZeppelin/openzeppelin-contracts)
[](https://docs.openzeppelin.com/contracts)
[](https://forum.openzeppelin.com/)
**一个用于安全开发智能合约的库。** 建立在经过社区审查的坚实代码基础之上。
* 实现 [ERC20](https://docs.openzeppelin.com/contracts/erc20) 和 [ERC721](https://docs.openzeppelin.com/contracts/erc721) 等标准。
* 灵活的[基于角色的权限控制](https://docs.openzeppelin.com/contracts/access-control)方案。
* 可重用的 [Solidity 组件](https://docs.openzeppelin.com/contracts/utilities),用于构建自定义合约和复杂的去中心化系统。
:mage: **不知道如何开始?** 试试 [Contracts Wizard](https://wizard.openzeppelin.com/) —— 一个交互式的智能合约生成器。
## 概述
### 发布标签
我们使用 NPM 标签来明确区分我们包中经过审计和未经过审计的版本:
| 标签 | 用途 | 描述 |
| :--------- | :----------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **latest** | ✅ 已审计发布版本 | 包的稳定、已审计版本。这是用户运行 `npm install @openzeppelin/contracts` 时安装的**默认**版本。 |
| **dev** | 🧪 最终但未经审计的版本 | 已完成且功能完备,但**尚未经过审计**的版本。该版本经过全面测试,可用于生产环境,并受漏洞赏金计划保护。 |
| **next** | 🚧 候选发布版本 | **非最终版**的预发布版本。用于在该版本成为最终的 `dev` 或 `latest` 版本之前进行测试和验证。 |
### 安装
#### Hardhat (npm)
```
$ npm install @openzeppelin/contracts
```
→ 安装最新的已审计发布版本 (`latest`)。
```
$ npm install @openzeppelin/contracts@dev
```
→ 安装最新的未审计发布版本 (`dev`)。
#### Foundry (git)
```
$ 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") {
}
}
```
_如果你刚开始接触智能合约开发,请前往 [开发智能合约](https://docs.openzeppelin.com/learn/developing-smart-contracts) 了解如何创建新项目并编译你的合约。_
为了保持系统的安全性,你应该**始终**按原样使用已安装的代码,既不要从在线来源复制粘贴,也不要自行修改。该库的设计使得只有你实际使用的合约和函数才会被部署,因此你不必担心它会不必要地增加 gas 成本。
## 了解更多
[文档网站](https://docs.openzeppelin.com/contracts)上的指南将教你不同的概念,以及如何使用 OpenZeppelin Contracts 提供的相关合约:
* [访问控制](https://docs.openzeppelin.com/contracts/access-control):决定谁可以在你的系统中执行各项操作。
* [代币](https://docs.openzeppelin.com/contracts/tokens):为流行的 ERC 标准创建可交易资产或收藏品,如 ERC-20、ERC-721、ERC-1155 和 ERC-6909。
* [实用工具](https://docs.openzeppelin.com/contracts/utilities):通用的有用工具,包括防溢出数学、签名验证和无信任支付系统。
[完整 API](https://docs.openzeppelin.com/contracts/api/token/ERC20) 也有详尽的文档,在你开发智能合约应用时可以作为绝佳的参考。你也可以在[社区论坛](https://forum.openzeppelin.com)中寻求帮助或跟进 Contracts 的开发进度。
最后,你可能会想看看[我们博客上的指南](https://blog.openzeppelin.com/),其中涵盖了一些常见的用例和最佳实践。以下文章提供了很好的背景阅读材料,但请注意,由于生态系统中的工具持续快速发展,其中提到的一些工具已经发生了变化。
* [以太坊智能合约搭车指南](https://blog.openzeppelin.com/the-hitchhikers-guide-to-smart-contracts-in-ethereum-848f08001f05) 将帮助你概览可用于智能合约开发的各种工具,并帮助你配置环境。
* [以太坊编程入门指南,第一部分](https://blog.openzeppelin.com/a-gentle-introduction-to-ethereum-programming-part-1-783cc7796094) 在入门级别提供了非常有用的信息,包括以太坊平台的许多基本概念。
* 如需更深入地了解,你可以阅读[设计你的以太坊应用架构](https://blog.openzeppelin.com/designing-the-architecture-for-your-ethereum-application-9cec086f8317)指南,其中讨论了如何更好地构建你的应用及其与现实世界的关系。
## 安全性
本项目由 [OpenZeppelin](https://openzeppelin.com) 维护,旨在为生态系统提供安全可靠的智能合约组件库。我们通过在工程和开源最佳实践、范围界定与 API 设计、多层审查流程以及事件响应准备等各个领域进行风险管理来解决安全问题。
[OpenZeppelin Contracts 安全中心](https://contracts.openzeppelin.com/security) 包含了关于安全开发流程的更多细节。
安全策略也在 [`SECURITY.md`](./SECURITY.md) 中有详细说明,其中规定了如何报告安全漏洞、哪些版本将接收安全补丁,以及如何随时了解这些信息。我们运营了一个 [Immunefi 上的漏洞赏金计划](https://immunefi.com/bounty/openzeppelin),以奖励负责任的漏洞披露。
我们在 [`GUIDELINES.md`](./GUIDELINES.md) 中遵循的工程指南,旨在促进项目质量。
过往的审计报告可在 [`audits/`](./audits) 中找到。
智能合约是一项新兴技术,具有较高的技术风险和不确定性。尽管 OpenZeppelin 以其安全审计而闻名,但使用 OpenZeppelin Contracts 并不能替代安全审计。
OpenZeppelin Contracts 根据 MIT 许可证提供,该许可证免除了与本项目的所有保证相关责任,并限制了那些贡献和维护本项目(包括 OpenZeppelin)的人员的责任。如条款中进一步规定,你承认你对使用 OpenZeppelin Contracts 负全部责任,并承担与此类使用相关的所有风险。
## 许可证
OpenZeppelin Contracts 基于 [MIT 许可证](LICENSE)发布。
## 法律声明
你对本项目的使用受 www.openzeppelin.com/tos(即“条款”)中的条款约束。
标签:Solidity, Web3, 代码库, 区块链, 开发框架, 智能合约, 暗色界面