forge create

Deploy a smart contract

$ forge create --help
Usage: forge create [OPTIONS] <CONTRACT> Arguments: <CONTRACT> The contract identifier in the form `<path>:<contractname>` Options: --constructor-args <ARGS>... The constructor arguments --constructor-args-path <PATH> The path to a file containing the constructor arguments --verify Verify contract after creation --unlocked Send via `eth_sendTransaction` using the `--from` argument or `$ETH_FROM` as sender --show-standard-json-input Prints the standard json compiler input if `--verify` is provided. The standard json compiler input can be used to manually submit contract verification in the browser. --timeout <TIMEOUT> Timeout to use for broadcasting transactions [env: ETH_TIMEOUT=] -h, --help Print help (see a summary with '-h') Display options: --json Print the deployment information as JSON Cache options: --force Clear the cache and artifacts folder and recompile Build options: --no-cache Disable the cache --skip <SKIP>... Skip building files whose names contain the given filter. `test` and `script` are aliases for `.t.sol` and `.s.sol`. Linker options: --libraries <LIBRARIES> Set pre-linked libraries [env: DAPP_LIBRARIES=] Compiler options: --ignored-error-codes <ERROR_CODES> Ignore solc warnings by error code --deny-warnings Warnings will trigger a compiler error --no-auto-detect Do not auto-detect the `solc` version --use <SOLC_VERSION> Specify the solc version, or a path to a local solc, to build with. Valid values are in the format `x.y.z`, `solc:x.y.z` or `path/to/solc`. --offline Do not access the network. Missing solc versions will not be installed. --via-ir Use the Yul intermediate representation compilation pipeline --no-metadata Do not append any metadata to the bytecode. This is equivalent to setting `bytecode_hash` to `none` and `cbor_metadata` to `false`. --silent Don't print anything on startup --ast Includes the AST as JSON in the compiler output --evm-version <VERSION> The target EVM version --optimize Activate the Solidity optimizer --optimizer-runs <RUNS> The number of runs specifies roughly how often each opcode of the deployed code will be executed across the life-time of the contract. This means it is a trade-off parameter between code size (deploy cost) and code execution cost (cost after deployment). An `optimizer_runs` parameter of `1` will produce short but expensive code. In contrast, a larger `optimizer_runs` parameter will produce longer but more gas efficient code --extra-output <SELECTOR>... Extra output to include in the contract's artifact. Example keys: evm.assembly, ewasm, ir, irOptimized, metadata For a full description, see <https://docs.soliditylang.org/en/v0.8.13/using-the-compiler.html#input-description> --extra-output-files <SELECTOR>... Extra output to write to separate files. Valid values: metadata, ir, irOptimized, ewasm, evm.assembly Project options: -o, --out <PATH> The path to the contract artifacts folder --revert-strings <REVERT> Revert string configuration. Possible values are "default", "strip" (remove), "debug" (Solidity-generated revert strings) and "verboseDebug" --build-info Generate build info files --build-info-path <PATH> Output path to directory that build info files will be written to --root <PATH> The project's root path. By default root of the Git repository, if in one, or the current working directory. -C, --contracts <PATH> The contracts source directory -R, --remappings <REMAPPINGS> The project's remappings --remappings-env <ENV> The project's remappings from the environment --cache-path <PATH> The path to the compiler cache --lib-paths <PATH> The path to the library folder --hardhat Use the Hardhat-style project layout. This is the same as using: `--contracts contracts --lib-paths node_modules`. [aliases: hh] --config-path <FILE> Path to the config file Transaction options: --gas-limit <GAS_LIMIT> Gas limit for the transaction [env: ETH_GAS_LIMIT=] --gas-price <PRICE> Gas price for legacy transactions, or max fee per gas for EIP1559 transactions, either specified in wei, or as a string with a unit type. Examples: 1ether, 10gwei, 0.01ether [env: ETH_GAS_PRICE=] --priority-gas-price <PRICE> Max priority fee per gas for EIP1559 transactions [env: ETH_PRIORITY_GAS_PRICE=] --value <VALUE> Ether to send in the transaction, either specified in wei, or as a string with a unit type. Examples: 1ether, 10gwei, 0.01ether --nonce <NONCE> Nonce for the transaction --legacy Send a legacy transaction instead of an EIP1559 transaction. This is automatically enabled for common networks without EIP1559. --blob Send a EIP-4844 blob transaction --blob-gas-price <BLOB_PRICE> Gas price for EIP-4844 blob transaction [env: ETH_BLOB_GAS_PRICE=] --auth <AUTH> EIP-7702 authorization list. Can be either a hex-encoded signed authorization or an address. --access-list [<ACCESS_LIST>] EIP-2930 access list. Accepts either a JSON-encoded access list or an empty value to create the access list via an RPC call to `eth_createAccessList`. To retrieve only the access list portion, use the `cast access-list` command. Ethereum options: -r, --rpc-url <URL> The RPC endpoint [env: ETH_RPC_URL=] --flashbots Use the Flashbots RPC URL with fast mode (<https://rpc.flashbots.net/fast>). This shares the transaction privately with all registered builders. See: <https://docs.flashbots.net/flashbots-protect/quick-start#faster-transactions> --jwt-secret <JWT_SECRET> JWT Secret for the RPC endpoint. The JWT secret will be used to create a JWT for a RPC. For example, the following can be used to simulate a CL `engine_forkchoiceUpdated` call: cast rpc --jwt-secret <JWT_SECRET> engine_forkchoiceUpdatedV2 '["0x6bb38c26db65749ab6e472080a3d20a2f35776494e72016d1e339593f21c59bc", "0x6bb38c26db65749ab6e472080a3d20a2f35776494e72016d1e339593f21c59bc", "0x6bb38c26db65749ab6e472080a3d20a2f35776494e72016d1e339593f21c59bc"]' [env: ETH_RPC_JWT_SECRET=] -e, --etherscan-api-key <KEY> The Etherscan (or equivalent) API key [env: ETHERSCAN_API_KEY=] -c, --chain <CHAIN> The chain name or EIP-155 chain ID [env: CHAIN=] Wallet options - raw: -f, --from <ADDRESS> The sender account [env: ETH_FROM=] -i, --interactive Open an interactive prompt to enter your private key --private-key <RAW_PRIVATE_KEY> Use the provided private key --mnemonic <MNEMONIC> Use the mnemonic phrase of mnemonic file at the specified path --mnemonic-passphrase <PASSPHRASE> Use a BIP39 passphrase for the mnemonic --mnemonic-derivation-path <PATH> The wallet derivation path. Works with both --mnemonic-path and hardware wallets. --mnemonic-index <INDEX> Use the private key from the given mnemonic index. Used with --mnemonic-path. [default: 0] --retries <RETRIES> Number of attempts for retrying verification [default: 5] --delay <DELAY> Optional delay to apply inbetween verification attempts, in seconds [default: 5] Wallet options - keystore: --keystore <PATH> Use the keystore in the given folder or file [env: ETH_KEYSTORE=] --account <ACCOUNT_NAME> Use a keystore from the default keystores folder (~/.foundry/keystores) by its filename [env: ETH_KEYSTORE_ACCOUNT=] --password <PASSWORD> The keystore password. Used with --keystore. --password-file <PASSWORD_FILE> The keystore password file path. Used with --keystore. [env: ETH_PASSWORD=] Wallet options - hardware wallet: -l, --ledger Use a Ledger hardware wallet -t, --trezor Use a Trezor hardware wallet Wallet options - remote: --aws Use AWS Key Management Service Verifier options: --verifier <VERIFIER> The contract verification provider to use [default: etherscan] [possible values: etherscan, sourcify, blockscout, oklink] --verifier-url <VERIFIER_URL> The verifier URL, if using a custom provider [env: VERIFIER_URL=]