# ── Ethereum RPC ────────────────────────────────────────────────────────────── ETH_RPC_URL=https://mainnet.infura.io/v3/YOUR_PROJECT_ID # Comma-separated fallback providers (round-robin rotation on failure) ETH_RPC_FALLBACK_URLS=https://eth-mainnet.g.alchemy.com/v2/YOUR_KEY,https://rpc.ankr.com/eth CHAIN_ID=1 # ── Database ────────────────────────────────────────────────────────────────── DATABASE_URL=postgresql+asyncpg://chainwatch:chainwatch@localhost:5432/chainwatch # ── Redis ───────────────────────────────────────────────────────────────────── REDIS_URL=redis://localhost:6379/0 # ── JWT ─────────────────────────────────────────────────────────────────────── JWT_SECRET=change-me-to-a-long-random-secret JWT_EXPIRE_MINUTES=60 # ── Indexer settings ────────────────────────────────────────────────────────── # Number of blocks to roll back during reorg detection REORG_DEPTH=64 # How many blocks to batch-enqueue per poll cycle BLOCK_BATCH_SIZE=50 # Poll interval in seconds BLOCK_POLL_INTERVAL=2 # ── Whale detection ─────────────────────────────────────────────────────────── # Minimum USD value of a transfer to classify as "whale" WHALE_THRESHOLD_USD=100000 # Price oracle URL (must return {"price": } for a given token address) PRICE_ORACLE_URL=https://api.coingecko.com/api/v3/simple/token_price/ethereum # ── Celery ──────────────────────────────────────────────────────────────────── CELERY_CONCURRENCY=4 # ── Environment ─────────────────────────────────────────────────────────────── ENVIRONMENT=development LOG_LEVEL=INFO