使用OpenZeppelin Contracts设置Solidity智能合约项目

这篇文章提供了使用OpenZeppelin Contracts设置Solidity智能合约项目的指南,涵盖了Hardhat和Foundry两种开发框架的初始化、依赖安装、Foundry的remappings配置,以及标准和可升级合约的导入规范。


name: setup-solidity-contracts description: "使用 OpenZeppelin Contracts 设置 Solidity 智能合约项目。当用户需要:(1) 创建新的 Hardhat 或 Foundry 项目,(2) 安装 Solidity 的 OpenZeppelin Contracts 依赖项,(3) 配置 Foundry 的 remappings,或 (4) 了解 OpenZeppelin 的 Solidity 导入约定。时使用。" license: AGPL-3.0-only metadata: author: OpenZeppelin

Solidity 设置

对于现有项目,通过查找 hardhat.config.* (Hardhat) 或 foundry.toml (Foundry) 来检测框架。对于新项目,询问用户倾向于哪个框架。

Hardhat 设置

  • 初始化项目(仅当启动新项目时)
npx hardhat init        # Hardhat v2
npx hardhat --init      # Hardhat v3
  • 安装 OpenZeppelin Contracts:
npm install @openzeppelin/contracts
  • 如果使用可升级合约,也安装可升级变体:
npm install @openzeppelin/contracts-upgradeable

Foundry 设置

  • 安装 Foundry
curl -L https://foundry.paradigm.xyz | bash
foundryup
  • 初始化项目(仅当启动新项目时)
forge init my-project
cd my-project
  • 添加 OpenZeppelin Contracts:
forge install OpenZeppelin/openzeppelin-contracts@v<VERSION>
  • 如果使用可升级合约,也添加可升级变体:
forge install OpenZeppelin/openzeppelin-contracts-upgradeable@v<VERSION>

https://github.com/OpenZeppelin/openzeppelin-contracts/releases 查找当前版本。固定到一个发布标签——如果没有,forge install 会拉取默认分支,这可能不稳定。

  • remappings.txt (如果未使用可升级合约)
@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/
  • remappings.txt (如果使用可升级合约)
@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/
@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/

注意 上述 remappings 意味着 @openzeppelin/contracts/ (包括代理合约) 和 @openzeppelin/contracts-upgradeable/ 都来自 openzeppelin-contracts-upgradeable 子模块及其子目录,其中包括其自身相同发布版本号的 openzeppelin-contracts 的传递副本。这种格式是 Etherscan 验证工作所必需的。特别是,任何单独安装的 openzeppelin-contracts 副本都不会被使用。

导入约定

  • 标准: @openzeppelin/contracts/token/ERC20/ERC20.sol
  • 可升级: @openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol
  • 仅当在代理背后部署时才使用可升级变体;否则使用标准合约。
  • 原文链接: github.com/OpenZeppelin/...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
OpenZeppelin
OpenZeppelin
江湖只有他的大名,没有他的介绍。