<!--
Sitemap:
- [Foundry - Ethereum Development Framework](/index)
- [Anvil](/anvil/): Anvil is Foundry's local Ethereum node for development and testing.
- [Benchmarks](/benchmarks)
- [Best Practices](/best-practices): Best practices for writing contracts, tests, scripts, and managing security in Foundry projects.
- [Cast](/cast/): Cast is Foundry's command-line tool for interacting with Ethereum.
- [Changelog](/changelog/)
- [Chisel](/chisel/): Chisel is Foundry's interactive Solidity REPL for rapid prototyping and debugging.
- [Configuration](/config/): Configure Foundry with foundry.toml, profiles, and environment variables.
- [Forge](/forge/): Forge is Foundry's build, test, and deploy tool for Solidity smart contracts.
- [Guides](/guides/): Practical guides for common Foundry workflows and advanced patterns.
- [Project Setup](/projects/): Create and configure Foundry projects for smart contract development.
- [Custom methods](/anvil/custom-methods): Anvil's custom RPC methods for impersonation, mining control, and state manipulation.
- [Forking](/anvil/forking): Fork mainnet or any EVM-compatible chain with Anvil.
- [State management](/anvil/state-management): Dump and load Anvil chain state for reproducible testing.
- [ABI encoding](/cast/abi-encoding): Encode and decode ABI data, calldata, and function signatures with Cast.
- [Reading chain data](/cast/reading-chain-data): Query blockchain data with Cast — blocks, transactions, logs, and account state.
- [Sending transactions](/cast/sending-transactions): Send transactions and interact with contracts using Cast.
- [Wallet operations](/cast/wallet-operations): Manage wallets, sign messages, and verify signatures with Cast.
- [Commands](/chisel/commands): All available commands in the Chisel REPL.
- [Forking](/chisel/forking): Fork live chains in Chisel to interact with deployed contracts.
- [Session management](/chisel/session-management): Save, load, and export Chisel REPL sessions.
- [CI Integration](/config/ci): Set up Foundry in GitHub Actions and other CI systems.
- [Compiler](/config/compiler): Configure the Solidity compiler settings for your Foundry project.
- [Editor Setup](/config/editors): Configure VS Code, Vim, and other editors for Foundry projects.
- [MESC](/config/mesc): Use MESC to manage RPC endpoints across all your crypto tools from a single configuration file.
- [Profiles](/config/profiles): Use profiles to switch between configurations for development, CI, and production.
- [Testing](/config/testing): Configure testing behavior including fuzz testing and invariant testing.
- [Building contracts](/forge/build): Compile Solidity contracts with Forge.
- [Debugging](/forge/debugging): Debug Solidity contracts with Forge traces and the interactive debugger.
- [Formatting](/forge/formatting): Format Solidity code with Forge.
- [Gas tracking](/forge/gas-tracking): Track and compare gas usage with Forge snapshots and reports.
- [Linting](/forge/linting): Lint Solidity code with Forge.
- [Scripting](/forge/scripting): Deploy and interact with contracts using Forge scripts.
- [Testing](/forge/testing): Write and run tests for Solidity contracts with Forge.
- [Debugging Transactions](/guides/debugging-transactions): Replay and debug failed mainnet transactions with trace analysis.
- [Deploying Contracts](/guides/deploying-contracts): Deploy contracts from local development to testnet and mainnet with verification and deterministic addresses.
- [Deterministic Deployments with CREATE2](/guides/deterministic-deployments-using-create2): Deploy smart contracts to predictable addresses across multiple networks using CREATE2 opcode for counterfactual interactions.
- [Docker & Containers](/guides/docker): Run Foundry in Docker for reproducible builds and CI environments.
- [Fork Testing](/guides/fork-testing): Test against live chain state, impersonate accounts, and handle time-sensitive logic.
- [Gas Optimization](/guides/gas-optimization): Profile gas usage and optimize with snapshots and the IR pipeline.
- [Invariant Testing](/guides/invariant-testing): Write effective invariant tests with handler patterns and ghost variables.
- [Multi-Chain Deployments](/guides/multi-chain-deployments): Deploy the same contracts across multiple networks with per-chain configuration.
- [Stack Too Deep](/guides/stack-too-deep): Understanding and resolving the "Stack too deep" compilation error in Solidity.
- [Upgrading Contracts](/guides/upgrading-contracts): Implement proxy patterns with Forge scripts and verify storage layout compatibility.
- [FAQ](/help/faq): Frequently asked questions about Foundry and its tools.
- [Troubleshooting](/help/troubleshooting): Solutions to common Foundry errors and issues.
- [Getting Started](/introduction/getting-started): Get started with Foundry's four core tools - Forge, Cast, Anvil, and Chisel.
- [Installation](/introduction/installation): Install Foundry using foundryup, precompiled binaries, or build from source.
- [Prompting](/introduction/prompting): Use structured prompts to get better results from AI coding assistants.
- [Dependencies](/projects/dependencies): Manage dependencies using git submodules and remappings.
- [Project Layout](/projects/layout): Understand Foundry's project structure and directory conventions.
- [Soldeer](/projects/soldeer): Use Soldeer as an alternative package manager for Foundry projects.
- [cast index](/reference/cast/)
- [DSTest Reference](/reference/ds-test)
- [References](/reference/README)
- [Default foundry configuration](/config/reference/default-config)
- [Documentation Generator](/config/reference/doc-generator)
- [Etherscan](/config/reference/etherscan)
- [Formatter](/config/reference/formatter)
- [In-line test configuration](/config/reference/inline-test-config)
- [Linter Configuration](/config/reference/linter)
- [Config Overview](/config/reference/overview)
- [Project](/config/reference/project)
- [Config Reference](/config/reference/README)
- [Solidity compiler](/config/reference/solidity-compiler)
- [Testing](/config/reference/testing)
- [Foundry v1.0 migration guide](/guides/migrations/foundry-v1): Summary of breaking changes and migration steps for Foundry v1.0.
- [anvil](/reference/anvil/anvil)
- [anvil completions](/reference/anvil/completions)
- [cast 4byte](/reference/cast/4byte)
- [cast 4byte-calldata](/reference/cast/4byte-calldata)
- [cast 4byte-event](/reference/cast/4byte-event)
- [cast abi-encode](/reference/cast/abi-encode)
- [cast abi-encode-event](/reference/cast/abi-encode-event)
- [cast access-list](/reference/cast/access-list)
- [cast address-zero](/reference/cast/address-zero)
- [cast admin](/reference/cast/admin)
- [cast age](/reference/cast/age)
- [cast artifact](/reference/cast/artifact)
- [cast b2e-payload](/reference/cast/b2e-payload)
- [cast balance](/reference/cast/balance)
- [cast base-fee](/reference/cast/base-fee)
- [cast bind](/reference/cast/bind)
- [cast block](/reference/cast/block)
- [cast block-number](/reference/cast/block-number)
- [cast call](/reference/cast/call)
- [cast calldata](/reference/cast/calldata)
- [cast](/reference/cast/cast)
- [cast chain](/reference/cast/chain)
- [cast chain-id](/reference/cast/chain-id)
- [cast client](/reference/cast/client)
- [cast code](/reference/cast/code)
- [cast codehash](/reference/cast/codehash)
- [cast codesize](/reference/cast/codesize)
- [cast completions](/reference/cast/completions)
- [cast compute-address](/reference/cast/compute-address)
- [cast concat-hex](/reference/cast/concat-hex)
- [cast constructor-args](/reference/cast/constructor-args)
- [cast create2](/reference/cast/create2)
- [cast creation-code](/reference/cast/creation-code)
- [cast da-estimate](/reference/cast/da-estimate)
- [cast decode-abi](/reference/cast/decode-abi)
- [cast decode-calldata](/reference/cast/decode-calldata)
- [cast decode-error](/reference/cast/decode-error)
- [cast decode-event](/reference/cast/decode-event)
- [cast decode-string](/reference/cast/decode-string)
- [cast decode-transaction](/reference/cast/decode-transaction)
- [cast disassemble](/reference/cast/disassemble)
- [cast erc20-token](/reference/cast/erc20-token)
- [cast estimate](/reference/cast/estimate)
- [cast find-block](/reference/cast/find-block)
- [cast format-bytes32-string](/reference/cast/format-bytes32-string)
- [cast format-units](/reference/cast/format-units)
- [cast from-bin](/reference/cast/from-bin)
- [cast from-fixed-point](/reference/cast/from-fixed-point)
- [cast from-rlp](/reference/cast/from-rlp)
- [cast from-utf8](/reference/cast/from-utf8)
- [cast from-wei](/reference/cast/from-wei)
- [cast gas-price](/reference/cast/gas-price)
- [cast hash-message](/reference/cast/hash-message)
- [cast hash-zero](/reference/cast/hash-zero)
- [cast implementation](/reference/cast/implementation)
- [cast index](/reference/cast/index-cmd)
- [cast index-erc7201](/reference/cast/index-erc7201)
- [cast interface](/reference/cast/interface)
- [cast keccak](/reference/cast/keccak)
- [cast logs](/reference/cast/logs)
- [cast lookup-address](/reference/cast/lookup-address)
- [cast max-int](/reference/cast/max-int)
- [cast max-uint](/reference/cast/max-uint)
- [cast min-int](/reference/cast/min-int)
- [cast mktx](/reference/cast/mktx)
- [cast namehash](/reference/cast/namehash)
- [cast nonce](/reference/cast/nonce)
- [cast pad](/reference/cast/pad)
- [cast parse-bytes32-address](/reference/cast/parse-bytes32-address)
- [cast parse-bytes32-string](/reference/cast/parse-bytes32-string)
- [cast parse-units](/reference/cast/parse-units)
- [cast pretty-calldata](/reference/cast/pretty-calldata)
- [cast proof](/reference/cast/proof)
- [cast publish](/reference/cast/publish)
- [cast receipt](/reference/cast/receipt)
- [cast recover-authority](/reference/cast/recover-authority)
- [cast resolve-name](/reference/cast/resolve-name)
- [cast rpc](/reference/cast/rpc)
- [cast run](/reference/cast/run)
- [cast selectors](/reference/cast/selectors)
- [cast send](/reference/cast/send)
- [cast shl](/reference/cast/shl)
- [cast shr](/reference/cast/shr)
- [cast sig](/reference/cast/sig)
- [cast sig-event](/reference/cast/sig-event)
- [cast source](/reference/cast/source)
- [cast storage](/reference/cast/storage)
- [cast storage-root](/reference/cast/storage-root)
- [cast to-ascii](/reference/cast/to-ascii)
- [cast to-base](/reference/cast/to-base)
- [cast to-bytes32](/reference/cast/to-bytes32)
- [cast to-check-sum-address](/reference/cast/to-check-sum-address)
- [cast to-dec](/reference/cast/to-dec)
- [cast to-fixed-point](/reference/cast/to-fixed-point)
- [cast to-hex](/reference/cast/to-hex)
- [cast to-hexdata](/reference/cast/to-hexdata)
- [cast to-int256](/reference/cast/to-int256)
- [cast to-rlp](/reference/cast/to-rlp)
- [cast to-uint256](/reference/cast/to-uint256)
- [cast to-unit](/reference/cast/to-unit)
- [cast to-utf8](/reference/cast/to-utf8)
- [cast to-wei](/reference/cast/to-wei)
- [cast trace](/reference/cast/trace)
- [cast tx](/reference/cast/tx)
- [cast tx-pool](/reference/cast/tx-pool)
- [cast upload-signature](/reference/cast/upload-signature)
- [cast wallet](/reference/cast/wallet)
- [accesses](/reference/cheatcodes/accesses): Gets all storage slots that have been read or written to on an address
- [activeFork](/reference/cheatcodes/active-fork): Returns the identifier of the currently active fork
- [addr](/reference/cheatcodes/addr): Computes the address for a given private key
- [allowCheatcodes](/reference/cheatcodes/allow-cheatcodes): Grants cheatcode access to an address in forking mode
- [assume](/reference/cheatcodes/assume): Discards fuzz inputs that don't satisfy a condition
- [assumeNoRevert](/reference/cheatcodes/assume-no-revert): Discards fuzz inputs if the next call reverts
- [breakpoint](/reference/cheatcodes/breakpoint): Places a breakpoint for the debugger
- [broadcast](/reference/cheatcodes/broadcast): Makes the next call create a transaction that can be signed and sent onchain
- [chainId](/reference/cheatcodes/chain-id): Sets block.chainid to a specified value in Forge tests
- [clearMockedCalls](/reference/cheatcodes/clear-mocked-calls): Clears all mocked calls
- [coinbase](/reference/cheatcodes/coinbase): Sets block.coinbase to a specified address
- [copyStorage](/reference/cheatcodes/copy-storage): Copies storage from one contract to another
- [createFork](/reference/cheatcodes/create-fork): Creates a new fork from an RPC endpoint
- [createSelectFork](/reference/cheatcodes/create-select-fork): Creates and activates a new fork in one call
- [createWallet](/reference/cheatcodes/create-wallet): Creates a new Wallet struct with address and keys
- [deal](/reference/cheatcodes/deal): Sets the ETH balance of an address
- [deriveKey](/reference/cheatcodes/derive-key): Derives a private key from a mnemonic phrase
- [difficulty](/reference/cheatcodes/difficulty): Sets block.difficulty for pre-merge EVM versions in Forge tests
- [envAddress](/reference/cheatcodes/env-address): Reads an environment variable as address or address[]
- [envBool](/reference/cheatcodes/env-bool): Reads an environment variable as bool or bool[]
- [envBytes](/reference/cheatcodes/env-bytes): Reads an environment variable as bytes or bytes[]
- [envBytes32](/reference/cheatcodes/env-bytes32): Reads an environment variable as bytes32 or bytes32[]
- [envInt](/reference/cheatcodes/env-int): Reads an environment variable as int256 or int256[]
- [envOr](/reference/cheatcodes/env-or): Reads an environment variable with a default fallback value
- [envString](/reference/cheatcodes/env-string): Reads an environment variable as string or string[]
- [envUint](/reference/cheatcodes/env-uint): Reads an environment variable as uint256 or uint256[]
- [etch](/reference/cheatcodes/etch): Sets the bytecode of an address to custom code
- [expectCall](/reference/cheatcodes/expect-call): Asserts that a specific call is made during test execution
- [expectEmit](/reference/cheatcodes/expect-emit): Asserts that specific events are emitted during the next call
- [expectRevert](/reference/cheatcodes/expect-revert): Asserts that the next call reverts with optional message matching
- [fee](/reference/cheatcodes/fee): Sets block.basefee to a specified value in Forge tests
- [ffi](/reference/cheatcodes/ffi): Calls an arbitrary external command
- [File Cheatcodes](/reference/cheatcodes/fs): File system operations for reading, writing, and managing files
- [snapshotGas cheatcodes](/reference/cheatcodes/gas-snapshots): Capture and compare gas usage across test runs
- [getBlockNumber](/reference/cheatcodes/get-block-number): Gets the current block.number, avoiding IR compilation optimization issues
- [getBlockTimestamp](/reference/cheatcodes/get-block-timestamp): Gets the current block.timestamp, avoiding IR compilation optimization issues
- [getCode](/reference/cheatcodes/get-code): Returns the creation bytecode for a contract in the project
- [getDeployedCode](/reference/cheatcodes/get-deployed-code): Returns the deployed (runtime) bytecode for a contract in the project
- [getLabel](/reference/cheatcodes/get-label): Retrieves the label for an address
- [getNonce](/reference/cheatcodes/get-nonce): Gets the nonce of an account or wallet
- [getRecordedLogs](/reference/cheatcodes/get-recorded-logs): Gets all emitted events recorded by recordLogs
- [isContext](/reference/cheatcodes/is-context): Checks the current Forge execution context
- [isPersistent](/reference/cheatcodes/is-persistent): Checks if an account is marked as persistent across forks
- [keyExists](/reference/cheatcodes/key-exists): Checks if a key exists in a JSON string (deprecated)
- [keyExistsJson](/reference/cheatcodes/key-exists-json): Checks if a key exists in a JSON string
- [keyExistsToml](/reference/cheatcodes/key-exists-toml): Checks if a key exists in a TOML table
- [label](/reference/cheatcodes/label): Sets a label for an address in test traces
- [load](/reference/cheatcodes/load): Loads a value from a specific storage slot of an account
- [makePersistent](/reference/cheatcodes/make-persistent): Marks accounts as persistent across fork switches
- [mockCall](/reference/cheatcodes/mock-call): Mocks calls to an address with specific calldata to return specified data
- [mockCallRevert](/reference/cheatcodes/mock-call-revert): Mocks calls to an address to revert with specified data
- [mockCalls](/reference/cheatcodes/mock-calls): Mocks calls to return different data for each successive invocation
- [mockFunction](/reference/cheatcodes/mock-function): Executes calls to an address using bytecode from another address
- [Cheatcodes Reference](/reference/cheatcodes/overview)
- [parseAddress](/reference/cheatcodes/parse-address): Parses a hex string into an address
- [parseBool](/reference/cheatcodes/parse-bool): Parses a string into a bool
- [parseBytes](/reference/cheatcodes/parse-bytes): Parses a hex string into bytes
- [parseBytes32](/reference/cheatcodes/parse-bytes32): Parses a hex string into bytes32
- [parseInt](/reference/cheatcodes/parse-int): Parses a string into an int256
- [parseJson](/reference/cheatcodes/parse-json): Parses JSON files and returns values as ABI-encoded bytes
- [parseJsonKeys](/reference/cheatcodes/parse-json-keys): Gets list of keys present in a JSON string
- [parseToml](/reference/cheatcodes/parse-toml): Parses TOML files and returns values as ABI-encoded bytes
- [parseTomlKeys](/reference/cheatcodes/parse-toml-keys): Gets list of keys present in a TOML string
- [parseUint](/reference/cheatcodes/parse-uint): Parses a string into a uint256
- [pauseGasMetering](/reference/cheatcodes/pause-gas-metering): Pauses gas metering so gasleft() does not decrease
- [prank](/reference/cheatcodes/prank): Sets msg.sender for the next call to a specified address
- [prevrandao](/reference/cheatcodes/prevrandao): Sets block.prevrandao for post-merge EVM versions in Forge tests
- [projectRoot](/reference/cheatcodes/project-root): Returns the root directory of the current Foundry project
- [prompt](/reference/cheatcodes/prompt): Displays an interactive prompt for user input in scripts
- [readCallers](/reference/cheatcodes/read-callers): Reads the current caller mode, msg.sender, and tx.origin
- [record](/reference/cheatcodes/record): Starts recording all storage reads and writes
- [recordLogs](/reference/cheatcodes/record-logs): Starts recording all emitted events
- [rememberKey](/reference/cheatcodes/remember-key): Stores a private key in forge's local wallet for broadcasting
- [resetGasMetering](/reference/cheatcodes/reset-gas-metering): Resets gas metering to the gas limit of the current execution frame
- [resumeGasMetering](/reference/cheatcodes/resume-gas-metering): Resumes gas metering after it was paused
- [revokePersistent](/reference/cheatcodes/revoke-persistent): Removes persistent status from accounts
- [roll](/reference/cheatcodes/roll): Sets block.number to a specified value in Forge tests
- [rollFork](/reference/cheatcodes/roll-fork): Sets the block number of a fork
- [RPC Cheatcodes](/reference/cheatcodes/rpc): Access configured RPC endpoints and make JSON-RPC calls
- [selectFork](/reference/cheatcodes/select-fork): Activates a previously created fork
- [serializeJson](/reference/cheatcodes/serialize-json): Serializes values as a stringified JSON object
- [setArbitraryStorage](/reference/cheatcodes/set-arbitrary-storage): Makes the storage of an address fully symbolic
- [setEnv](/reference/cheatcodes/set-env): Sets an environment variable
- [setNonce](/reference/cheatcodes/set-nonce): Sets the nonce of an account
- [sign](/reference/cheatcodes/sign): Signs a digest with a private key, returning (v, r, s)
- [signDelegation](/reference/cheatcodes/sign-delegation): Signs and attaches EIP-7702 authorization for account delegation
- [skip](/reference/cheatcodes/skip): Marks a test as skipped conditionally
- [sleep](/reference/cheatcodes/sleep): Pauses execution for a specified duration
- [startBroadcast](/reference/cheatcodes/start-broadcast): Makes all subsequent calls create transactions that can be signed and sent onchain
- [startPrank](/reference/cheatcodes/start-prank): Sets msg.sender for all subsequent calls until stopPrank is called
- [startStateDiffRecording](/reference/cheatcodes/start-state-diff-recording): Starts recording all state changes during execution
- [snapshotState cheatcodes](/reference/cheatcodes/state-snapshots): Snapshot and restore EVM state
- [stopAndReturnStateDiff](/reference/cheatcodes/stop-and-return-state-diff): Stops state diff recording and returns all recorded state changes
- [stopBroadcast](/reference/cheatcodes/stop-broadcast): Stops collecting transactions for onchain broadcasting
- [stopPrank](/reference/cheatcodes/stop-prank): Stops an active prank, resetting msg.sender and tx.origin
- [store](/reference/cheatcodes/store): Stores a value in a specific storage slot of an account
- [toString](/reference/cheatcodes/to-string): Converts any type to its string representation
- [transact](/reference/cheatcodes/transact): Fetches and executes a transaction from a fork
- [txGasPrice](/reference/cheatcodes/tx-gas-price): Sets tx.gasprice for the rest of the transaction
- [unixTime](/reference/cheatcodes/unix-time): Returns the current unix timestamp in milliseconds
- [warp](/reference/cheatcodes/warp): Sets block.timestamp to a specified value in Forge tests
- [writeJson](/reference/cheatcodes/write-json): Writes a serialized JSON object to a file
- [writeToml](/reference/cheatcodes/write-toml): Writes a serialized JSON object to a TOML file
- [chisel](/reference/chisel/chisel)
- [chisel clear-cache](/reference/chisel/clear-cache)
- [chisel eval](/reference/chisel/eval)
- [chisel list](/reference/chisel/list)
- [chisel load](/reference/chisel/load)
- [chisel view](/reference/chisel/view)
- [Base Options](/reference/common/base-options)
- [Create Option](/reference/common/cast-estimate-create-option)
- [Display Options](/reference/common/display-options)
- [Etherscan Options](/reference/common/etherscan-options)
- [Wallet Options - Hardware Wallet](/reference/common/multi-wallet-options-hardware)
- [Wallet Options - Keystore](/reference/common/multi-wallet-options-keystore)
- [Wallet Options - Raw](/reference/common/multi-wallet-options-raw)
- [Wallet Options - Remote](/reference/common/multi-wallet-options-remote)
- [RPC Options](/reference/common/rpc-options)
- [Transaction Options](/reference/common/transaction-options)
- [Wallet Options - Hardware Wallet](/reference/common/wallet-options-hardware)
- [Wallet Options - Keystore](/reference/common/wallet-options-keystore)
- [WALLET OPTIONS - RAW:](/reference/common/wallet-options-raw)
- [Wallet Options - Remote](/reference/common/wallet-options-remote)
- [abs](/reference/forge-std/abs)
- [arithmeticError](/reference/forge-std/arithmeticError)
- [assertApproxEqAbs](/reference/forge-std/assertApproxEqAbs)
- [assertApproxEqAbsDecimal](/reference/forge-std/assertApproxEqAbsDecimal)
- [assertApproxEqRel](/reference/forge-std/assertApproxEqRel)
- [assertApproxEqRelDecimal](/reference/forge-std/assertApproxEqRelDecimal)
- [assertEq](/reference/forge-std/assertEq)
- [assertEqDecimal](/reference/forge-std/assertEqDecimal)
- [assertFalse](/reference/forge-std/assertFalse)
- [assertGe](/reference/forge-std/assertGe)
- [assertGeDecimal](/reference/forge-std/assertGeDecimal)
- [assertGt](/reference/forge-std/assertGt)
- [assertGtDecimal](/reference/forge-std/assertGtDecimal)
- [assertionError](/reference/forge-std/assertionError)
- [assertLe](/reference/forge-std/assertLe)
- [assertLeDecimal](/reference/forge-std/assertLeDecimal)
- [assertLt](/reference/forge-std/assertLt)
- [assertLtDecimal](/reference/forge-std/assertLtDecimal)
- [assertNotEq](/reference/forge-std/assertNotEq)
- [assertNotEqDecimal](/reference/forge-std/assertNotEqDecimal)
- [assertTrue](/reference/forge-std/assertTrue)
- [assumeNotPrecompile](/reference/forge-std/assume-no-precompiles)
- [assumePayable](/reference/forge-std/assume-payable)
- [bound](/reference/forge-std/bound)
- [changePrank](/reference/forge-std/change-prank)
- [checked_write](/reference/forge-std/checked_write)
- [computeCreateAddress](/reference/forge-std/compute-create-address)
- [Config](/reference/forge-std/config)
- [Console Logging](/reference/forge-std/console-log)
- [deal](/reference/forge-std/deal)
- [delta](/reference/forge-std/delta)
- [deployCode](/reference/forge-std/deployCode)
- [deployCodeTo](/reference/forge-std/deployCodeTo)
- [depth](/reference/forge-std/depth)
- [deriveRememberKey](/reference/forge-std/derive-remember-key)
- [divisionError](/reference/forge-std/divisionError)
- [enable_packed_slots](/reference/forge-std/enable_packed_slots)
- [encodeStorageError](/reference/forge-std/encodeStorageError)
- [enumConversionError](/reference/forge-std/enumConversionError)
- [fail](/reference/forge-std/fail)
- [find](/reference/forge-std/find)
- [hoax](/reference/forge-std/hoax)
- [indexOOBError](/reference/forge-std/indexOOBError)
- [makeAddr](/reference/forge-std/make-addr)
- [makeAddrAndKey](/reference/forge-std/make-addr-and-key)
- [memOverflowError](/reference/forge-std/memOverflowError)
- [noGasMetering](/reference/forge-std/noGasMetering)
- [Forge Standard Library Reference](/reference/forge-std/overview)
- [percentDelta](/reference/forge-std/percentDelta)
- [popError](/reference/forge-std/popError)
- [read](/reference/forge-std/read)
- [rewind](/reference/forge-std/rewind)
- [Script Utils](/reference/forge-std/script-utils)
- [sig](/reference/forge-std/sig)
- [skip](/reference/forge-std/skip)
- [startHoax](/reference/forge-std/startHoax)
- [Std Assertions](/reference/forge-std/std-assertions)
- [Std Cheats](/reference/forge-std/std-cheats)
- [StdConfig](/reference/forge-std/std-config)
- [Std Errors](/reference/forge-std/std-errors)
- [Std Logs](/reference/forge-std/std-logs)
- [Std Math](/reference/forge-std/std-math)
- [Std Storage](/reference/forge-std/std-storage)
- [target](/reference/forge-std/target)
- [with_key](/reference/forge-std/with_key)
- [zeroVarError](/reference/forge-std/zeroVarError)
- [forge bind](/reference/forge/bind)
- [forge bind-json](/reference/forge/bind-json)
- [forge build](/reference/forge/build)
- [forge cache](/reference/forge/cache)
- [forge clean](/reference/forge/clean)
- [forge clone](/reference/forge/clone)
- [forge compiler](/reference/forge/compiler)
- [forge completions](/reference/forge/completions)
- [forge config](/reference/forge/config)
- [forge coverage](/reference/forge/coverage)
- [forge create](/reference/forge/create)
- [forge doc](/reference/forge/doc)
- [forge eip712](/reference/forge/eip712)
- [forge flatten](/reference/forge/flatten)
- [forge fmt](/reference/forge/fmt)
- [forge](/reference/forge/forge)
- [forge geiger](/reference/forge/geiger)
- [forge generate](/reference/forge/generate)
- [forge init](/reference/forge/init)
- [forge inspect](/reference/forge/inspect)
- [forge install](/reference/forge/install)
- [forge lint](/reference/forge/lint)
- [forge remappings](/reference/forge/remappings)
- [forge remove](/reference/forge/remove)
- [forge script](/reference/forge/script)
- [forge selectors](/reference/forge/selectors)
- [forge snapshot](/reference/forge/snapshot)
- [forge soldeer](/reference/forge/soldeer)
- [forge test](/reference/forge/test)
- [forge tree](/reference/forge/tree)
- [forge update](/reference/forge/update)
- [forge verify-bytecode](/reference/forge/verify-bytecode)
- [forge verify-check](/reference/forge/verify-check)
- [forge verify-contract](/reference/forge/verify-contract)
- [cast call --create](/reference/cast/call/--create)
- [cast erc20-token allowance](/reference/cast/erc20-token/allowance)
- [cast erc20-token approve](/reference/cast/erc20-token/approve)
- [cast erc20-token balance](/reference/cast/erc20-token/balance)
- [cast erc20-token burn](/reference/cast/erc20-token/burn)
- [cast erc20-token decimals](/reference/cast/erc20-token/decimals)
- [cast erc20-token mint](/reference/cast/erc20-token/mint)
- [cast erc20-token name](/reference/cast/erc20-token/name)
- [cast erc20-token symbol](/reference/cast/erc20-token/symbol)
- [cast erc20-token total-supply](/reference/cast/erc20-token/total-supply)
- [cast erc20-token transfer](/reference/cast/erc20-token/transfer)
- [cast estimate --create](/reference/cast/estimate/--create)
- [cast mktx --create](/reference/cast/mktx/--create)
- [cast send --create](/reference/cast/send/--create)
- [cast tx-pool content](/reference/cast/tx-pool/content)
- [cast tx-pool content-from](/reference/cast/tx-pool/content-from)
- [cast tx-pool inspect](/reference/cast/tx-pool/inspect)
- [cast tx-pool status](/reference/cast/tx-pool/status)
- [cast wallet address](/reference/cast/wallet/address)
- [cast wallet change-password](/reference/cast/wallet/change-password)
- [cast wallet decrypt-keystore](/reference/cast/wallet/decrypt-keystore)
- [cast wallet derive](/reference/cast/wallet/derive)
- [cast wallet import](/reference/cast/wallet/import)
- [cast wallet list](/reference/cast/wallet/list)
- [cast wallet new](/reference/cast/wallet/new)
- [cast wallet new-mnemonic](/reference/cast/wallet/new-mnemonic)
- [cast wallet private-key](/reference/cast/wallet/private-key)
- [cast wallet public-key](/reference/cast/wallet/public-key)
- [cast wallet remove](/reference/cast/wallet/remove)
- [cast wallet sign](/reference/cast/wallet/sign)
- [cast wallet sign-auth](/reference/cast/wallet/sign-auth)
- [cast wallet vanity](/reference/cast/wallet/vanity)
- [cast wallet verify](/reference/cast/wallet/verify)
- [forge cache clean](/reference/forge/cache/clean)
- [forge cache ls](/reference/forge/cache/ls)
- [forge compiler resolve](/reference/forge/compiler/resolve)
- [forge generate test](/reference/forge/generate/test)
- [forge selectors cache](/reference/forge/selectors/cache)
- [forge selectors collision](/reference/forge/selectors/collision)
- [forge selectors find](/reference/forge/selectors/find)
- [forge selectors list](/reference/forge/selectors/list)
- [forge selectors upload](/reference/forge/selectors/upload)
- [forge soldeer clean](/reference/forge/soldeer/clean)
- [forge soldeer init](/reference/forge/soldeer/init)
- [forge soldeer install](/reference/forge/soldeer/install)
- [forge soldeer login](/reference/forge/soldeer/login)
- [forge soldeer push](/reference/forge/soldeer/push)
- [forge soldeer uninstall](/reference/forge/soldeer/uninstall)
- [forge soldeer update](/reference/forge/soldeer/update)
- [forge soldeer version](/reference/forge/soldeer/version)
-->

## forge coverage

Generate coverage reports

:::terminal

```bash
$ forge coverage --help
```

```txt
Usage: forge coverage [OPTIONS] [PATH]

Options:
      --report <REPORT>
          The report type to use for coverage.
          
          This flag can be used multiple times.
          
          [default: summary]
          [possible values: summary, lcov, debug, bytecode]

      --lcov-version <LCOV_VERSION>
          The version of the LCOV "tracefile" format to use.
          
          Format: `MAJOR[.MINOR]`.
          
          Main differences: - `1.x`: The original v1 format. - `2.0`: Adds
          support for "line end" numbers for functions. - `2.2`: Changes the
          format of functions.
          
          [default: 1]

      --ir-minimum
          Enable viaIR with minimum optimization
          
          This can fix most of the "stack too deep" errors while resulting a
          relatively accurate source map.

  -r, --report-file <PATH>
          The path to output the report.
          
          If not specified, the report will be stored in the root of the
          project.

      --include-libs
          Whether to include libraries in the coverage report

      --exclude-tests
          Whether to exclude tests from the coverage report

  -h, --help
          Print help (see a summary with '-h')

Display options:
  -v, --verbosity...
          Verbosity level of the log messages.
          
          Pass multiple times to increase the verbosity (e.g. -v, -vv, -vvv).
          
          Depending on the context the verbosity levels have different meanings.
          
          For example, the verbosity levels of the EVM are:
          - 2 (-vv): Print logs for all tests.
          - 3 (-vvv): Print execution traces for failing tests.
          - 4 (-vvvv): Print execution traces for all tests, and setup traces
          for failing tests.
          - 5 (-vvvvv): Print execution and setup traces for all tests,
          including storage changes and
            backtraces with line numbers.

  -q, --quiet
          Do not print log messages

      --json
          Format log messages as JSON

      --md
          Format log messages as Markdown

      --color <COLOR>
          The color of the log messages

          Possible values:
          - auto:   Intelligently guess whether to use color output (default)
          - always: Force color output
          - never:  Force disable color output

  -s, --suppress-successful-traces
          Suppress successful test traces and show only traces for failures
          
          [env: FORGE_SUPPRESS_SUCCESSFUL_TRACES=]

      --junit
          Output test results as JUnit XML report

  -l, --list
          List tests instead of running them

      --show-progress
          Show test execution progress

      --summary
          Print test summary table

      --detailed
          Print detailed test summary table

      --disable-labels
          Disables the labels in the traces

Test options:
  -j, --threads <THREADS>
          Number of threads to use. Specifying 0 defaults to the number of
          logical cores
          
          [aliases: --jobs]

      --debug
          Run a single test in the debugger.
          
          The matching test will be opened in the debugger regardless of the
          outcome of the test.
          
          If the matching test is a fuzz test, then it will open the debugger on
          the first failure case. If the fuzz test does not fail, it will open
          the debugger on the last fuzz case.

      --flamegraph
          Generate a flamegraph for a single test. Implies `--decode-internal`.
          
          A flame graph is used to visualize which functions or operations
          within the smart contract are consuming the most gas overall in a
          sorted manner.

      --flamechart
          Generate a flamechart for a single test. Implies `--decode-internal`.
          
          A flame chart shows the gas usage over time, illustrating when each
          function is called (execution order) and how much gas it consumes at
          each point in the timeline.

      --decode-internal
          Identify internal functions in traces.
          
          This will trace internal functions and decode stack parameters.
          
          Parameters stored in memory (such as bytes or arrays) are currently
          decoded only when a single function is matched, similarly to
          `--debug`, for performance reasons.

      --dump <PATH>
          Dumps all debugger steps to file

      --gas-report
          Print a gas report
          
          [env: FORGE_GAS_REPORT=]

      --gas-snapshot-check <GAS_SNAPSHOT_CHECK>
          Check gas snapshots against previous runs
          
          [env: FORGE_SNAPSHOT_CHECK=]
          [possible values: true, false]

      --gas-snapshot-emit <GAS_SNAPSHOT_EMIT>
          Enable/disable recording of gas snapshot results
          
          [env: FORGE_SNAPSHOT_EMIT=]
          [possible values: true, false]

      --allow-failure
          Exit with code 0 even if a test fails
          
          [env: FORGE_ALLOW_FAILURE=]

      --trace-depth <TRACE_DEPTH>
          Defines the depth of a trace

      --fail-fast
          Stop running tests after the first failure

      --etherscan-api-key <KEY>
          The Etherscan (or equivalent) API key
          
          [env: ETHERSCAN_API_KEY=]

      --fuzz-seed <FUZZ_SEED>
          Set seed used to generate randomness during your fuzz runs

      --fuzz-runs <RUNS>
          [env: FOUNDRY_FUZZ_RUNS=]

      --fuzz-timeout <TIMEOUT>
          Timeout for each fuzz run in seconds
          
          [env: FOUNDRY_FUZZ_TIMEOUT=]

      --fuzz-input-file <FUZZ_INPUT_FILE>
          File to rerun fuzz failures from

      --rerun
          Re-run recorded test failures from last run. If no failure recorded
          then regular test run is performed

  [PATH]
          The contract file you want to test, it's a shortcut for --match-path

Test filtering:
      --match-test <REGEX>
          Only run test functions matching the specified regex pattern
          
          [aliases: --mt]

      --no-match-test <REGEX>
          Only run test functions that do not match the specified regex pattern
          
          [aliases: --nmt]

      --match-contract <REGEX>
          Only run tests in contracts matching the specified regex pattern
          
          [aliases: --mc]

      --no-match-contract <REGEX>
          Only run tests in contracts that do not match the specified regex
          pattern
          
          [aliases: --nmc]

      --match-path <GLOB>
          Only run tests in source files matching the specified glob pattern
          
          [aliases: --mp]

      --no-match-path <GLOB>
          Only run tests in source files that do not match the specified glob
          pattern
          
          [aliases: --nmp]

      --no-match-coverage <REGEX>
          Only show coverage for files that do not match the specified regex
          pattern
          
          [aliases: --nmco]

EVM options:
  -f, --fork-url <URL>
          Fetch state over a remote endpoint instead of starting from an empty
          state.
          
          If you want to fetch state from a specific block number, see
          --fork-block-number.
          
          [aliases: --rpc-url]

      --fork-block-number <BLOCK>
          Fetch state from a specific block number over a remote endpoint.
          
          See --fork-url.

      --fork-retries <RETRIES>
          Number of retries.
          
          See --fork-url.

      --fork-retry-backoff <BACKOFF>
          Initial retry backoff on encountering errors.
          
          See --fork-url.

      --no-storage-caching
          Explicitly disables the use of RPC caching.
          
          All storage slots are read entirely from the endpoint.
          
          This flag overrides the project's configuration file.
          
          See --fork-url.

      --initial-balance <BALANCE>
          The initial balance of deployed test contracts

      --sender <ADDRESS>
          The address which will be executing tests/scripts

      --ffi
          Enable the FFI cheatcode

      --live-logs
          Whether to show `console.log` outputs in realtime during script/test
          execution

      --always-use-create-2-factory
          Use the create 2 factory in all cases including tests and
          non-broadcasting scripts

      --create2-deployer <ADDRESS>
          The CREATE2 deployer address to use, this will override the one in the
          config

Fork config:
      --compute-units-per-second <CUPS>
          Sets the number of assumed available compute units per second for this
          provider
          
          default value: 330
          
          See also --fork-url and
          [https://docs.alchemy.com/reference/compute-units#what-are-cups-compute-units-per-second](https://docs.alchemy.com/reference/compute-units#what-are-cups-compute-units-per-second)

      --no-rpc-rate-limit
          Disables rate limiting for this node's provider.
          
          See also --fork-url and
          [https://docs.alchemy.com/reference/compute-units#what-are-cups-compute-units-per-second](https://docs.alchemy.com/reference/compute-units#what-are-cups-compute-units-per-second)
          
          [aliases: --no-rate-limit]

Executor environment config:
      --code-size-limit <CODE_SIZE>
          EIP-170: Contract code size limit in bytes. Useful to increase this
          because of tests. By default, it is 0x6000 (~25kb)

      --chain <CHAIN>
          The chain name or EIP-155 chain ID
          
          [aliases: --chain-id]

      --gas-price <GAS_PRICE>
          The gas price

      --block-base-fee-per-gas <FEE>
          The base fee in a block
          
          [aliases: --base-fee]

      --tx-origin <ADDRESS>
          The transaction origin

      --block-coinbase <ADDRESS>
          The coinbase of the block

      --block-timestamp <TIMESTAMP>
          The timestamp of the block

      --block-number <BLOCK>
          The block number

      --block-difficulty <DIFFICULTY>
          The block difficulty

      --block-prevrandao <PREVRANDAO>
          The block prevrandao value. NOTE: Before merge this field was mix_hash

      --block-gas-limit <BLOCK_GAS_LIMIT>
          The block gas limit
          
          [aliases: --gas-limit]

      --memory-limit <MEMORY_LIMIT>
          The memory limit per EVM execution in bytes. If this limit is
          exceeded, a `MemoryLimitOOG` result is thrown.
          
          The default is 128MiB.

      --disable-block-gas-limit
          Whether to disable the block gas limit checks
          
          [aliases: --no-block-gas-limit, --no-gas-limit]

      --enable-tx-gas-limit
          Whether to enable tx gas limit checks as imposed by Osaka (EIP-7825)
          
          [aliases: --tx-gas-limit]

      --isolate
          Whether to enable isolation of calls. In isolation mode all top-level
          calls are executed as a separate transaction in a separate EVM
          context, enabling more precise gas accounting and transaction state
          changes

Cache options:
      --force
          Clear the cache and artifacts folder and recompile

Build options:
      --no-cache
          Disable the cache

      --dynamic-test-linking
          Enable dynamic test linking

      --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

  -D, --deny <LEVEL>
          A compiler error will be triggered at the specified diagnostic level.
          
          Replaces the deprecated `--deny-warnings` flag.
          
          Possible values: - `never`: Do not treat any diagnostics as errors. -
          `warnings`: Treat warnings as errors. - `notes`: Treat both, warnings
          and notes, as errors.

          Possible values:
          - never:    Always exit with zero code
          - warnings: Exit with a non-zero code if any warnings are found
          - notes:    Exit with a non-zero code if any notes or warnings are
            found

      --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

      --use-literal-content
          Changes compilation to only use literal content and not URLs

      --no-metadata
          Do not append any metadata to the bytecode.
          
          This is equivalent to setting `bytecode_hash` to `none` and
          `cbor_metadata` to `false`.

      --ast
          Includes the AST as JSON in the compiler output

      --evm-version <VERSION>
          The target EVM version

      --optimize [<OPTIMIZE>]
          Activate the Solidity optimizer
          
          [possible values: true, false]

      --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](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

Watch options:
  -w, --watch [<PATH>...]
          Watch the given files or directories for changes.
          
          If no paths are provided, the source and test directories of the
          project are watched.

      --no-restart
          Do not restart the command while it's still running

      --run-all
          Explicitly re-run all tests when a change is made.
          
          By default, only the tests of the last modified test file are
          executed.

      --rerun-failed
          Re-run only previously failed tests first when a change is made.
          
          If all previously failed tests pass, the full test suite will be run
          automatically. This is particularly useful for TDD workflows where you
          want fast feedback on failures.

      --watch-delay <DELAY>
          File update debounce delay.
          
          During the delay, incoming change events are accumulated and only once
          the delay has passed, is an action taken. Note that this does not mean
          a command will be started: if --no-restart is given and a command is
          already running, the outcome of the action will be to do nothing.
          
          Defaults to 50ms. Parses as decimal seconds by default, but using an
          integer with the `ms` suffix may be more convenient.
          
          When using --poll mode, you'll want a larger duration, or risk
          overloading disk I/O.
```

:::
