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

Foundry Book

Script Utils

  • computeCreateAddress
  • deriveRememberKey