β .env
β .env.local
β smart-contract/.env
β relayer/.env
β dapp/.env.local
-
Immediately rotate all keys:
- Generate new wallet private keys
- Create new API keys (Perplexity, etc.)
- Update all .env files
-
Remove from Git history:
# Use git-filter-repo or BFG Repo-Cleaner git filter-branch --force --index-filter \ "git rm --cached --ignore-unmatch .env" \ --prune-empty --tag-name-filter cat -- --all
-
Force push (ONLY if no one else has cloned):
git push --force --all
-
If others have cloned: The keys are compromised. Rotate immediately.
- Never use mainnet keys for testnet
- Use dedicated testnet wallets
- Keep testnet private keys separate
- Still treat testnet keys as sensitive (for audit trail)
- Use hardware wallets (Ledger, Trezor)
- Multi-sig for contract ownership
- Never store mainnet keys in .env files
- Use secret management services (AWS Secrets Manager, HashiCorp Vault)
-
Deployer Wallet:
- Private Key: In
smart-contract/.env - Used for: Contract deployment, transactions
- Status: Testnet only, but still secret
- Private Key: In
-
Relayer Wallet:
- Private Key: In
relayer/.env - Used for: Oracle fulfillment
- Status: Testnet only, but still secret
- Private Key: In
-
Perplexity API Key:
- Key: In
relayer/.env - Used for: AI API calls
- Status: Has usage limits, keep secret
- Key: In
- β
.env.examplefiles (with placeholder values) - β Contract addresses (public on blockchain anyway)
- β RPC URLs (public endpoints)
- β Network IDs, Chain IDs
- β Deployed contract ABIs
- β Documentation
# Check for accidentally staged secrets
git diff --cached | grep -E "(PRIVATE_KEY|API_KEY|SECRET)"
# List staged files
git diff --cached --name-only
# Ensure .env files are NOT staged
git status | grep ".env"This repo should enable:
- Secret scanning
- Push protection
- Dependabot alerts
- Run
git status- no .env files listed - Check
git diff --cached- no private keys visible - All secrets in .gitignore
- Only .env.example committed
- No hardcoded keys in code
- README doesn't contain secrets
If you discover a committed secret:
- STOP - Don't push if you haven't yet
- Assess - Is it already pushed to GitHub?
- Rotate - Generate new keys immediately
- Clean - Remove from Git history
- Verify - Check GitHub doesn't have the secret
- Document - Note what happened and when
For security concerns, create a private issue or contact the team directly.
DO NOT post private keys or secrets in GitHub issues, even private ones.