这篇文章提供了使用OpenZeppelin Contracts设置Solidity智能合约项目的指南,涵盖了Hardhat和Foundry两种开发框架的初始化、依赖安装、Foundry的remappings配置,以及标准和可升级合约的导入规范。
对于现有项目,通过查找 hardhat.config.* (Hardhat) 或 foundry.toml (Foundry) 来检测框架。对于新项目,询问用户倾向于哪个框架。
npx hardhat init # Hardhat v2
npx hardhat --init # Hardhat v3
npm install @openzeppelin/contracts
npm install @openzeppelin/contracts-upgradeable
curl -L https://foundry.paradigm.xyz | bash
foundryup
forge init my-project
cd my-project
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 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!