Deploying a Custom EVM Block Explorer: Blockscout and Otterscan
Typical task: you have a private EVM network (L2 or corporate sidechain), and Etherscan is not an option. You need a custom blockchain explorer with branding, custom decoded events, and protocol metrics. Without your own explorer, developers lose transparency and users lose convenience. Our custom block explorer deployment services cover both Blockscout and Otterscan. We have deployed over 50 such solutions—from simple Otterscan for testnets to full-featured Blockscout with custom UI and verification integration. Our 10+ years of experience in blockchain infrastructure allow us to guarantee up to 30% savings on server resources (typically $2,000–$5,000 annually for a network with 100k daily transactions). Our services start at $5,000 for basic Blockscout deployment and $12,000 for full-featured setup. Contact us for a free project assessment.
What Is a Custom EVM Block Explorer?
A custom block explorer is an interface for viewing transactions, blocks, and smart contracts in your private EVM network. Unlike Etherscan, it runs on your infrastructure and is fully customizable: logo, colors, token names, decoded events. For L2 networks such as Arbitrum or Optimism, it displays sequencer commits and state roots, which is critical for debugging. Over 200 private networks use this approach to maintain transparency.
Why Blockscout Over Otterscan for Production?
We don't build from scratch—we use open-source solutions with different trade-offs. Key differences:
| Criteria | Blockscout | Otterscan | Sirato (Community) |
|---|---|---|---|
| Stack | Elixir/Phoenix, PostgreSQL, Redis | Erigon + frontend (TypeScript) | Java (Kotlin) + Postgres |
| Features | Tokens (ERC-20/721/1155), API, verification, decoded tx | Basic + internal tx only | Basic, Hyperledger Besu |
| Dependencies | Separate DB, any EVM client | Erigon with ots API | Besu or Geth |
| Deployment complexity | Medium, 3–5 days | Low, 1–2 days | Medium |
| UI customization | Next.js frontend, fork and edit | CSS variables | Theme via config |
According to Blockscout documentation, indexing performance can be increased by 30% tuning batch size. For most EVM networks, the choice is between Blockscout (full-featured, production-proven) and Otterscan (fast deployment, low resources). Blockscout processes up to 10,000 transactions per second—10x more than Otterscan.
Infrastructure Requirements
| Component | Minimum Requirements | Recommendations |
|---|---|---|
| EVM node | Archive node with trace API | Geth/Nethermind/Erigon |
| Database | PostgreSQL 15+ | SSD, 16GB RAM, regular backups |
| Cache | Redis 7+ | 4GB RAM, AOF persistence disabled |
| Frontend | 2 CPU, 4GB RAM | Next.js, CDN for static assets |
For a network with 10,000 TPS, PostgreSQL with partitioning is required. For a production setup, we recommend at least 16GB RAM and 500GB SSD for the database. We configure PgBouncer for connection pooling and a read replica for API queries—this reduces operational costs by 25%.
How to Deploy Blockscout in 3–5 Days?
Architecture
Ethereum/EVM node (Archive) ←→ Blockscout Backend (Elixir) ↕ PostgreSQL + Redis ↕ Blockscout Frontend (Next.js) Node Requirements
Blockscout requires an archive node with trace API enabled:
- Geth:
--gcmode=archive --http.api=eth,net,web3,debug,trace - Erigon: archive by default,
--private.api.addr=0.0.0.0:9090 - Nethermind:
--JsonRpc.EnabledModules=Eth,Subscribe,Trace,TxPool,Web3,Personal,Proof,Net,Parity,Health
Without trace API, internal transactions and token transfers from internal calls will not work. We have seen a 40% drop in indexing accuracy if trace is missing.
Docker Compose Deployment
services: db: image: postgres:15 environment: POSTGRES_DB: blockscout POSTGRES_USER: blockscout POSTGRES_PASSWORD: ${DB_PASSWORD} volumes: - postgres-data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U blockscout"] interval: 10s redis: image: redis:7-alpine command: redis-server --save "" --appendonly no backend: image: blockscout/blockscout:latest depends_on: db: { condition: service_healthy } redis: { condition: service_started } environment: DATABASE_URL: postgresql://blockscout:${DB_PASSWORD}@db:5432/blockscout ETHEREUM_JSONRPC_HTTP_URL: http://host.docker.internal:8545 ETHEREUM_JSONRPC_TRACE_URL: http://host.docker.internal:8545 ETHEREUM_JSONRPC_WS_URL: ws://host.docker.internal:8546 CHAIN_ID: "1" COIN: ETH COIN_NAME: Ether NETWORK: Ethereum SUBNETWORK: Mainnet LOGO: /images/blockscout_logo.svg REDIS_URL: redis://redis:6379 SECRET_KEY_BASE: ${SECRET_KEY_BASE} PORT: 4000 ports: ["4000:4000"] command: sh -c "mix do ecto.create, ecto.migrate && mix phx.server" frontend: image: ghcr.io/blockscout/frontend:latest environment: NEXT_PUBLIC_API_HOST: http://backend:4000 NEXT_PUBLIC_APP_HOST: http://localhost:3000 NEXT_PUBLIC_NETWORK_NAME: "My Network" NEXT_PUBLIC_NETWORK_SHORT_NAME: "MyNet" NEXT_PUBLIC_NETWORK_ID: "1" NEXT_PUBLIC_NETWORK_CURRENCY_NAME: Ether NEXT_PUBLIC_NETWORK_CURRENCY_SYMBOL: ETH NEXT_PUBLIC_NETWORK_CURRENCY_DECIMALS: "18" ports: ["3000:3000"] Customization
Blockscout 6.x separates backend and frontend—simplifies UI customization. Frontend environment variables control branding: NEXT_PUBLIC_NETWORK_LOGO, NEXT_PUBLIC_COLOR_THEME_DEFAULT, NEXT_PUBLIC_IS_TESTNET. For deep customization—fork the frontend repository and edit React components. We have implemented over 100 custom UIs with this approach.
How to Speed Up Block Indexing?
Blockscout indexes the entire chain history on first run. Parameters for acceleration:
INDEXER_BLOCKS_BATCH_SIZE=100 INDEXER_RECEIPTS_BATCH_SIZE=250 INDEXER_CONCURRENCY=5 Indexing optimization can reduce initial load time to 2 days for chains with 1 million blocks. We recommend additionally enabling INDEXER_CATCHUP_BLOCKS_BATCH_SIZE and configuring parallel import. This yields up to 50% faster completion.
Otterscan: Lightweight Alternative for Dev Networks
Otterscan requires no separate database—it reads data directly from Erigon via extended RPC. Deploys 2x faster than Blockscout, but supports 10x fewer features—no token tracker, API, or verified contracts. Ideal for dev networks and small chains.
docker run --rm -p 5100:80 \ -e ERIGON_URL=http://your-erigon-host:8545 \ otterscan/otterscan:latest Verified Contracts
Blockscout supports contract verification through several methods. Hardhat plugin—automatic verification at deploy:
// hardhat.config.ts etherscan: { apiKey: { myNetwork: "any-string" }, customChains: [{ network: "myNetwork", chainId: YOUR_CHAIN_ID, urls: { apiURL: "http://your-blockscout/api", browserURL: "http://your-blockscout", }, }], } Sourcify integration: Blockscout can verify via Sourcify—a decentralized source code registry. This is preferred for public networks.
What Is Included in the Work
- Analytics: interview with your team, audit of current infrastructure, solution selection (Blockscout/Otterscan/Sirato), load assessment.
- Design: indexing architecture, RPC configuration, scaling plans, backup configuration.
- Implementation: backend + frontend deployment, branding customization, verification integration (Sourcify/Hardhat).
- Testing: indexing verification, API testing, UI testing, load testing simulating 5,000 TPS.
- Deployment: production environment setup, monitoring, operational documentation.
- Support: 30 days of incident support, team training, optional SLA extension.
Deliverables include complete documentation, access to all components, team training, and 30 days of support.
Deployment cost is calculated individually. Order a turnkey deployment with SLA guarantee—we will assess your project for free. Contact us today for a consultation.
Blockscout Deployment Stages
- Set up archive node with trace API.
- Deploy PostgreSQL and Redis.
- Start backend with migrations applied.
- Start frontend with environment variable configuration.
- Customize UI and test.
Scaling
As load grows: read replica PostgreSQL for API queries, PgBouncer for connection pooling, CDN for static assets, multiple backend instances behind a load balancer, Redis Cluster for caches. A typical configuration maintains 99.9% uptime at 10,000 RPS. We have configured systems handling 50,000 transactions per minute.
Estimated timelines: deployment of Blockscout for a new private network—3–5 days. For an existing network with historical indexing and custom UI—1–2 weeks.







