Blockscout
Our default block explorer for reads. Configured as an MCP server in the onchain repos.
Instances
| Network | URL |
|---|---|
| Base mainnet | https://base.blockscout.com |
| Base Sepolia | https://base-sepolia.blockscout.com |
| Ethereum Sepolia | https://eth-sepolia.blockscout.com |
| Unichain | https://unichain.blockscout.com |
| Unichain Sepolia | https://unichain-sepolia.blockscout.com |
BLOCKSCOUT_PRO_API_KEY= # optional — higher rate limits
Why Blockscout over Etherscan
- It has an MCP server, so Claude can read chain state directly during development.
- Open API, generous unauthenticated limits — Etherscan's free tier throttles hard.
- Verified source is readable via API, useful for auditing a dependency mid-task.
We still verify contracts on both Blockscout and Basescan — Basescan is what most users click through to, Blockscout is what our tooling reads.
REST basics
# Token transfers for an address
curl "https://base-sepolia.blockscout.com/api/v2/addresses/$ADDR/token-transfers"
# A transaction
curl "https://base-sepolia.blockscout.com/api/v2/transactions/$TXHASH"
# Is this contract verified?
curl "https://base-sepolia.blockscout.com/api/v2/smart-contracts/$ADDR"
The /api/v2/ namespace is the current one. /api?module=… is the Etherscan-compatible
legacy shim — it works, but returns less.
Verifying from Foundry
forge verify-contract <ADDR> src/Auction.sol:Auction \
--verifier blockscout \
--verifier-url https://base-sepolia.blockscout.com/api
No API key needed for Blockscout verification. See ../ekx-foundry/SKILL.md.
Explorer links in the UI
const EXPLORER: Record<number, string> = {
8453: "https://base.blockscout.com",
84532: "https://base-sepolia.blockscout.com",
};
export const txUrl = (hash: string) => `${EXPLORER[CHAIN.id]}/tx/${hash}`;
Always link the transaction after a write completes. Users expect to verify their own transaction — it is the cheapest trust signal available.
Gotchas
- Indexing lag. A transaction is queryable on-chain before Blockscout has indexed it. Poll the RPC for the receipt (
../ekx-viem-wagmi/SKILL.md), not the explorer. - Instance per network. There is no single multi-chain endpoint.
- Unverified contracts return no ABI — verify as part of deploying, not later.
- Rate limits without a Pro key are fine for development, thin for a production polling loop. Cache.