forked from lifinance/contracts
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path.env.example
More file actions
215 lines (170 loc) · 9.97 KB
/
Copy path.env.example
File metadata and controls
215 lines (170 loc) · 9.97 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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
# ================= Wallet private keys =================
# Tooling addresses wallets by ROLE; config/global.json `walletKeys` maps each role to the
# .env variable below, and the address is then derived from the key. The manage-wallet-funds
# skill (and the rotate-*/sweep-wallet-funds skills) resolve role → variable → address.
# Populate only the keys for wallets you actually operate.
#
# devWallet → PRIVATE_KEY (staging Safe signer; default for --environment=staging)
# deployerWallet → PRIVATE_KEY_PRODUCTION (production Safe signer; default for propose-* tasks)
# pauserWallet → PRIVATE_KEY_PAUSER_WALLET
# refundWallet → PRIVATE_KEY_REFUND_WALLET
# withdrawWallet → PRIVATE_KEY_WITHDRAW_WALLET
# backendSignerStaging → PRIVATE_KEY_BACKEND_SIGNER_STAGING
# backendSignerProduction → PRIVATE_KEY_BACKEND_SIGNER_PRODUCTION
#
# feeCollectorOwner is CTO-owned and has no key here.
PRIVATE_KEY="<your private key>"
# All network RPCs (ETH_NODE_URI_*) for .env file can be populated with the newest and most reliable RPCs fetched from MongoDB
# These values are stored to share the most up-to-date RPCs that work, ensuring consistency across all team members and github actions
# If MongoDB is unavailable, RPCs will fall back to public endpoints from networks.json
# To populate all RPCs, please run "bun fetch-rpcs"
# To add a new RPC for a specific network, run: "bun add-network-rpc --network {networkName} --rpcUrl {rpcUrl}"
# Mainnet Explorer API Keys
MAINNET_ETHERSCAN_API_KEY=
ABSTRACT_ETHERSCAN_API_KEY=
BOBA_ETHERSCAN_API_KEY=
FUSE_ETHERSCAN_API_KEY=
GRAVITY_ETHERSCAN_API_KEY=
IMMUTABLEZKEVM_ETHERSCAN_API_KEY=
KAIA_ETHERSCAN_API_KEY=
LISK_ETHERSCAN_API_KEY=
MANTLE_ETHERSCAN_API_KEY=
METIS_ETHERSCAN_API_KEY=
MODE_ETHERSCAN_API_KEY=
OPBNB_ETHERSCAN_API_KEY=
ROOTSTOCK_ETHERSCAN_API_KEY=
SEI_ETHERSCAN_API_KEY=
UNICHAIN_ETHERSCAN_API_KEY=
XLAYER_ETHERSCAN_API_KEY=
ZKSYNC_ETHERSCAN_API_KEY=
ZKSYNC_NATIVE_VERIFIER=
TRONGRID_API_KEY=
PHAROS_SOCIALSCAN_API_KEY=
# Testnet Explorer API Keys
GOERLI_ETHERSCAN_API_KEY=
LINEATEST_ETHERSCAN_API_KEY=
MUMBAI_ETHERSCAN_API_KEY=
SEPOLIA_ETHERSCAN_API_KEY=
# ================= MongoDB Configuration =================
# Old MongoDB cluster - Used for:
# - Default database (deployment logs, RPC endpoints)
MONGODB_URI=""
# Safe proposal MongoDB (sc_private.pendingTransactions - Safe transaction tracking).
# Reachable only through the lifi-connect tunnel since the legacy VPN was retired:
# run `lifi-connect prod smart-contracts` (or `bun run safe:tunnel`), then set the
# host to the forwarded localhost port with directConnection=true, e.g.
# mongodb://<user>:<pass>@localhost:<port>/?directConnection=true&tls=false
# Credentials come from 1Password. Setup guide: docs/Setup.md
SC_MONGODB_URI=""
# Deferred diamond-cleanup drain (docs/DeferredDiamondCleanupQueue.md §6). When
# "true", proposing any production facet cut also drains that network's parked
# facet-removal tasks into the same signing session. Default OFF — turn ON for
# rollouts, keep OFF for emergency/break-glass proposals so unrelated removals are
# never dragged into an urgent signing set.
DRAIN_PARKED_TASKS=""
# MongoDB Configuration Note:
# MONGODB_URI is required for deployment logging
# All deployment logs are stored in MongoDB (database: contract-deployments)
# Safe Transaction Signing Configuration
# Enable Safe transaction hash signing (set to true to enable, false to disable)
# When enabled, uses eth_sign to sign the Safe tx hash instead of EIP-712 typed data
# This is useful for hardware wallets (e.g. Ledger) that may reject large EIP-712 payloads
ENABLE_SAFE_TX_HASH_SIGNING=false
# ================= Deployment Configuration =================
# defines the environment (true=production, false=staging)
PRODUCTION=false
# the maximum time in seconds that the script will wait for blockchain to sync contract deployment
# we use this as double check to make sure that a contract was actually deployed
MAX_WAITING_TIME_FOR_BLOCKCHAIN_SYNC=60
# the maximum number of attempts to deploy a single contract
MAX_ATTEMPTS_PER_CONTRACT_DEPLOYMENT=10
# the maximum number of attempts to verify contract
MAX_ATTEMPTS_PER_CONTRACT_VERIFICATION=5
# the maximum number of attempts to execute a script (e.g. diamondUpdate)
MAX_ATTEMPTS_PER_SCRIPT_EXECUTION=5
# the maximum number of MongoDB query retries (e.g. getContractVersionFromMasterLog,
# getHighestDeployedContractVersionFromMasterLog, getConstructorArgsFromMasterLog).
# Used by helperFunctions.sh for deployment-log queries.
MONGO_MAX_RETRIES=3
# number of max jobs that scripts will do in parallel (e.g. when interacting with multiple networks)
MAX_CONCURRENT_JOBS=100
# the root directory of all contract src files
CONTRACT_DIRECTORY="src/"
# the directory of all deploy and update script
DEPLOY_SCRIPT_DIRECTORY="script/deploy/facets/"
# the directory of all task script
TASKS_SCRIPT_DIRECTORY="script/tasks/"
# the directory of all (facet) config script
CONFIG_SCRIPT_DIRECTORY="script/tasks/solidity/"
# the path of the JSON file that contains the target state
TARGET_STATE_PATH="script/deploy/_targetState.json"
# the path of the JSON file that contains the deployment log file
LOG_FILE_PATH="deployments/_deployments_log_file.json"
# the path of the JSON file that contains the bytecode storage file
BYTECODE_STORAGE_PATH="deployments/_bytecode_storage.json"
# the path of the JSON file that contains contract-specific reminders
# pre-commit-checker: not a secret
CONTRACT_REMINDERS="script/deploy/resources/contractSpecificReminders.sh"
# the path of the JSON file that contains deploy requirements per contract
DEPLOY_REQUIREMENTS_PATH="script/deploy/resources/deployRequirements.json"
# the path of the JSON files that contains deploy configuration per contract
DEPLOY_CONFIG_FILE_PATH="config/"
# any networks listed here will be excluded from actions that are applied to "all networks"
# exclude all test networks: EXCLUDE_NETWORKS="bsctest,goerli,sepolia,mumbai,lineatest,localanvil"
# exclude all production networks: EXCLUDE_NETWORKS="mainnet,polygon,bsc,gnosis,okx,avalanche,arbitrum,optimism,moonbeam,celo,fuse,cronos,velas,boba,nova"
# pre-commit-checker: not a secret
EXCLUDE_NETWORKS="bsc-testnet,goerli,sepolia,mumbai,lineatest,localanvil,velas"
# will output more detailed information for debugging purposes
DEBUG=true
# defines if newly deployed contracts should be verified or not
VERIFY_CONTRACTS=true
# contract verification will be deactivated for any network listed here
# pre-commit-checker: not a secret
DO_NOT_VERIFY_IN_THESE_NETWORKS="gnosis,testNetwork,localanvil"
# script will use all periphery contracts by default, unless excluded here (must match exact filename without .sol, comma-separated without space)
EXCLUDE_PERIPHERY_CONTRACTS=""
# scripts will use all facet contracts by default, unless excluded here (must match exact filename without .sol, comma-separated without space)
EXCLUDE_FACET_CONTRACTS=""
# enable/disable notification sounds for long-running scripts
NOTIFICATION_SOUNDS=true
# if this flag is set to true, "LiFiDiamond" will be deployed to address 0x1231DEB6f5749EF6cE6943a275A1D3E7486F4EaE
DEPLOY_TO_DEFAULT_DIAMOND_ADDRESS=true
# fixed salt that is used to deploy a mutable diamond to our established 0x123.. address - DO NOT CHANGE THIS VALUE !!!
DEFAULT_DIAMOND_ADDRESS_DEPLOYSALT=0xc726deb4bf42c6ef5d0b4e3080ace43aed9b270938861f7cacf900eba890fa66 # pre-commit-checker: not a secret
# Defines the maximum gas price for mainnet transactions (otherwise the script will wait until gas price is down)
MAINNET_MAXIMUM_GAS_PRICE=50000000000
# Gas estimate multiplier as a percentage (default: 130, which is Foundry's default = 30% buffer on top of estimate).
# Used by Foundry scripts (--gas-estimate-multiplier) and TypeScript Safe executors alike.
# Increase for chains where eth_estimateGas under-counts actual execution cost (e.g. set to 200 to double the estimate).
GAS_ESTIMATE_MULTIPLIER=130
# contains the ID of the production target state Google spreadsheet
TARGET_STATE_SPREADSHEET_ID_PRODUCTION=""
TARGET_STATE_SPREADSHEET_ID_STAGING=""
# used to start a local (Foundry) anvil network with the same private keys for testing purposes
MNEMONIC="test test test test test test test test test test test junk"
PRIVATE_KEY_ANVIL=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 # pre-commit-checker: not a secret
START_LOCAL_ANVIL_NETWORK_ON_SCRIPT_STARTUP=false
END_LOCAL_ANVIL_NETWORK_ON_SCRIPT_COMPLETION=true
# if this flag is set to false, the scriptMaster will not compile on start (helpful for zksync/abstract to avoid constant recompilations)
COMPILE_ON_STARTUP=false
# webhook URL for sending messages to Slack 'dev-sc-general' channel
SLACK_WEBHOOK_SC_GENERAL=
# Slack incoming webhooks for the /request-audit skill (and any other skill that posts via webhook).
# Convention: WEBHOOK_<CHANNEL_NAME>=<incoming-webhook-url> (channel name uppercased, hyphens → underscores)
# URLs live in 1Password vault "Developers Smart Contract", item "Webhooks SC Channels".
# Leave any unset to fall back to manual copy-paste (/tmp/audit-request-{pr}.md).
WEBHOOK_DEV_SC_AUDIT=
WEBHOOK_DEV_SC_AUDIT_BURRASEC=
# proposal-created / please-sign notifications from multiNetworkExecution.sh
WEBHOOK_DEV_SC_MULTISIG_PROPOSALS=
# the path to the foundry.toml file
FOUNDRY_TOML_FILE_PATH="foundry.toml"
# ================= Claude Code (optional) =================
# Override the Claude Code config dir that `bun run claude:install` writes to.
# Defaults to ~/.claude when unset — the same path Claude Code uses by default,
# so most contributors can ignore this. Set it only if you run multiple Claude
# Code accounts via wrapper aliases that export CLAUDE_CONFIG_DIR (e.g. one
# alias exporting ~/.claude-work for a work account, another ~/.claude-personal).
# bun auto-loads this file during `bun install`, so setting it here is equivalent
# to prefixing the command (`CLAUDE_CONFIG_DIR=~/.claude-work bun run claude:install`).
# CLAUDE_CONFIG_DIR=