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, sourcifyblockscout。默认: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
&nbsp ;   使用给定文件夹或文件中的 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.zsolc:x.y.zpath/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
    打印帮助信息。

例子

  1. 部署一个没有构造函数参数的合约:

    forge create src/Contract.sol:ContractWithNoConstructor
    
  2. 部署一个有两个构造参数的合约:

    forge create src/Contract.sol:MyToken --constructor-args "My Token" "MT"
    

另请参阅

forge, forge build, forge verify-contract