# foundry - Ethereum Development Framework - [Installation](/introduction/installation): Install Foundry using foundryup, precompiled binaries, or build from source. - [Getting Started](/introduction/getting-started): Get started with Foundry's four core tools - Forge, Cast, Anvil, and Chisel. - [Prompting](/introduction/prompting): Use structured prompts to get better results from AI coding assistants. - [Project Setup](/projects/): Create and configure Foundry projects for smart contract development. - [Project Layout](/projects/layout): Understand Foundry's project structure and directory conventions. - [Dependencies](/projects/dependencies): Manage dependencies using git submodules and remappings. - [Soldeer](/projects/soldeer): Use Soldeer as an alternative package manager for Foundry projects. - [Forge](/forge/): Forge is Foundry's build, test, and deploy tool for Solidity smart contracts. - [Building contracts](/forge/build): Compile Solidity contracts with Forge. - [Testing](/forge/testing): Write and run tests for Solidity contracts with Forge. - [Scripting](/forge/scripting): Deploy and interact with contracts using Forge scripts. - [Debugging](/forge/debugging): Debug Solidity contracts with Forge traces and the interactive debugger. - [Gas tracking](/forge/gas-tracking): Track and compare gas usage with Forge snapshots and reports. - [Formatting](/forge/formatting): Format Solidity code with Forge. - [Linting](/forge/linting): Lint Solidity code with Forge. - [Arbitrary ERC20 send](/forge/linting/arbitrary-send-erc20): Arbitrary ERC20 send - [Arbitrary ERC20 send with permit](/forge/linting/arbitrary-send-erc20-permit): Arbitrary ERC20 send with permit - [Arbitrary ETH send](/forge/linting/arbitrary-send-eth): Arbitrary ETH send - [Controlled delegatecall](/forge/linting/controlled-delegatecall): Controlled delegatecall target - [Hash collision from abi.encodePacked](/forge/linting/encode-packed-collision): Hash collision from abi.encodePacked with multiple dynamic arguments - [Enumerable loop removal](/forge/linting/enumerable-loop-removal): EnumerableSet removal while iterating with at - [Unchecked ERC20 transfer return value](/forge/linting/erc20-unchecked-transfer): Unchecked ERC20 transfer return value - [Incorrect exponentiation](/forge/linting/incorrect-exp): Incorrect exponentiation - [Incorrect shift order](/forge/linting/incorrect-shift): Incorrect shift order - [ETH reentrancy through uncapped calls](/forge/linting/reentrancy-eth): ETH reentrancy through uncapped calls - [Right-to-left override character](/forge/linting/rtlo): Right-to-left override character - [Unchecked low-level call](/forge/linting/unchecked-call): Unchecked low-level call - [Unprotected upgradeable initializer](/forge/linting/unprotected-initializer): Unprotected upgradeable initializer - [Assert State Change](/forge/linting/assert-state-change): State-modifying expression inside assert() - [Misuse of a boolean constant](/forge/linting/boolean-cst): Misuse of a boolean constant - [Dangerous unary operator](/forge/linting/dangerous-unary-operator): Unary operator fused to assignment - [Divide before multiply](/forge/linting/divide-before-multiply): Divide before multiply - [Incorrect ERC20 interface](/forge/linting/incorrect-erc20-interface): Incorrect ERC20 interface - [Incorrect ERC721 interface](/forge/linting/incorrect-erc721-interface): Incorrect ERC721 interface - [Incorrect strict equality](/forge/linting/incorrect-strict-equality): Dangerous strict equality check on an externally-influenced value - [Locked Ether](/forge/linting/locked-ether): Contract receives ETH but has no way to send it out - [Low-level calls](/forge/linting/low-level-calls): Low-level calls - [Mapping deletion](/forge/linting/mapping-deletion): Mapping deletion - [nonReentrant modifier is not first](/forge/linting/non-reentrant-not-first): nonReentrant modifier is not first - [No-ETH read-before-write reentrancy](/forge/linting/reentrancy-no-eth): No-ETH read-before-write reentrancy - [Tautological compare](/forge/linting/tautological-compare): Tautological compare - [Use of tx.origin for authorization](/forge/linting/tx-origin): Use of tx.origin for authorization - [Type-Based Tautology](/forge/linting/type-based-tautology): Type-based tautological comparison - [Uninitialized local variable](/forge/linting/uninitialized-local): Uninitialized local variable - [Uninitialized state variable](/forge/linting/uninitialized-state): Uninitialized state variable - [Unsafe OZ ERC721 mint](/forge/linting/unsafe-oz-erc721-mint): ERC721 _mint without receiver check - [Unsafe typecast](/forge/linting/unsafe-typecast): Unsafe typecast - [Unused return value](/forge/linting/unused-return): Unused return value from an external call - [Weak pseudo-random number generation](/forge/linting/weak-prng): Weak pseudo-random number generation - [Use of block.timestamp in comparisons](/forge/linting/block-timestamp): Use of block.timestamp in comparisons - [External calls inside loops](/forge/linting/calls-loop): External calls inside loops - [Delegatecall inside payable loops](/forge/linting/delegatecall-loop): Delegatecall inside payable loops - [Deprecated OpenZeppelin function](/forge/linting/deprecated-oz-function): Deprecated OpenZeppelin function - [Empty block](/forge/linting/empty-block): Empty function body - [Incorrect modifier](/forge/linting/incorrect-modifier): Incorrect modifier - [Missing events for access control changes](/forge/linting/missing-events-access-control): Missing events for access control changes - [Missing events for arithmetic state changes](/forge/linting/missing-events-arithmetic): Missing events for arithmetic state changes - [Missing zero-address check](/forge/linting/missing-zero-check): Missing zero-address check - [msg.value inside loops](/forge/linting/msg-value-loop): msg.value inside loops - [Events emitted after external calls](/forge/linting/reentrancy-events): Events emitted after external calls - [Require or revert inside loops](/forge/linting/require-revert-in-loop): require or revert inside loops - [Return bomb](/forge/linting/return-bomb): Return bomb - [Solmate SafeTransferLib](/forge/linting/solmate-safe-transfer-lib): Solmate SafeTransferLib does not check token code - [Boolean comparison to a constant](/forge/linting/boolean-equal): Boolean comparison to a constant - [Address and id event parameters should be indexed](/forge/linting/event-fields): Address and id event parameters should be indexed - [Function init state](/forge/linting/function-init-state): State variable initializer depends on state - [Inline assembly](/forge/linting/inline-assembly): Inline assembly usage - [Interface file naming](/forge/linting/interface-file-naming): Interface file naming - [Interface name should be prefixed with 'I'](/forge/linting/interface-naming): Interface name should be prefixed with 'I' - [Missing inheritance from an implemented interface](/forge/linting/missing-inheritance): Missing inheritance from an implemented interface - [Function names should use mixedCase](/forge/linting/mixed-case-function): Function names should use mixedCase - [Mutable variable names should use mixedCase](/forge/linting/mixed-case-variable): Mutable variable names should use mixedCase - [Multiple contracts in one file](/forge/linting/multi-contract-file): Multiple contracts in one file - [Prefer named struct fields](/forge/linting/named-struct-fields): Prefer named struct fields - [Struct names should use PascalCase](/forge/linting/pascal-case-struct): Struct names should use PascalCase - [Inconsistent pragma directives](/forge/linting/pragma-inconsistent): Inconsistent pragma directives - [Redundant base-constructor call](/forge/linting/redundant-base-constructor-call): Redundant base-constructor call - [Constants should use SCREAMING_SNAKE_CASE](/forge/linting/screaming-snake-case-const): Constants should use SCREAMING_SNAKE_CASE - [Immutables should use SCREAMING_SNAKE_CASE](/forge/linting/screaming-snake-case-immutable): Immutables should use SCREAMING_SNAKE_CASE - [Numeric literal with too many digits](/forge/linting/too-many-digits): Numeric literal with too many digits - [Unaliased plain import](/forge/linting/unaliased-plain-import): Unaliased plain import - [Usage of unsafe cheatcodes](/forge/linting/unsafe-cheatcode): Usage of unsafe cheatcodes - [Literal instead of constant](/forge/linting/literal-instead-of-constant): Repeated literal that should be a named constant - [Modifier used only once](/forge/linting/modifier-used-only-once): Modifier invoked by exactly one function - [Internal function used once](/forge/linting/internal-function-used-once): Internal function referenced exactly once - [Cyclomatic complexity](/forge/linting/cyclomatic-complexity): Function complexity above the threshold - [Incorrect using-for](/forge/linting/incorrect-using-for): using-for directive that attaches nothing - [Unused error](/forge/linting/unused-error): Custom error is never used - [Unused import](/forge/linting/unused-import): Unused import - [TODO/FIXME comments](/forge/linting/todo-comment): TODO and FIXME markers left in comments - [Inefficient keccak256 call](/forge/linting/asm-keccak256): Inefficient keccak256 call - [Array length not cached](/forge/linting/cache-array-length): Array length not cached - [Costly Operations Inside a Loop](/forge/linting/costly-loop): Costly operations inside a loop - [State variable could be constant](/forge/linting/could-be-constant): State variable could be constant - [State variable could be immutable](/forge/linting/could-be-immutable): State variable could be immutable - [Prefer custom errors over revert strings](/forge/linting/custom-errors): Prefer custom errors over revert strings - [Public function can be declared external](/forge/linting/external-function): Public function can be declared external - [Unused state variable](/forge/linting/unused-state-variables): Unused state variable - [State variable read via this](/forge/linting/var-read-using-this): State variable read via `this` - [Write After Write](/forge/linting/write-after-write): Redundant storage write; value overwritten before being read - [Unwrapped modifier logic](/forge/linting/unwrapped-modifier-logic): Unwrapped modifier logic - [Cast](/cast/): Cast is Foundry's command-line tool for interacting with Ethereum. - [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. - [ABI encoding](/cast/abi-encoding): Encode and decode ABI data, calldata, and function signatures with Cast. - [Anvil](/anvil/): Anvil is Foundry's local Ethereum node for development and testing. - [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. - [Custom methods](/anvil/custom-methods): Anvil's custom RPC methods for impersonation, mining control, and state manipulation. - [Chisel](/chisel/): Chisel is Foundry's interactive Solidity REPL for rapid prototyping and debugging. - [Session management](/chisel/session-management): Save, load, and export Chisel REPL sessions. - [Forking](/chisel/forking): Fork live chains in Chisel to interact with deployed contracts. - [Commands](/chisel/commands): All available commands in the Chisel REPL. - [FAQ](/help/faq): Frequently asked questions about Foundry and its tools. - [Troubleshooting](/help/troubleshooting): Solutions to common Foundry errors and issues. - [Configuration](/config/): Configure Foundry with foundry.toml, profiles, and environment variables. - [Profiles](/config/profiles): Use profiles to switch between configurations for development, CI, and production. - [Compiler](/config/compiler): Configure the Solidity compiler settings for your Foundry project. - [Testing](/config/testing): Configure testing behavior including fuzz testing and invariant testing. - [MESC](/config/mesc): Use MESC to manage RPC endpoints across all your crypto tools from a single configuration file. - [CI Integration](/config/ci): Set up Foundry in GitHub Actions and other CI systems. - [Editor Setup](/config/editors): Configure VS Code, Vim, and other editors for Foundry projects. - [Best Practices](/best-practices): Best practices for writing contracts, tests, scripts, and managing security in Foundry projects. - [Guides](/guides/): Practical guides for common Foundry workflows and advanced patterns. - [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. - [Multi-Chain Deployments](/guides/multi-chain-deployments): Deploy the same contracts across multiple networks with per-chain configuration. - [Upgrading Contracts](/guides/upgrading-contracts): Implement proxy patterns with Forge scripts and verify storage layout compatibility. - [Fork Testing](/guides/fork-testing): Test against live chain state, impersonate accounts, and handle time-sensitive logic. - [Invariant Testing](/guides/invariant-testing): Write effective invariant tests with handler patterns and ghost variables. - [Branching Tree Technique](/guides/branching-tree-technique): Organize Solidity tests as decision trees with the Branching Tree Technique and Bulloak. - [Foundry on Tempo](/guides/tempo): Use Foundry's upstream Tempo support to configure projects, send Tempo transactions, manage tokens, policies, keychains, and debug local Tempo workflows. - [MPP-backed RPC endpoints](/guides/mpp): Use Foundry with HTTP 402 payment-gated RPC endpoints through the Machine Payments Protocol (MPP). - [Debugging Transactions](/guides/debugging-transactions): Replay and debug failed mainnet transactions with trace analysis. - [Gas Optimization](/guides/gas-optimization): Profile gas usage and optimize with snapshots and the IR pipeline. - [Stack Too Deep](/guides/stack-too-deep): Understanding and resolving the "Stack too deep" compilation error in Solidity. - [Docker & Containers](/guides/docker): Run Foundry in Docker for reproducible builds and CI environments. - [Foundry v1.0 migration guide](/guides/migrations/foundry-v1): Summary of breaking changes and migration steps for Foundry v1.0. - [forge](/reference/forge/forge) - [forge build](/reference/forge/build) - [forge cache clean](/reference/forge/cache/clean) - [forge clean](/reference/forge/clean) - [forge inspect](/reference/forge/inspect) - [forge soldeer clean](/reference/forge/soldeer/clean) - [forge create](/reference/forge/create) - [forge flatten](/reference/forge/flatten) - [forge verify-check](/reference/forge/verify-check) - [forge verify-contract](/reference/forge/verify-contract) - [forge completions](/reference/forge/completions) - [forge clone](/reference/forge/clone) - [forge config](/reference/forge/config) - [forge geiger](/reference/forge/geiger) - [forge init](/reference/forge/init) - [forge install](/reference/forge/install) - [forge remappings](/reference/forge/remappings) - [forge remove](/reference/forge/remove) - [forge soldeer init](/reference/forge/soldeer/init) - [forge soldeer install](/reference/forge/soldeer/install) - [forge soldeer update](/reference/forge/soldeer/update) - [forge tree](/reference/forge/tree) - [forge update](/reference/forge/update) - [forge coverage](/reference/forge/coverage) - [forge snapshot](/reference/forge/snapshot) - [forge test](/reference/forge/test) - [forge bind](/reference/forge/bind) - [forge bind-json](/reference/forge/bind-json) - [forge cache](/reference/forge/cache) - [forge cache ls](/reference/forge/cache/ls) - [forge compiler](/reference/forge/compiler) - [forge compiler resolve](/reference/forge/compiler/resolve) - [forge doc](/reference/forge/doc) - [forge eip712](/reference/forge/eip712) - [forge fmt](/reference/forge/fmt) - [forge fuzz](/reference/forge/fuzz) - [forge fuzz cmin](/reference/forge/fuzz/cmin) - [forge fuzz replay](/reference/forge/fuzz/replay) - [forge fuzz run](/reference/forge/fuzz/run) - [forge fuzz show](/reference/forge/fuzz/show) - [forge fuzz tmin](/reference/forge/fuzz/tmin) - [forge lint](/reference/forge/lint) - [forge script](/reference/forge/script) - [forge selectors](/reference/forge/selectors) - [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](/reference/forge/soldeer) - [forge soldeer login](/reference/forge/soldeer/login) - [forge soldeer push](/reference/forge/soldeer/push) - [forge soldeer uninstall](/reference/forge/soldeer/uninstall) - [forge soldeer version](/reference/forge/soldeer/version) - [forge verify-bytecode](/reference/forge/verify-bytecode) - [cast](/reference/cast/cast) - [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 calldata](/reference/cast/calldata) - [cast decode-abi](/reference/cast/decode-abi) - [cast decode-calldata](/reference/cast/decode-calldata) - [cast pretty-calldata](/reference/cast/pretty-calldata) - [cast selectors](/reference/cast/selectors) - [cast upload-signature](/reference/cast/upload-signature) - [cast balance](/reference/cast/balance) - [cast code](/reference/cast/code) - [cast codesize](/reference/cast/codesize) - [cast erc20-token balance](/reference/cast/erc20-token/balance) - [cast nonce](/reference/cast/nonce) - [cast proof](/reference/cast/proof) - [cast receive-policy receipt balance](/reference/cast/receive-policy/receipt/balance) - [cast storage](/reference/cast/storage) - [cast age](/reference/cast/age) - [cast block](/reference/cast/block) - [cast block-number](/reference/cast/block-number) - [cast find-block](/reference/cast/find-block) - [cast gas-price](/reference/cast/gas-price) - [cast chain](/reference/cast/chain) - [cast chain-id](/reference/cast/chain-id) - [cast client](/reference/cast/client) - [cast format-bytes32-string](/reference/cast/format-bytes32-string) - [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 parse-bytes32-address](/reference/cast/parse-bytes32-address) - [cast parse-bytes32-string](/reference/cast/parse-bytes32-string) - [cast shl](/reference/cast/shl) - [cast shr](/reference/cast/shr) - [cast to-ascii](/reference/cast/to-ascii) - [cast to-base](/reference/cast/to-base) - [cast to-bytes32](/reference/cast/to-bytes32) - [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-wei](/reference/cast/to-wei) - [cast lookup-address](/reference/cast/lookup-address) - [cast namehash](/reference/cast/namehash) - [cast resolve-name](/reference/cast/resolve-name) - [cast source](/reference/cast/source) - [cast completions](/reference/cast/completions) - [cast access-list](/reference/cast/access-list) - [cast call](/reference/cast/call) - [cast estimate](/reference/cast/estimate) - [cast logs](/reference/cast/logs) - [cast mktx](/reference/cast/mktx) - [cast publish](/reference/cast/publish) - [cast receipt](/reference/cast/receipt) - [cast receive-policy receipt](/reference/cast/receive-policy/receipt) - [cast rpc](/reference/cast/rpc) - [cast run](/reference/cast/run) - [cast send](/reference/cast/send) - [cast tx](/reference/cast/tx) - [cast abi-encode-event](/reference/cast/abi-encode-event) - [cast address-zero](/reference/cast/address-zero) - [cast admin](/reference/cast/admin) - [cast artifact](/reference/cast/artifact) - [cast b2e-payload](/reference/cast/b2e-payload) - [cast base-fee](/reference/cast/base-fee) - [cast batch-mktx](/reference/cast/batch-mktx) - [cast batch-send](/reference/cast/batch-send) - [cast bind](/reference/cast/bind) - [cast call --create](/reference/cast/call/--create) - [cast channel-id](/reference/cast/channel-id) - [cast classify](/reference/cast/classify) - [cast codehash](/reference/cast/codehash) - [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 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 erc20-token allowance](/reference/cast/erc20-token/allowance) - [cast erc20-token approve](/reference/cast/erc20-token/approve) - [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 format-units](/reference/cast/format-units) - [cast hash-message](/reference/cast/hash-message) - [cast hash-zero](/reference/cast/hash-zero) - [cast implementation](/reference/cast/implementation) - [cast index-erc7201](/reference/cast/index-erc7201) - [cast interface](/reference/cast/interface) - [cast keccak](/reference/cast/keccak) - [cast key-authorization](/reference/cast/key-authorization) - [cast key-authorization encode](/reference/cast/key-authorization/encode) - [cast key-authorization inspect](/reference/cast/key-authorization/inspect) - [cast key-authorization sign](/reference/cast/key-authorization/sign) - [cast keychain](/reference/cast/keychain) - [cast keychain authorize](/reference/cast/keychain/authorize) - [cast keychain burn-witness](/reference/cast/keychain/burn-witness) - [cast keychain check](/reference/cast/keychain/check) - [cast keychain doctor](/reference/cast/keychain/doctor) - [cast keychain inspect](/reference/cast/keychain/inspect) - [cast keychain is-admin](/reference/cast/keychain/is-admin) - [cast keychain is-witness-burned](/reference/cast/keychain/is-witness-burned) - [cast keychain list](/reference/cast/keychain/list) - [cast keychain policy](/reference/cast/keychain/policy) - [cast keychain policy add-call](/reference/cast/keychain/policy/add-call) - [cast keychain policy remove-target](/reference/cast/keychain/policy/remove-target) - [cast keychain policy set-limit](/reference/cast/keychain/policy/set-limit) - [cast keychain revoke](/reference/cast/keychain/revoke) - [cast keychain rl](/reference/cast/keychain/rl) - [cast keychain rs](/reference/cast/keychain/rs) - [cast keychain show](/reference/cast/keychain/show) - [cast keychain ss](/reference/cast/keychain/ss) - [cast keychain ul](/reference/cast/keychain/ul) - [cast keychain verify](/reference/cast/keychain/verify) - [cast keychain verify-admin](/reference/cast/keychain/verify-admin) - [cast max-int](/reference/cast/max-int) - [cast max-uint](/reference/cast/max-uint) - [cast min-int](/reference/cast/min-int) - [cast mktx --create](/reference/cast/mktx/--create) - [cast pad](/reference/cast/pad) - [cast parse-units](/reference/cast/parse-units) - [cast receive-policy](/reference/cast/receive-policy) - [cast receive-policy claim](/reference/cast/receive-policy/claim) - [cast receive-policy get](/reference/cast/receive-policy/get) - [cast receive-policy receipt burn](/reference/cast/receive-policy/receipt/burn) - [cast receive-policy receipt decode](/reference/cast/receive-policy/receipt/decode) - [cast receive-policy set](/reference/cast/receive-policy/set) - [cast receive-policy validate](/reference/cast/receive-policy/validate) - [cast recover-authority](/reference/cast/recover-authority) - [cast send --create](/reference/cast/send/--create) - [cast sig](/reference/cast/sig) - [cast sig-event](/reference/cast/sig-event) - [cast storage-root](/reference/cast/storage-root) - [cast tempo](/reference/cast/tempo) - [cast tempo login](/reference/cast/tempo/login) - [cast tip20-token](/reference/cast/tip20-token) - [cast tip20-token create](/reference/cast/tip20-token/create) - [cast tip20-token logo-check](/reference/cast/tip20-token/logo-check) - [cast tip20-token logo-set](/reference/cast/tip20-token/logo-set) - [cast tip20-token mine](/reference/cast/tip20-token/mine) - [cast tip403](/reference/cast/tip403) - [cast tip403 blacklist](/reference/cast/tip403/blacklist) - [cast tip403 check](/reference/cast/tip403/check) - [cast tip403 create](/reference/cast/tip403/create) - [cast tip403 info](/reference/cast/tip403/info) - [cast tip403 whitelist](/reference/cast/tip403/whitelist) - [cast to-check-sum-address](/reference/cast/to-check-sum-address) - [cast to-utf8](/reference/cast/to-utf8) - [cast trace](/reference/cast/trace) - [cast tx-pool](/reference/cast/tx-pool) - [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 virtual-address](/reference/cast/virtual-address) - [cast virtual-address create](/reference/cast/virtual-address/create) - [cast virtual-address resolve](/reference/cast/virtual-address/resolve) - [cast virtual-address watch](/reference/cast/virtual-address/watch) - [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 session](/reference/cast/wallet/session) - [cast wallet session create](/reference/cast/wallet/session/create) - [cast wallet session revoke](/reference/cast/wallet/session/revoke) - [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) - [cast wallet](/reference/cast/wallet) - [anvil](/reference/anvil/anvil) - [anvil completions](/reference/anvil/completions) - [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) - [Cheatcodes Reference](/reference/cheatcodes/overview) - [warp](/reference/cheatcodes/warp): Sets block.timestamp to a specified value in Forge tests - [roll](/reference/cheatcodes/roll): Sets block.number to a specified value in Forge tests - [fee](/reference/cheatcodes/fee): Sets block.basefee to a specified value in Forge tests - [getBlockTimestamp](/reference/cheatcodes/get-block-timestamp): Gets the current block.timestamp, avoiding IR compilation optimization issues - [getBlockNumber](/reference/cheatcodes/get-block-number): Gets the current block.number, avoiding IR compilation optimization issues - [difficulty](/reference/cheatcodes/difficulty): Sets block.difficulty for pre-merge EVM versions in Forge tests - [prevrandao](/reference/cheatcodes/prevrandao): Sets block.prevrandao for post-merge EVM versions in Forge tests - [chainId](/reference/cheatcodes/chain-id): Sets block.chainid to a specified value in Forge tests - [store](/reference/cheatcodes/store): Stores a value in a specific storage slot of an account - [setTip20LogoURI](/reference/cheatcodes/set-tip20-logo-uri): Sets a TIP-20 token logo URI directly in storage - [load](/reference/cheatcodes/load): Loads a value from a specific storage slot of an account - [etch](/reference/cheatcodes/etch): Sets the bytecode of an address to custom code - [deal](/reference/cheatcodes/deal): Sets the ETH balance of an address - [prank](/reference/cheatcodes/prank): Sets msg.sender for the next call to a specified address - [startPrank](/reference/cheatcodes/start-prank): Sets msg.sender for all subsequent calls until stopPrank is called - [stopPrank](/reference/cheatcodes/stop-prank): Stops an active prank, resetting msg.sender and tx.origin - [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 - [accesses](/reference/cheatcodes/accesses): Gets all storage slots that have been read or written to on an address - [recordLogs](/reference/cheatcodes/record-logs): Starts recording all emitted events - [getRecordedLogs](/reference/cheatcodes/get-recorded-logs): Gets all emitted events recorded by recordLogs - [setNonce](/reference/cheatcodes/set-nonce): Sets the nonce of an account - [getNonce](/reference/cheatcodes/get-nonce): Gets the nonce of an account or wallet - [mockCall](/reference/cheatcodes/mock-call): Mocks calls to an address with specific calldata to return specified data - [mockCalls](/reference/cheatcodes/mock-calls): Mocks calls to return different data for each successive invocation - [mockCallRevert](/reference/cheatcodes/mock-call-revert): Mocks calls to an address to revert with specified data - [mockFunction](/reference/cheatcodes/mock-function): Executes calls to an address using bytecode from another address - [clearMockedCalls](/reference/cheatcodes/clear-mocked-calls): Clears all mocked calls - [coinbase](/reference/cheatcodes/coinbase): Sets block.coinbase to a specified address - [broadcast](/reference/cheatcodes/broadcast): Makes the next call create a transaction that can be signed and sent onchain - [startBroadcast](/reference/cheatcodes/start-broadcast): Makes all subsequent calls create transactions that can be signed and sent onchain - [stopBroadcast](/reference/cheatcodes/stop-broadcast): Stops collecting transactions for onchain broadcasting - [pauseGasMetering](/reference/cheatcodes/pause-gas-metering): Pauses gas metering so gasleft() does not decrease - [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 - [txGasPrice](/reference/cheatcodes/tx-gas-price): Sets tx.gasprice for the rest of the transaction - [startStateDiffRecording](/reference/cheatcodes/start-state-diff-recording): Starts recording all state changes during execution - [stopAndReturnStateDiff](/reference/cheatcodes/stop-and-return-state-diff): Stops state diff recording and returns all recorded state changes - [snapshotState cheatcodes](/reference/cheatcodes/state-snapshots): Snapshot and restore EVM state - [snapshotGas cheatcodes](/reference/cheatcodes/gas-snapshots): Capture and compare gas usage across test runs - [isImplicitlyApproved](/reference/cheatcodes/is-implicitly-approved): Checks whether a spender is implicitly approved on Tempo - [isContext](/reference/cheatcodes/is-context): Checks the current Forge execution context - [expectRevert](/reference/cheatcodes/expect-revert): Asserts that the next call reverts with optional message matching - [expectEmit](/reference/cheatcodes/expect-emit): Asserts that specific events are emitted during the next call - [expectCall](/reference/cheatcodes/expect-call): Asserts that a specific call is made during test execution - [expectKeychainVerified](/reference/cheatcodes/expect-keychain-verified): Asserts that a SignatureVerifier.verifyKeychain call is made - [expectKeychainAdminVerified](/reference/cheatcodes/expect-keychain-admin-verified): Asserts that a SignatureVerifier.verifyKeychainAdmin call is made - [expectTip20LogoURIUpdated](/reference/cheatcodes/expect-tip20-logo-uri-updated): Expects a TIP-20 LogoURIUpdated event - [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 - [assumeImplicitApproval](/reference/cheatcodes/assume-implicit-approval): Skips fuzz inputs unless a spender is implicitly approved on Tempo - [createFork](/reference/cheatcodes/create-fork): Creates a new fork from an RPC endpoint - [selectFork](/reference/cheatcodes/select-fork): Activates a previously created fork - [createSelectFork](/reference/cheatcodes/create-select-fork): Creates and activates a new fork in one call - [activeFork](/reference/cheatcodes/active-fork): Returns the identifier of the currently active fork - [rollFork](/reference/cheatcodes/roll-fork): Sets the block number of a fork - [makePersistent](/reference/cheatcodes/make-persistent): Marks accounts as persistent across fork switches - [revokePersistent](/reference/cheatcodes/revoke-persistent): Removes persistent status from accounts - [isPersistent](/reference/cheatcodes/is-persistent): Checks if an account is marked as persistent across forks - [allowCheatcodes](/reference/cheatcodes/allow-cheatcodes): Grants cheatcode access to an address in forking mode - [transact](/reference/cheatcodes/transact): Fetches and executes a transaction from a fork - [ffi](/reference/cheatcodes/ffi): Calls an arbitrary external command - [prompt](/reference/cheatcodes/prompt): Displays an interactive prompt for user input in scripts - [projectRoot](/reference/cheatcodes/project-root): Returns the root directory of the current Foundry project - [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 - [sleep](/reference/cheatcodes/sleep): Pauses execution for a specified duration - [unixTime](/reference/cheatcodes/unix-time): Returns the current unix timestamp in milliseconds - [setEnv](/reference/cheatcodes/set-env): Sets an environment variable - [envOr](/reference/cheatcodes/env-or): Reads an environment variable with a default fallback value - [envBool](/reference/cheatcodes/env-bool): Reads an environment variable as bool or bool[] - [envUint](/reference/cheatcodes/env-uint): Reads an environment variable as uint256 or uint256[] - [envInt](/reference/cheatcodes/env-int): Reads an environment variable as int256 or int256[] - [envAddress](/reference/cheatcodes/env-address): Reads an environment variable as address or address[] - [envBytes32](/reference/cheatcodes/env-bytes32): Reads an environment variable as bytes32 or bytes32[] - [envString](/reference/cheatcodes/env-string): Reads an environment variable as string or string[] - [envBytes](/reference/cheatcodes/env-bytes): Reads an environment variable as bytes or bytes[] - [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 - [parseJson](/reference/cheatcodes/parse-json): Parses JSON files and returns values as ABI-encoded bytes - [parseToml](/reference/cheatcodes/parse-toml): Parses TOML files and returns values as ABI-encoded bytes - [parseJsonKeys](/reference/cheatcodes/parse-json-keys): Gets list of keys present in a JSON string - [parseTomlKeys](/reference/cheatcodes/parse-toml-keys): Gets list of keys present in a TOML string - [serializeJson](/reference/cheatcodes/serialize-json): Serializes values as a stringified JSON object - [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 - [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 - [signKeychain](/reference/cheatcodes/sign-keychain): Signs a digest as a Tempo keychain signature using an access key - [signKeychainAdmin](/reference/cheatcodes/sign-keychain-admin): Signs a digest as a Tempo keychain signature using a root or admin key - [addr](/reference/cheatcodes/addr): Computes the address for a given private key - [skip](/reference/cheatcodes/skip): Marks a test as skipped conditionally - [label](/reference/cheatcodes/label): Sets a label for an address in test traces - [getLabel](/reference/cheatcodes/get-label): Retrieves the label for an address - [deriveKey](/reference/cheatcodes/derive-key): Derives a private key from a mnemonic phrase - [parseBytes](/reference/cheatcodes/parse-bytes): Parses a hex string into bytes - [parseAddress](/reference/cheatcodes/parse-address): Parses a hex string into an address - [parseUint](/reference/cheatcodes/parse-uint): Parses a string into a uint256 - [parseInt](/reference/cheatcodes/parse-int): Parses a string into an int256 - [parseBytes32](/reference/cheatcodes/parse-bytes32): Parses a hex string into bytes32 - [parseBool](/reference/cheatcodes/parse-bool): Parses a string into a bool - [rememberKey](/reference/cheatcodes/remember-key): Stores a private key in forge's local wallet for broadcasting - [toString](/reference/cheatcodes/to-string): Converts any type to its string representation - [breakpoint](/reference/cheatcodes/breakpoint): Places a breakpoint for the debugger - [createWallet](/reference/cheatcodes/create-wallet): Creates a new Wallet struct with address and keys - [copyStorage](/reference/cheatcodes/copy-storage): Copies storage from one contract to another - [setArbitraryStorage](/reference/cheatcodes/set-arbitrary-storage): Makes the storage of an address fully symbolic - [RPC Cheatcodes](/reference/cheatcodes/rpc): Access configured RPC endpoints and make JSON-RPC calls - [File Cheatcodes](/reference/cheatcodes/fs): File system operations for reading, writing, and managing files - [Forge Standard Library Reference](/reference/forge-std/overview) - [Std Logs](/reference/forge-std/std-logs) - [Std Assertions](/reference/forge-std/std-assertions) - [fail](/reference/forge-std/fail) - [assertTrue](/reference/forge-std/assertTrue) - [assertFalse](/reference/forge-std/assertFalse) - [assertEq](/reference/forge-std/assertEq) - [assertEqDecimal](/reference/forge-std/assertEqDecimal) - [assertNotEq](/reference/forge-std/assertNotEq) - [assertNotEqDecimal](/reference/forge-std/assertNotEqDecimal) - [assertLt](/reference/forge-std/assertLt) - [assertLtDecimal](/reference/forge-std/assertLtDecimal) - [assertGt](/reference/forge-std/assertGt) - [assertGtDecimal](/reference/forge-std/assertGtDecimal) - [assertLe](/reference/forge-std/assertLe) - [assertLeDecimal](/reference/forge-std/assertLeDecimal) - [assertGe](/reference/forge-std/assertGe) - [assertGeDecimal](/reference/forge-std/assertGeDecimal) - [assertApproxEqAbs](/reference/forge-std/assertApproxEqAbs) - [assertApproxEqAbsDecimal](/reference/forge-std/assertApproxEqAbsDecimal) - [assertApproxEqRel](/reference/forge-std/assertApproxEqRel) - [assertApproxEqRelDecimal](/reference/forge-std/assertApproxEqRelDecimal) - [Std Cheats](/reference/forge-std/std-cheats) - [skip](/reference/forge-std/skip) - [rewind](/reference/forge-std/rewind) - [hoax](/reference/forge-std/hoax) - [startHoax](/reference/forge-std/startHoax) - [deal](/reference/forge-std/deal) - [deployCode](/reference/forge-std/deployCode) - [deployCodeTo](/reference/forge-std/deployCodeTo) - [bound](/reference/forge-std/bound) - [changePrank](/reference/forge-std/change-prank) - [makeAddr](/reference/forge-std/make-addr) - [makeAddrAndKey](/reference/forge-std/make-addr-and-key) - [noGasMetering](/reference/forge-std/noGasMetering) - [assumeNotPrecompile](/reference/forge-std/assume-no-precompiles) - [assumePayable](/reference/forge-std/assume-payable) - [StdConfig](/reference/forge-std/std-config) - [Std Errors](/reference/forge-std/std-errors) - [assertionError](/reference/forge-std/assertionError) - [arithmeticError](/reference/forge-std/arithmeticError) - [divisionError](/reference/forge-std/divisionError) - [enumConversionError](/reference/forge-std/enumConversionError) - [encodeStorageError](/reference/forge-std/encodeStorageError) - [popError](/reference/forge-std/popError) - [indexOOBError](/reference/forge-std/indexOOBError) - [memOverflowError](/reference/forge-std/memOverflowError) - [zeroVarError](/reference/forge-std/zeroVarError) - [Std Storage](/reference/forge-std/std-storage) - [target](/reference/forge-std/target) - [sig](/reference/forge-std/sig) - [with_key](/reference/forge-std/with_key) - [depth](/reference/forge-std/depth) - [enable_packed_slots](/reference/forge-std/enable_packed_slots) - [checked_write](/reference/forge-std/checked_write) - [find](/reference/forge-std/find) - [read](/reference/forge-std/read) - [Std Math](/reference/forge-std/std-math) - [abs](/reference/forge-std/abs) - [delta](/reference/forge-std/delta) - [percentDelta](/reference/forge-std/percentDelta) - [Script Utils](/reference/forge-std/script-utils) - [computeCreateAddress](/reference/forge-std/compute-create-address) - [deriveRememberKey](/reference/forge-std/derive-remember-key) - [Console Logging](/reference/forge-std/console-log) - [Config Overview](/config/reference/overview) - [Project](/config/reference/project) - [Solidity compiler](/config/reference/solidity-compiler) - [Testing](/config/reference/testing) - [In-line test configuration](/config/reference/inline-test-config) - [Formatter](/config/reference/formatter) - [Linter Configuration](/config/reference/linter) - [Documentation Generator](/config/reference/doc-generator) - [Etherscan](/config/reference/etherscan) - [Foundry - Ethereum Development Framework](/index) - [Benchmarks](/benchmarks) - [Changelog](/changelog/) - [cast index](/reference/cast/) - [References](/reference/README) - [Default foundry configuration](/config/reference/default-config) - [Config Reference](/config/reference/README) - [cast da-estimate](/reference/cast/da-estimate) - [cast index](/reference/cast/index-cmd) - [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) - [Config](/reference/forge-std/config) - [forge generate](/reference/forge/generate) - [forge generate test](/reference/forge/generate/test)