forge create
名称
forge-create - 部署一个智能合约。
简介
forge create [options] contract
描述
部署一个智能合约。
合约的路径格式为 <path>:<contract>,例如 src/Contract.sol:Contract。
你可以用 --constructor-args 来指定构造函数参数。或者,你也可以用 --constructor-args-path 指定一个包含空格分隔的构造函数参数的文件。
不支持动态链接:你应该预先部署你的库,并手动指定它们的地址(见--libraries)。
ℹ️ 注意
--constructor-args标志必须在命令中放在最后,因为它需要多个值。
选项
构建选项
--constructor-args args...
构造函数的参数。
--constructor-args-path file
包含构造函数参数的文件的路径。
--verify
创建后验证合约。使用适当的参数运行 forge verify-contract。
--verifier name
验证提供者。可用选项。etherscan, sourcify 和 blockscout。默认:etherscan。注意:确保在 Blockscout 主页资源管理器 URL 的末尾添加 "/api?"。
--verifier-url url
用于提交验证请求的可选验证网址。
环境变量:VERIFIER_URL
--unlocked
通过 eth_sendTransaction 发送,使用 --from 参数或$ETH_FROM 作为发送方。
Transaction Options
--gas-limit gas_limit
交易的 Gas 限制。
--gas-price price
交易的 Gas 价格,或 EIP1559 交易的每个 Gas 的最大费用。
--priority-gas-price price
EIP1559 交易的每个 Gas 的最高优先费。
--value value
交易中要发送的以太币。
可以指定为整数(wei),也可以指定为带单位的字符串,例如:
- 1ether
- 10gwei
- 0.01ether
--nonce nonce
交易的Nonce。
--legacy
发送一个传统交易而不是 EIP1559 交易。
对于没有 EIP1559 的普通网络,这将自动启用。
WALLET OPTIONS - RAW:
-i
--interactive <NUM>
打开一个交互式提示,输入你的私钥。接受一个要输入的密钥数量的值。
默认为 0.
--mnemonic-derivation-path <PATHS>
钱包的衍生路径。可与 --mnemonic-path 和硬件钱包一起使用。
--mnemonic-indexes <INDEXES>
使用来自给定助记符索引的私钥。与 --mnemonic-paths 一起使用。
默认为 0.
--mnemonic-passphrase <PASSPHRASE>
使用 BIP39 口令的助记符。
--mnemonic <PATHS>
在指定的路径上使用助记词组或助记词文件。
--private-key <RAW_PRIVATE_KEY>
使用提供的私钥。
--private-keys <RAW_PRIVATE_KEYS>
使用提供的私钥。
钱包选项 - Keystore
--keystore path
  ; 使用给定文件夹或文件中的 keystore。
环境变量:ETH_KEYSTORE
--account account-name
通过文件名在默认 keystores 文件夹(~/.foundry/keystores)中使用 keystore。
环境变量:ETH_KEYSTORE_ACCOUNT
--interactive
--password password
keystore 密码。与 --keystore 一起使用。
环境变量:ETH_PASSWORD
Wallet Options - Hardware Wallet
-t
--trezor
使用 Trezor 硬件钱包。
-l
--ledger
使用 Ledger 硬件钱包。
Wallet Options - Remote
-f address
--from address
用 RPC 上的指定账户签署交易。
环境变量:ETH_FROM
RPC Options
--rpc-url url
RPC 端点。接受一个 URL 或[rpc_endpoints] 表中的现有别名,如 mainnet。
环境变量:ETH_RPC_URL
--flashbots
使用 Flashbots 的 RPC URL (https://rpc.flashbots.net).
Etherscan Options
--chain chain_name
Etherscan 的链.
--etherscan-api-key key
Etherscan API 密钥,或 Etherscan 配置表 密钥。
环境变量:ETHERSCAN_API_KEY
缓存选项
--force
清除缓存和 artifacts 文件夹并重新编译。
链接器选项
--libraries libraries
设置预链接库。
参数的格式必须是 <remapped path to lib>:<library name>:<address>,例如 src/Contract.sol:Library:0x...。
也可以在你的配置文件中设置为 libraries = ["<path>:<lib name>:<address>"].
编译器选项
--optimize
激活 Solidity 优化器。
--optimizer-runs runs
优化器 runs 的选项。
--via-ir
使用 Yul 作为编译管道的中间语言。
--revert-strings
如何处理 revert 和 require 的结果字符串。
--use solc_version
指定 solc 的版本,或一个本地 solc 的路径,以进行编译。
有效值的格式为 x.y.z,solc:x.y.z 或 path/to/solc。
--offline
不使用网络,缺失的 solc 版本将不会被安装。
--no-auto-detect
不使用 solc 的自动检测。
--ignored-error-codes error_codes
从错误代码中忽略 solc 警告。该参数是一个以逗号分隔的错误代码列表。
--extra-output selector
额外的产出要包括在合约的 artifact 中。
示例键: abi, storageLayout, evm.assembly, ewasm, ir, ir-optimized, metadata。
关于完整的描述, 请参阅 [Solidity docs][output-desc]。
--extra-output-files selector
额外的输出写到单独的文件。
示例键: abi, storageLayout, evm.assembly, ewasm, ir, ir-optimized, metadata.
关于完整的描述, 请参阅 [Solidity docs][output-desc].
--evm-version version
目标 EVM 版本
Project Options
--build-info
生成构建信息文件。
--build-info-path path
输出目录的路径,构建信息文件将被写入。
--root path
项目的根路径。默认情况下,这是当前 git 仓库的根目录,或当前工作目录。
-C path
--contracts path
合约源代码目录。
环境变量:DAPP_SRC
--lib-paths path
库的文件夹路径。
-R remappings
--remappings remappings
项目的重映射。
该参数是一个逗号分隔的重映射列表,格式为 <source>=<dest>。
--cache-path path
编译器缓存的路径。
--config-path file
配置文件的路径。
--hh
--hardhat
这是一个方便的标志,与传递 --contracts contracts --lib-paths node-modules 相同。
-o path
--out path
项目的 artifacts 目录。
--silent
抑制所有输出。
Display Options
-j
--json
将部署信息打印成 JSON 格式。
普通选项
-h
--help
打印帮助信息。
例子
-
部署一个没有构造函数参数的合约:
forge create src/Contract.sol:ContractWithNoConstructor -
部署一个有两个构造参数的合约:
forge create src/Contract.sol:MyToken --constructor-args "My Token" "MT"