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"