ekx-alchemylisted
Install: claude install-skill Ekinoxis-evm/claude-skills
# Alchemy
Our RPC provider of record, and — in one lending dApp only — the account-abstraction stack.
Dashboard: https://dashboard.alchemy.com · Docs: https://www.alchemy.com/docs
---
## As an RPC provider (all projects)
```bash
ALCHEMY_API_KEY= # SECRET, server-side
NEXT_PUBLIC_ALCHEMY_API_KEY= # public — MUST be domain-restricted in the dashboard
```
```
https://base-mainnet.g.alchemy.com/v2/${ALCHEMY_API_KEY}
https://base-sepolia.g.alchemy.com/v2/${ALCHEMY_API_KEY}
https://eth-mainnet.g.alchemy.com/v2/${ALCHEMY_API_KEY}
https://eth-sepolia.g.alchemy.com/v2/${ALCHEMY_API_KEY}
https://solana-mainnet.g.alchemy.com/v2/${ALCHEMY_API_KEY}
```
A `NEXT_PUBLIC_` key ships to every browser. That is acceptable **only** with an
allowlist configured in the Alchemy dashboard (Apps → your app → Security → allowed
domains/referrers). Add every Vercel preview domain too, or previews break.
Prefer a server-side proxy route for anything sensitive or expensive — the browser
hits `/api/rpc`, which forwards with the secret key. That also lets you cache.
**Never use `https://mainnet.base.org` in production.** It rate-limits and the
failures are intermittent, which makes them expensive to debug.
---
## Rate limits and CU
Alchemy bills compute units, not requests — `eth_getLogs` over a wide range costs far
more than `eth_blockNumber`. Two rules:
1. **Cap `getLogs` ranges to 10k blocks** and page. Wider returns an error, not a truncated result.
2. **Batch read