# Explorer API Keys Setup Guide **Purpose**: Contract verification on blockchain explorers **Status**: Optional but recommended --- ## 🔑 Required API Keys ### Chains with Contract Verification | Chain | Explorer | API Key Variable | Get API Key | |-------|----------|-----------------|-------------| | **Ethereum Mainnet** | Etherscan | `ETHERSCAN_API_KEY` | https://etherscan.io/apis | | **BSC** | BscScan | `BSCSCAN_API_KEY` | https://bscscan.com/apis | | **Polygon** | Polygonscan | `POLYGONSCAN_API_KEY` | https://polygonscan.com/apis | | **Avalanche** | Snowtrace | `SNOWTRACE_API_KEY` | https://snowtrace.io/apis | | **Base** | Basescan | `BASESCAN_API_KEY` | https://basescan.org/apis | | **Arbitrum** | Arbiscan | `ARBISCAN_API_KEY` | https://arbiscan.io/apis | | **Optimism** | Optimistic Etherscan | `OPTIMISTIC_ETHERSCAN_API_KEY` | https://optimistic.etherscan.io/apis | | **Cronos** | Cronos Explorer | `CRONOSCAN_API_KEY` | https://explorer.cronos.org/register (My API Keys) | | **Gnosis** | Gnosisscan | `GNOSISSCAN_API_KEY` | https://gnosisscan.io/apis | --- ## 📝 How to Get API Keys ### 1. Create Account - Visit the explorer website - Sign up for a free account - Verify your email ### 2. Generate API Key - Go to API section (usually under "Account" or "API") - Click "Create API Key" - Give it a name (e.g., "Foundry Deployment") - Copy the API key ### 3. Add to `.env` ```bash ETHERSCAN_API_KEY=your_actual_api_key_here BSCSCAN_API_KEY=your_actual_api_key_here POLYGONSCAN_API_KEY=your_actual_api_key_here SNOWTRACE_API_KEY=your_actual_api_key_here BASESCAN_API_KEY=your_actual_api_key_here ARBISCAN_API_KEY=your_actual_api_key_here OPTIMISTIC_ETHERSCAN_API_KEY=your_actual_api_key_here CRONOSCAN_API_KEY=your_actual_api_key_here GNOSISSCAN_API_KEY=your_actual_api_key_here ``` --- ## ⚠️ Important Notes 1. **Free Tier Limits**: Most explorers offer free API keys with rate limits - Usually sufficient for deployment and verification - Check limits on each explorer's website 2. **Security**: - Never commit API keys to version control - Keep `.env` file secure - Rotate keys periodically 3. **Optional but Recommended**: - Contract verification helps users trust your contracts - Makes contract interaction easier - Required for some DeFi protocols 4. **Without API Keys**: - Deployment will still work - Contracts won't be automatically verified - Manual verification possible later 5. **Cronos**: - Use Cronos Explorer (explorer.cronos.org), not cronoscan.com - Forge verification requires manual UI: https://explorer.cronos.org/verifyContract - See [CRONOS_EXPLORER_OPERATIONS.md](../04-configuration/CRONOS_EXPLORER_OPERATIONS.md) for confirmation and API usage --- ## ✅ Verification After adding API keys, test with: ```bash # Test Ethereum Mainnet (if you have a deployed contract) forge verify-contract \ --chain-id 1 \ --num-of-optimizations 200 \ \ \ $ETHERSCAN_API_KEY ``` --- ## 🚀 Deployment with Verification When deploying with `--verify` flag, Foundry will automatically use the API keys: ```bash forge script script/DeployAll.s.sol:DeployAll \ --rpc-url mainnet \ --private-key $PRIVATE_KEY \ --broadcast \ --verify \ -vvvv ``` The `--verify` flag uses the API keys from `.env` automatically. --- **Status**: Optional - Deployment works without API keys, but verification requires them.