-
Notifications
You must be signed in to change notification settings - Fork 53
/
Copy pathfoundry.toml
128 lines (114 loc) · 3.63 KB
/
foundry.toml
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
[profile.default]
auto_detect_solc = false
bytecode_hash = "none"
evm_version = "shanghai"
fs_permissions = [
{ access = "read", path = "./out-optimized" },
{ access = "read", path = "package.json" },
{ access = "read-write", path = "./benchmark/results" },
{ access = "read-write", path = "./script/"}
]
gas_limit = 9223372036854775807
optimizer = true
optimizer_runs = 570
out = "out"
script = "script"
sender = "0x1804c8AB1F12E6bbf3894d4083f33e07309d1f38"
solc = "0.8.26"
src = "src"
test = "tests"
[profile.default.fuzz]
max_test_rejects = 1_000_000 # Number of times `vm.assume` can fail
runs = 50
[profile.default.invariant]
call_override = false # Override unsafe external calls to perform reentrancy checks
depth = 20 # Number of calls executed in one run
fail_on_revert = true
runs = 20
# Run only the code inside benchmark directory
[profile.benchmark]
test = "benchmark"
# Speed up compilation and tests during development
[profile.lite]
optimizer = false
# Compile only the production code and the test mocks with via IR
[profile.optimized]
out = "out-optimized"
test = "tests/mocks"
via_ir = true
# See "SMTChecker and Formal Verification" in the Solidity docs
[profile.smt]
ignored_error_codes = [
7737, # Disable inline assembly warnings
]
out = "out-optimized"
script = "src"
test = "src"
via_ir = true
[profile.smt.model_checker]
engine = "chc" # constrained Horn clauses
invariants = ["contract", "reentrancy"]
show_proved_safe = true
show_unproved = true
show_unsupported = true
timeout = 100_000 # in milliseconds, per solving query
targets = [
"assert",
"constantCondition",
"divByZero",
"outOfBounds",
"overflow",
"underflow",
]
[profile.smt.model_checker.contracts]
"src/LockupNFTDescriptor.sol" = ["LockupNFTDescriptor"]
"src/SablierLockup.sol" = ["SablierLockup"]
# Test the optimized contracts without re-compiling them
[profile.test-optimized]
src = "tests"
[doc]
ignore = ["**/*.t.sol"]
out = "docs"
repository = "https://github.com/sablier-labs/lockup"
[etherscan]
etherscan = { key = "${ETHERSCAN_API_KEY}" }
[fmt]
bracket_spacing = true
int_types = "long"
line_length = 120
multiline_func_header = "all"
number_underscore = "thousands"
quote_style = "double"
tab_width = 4
wrap_comments = true
[rpc_endpoints]
arbitrum = "${ARBITRUM_RPC_URL}"
arbitrum_sepolia = "https://arbitrum-sepolia-rpc.publicnode.com"
avalanche = "${AVALANCHE_RPC_URL}"
base = "https://mainnet.base.org"
base_sepolia = "https://sepolia.base.org"
berachain_artio = "https://bartio.rpc.berachain.com/"
blast = "https://rpc.blast.io"
blast_sepolia = "https://sepolia.blast.io"
bnb = "https://bsc-dataseed.binance.org"
core_dao = "https://rpc.coredao.org"
gnosis = "https://rpc.gnosischain.com"
lightlink = "https://replicator.phoenix.lightlink.io/rpc/v1"
linea = "https://rpc.linea.build"
linea_sepolia = "https://rpc.sepolia.linea.build"
localhost = "http://localhost:8545"
mainnet = "${MAINNET_RPC_URL}"
mode = "https://mainnet.mode.network/"
mode_sepolia = "https://sepolia.mode.network/"
morph = "https://rpc.morphl2.io"
optimism = "${OPTIMISM_RPC_URL}"
optimism_sepolia = "https://sepolia.optimism.io"
polygon = "${POLYGON_RPC_URL}"
scroll = "https://rpc.scroll.io/"
sei = "https://evm-rpc.sei-apis.com"
sei_testnet = "https://evm-rpc.arctic-1.seinetwork.io"
sepolia = "${SEPOLIA_RPC_URL}"
superseed = "https://mainnet.superseed.xyz"
superseed_sepolia = "https://sepolia.superseed.xyz"
taiko_hekla = "https://rpc.hekla.taiko.xyz"
taiko_mainnet = "https://rpc.mainnet.taiko.xyz"