Source mirror · commit 369512f · 2026-10-26 · MIT · canonical repo: gitlab.com/jiapunk/upgrade-airlock
git clone https://upgrade-airlock.pages.dev/source/upgrade-airlock.git
upgrade-airlock / foundry.toml
foundry.toml53 lines · 1558 bytes
1# Ethereum (Sepolia) build. `FOUNDRY_PROFILE=eth` selects [profile.eth], which is identical to the default.
2[profile.default]
3src = "src"
4out = "out"
5libs = ["lib"]
6test = "test"
7script = "script"
8
9solc_version = "0.8.37" # pinned; must already be in the local svm cache for --offline builds
10evm_version = "osaka"
11network = "ethereum"
12optimizer = true
13optimizer_runs = 10_000
14via_ir = false
15
16# Keep the default metadata hash: Sourcify returns `exact_match` only when the CBOR metadata is present.
17bytecode_hash = "ipfs"
18cbor_metadata = true
19
20# Remappings are explicit (remappings.txt). Auto-detection would pick up the upgradeable package's own
21# remapping to its (empty) git-submodule copy of openzeppelin-contracts.
22auto_detect_remappings = false
23
24fs_permissions = [
25 { access = "read", path = "./" },
26 { access = "read-write", path = "./deployments" },
27 { access = "read-write", path = "./cache" },
28]
29
30[fuzz]
31runs = 1_000
32
33[invariant]
34runs = 256
35depth = 64
36fail_on_revert = false
37
38# Kept so `FOUNDRY_PROFILE=eth` keeps working in scripts; everything else is inherited from the default profile.
39[profile.eth]
40network = "ethereum"
41
42# Use with `--rpc-url sepolia` (or any other key below).
43[rpc_endpoints]
44sepolia = "https://ethereum-sepolia-rpc.publicnode.com"
45sepolia_drpc = "https://sepolia.drpc.org"
46sepolia_1rpc = "https://1rpc.io/sepolia"
47
48# Contract verification (Sourcify):
49# FOUNDRY_PROFILE=eth forge verify-contract <address> src/AirlockAdmin.sol:AirlockAdmin --chain sepolia \
50# --verifier sourcify --watch
51
52[fmt]
53line_length = 120