# ============================================================================= # Environment template — copy to `.env` and fill in. NEVER commit `.env`. # ============================================================================= # --- RPC endpoints (one per target chain; keys match config/chains/*.json) --- SEPOLIA_RPC_URL= BASE_SEPOLIA_RPC_URL= ARBITRUM_SEPOLIA_RPC_URL= # --- Block explorer verification --- ETHERSCAN_API_KEY= # ============================================================================= # Signer configuration (Phase 1 = EOA path) # ============================================================================= # The deploy/config scripts sign with a single "broadcaster" key. Foundry # supports several backends; pick ONE and pass the matching flag to `forge script`. # # Two KMS concerns exist in this project — DO NOT conflate them: # * IN SCOPE (here): the Foundry deployer/broadcaster key. Use Foundry's # native AWS/GCP KMS support so no raw private key ever touches disk. # * OUT OF SCOPE (not this repo): the verifier node's off-chain ECDSA signing # key. That is an off-chain concern owned by the node operator. # ----------------------------------------------------------------------------- # Option A — local key (dev/testnet only; least safe): # forge script ... --private-key $PRIVATE_KEY PRIVATE_KEY= # Option B — AWS KMS (preferred for anything real): # forge script ... --aws # AWS_KMS_KEY_ID= # AWS_REGION= # AWS_ACCESS_KEY_ID= # AWS_SECRET_ACCESS_KEY= # Option C — GCP KMS: # forge script ... --gcp-... # (see `forge script --help` for the current GCP KMS flags) # --- Convenience: address that will broadcast (must be the factory-allowlisted # deployer for the bootstrap + CREATE2 deploys). --- DEPLOYER_ADDRESS= # Output routing for config / role-transfer scripts. REQUIRED, no default: # EOA = broadcast staged calls immediately (live execution, pair with --broadcast) # SAFE = write a key-free Safe Transaction Builder batch to out/safe// OUTPUT_MODE= # The Safe expected to execute the generated batches. Required in SAFE mode; # recorded in each batch as meta.createdFromSafeAddress so the Transaction # Builder flags an import into a different Safe. Ignored in EOA mode. SAFE_ADDRESS=