Contracts

一个用于安全智能合约开发的库。 在社区验证代码的坚实基础上构建。

重要提示: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/

用法

安装完成后,您可以通过导入来使用库中的合约:

Unresolved include directive in modules/ROOT/pages/index.adoc - include::api:example$MyNFT.sol[]
如果你是智能合约开发的新手,请前往 开发智能合约 了解如何创建一个新项目并编译你的合约。

为了保证你的系统安全,你应该始终按原样使用已安装的代码,既不要从在线来源复制粘贴,也不要自己修改。该库的设计使得只有你使用的合约和函数才会被部署,所以你不需要担心它不必要地增加 Gas 成本。

安全

请通过我们的 Immunefi 上的漏洞赏金计划或直接发送邮件至 security@openzeppelin.org 报告您发现的任何安全问题。

安全中心 包含关于安全开发过程的更多细节。

了解更多

侧边栏中的指南将会讲述不同的概念,以及如何使用 OpenZeppelin Contracts 提供的相关合约:

  • 访问控制:决定谁可以执行你系统上的每个操作。

  • 代币:创建可交易的资产或收藏品,如众所周知的 ERC20ERC721 标准。

  • 实用工具:通用的实用工具,包括无溢出的数学运算、签名验证和无需信任的支付系统。

完整的 API 也经过了详尽的文档记录,并且在你开发智能合约应用程序时可以作为一个很好的参考。你也可以在 社区论坛 中寻求帮助或关注 Contracts 的开发。

以下文章提供了很好的背景阅读资料,但请注意,由于生态系统中的工具在不断快速发展,一些参考工具已经发生了变化。