setup-solidity-contracts

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Solidity Setup

Solidity项目搭建

For existing projects, detect the framework by looking for
hardhat.config.*
(Hardhat) or
foundry.toml
(Foundry). For new projects, ask the user which framework they prefer.
对于现有项目,通过查找
hardhat.config.*
(Hardhat框架)或
foundry.toml
(Foundry框架)来检测使用的框架。对于新项目,询问用户偏好使用哪种框架。

Hardhat 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-upgradeable

Foundry 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,
forge install
pulls the default branch, which may be unstable.
  • remappings.txt
    (if not using upgradeable contracts)
text
@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/
  • remappings.txt
    (if using upgradeable contracts)
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
@openzeppelin/contracts/
(including proxy contracts) and
@openzeppelin/contracts-upgradeable/
come from the
openzeppelin-contracts-upgradeable
submodule and its subdirectories, which includes its own transitive copy of
openzeppelin-contracts
of the same release version number. This format is needed for Etherscan verification to work. Particularly, any copies of
openzeppelin-contracts
that are installed separately are NOT used.
  • 安装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>
  • 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
子模块及其子目录,其中包含同一发布版本号的
openzeppelin-contracts
的传递副本。这种格式是为了让Etherscan验证能够正常工作。特别注意:单独安装的任何
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
  • 仅在通过代理部署时使用可升级版本;否则使用标准合约。