-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathfoundry.toml
More file actions
106 lines (86 loc) · 2.92 KB
/
Copy pathfoundry.toml
File metadata and controls
106 lines (86 loc) · 2.92 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
[profile.default]
src = "contracts"
out = "out"
test = "test"
script = "scripts"
libs = ["lib"]
# OZ Foundry Upgrades and deploy simulations need file access to artifacts.
# Keep broad access only if narrower permissions break upgrade validation or deployment scripts.
fs_permissions = [{ access = "read-write", path = "./" }]
ffi = true
ast = true
build_info = true
memory_limit = 134217728
# Raised from Foundry's 30M default so `forge script` (and simulations via
# `forge script --rpc-url ...` without `--broadcast`) have enough gas to cover
# memory expansion when OZ validation cheatcodes return multi-MB ABI JSON
# blobs. Memory expansion gas is quadratic; 30M trips MemoryOOG long before
# any real allocation fails. 1B gives comfortable headroom.
block_gas_limit = 1000000000
optimizer = true
optimizer_runs = 200
via_ir = true
extra_output = ["storageLayout"]
allow_internal_expect_revert = true
solc_version = "0.8.34"
evm_version = "cancun"
ignored_error_codes = [
"unreachable",
# forge-std (safeconsole.sol) uses the deprecated
# `/// @solidity memory-safe-assembly` natspec form. It is a vendored
# dependency we do not edit, so the deprecation is a false positive here.
"natspec-memory-safe-assembly-deprecated",
]
[profile.default.optimizer_details]
yul = true
[profile.ci]
ffi = true
show_progress = true
[profile.ci.fuzz]
runs = 300
max_test_rejects = 131072
gas_report_samples = 1000
show_logs = true
[profile.ci.invariant]
runs = 300
depth = 500
# False is the safer default for handler-driven suites: legitimate reverts
# (collisions, cross-tier fee paths, expired commitments) are part of the
# state space the fuzzer should explore, not test failures. Real bugs surface
# through the `invariant_*` assertions.
fail_on_revert = false
# Keep normal invariant campaigns close to real EVM call behaviour.
# Use a separate targeted suite if you specifically want call override behaviour.
call_override = false
dictionary_weight = 85
shrink_run_limit = 10000
max_assume_rejects = 131072
gas_report_samples = 500
# Corpus persistence is intentionally omitted: when CI caches `cache/`,
# previously-shrunk failure sequences replay on subsequent runs and report
# "persisted failure revert" even after the underlying bug is fixed. Local
# devs chasing a specific shrink can opt in via the FOUNDRY_INVARIANT_CORPUS_DIR
# env var without committing the persistence into CI.
show_edge_coverage = true
show_metrics = true
show_solidity = true
check_interval = 1
[profile.gas.fuzz]
gas_report_samples = 512
[profile.gas.invariant]
gas_report_samples = 512
[fmt]
line_length = 100
tab_width = 4
wrap_comments = true
bracket_spacing = false
int_types = "long"
quote_style = "double"
number_underscore = "preserve"
single_line_statement_blocks = "preserve"
multiline_func_header = "all"
[lint]
exclude_lints = ["mixed-case-variable"]
[rpc_endpoints]
paseo_local = "http://127.0.0.1:8545"
paseo = "https://services.polkadothub-rpc.com/testnet"