setup-solidity-contracts
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseSolidity Setup
Solidity项目搭建
For existing projects, detect the framework by looking for (Hardhat) or (Foundry). For new projects, ask the user which framework they prefer.
hardhat.config.*foundry.toml对于现有项目,通过查找(Hardhat框架)或(Foundry框架)来检测使用的框架。对于新项目,询问用户偏好使用哪种框架。
hardhat.config.*foundry.tomlHardhat Setup
Hardhat框架搭建
- Initialize project (only if starting a new project)
bash
npx hardhat init # Hardhat v2
npx hardhat --init # Hardhat v3- Install OpenZeppelin Contracts:
bash
npm install @openzeppelin/contracts- If using upgradeable contracts, also install the upgradeable variant:
bash
npm install @openzeppelin/contracts-upgradeable- 初始化项目(仅适用于新项目)
bash
npx hardhat init # Hardhat v2
npx hardhat --init # Hardhat v3- 安装OpenZeppelin Contracts:
bash
npm install @openzeppelin/contracts- 如果使用可升级合约,还需安装可升级版本:
bash
npm install @openzeppelin/contracts-upgradeableFoundry Setup
Foundry框架搭建
- Install Foundry
bash
curl -L https://foundry.paradigm.xyz | bash
foundryup- Initialize project (only if starting a new project)
bash
forge init my-project
cd my-project- Add OpenZeppelin Contracts:
bash
forge install OpenZeppelin/openzeppelin-contracts@v<VERSION>- If using upgradeable contracts, also add the upgradeable variant:
bash
forge install OpenZeppelin/openzeppelin-contracts-upgradeable@v<VERSION>Look up the current version from https://github.com/OpenZeppelin/openzeppelin-contracts/releases. Pin to a release tag — without one,pulls the default branch, which may be unstable.forge install
- (if not using upgradeable contracts)
remappings.txt
text
@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/- (if using upgradeable contracts)
remappings.txt
text
@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/
@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/Note The above remappings mean that both(including proxy contracts) and@openzeppelin/contracts/come from the@openzeppelin/contracts-upgradeable/submodule and its subdirectories, which includes its own transitive copy ofopenzeppelin-contracts-upgradeableof the same release version number. This format is needed for Etherscan verification to work. Particularly, any copies ofopenzeppelin-contractsthat are installed separately are NOT used.openzeppelin-contracts
- 安装Foundry
bash
curl -L https://foundry.paradigm.xyz | bash
foundryup- 初始化项目(仅适用于新项目)
bash
forge init my-project
cd my-project- 添加OpenZeppelin Contracts:
bash
forge install OpenZeppelin/openzeppelin-contracts@v<VERSION>- 如果使用可升级合约,还需添加可升级版本:
bash
forge install OpenZeppelin/openzeppelin-contracts-upgradeable@v<VERSION>可从https://github.com/OpenZeppelin/openzeppelin-contracts/releases查询当前版本。请固定到某个发布标签——如果不指定,`forge install`会拉取默认分支,该分支可能不稳定。
- 配置(不使用可升级合约时)
remappings.txt
text
@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/- 配置(使用可升级合约时)
remappings.txt
text
@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/
@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/注意 上述重映射意味着(包括代理合约)和@openzeppelin/contracts/均来自@openzeppelin/contracts-upgradeable/子模块及其子目录,其中包含同一发布版本号的openzeppelin-contracts-upgradeable的传递副本。这种格式是为了让Etherscan验证能够正常工作。特别注意:单独安装的任何openzeppelin-contracts副本都不会被使用。openzeppelin-contracts
Import Conventions
导入规范
- Standard:
@openzeppelin/contracts/token/ERC20/ERC20.sol - Upgradeable:
@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol - Use upgradeable variants only when deploying behind proxies; otherwise use standard contracts.
- 标准合约:
@openzeppelin/contracts/token/ERC20/ERC20.sol - 可升级合约:
@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol - 仅在通过代理部署时使用可升级版本;否则使用标准合约。