Repository navigation
Expand file tree
/
Copy pathfoundry.toml
More file actions
139 lines (125 loc) · 5.25 KB
/
Copy pathfoundry.toml
File metadata and controls
139 lines (125 loc) · 5.25 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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
# Release metadata, not foundry config. `[external.*]` is the namespace foundry
# reserves for other tools and ignores outright, so it raises no unknown-section
# warning and `forge config --fix` leaves it alone (a section foundry does not
# reserve is read as a profile, warned about on every invocation and rewritten
# into `[profile.*]` by the fixer).
#
# `version` is the LAST-published Soldeer release, not a next-version slot. A
# normal PR never moves it; only a release does, in lockstep with the frozen
# `src/generated/<tag>/` snapshot it names. `LibRainDeploySnapshot.deployTag()`
# reads it here when `script/Build.sol`'s `cutRelease()` runs, and rainix's
# `release-guard` checks it against the pushed `sol-v<version>` tag before
# anything publishes.
[external.package]
name = "raindex-deploy"
version = "0.1.17"
[profile.default]
src = 'src'
out = 'out'
# All Solidity dependencies are Soldeer-managed; no git submodules remain.
libs = ['dependencies']
# See more config options https://github.com/foundry-rs/foundry/tree/master/config
ffi = true
# script/Build.sol's codegen outgrows the default 2^30 gas limit.
gas_limit = "18446744073709551615"
solc = "0.8.25"
evm_version = "cancun"
# optimizer settings for debugging
# via_ir = false
# optimizer = false
# optimizer_runs = 0
# optimizer_steps = 0
# optimizer settings for snapshotting.
optimizer = true
optimizer_runs = 800
# RaindexV7 only fits EIP-170 via IR. Changing this profile moves its Zoltu address.
additional_compiler_profiles = [
{ name = "raindex", via_ir = true, optimizer_runs = 800 },
]
compilation_restrictions = [
{ paths = "src/concrete/raindex/RaindexV7.sol", via_ir = true, min_optimizer_runs = 800, max_optimizer_runs = 800 },
]
bytecode_hash = "none"
cbor_metadata = false
# Build metadata used for testing rain meta aware contracts in this folder rather
# than expose ffi to forge.
fs_permissions = [
{ access = "read", path = "./meta" },
{ access = "read-write", path = "./meta/RaindexV7SubParserAuthoringMeta.rain.meta" },
# `script/Build.sol` writes the rolling candidate snapshot under
# `src/generated/` and the generated released-suites libs under `src/lib/`.
{ access = "read-write", path = "./src" },
{ access = "read", path = "./subgraph" },
# script/Build.sol reads `[external.package].version` to name the frozen
# per-release snapshot dir.
{ access = "read", path = "foundry.toml" },
{ access = "read", path = "./.env.example" },
{ access = "read-write", path = "./.staged-config" },
{ access = "read", path = "./script/build.sh" },
{ access = "read", path = ".github/workflows/manual-sol-artifacts.yaml" },
]
remappings = [
# Custom remap so @openzeppelin packages' own internal imports resolve.
"@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.7.0/",
]
[dependencies]
forge-std = "1.17.0"
"@openzeppelin-contracts" = "5.7.0"
# rainlanguage/rain.interpreter was renamed to rainlanguage/rainlang;
# its Soldeer registry name follows.
rainlang = "0.2.30"
# rainlanguage/rain.raindex.interface was renamed to
# rainlanguage/raindex.interface; Soldeer registry name follows.
raindex-interface = "0.1.13"
rain-metadata = "0.1.43"
# The MetaBoard split out of `rain.metadata` into its own deploy repo. The
# deploy pin lives there now; `rain-metadata` keeps the interfaces and libs.
rain-metadata-deploy = "0.1.4"
rain-intorastring = "0.1.4"
rain-sol-codegen = "0.1.39"
rain-solmem = "0.1.28"
rain-math-float = "0.3.11"
rain-math-float-deploy = "0.1.9"
rain-tofu-erc20-decimals = "0.1.4"
rain-tofu-erc20-decimals-deploy = "0.1.4"
rain-deploy = "0.1.25"
rain-factory = "0.2.5"
rain-lib-typecast = "0.1.4"
rain-lib-hash = "0.1.27"
rain-math-binary = "0.1.4"
rain-string = "0.3.9"
rain-lib-memkv = "0.2.0"
rain-extrospection = "0.1.16"
[soldeer]
recursive_deps = false
[fuzz]
runs = 5096
# rain-deploy:generated:rpc_endpoints:begin
[rpc_endpoints]
arbitrum = "${ARBITRUM_RPC_URL}"
base = "${BASE_RPC_URL}"
base_sepolia = "${BASE_SEPOLIA_RPC_URL}"
bsc = "${BSC_RPC_URL}"
ethereum = "${ETHEREUM_RPC_URL}"
flare = "${FLARE_RPC_URL}"
hyperevm = "${HYPEREVM_RPC_URL}"
polygon = "${POLYGON_RPC_URL}"
robinhood = "${ROBINHOOD_RPC_URL}"
# rain-deploy:generated:rpc_endpoints:end
# Robinhood Chain (4663) is not indexed by Etherscan V2. Its Blockscout speaks
# the Etherscan API, so the entry points there (the key is ignored). That
# explorer has rejected non-browser clients, so if `--verify` fails there,
# verify afterwards through Sourcify: `forge verify-contract --verifier
# sourcify --chain 4663 ...`.
# rain-deploy:generated:etherscan:begin
[etherscan]
arbitrum = { key = "${CI_DEPLOY_ARBITRUM_ETHERSCAN_API_KEY}", chain = 42161 }
base = { key = "${CI_DEPLOY_BASE_ETHERSCAN_API_KEY}", chain = 8453 }
base_sepolia = { key = "${CI_DEPLOY_BASE_SEPOLIA_ETHERSCAN_API_KEY}", chain = 84532 }
bsc = { key = "${CI_DEPLOY_BSC_ETHERSCAN_API_KEY}", chain = 56 }
ethereum = { key = "${CI_DEPLOY_ETHEREUM_ETHERSCAN_API_KEY}", chain = 1 }
flare = { key = "${CI_DEPLOY_FLARE_ETHERSCAN_API_KEY}", chain = 14 }
hyperevm = { key = "${CI_DEPLOY_HYPEREVM_ETHERSCAN_API_KEY}", chain = 999 }
polygon = { key = "${CI_DEPLOY_POLYGON_ETHERSCAN_API_KEY}", chain = 137 }
robinhood = { key = "${CI_DEPLOY_ROBINHOOD_ETHERSCAN_API_KEY}", chain = 4663, url = "https://robinhoodchain.blockscout.com/api" }
# rain-deploy:generated:etherscan:end