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.
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>
> 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)@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/
remappings.txt (if using upgradeable contracts)@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.
> Compiler version: OpenZeppelin Contracts v5 requires pragma solidity ^0.8.20. If deploying to chains that do not support the PUSH0 opcode (some L2s), set the EVM version to paris in the compiler configuration (e.g., evmVersion: "paris" in Hardhat, evm_version = "paris" in foundry.toml).
@openzeppelin/contracts/token/ERC20/ERC20.sol@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol共 2 个版本