Introduction
Getting Started
1.
Installation
2.
First Steps with Foundry
Projects
3.
Creating a New Project
4.
Working on an Existing Project
5.
Clone a Verified Contract on Chain
6.
Dependencies
7.
Soldeer
8.
Project Layout
Forge Overview
9.
Forge
10.
Tests
❱
10.1.
Writing Tests
10.2.
Cheatcodes
10.3.
Forge Standard Library Overview
10.4.
Understanding Traces
10.5.
Fork Testing
10.6.
Replaying Failures
11.
Advanced Testing
❱
11.1.
Fuzz Testing
11.2.
Invariant Testing
11.3.
Differential Testing
12.
Deploying and Verifying
13.
Gas Tracking
❱
13.1.
Gas Reports
13.2.
Gas Function Snapshots
13.3.
Gas Section Snapshots
14.
Debugger
Cast Overview
15.
Cast
Anvil Overview
16.
Anvil
Chisel Overview
17.
Chisel
Configuration
18.
Configuring with foundry.toml
19.
Continuous Integration
20.
Integrating with VSCode
21.
Shell Autocompletion
22.
Static Analyzers
23.
Integrating with Hardhat
24.
Vyper support
Tutorials
25.
Best Practices
26.
Creating an NFT with Solmate
27.
Docker and Foundry
28.
Testing EIP-712 Signatures
29.
Solidity Scripting
30.
Deterministic deployment using CREATE2
31.
Forking Mainnet with Cast and Anvil
32.
Learning Foundry Videos
Appendix
33.
Announcements
34.
FAQ
35.
Help us improve Foundry
36.
References
❱
36.1.
CLI Reference
❱
36.1.1.
forge
❱
36.1.1.1.
forge bind
36.1.1.2.
forge bind-json
36.1.1.3.
forge build
36.1.1.4.
forge cache
❱
36.1.1.4.1.
forge cache clean
36.1.1.4.2.
forge cache ls
36.1.1.5.
forge clean
36.1.1.6.
forge clone
36.1.1.7.
forge compiler
❱
36.1.1.7.1.
forge compiler resolve
36.1.1.8.
forge completions
36.1.1.9.
forge config
36.1.1.10.
forge coverage
36.1.1.11.
forge create
36.1.1.12.
forge debug
36.1.1.13.
forge doc
36.1.1.14.
forge eip712
36.1.1.15.
forge flatten
36.1.1.16.
forge fmt
36.1.1.17.
forge geiger
36.1.1.18.
forge generate
❱
36.1.1.18.1.
forge generate test
36.1.1.19.
forge generate-fig-spec
36.1.1.20.
forge init
36.1.1.21.
forge inspect
36.1.1.22.
forge install
36.1.1.23.
forge remappings
36.1.1.24.
forge remove
36.1.1.25.
forge script
36.1.1.26.
forge selectors
❱
36.1.1.26.1.
forge selectors collision
36.1.1.26.2.
forge selectors upload
36.1.1.26.3.
forge selectors list
36.1.1.26.4.
forge selectors find
36.1.1.26.5.
forge selectors cache
36.1.1.27.
forge snapshot
36.1.1.28.
forge soldeer
❱
36.1.1.28.1.
forge soldeer init
36.1.1.28.2.
forge soldeer install
36.1.1.28.3.
forge soldeer update
36.1.1.28.4.
forge soldeer login
36.1.1.28.5.
forge soldeer push
36.1.1.28.6.
forge soldeer uninstall
36.1.1.28.7.
forge soldeer version
36.1.1.29.
forge test
36.1.1.30.
forge tree
36.1.1.31.
forge update
36.1.1.32.
forge verify-bytecode
36.1.1.33.
forge verify-check
36.1.1.34.
forge verify-contract
36.1.2.
cast
❱
36.1.2.1.
cast 4byte
36.1.2.2.
cast 4byte-decode
36.1.2.3.
cast 4byte-event
36.1.2.4.
cast abi-encode
36.1.2.5.
cast access-list
36.1.2.6.
cast address-zero
36.1.2.7.
cast admin
36.1.2.8.
cast age
36.1.2.9.
cast artifact
36.1.2.10.
cast balance
36.1.2.11.
cast base-fee
36.1.2.12.
cast bind
36.1.2.13.
cast block
36.1.2.14.
cast block-number
36.1.2.15.
cast call
❱
36.1.2.15.1.
cast call --create
36.1.2.16.
cast calldata
36.1.2.17.
cast chain
36.1.2.18.
cast chain-id
36.1.2.19.
cast client
36.1.2.20.
cast code
36.1.2.21.
cast codehash
36.1.2.22.
cast codesize
36.1.2.23.
cast completions
36.1.2.24.
cast compute-address
36.1.2.25.
cast concat-hex
36.1.2.26.
cast constructor-args
36.1.2.27.
cast create2
36.1.2.28.
cast creation-code
36.1.2.29.
cast decode-abi
36.1.2.30.
cast decode-calldata
36.1.2.31.
cast decode-eof
36.1.2.32.
cast decode-error
36.1.2.33.
cast decode-event
36.1.2.34.
cast decode-string
36.1.2.35.
cast decode-transaction
36.1.2.36.
cast disassemble
36.1.2.37.
cast estimate
❱
36.1.2.37.1.
cast estimate --create
36.1.2.38.
cast etherscan-source
36.1.2.39.
cast find-block
36.1.2.40.
cast format-bytes32-string
36.1.2.41.
cast format-units
36.1.2.42.
cast from-bin
36.1.2.43.
cast from-fixed-point
36.1.2.44.
cast from-rlp
36.1.2.45.
cast from-utf8
36.1.2.46.
cast from-wei
36.1.2.47.
cast gas-price
36.1.2.48.
cast generate-fig-spec
36.1.2.49.
cast hash-message
36.1.2.50.
cast hash-zero
36.1.2.51.
cast implementation
36.1.2.52.
cast index
36.1.2.53.
cast index-erc7201
36.1.2.54.
cast interface
36.1.2.55.
cast keccak
36.1.2.56.
cast logs
36.1.2.57.
cast lookup-address
36.1.2.58.
cast max-int
36.1.2.59.
cast max-uint
36.1.2.60.
cast min-int
36.1.2.61.
cast mktx
❱
36.1.2.61.1.
cast mktx --create
36.1.2.62.
cast namehash
36.1.2.63.
cast nonce
36.1.2.64.
cast parse-bytes32-address
36.1.2.65.
cast parse-bytes32-string
36.1.2.66.
cast parse-units
36.1.2.67.
cast pretty-calldata
36.1.2.68.
cast proof
36.1.2.69.
cast publish
36.1.2.70.
cast receipt
36.1.2.71.
cast resolve-name
36.1.2.72.
cast rpc
36.1.2.73.
cast run
36.1.2.74.
cast selectors
36.1.2.75.
cast send
❱
36.1.2.75.1.
cast send --create
36.1.2.76.
cast shl
36.1.2.77.
cast shr
36.1.2.78.
cast sig
36.1.2.79.
cast sig-event
36.1.2.80.
cast storage
36.1.2.81.
cast storage-root
36.1.2.82.
cast to-ascii
36.1.2.83.
cast to-base
36.1.2.84.
cast to-bytes32
36.1.2.85.
cast to-check-sum-address
36.1.2.86.
cast to-dec
36.1.2.87.
cast to-fixed-point
36.1.2.88.
cast to-hex
36.1.2.89.
cast to-hexdata
36.1.2.90.
cast to-int256
36.1.2.91.
cast to-rlp
36.1.2.92.
cast to-uint256
36.1.2.93.
cast to-unit
36.1.2.94.
cast to-utf8
36.1.2.95.
cast to-wei
36.1.2.96.
cast tx
36.1.2.97.
cast upload-signature
36.1.2.98.
cast wallet
❱
36.1.2.98.1.
cast wallet new
36.1.2.98.2.
cast wallet new-mnemonic
36.1.2.98.3.
cast wallet vanity
36.1.2.98.4.
cast wallet address
36.1.2.98.5.
cast wallet sign
36.1.2.98.6.
cast wallet sign-auth
36.1.2.98.7.
cast wallet verify
36.1.2.98.8.
cast wallet import
36.1.2.98.9.
cast wallet list
36.1.2.98.10.
cast wallet private-key
36.1.2.98.11.
cast wallet decrypt-keystore
36.1.3.
anvil
❱
36.1.3.1.
anvil completions
36.1.3.2.
anvil generate-fig-spec
36.1.4.
chisel
❱
36.1.4.1.
chisel list
36.1.4.2.
chisel load
36.1.4.3.
chisel view
36.1.4.4.
chisel clear-cache
36.1.4.5.
chisel eval
36.2.
forge Commands
❱
36.2.1.
General Commands
❱
36.2.1.1.
forge
36.2.1.2.
forge help
36.2.1.3.
forge completions
36.2.2.
Project Commands
❱
36.2.2.1.
forge init
36.2.2.2.
forge clone
36.2.2.3.
forge install
36.2.2.4.
forge update
36.2.2.5.
forge remove
36.2.2.6.
forge config
36.2.2.7.
forge remappings
36.2.2.8.
forge tree
36.2.2.9.
forge geiger
36.2.3.
Build Commands
❱
36.2.3.1.
forge build
36.2.3.2.
forge clean
36.2.3.3.
forge inspect
36.2.4.
Test Commands
❱
36.2.4.1.
forge test
36.2.4.2.
forge snapshot
36.2.4.3.
forge coverage
36.2.5.
Deploy Commands
❱
36.2.5.1.
forge create
36.2.5.2.
forge verify-contract
36.2.5.3.
forge verify-check
36.2.5.4.
forge flatten
36.2.6.
Utility Commands
❱
36.2.6.1.
forge debug
36.2.6.2.
forge bind
36.2.6.3.
forge cache
36.2.6.4.
forge cache clean
36.2.6.5.
forge cache ls
36.2.6.6.
forge script
36.2.6.7.
forge upload-selectors
36.2.6.8.
forge doc
36.3.
cast Commands
❱
36.3.1.
General Commands
❱
36.3.1.1.
cast
36.3.1.2.
cast help
36.3.1.3.
cast completions
36.3.2.
Chain Commands
❱
36.3.2.1.
cast chain-id
36.3.2.2.
cast chain
36.3.2.3.
cast client
36.3.3.
Transaction Commands
❱
36.3.3.1.
cast publish
36.3.3.2.
cast receipt
36.3.3.3.
cast send
36.3.3.4.
cast mktx
36.3.3.5.
cast call
36.3.3.6.
cast rpc
36.3.3.7.
cast tx
36.3.3.8.
cast run
36.3.3.9.
cast estimate
36.3.3.10.
cast access-list
36.3.3.11.
cast logs
36.3.4.
Block Commands
❱
36.3.4.1.
cast find-block
36.3.4.2.
cast gas-price
36.3.4.3.
cast block-number
36.3.4.4.
cast basefee
36.3.4.5.
cast block
36.3.4.6.
cast age
36.3.5.
Account Commands
❱
36.3.5.1.
cast balance
36.3.5.2.
cast storage
36.3.5.3.
cast proof
36.3.5.4.
cast nonce
36.3.5.5.
cast code
36.3.5.6.
cast codesize
36.3.6.
ENS Commands
❱
36.3.6.1.
cast lookup-address
36.3.6.2.
cast resolve-name
36.3.6.3.
cast namehash
36.3.7.
Etherscan Commands
❱
36.3.7.1.
cast etherscan-source
36.3.8.
ABI Commands
❱
36.3.8.1.
cast abi-decode
36.3.8.2.
cast abi-encode
36.3.8.3.
cast 4byte
36.3.8.4.
cast 4byte-decode
36.3.8.5.
cast 4byte-event
36.3.8.6.
cast calldata
36.3.8.7.
cast calldata-decode
36.3.8.8.
cast pretty-calldata
36.3.8.9.
cast selectors
36.3.8.10.
cast upload-signature
36.3.9.
Conversion Commands
❱
36.3.9.1.
cast format-bytes32-string
36.3.9.2.
cast from-bin
36.3.9.3.
cast from-fixed-point
36.3.9.4.
cast from-rlp
36.3.9.5.
cast from-utf8
36.3.9.6.
cast from-wei
36.3.9.7.
cast parse-bytes32-address
36.3.9.8.
cast parse-bytes32-string
36.3.9.9.
cast to-ascii
36.3.9.10.
cast to-base
36.3.9.11.
cast to-bytes32
36.3.9.12.
cast to-dec
36.3.9.13.
cast to-fixed-point
36.3.9.14.
cast to-hex
36.3.9.15.
cast to-hexdata
36.3.9.16.
cast to-int256
36.3.9.17.
cast to-rlp
36.3.9.18.
cast to-uint256
36.3.9.19.
cast to-unit
36.3.9.20.
cast to-wei
36.3.9.21.
cast shl
36.3.9.22.
cast shr
36.3.10.
Utility Commands
❱
36.3.10.1.
cast address-zero
36.3.10.2.
cast sig
36.3.10.3.
cast sig-event
36.3.10.4.
cast keccak
36.3.10.5.
cast compute-address
36.3.10.6.
cast create2
36.3.10.7.
cast interface
36.3.10.8.
cast index
36.3.10.9.
cast concat-hex
36.3.10.10.
cast max-int
36.3.10.11.
cast min-int
36.3.10.12.
cast max-uint
36.3.10.13.
cast to-check-sum-address
36.3.11.
Wallet Commands
❱
36.3.11.1.
cast wallet
36.3.11.2.
cast wallet new
36.3.11.3.
cast wallet new-mnemonic
36.3.11.4.
cast wallet address
36.3.11.5.
cast wallet sign
36.3.11.6.
cast wallet vanity
36.3.11.7.
cast wallet verify
36.3.11.8.
cast wallet import
36.3.11.9.
cast wallet list
36.4.
anvil Reference
36.5.
chisel Reference
36.6.
Config Reference
❱
36.6.1.
Overview
36.6.2.
Project
36.6.3.
Solidity Compiler
36.6.4.
Testing
36.6.5.
In-line Configuration Testing
36.6.6.
Formatter
36.6.7.
Documentation Generator
36.6.8.
Etherscan
36.7.
Cheatcodes Reference
❱
36.7.1.
Environment
❱
36.7.1.1.
warp
36.7.1.2.
roll
36.7.1.3.
fee
36.7.1.4.
getBlockTimestamp
36.7.1.5.
getBlockNumber
36.7.1.6.
difficulty
36.7.1.7.
prevrandao
36.7.1.8.
chainId
36.7.1.9.
store
36.7.1.10.
load
36.7.1.11.
etch
36.7.1.12.
deal
36.7.1.13.
prank
36.7.1.14.
startPrank
36.7.1.15.
stopPrank
36.7.1.16.
readCallers
36.7.1.17.
record
36.7.1.18.
accesses
36.7.1.19.
recordLogs
36.7.1.20.
getRecordedLogs
36.7.1.21.
setNonce
36.7.1.22.
getNonce
36.7.1.23.
mockCall
36.7.1.24.
mockCalls
36.7.1.25.
mockCallRevert
36.7.1.26.
mockFunction
36.7.1.27.
clearMockedCalls
36.7.1.28.
coinbase
36.7.1.29.
broadcast
36.7.1.30.
startBroadcast
36.7.1.31.
stopBroadcast
36.7.1.32.
pauseGasMetering
36.7.1.33.
resetGasMetering
36.7.1.34.
resumeGasMetering
36.7.1.35.
txGasPrice
36.7.1.36.
startStateDiffRecording
36.7.1.37.
stopAndReturnStateDiff
36.7.1.38.
snapshotState
36.7.1.39.
snapshotGas
36.7.2.
Assertions
❱
36.7.2.1.
expectRevert
36.7.2.2.
expectEmit
36.7.2.3.
expectCall
36.7.3.
Fuzzer
❱
36.7.3.1.
assume
36.7.3.2.
assumeNoRevert
36.7.4.
Forking
❱
36.7.4.1.
createFork
36.7.4.2.
selectFork
36.7.4.3.
createSelectFork
36.7.4.4.
activeFork
36.7.4.5.
rollFork
36.7.4.6.
makePersistent
36.7.4.7.
revokePersistent
36.7.4.8.
isPersistent
36.7.4.9.
allowCheatcodes
36.7.4.10.
transact
36.7.5.
External
❱
36.7.5.1.
ffi
36.7.5.2.
prompt
36.7.5.3.
projectRoot
36.7.5.4.
getCode
36.7.5.5.
getDeployedCode
36.7.5.6.
sleep
36.7.5.7.
unixTime
36.7.5.8.
setEnv
36.7.5.9.
envOr
36.7.5.10.
envBool
36.7.5.11.
envUint
36.7.5.12.
envInt
36.7.5.13.
envAddress
36.7.5.14.
envBytes32
36.7.5.15.
envString
36.7.5.16.
envBytes
36.7.5.17.
keyExists
36.7.5.18.
keyExistsJson
36.7.5.19.
keyExistsToml
36.7.5.20.
parseJson
36.7.5.21.
parseToml
36.7.5.22.
parseJsonKeys
36.7.5.23.
parseTomlKeys
36.7.5.24.
serializeJson
36.7.5.25.
writeJson
36.7.5.26.
writeToml
36.7.6.
Utilities
❱
36.7.6.1.
addr
36.7.6.2.
sign
36.7.6.3.
skip
36.7.6.4.
label
36.7.6.5.
getLabel
36.7.6.6.
deriveKey
36.7.6.7.
parseBytes
36.7.6.8.
parseAddress
36.7.6.9.
parseUint
36.7.6.10.
parseInt
36.7.6.11.
parseBytes32
36.7.6.12.
parseBool
36.7.6.13.
rememberKey
36.7.6.14.
toString
36.7.6.15.
breakpoint
36.7.6.16.
createWallet
36.7.6.17.
copyStorage
36.7.6.18.
setArbitraryStorage
36.7.7.
RPC
36.7.8.
Files
36.8.
Forge Standard Library Reference
❱
36.8.1.
Std Logs
36.8.2.
Std Assertions
❱
36.8.2.1.
fail
36.8.2.2.
assertTrue
36.8.2.3.
assertFalse
36.8.2.4.
assertEq
36.8.2.5.
assertEqDecimal
36.8.2.6.
assertNotEq
36.8.2.7.
assertNotEqDecimal
36.8.2.8.
assertLt
36.8.2.9.
assertLtDecimal
36.8.2.10.
assertGt
36.8.2.11.
assertGtDecimal
36.8.2.12.
assertLe
36.8.2.13.
assertLeDecimal
36.8.2.14.
assertGe
36.8.2.15.
assertGeDecimal
36.8.2.16.
assertApproxEqAbs
36.8.2.17.
assertApproxEqAbsDecimal
36.8.2.18.
assertApproxEqRel
36.8.2.19.
assertApproxEqRelDecimal
36.8.3.
Std Cheats
❱
36.8.3.1.
skip
36.8.3.2.
rewind
36.8.3.3.
hoax
36.8.3.4.
startHoax
36.8.3.5.
deal
36.8.3.6.
deployCode
36.8.3.7.
deployCodeTo
36.8.3.8.
bound
36.8.3.9.
changePrank
36.8.3.10.
makeAddr
36.8.3.11.
makeAddrAndKey
36.8.3.12.
noGasMetering
36.8.3.13.
assumeNoPrecompiles
36.8.3.14.
assumePayable
36.8.4.
Std Errors
❱
36.8.4.1.
assertionError
36.8.4.2.
arithmeticError
36.8.4.3.
divisionError
36.8.4.4.
enumConversionError
36.8.4.5.
encodeStorageError
36.8.4.6.
popError
36.8.4.7.
indexOOBError
36.8.4.8.
memOverflowError
36.8.4.9.
zeroVarError
36.8.5.
Std Storage
❱
36.8.5.1.
target
36.8.5.2.
sig
36.8.5.3.
with_key
36.8.5.4.
depth
36.8.5.5.
checked_write
36.8.5.6.
find
36.8.5.7.
read
36.8.6.
Std Math
❱
36.8.6.1.
abs
36.8.6.2.
delta
36.8.6.3.
percentDelta
36.8.7.
Script Utils
❱
36.8.7.1.
computeCreateAddress
36.8.7.2.
deriveRememberKey
36.8.8.
Console Logging
36.9.
DSTest Reference
37.
Miscellaneous
❱
37.1.
Struct encoding
Light
Rust
Coal
Navy
Ayu
Foundry Book
Config Reference
Overview
Project
Solidity Compiler
Testing
In-line test configuration
Formatter
Documentation Generator
Etherscan