Настройка блокчейн-эксплорера
Публичные эксплореры типа Etherscan или Solscan — удобны, пока ваша сеть публичная и пока их API достаточно. Собственный эксплорер нужен в трёх случаях: private/consortium blockchain (нет публичного эксплорера), кастомная логика отображения (branded UI, специфические метрики протокола), или требования к privacy (не хотите раскрывать паттерны запросов сторонним сервисам).
Выбор платформы
Blockscout (наиболее распространён)
Open source, поддерживает все EVM-совместимые сети. Написан на Elixir/Phoenix. Активно развивается, используется как официальный эксплорер для Gnosis Chain, Optimism, Base и других L2.
Плюсы: богатый функционал (верификация контрактов, токены, NFT, DeFi метрики), REST API + GraphQL, активное сообщество, хорошая документация.
Минусы: тяжёлый стек (Elixir + PostgreSQL + Redis + нода), требует 32+ GB RAM для production, сложная начальная настройка.
Otterscan
Легковесный эксплорер на React, работает напрямую с Erigon нодой через расширенный ots_ namespace API. Без отдельной базы данных — вся история хранится в самой ноде.
Плюсы: minimal footprint, нет отдельного индексирования, мгновенный старт.
Минусы: требует именно Erigon (не geth/nethermind), нет верификации контрактов, базовый функционал.
The Graph (для конкретных данных)
Не полноценный эксплорер, но если нужны кастомные данные протокола — subgraph + кастомный фронтенд быстрее и дешевле чем full explorer.
Развёртывание Blockscout
Инфраструктура
# docker-compose.yml (упрощённый)
version: '3.8'
services:
db:
image: postgres:15
environment:
POSTGRES_DB: blockscout
POSTGRES_USER: blockscout
POSTGRES_PASSWORD: ${DB_PASSWORD}
volumes:
- postgres_data:/var/lib/postgresql/data
shm_size: '512mb' # важно для PG производительности
redis:
image: redis:7-alpine
command: redis-server --maxmemory 4gb --maxmemory-policy allkeys-lru
backend:
image: blockscout/blockscout:latest
depends_on: [db, redis]
environment:
DATABASE_URL: postgresql://blockscout:${DB_PASSWORD}@db:5432/blockscout
ETHEREUM_JSONRPC_VARIANT: geth # или parity, besu, erigon
ETHEREUM_JSONRPC_HTTP_URL: http://node:8545
ETHEREUM_JSONRPC_WS_URL: ws://node:8546
ETHEREUM_JSONRPC_TRACE_URL: http://node:8545 # для trace_ методов
SECRET_KEY_BASE: ${SECRET_KEY_BASE}
CHAIN_ID: "1"
COIN: ETH
NETWORK: Mainnet
SUBNETWORK: Ethereum Mainnet
# Производительность
POOL_SIZE: 80
ECTO_USE_SSL: 'false'
# Верификация контрактов
SOURCIFY_INTEGRATION_ENABLED: 'true'
SOURCIFY_SERVER_URL: https://sourcify.dev/server
ports:
- "4000:4000"
frontend:
image: ghcr.io/blockscout/frontend:latest
environment:
NEXT_PUBLIC_API_HOST: http://backend:4000
NEXT_PUBLIC_NETWORK_NAME: My Network
NEXT_PUBLIC_NETWORK_SHORT_NAME: MyNet
NEXT_PUBLIC_NETWORK_ID: "1"
ports:
- "3000:3000"
Требования к ноде
Blockscout использует нестандартные RPC методы:
-
debug_traceTransaction— для внутренних транзакций (internal txs) -
trace_block,trace_transaction— для Parity-compatible трейсов -
eth_getBalanceв архивном режиме — для исторических балансов
Обычная полная нода (full node) не хватит. Нужна archive node с включёнными debug/trace методами:
# Geth archive node
geth --mainnet \
--syncmode full \
--gcmode archive \
--http \
--http.api eth,net,web3,debug,txpool \
--ws \
--ws.api eth,net,web3,debug \
--cache 32768
Archive node для Ethereum mainnet — ~17 TB (2025). Это основная часть стоимости инфраструктуры.
Индексирование
При первом запуске Blockscout начинает индексирование с последнего блока назад. Для полной истории mainnet — процесс занимает недели. Ускорение:
# Переменные для параллельного индексирования
BLOCK_TRANSFORMER: base
INDEXER_BLOCK_REWARD_BATCH_SIZE: 10
INDEXER_COIN_BALANCES_BATCH_SIZE: 500
INDEXER_RECEIPTS_BATCH_SIZE: 250
INDEXER_INTERNAL_TRANSACTIONS_BATCH_SIZE: 20
Для приватных сетей с небольшой историей — полное индексирование занимает часы.
Верификация смарт-контрактов
Blockscout поддерживает несколько методов верификации:
Через Sourcify (рекомендуется): децентрализованный репозиторий верифицированных контрактов. Если контракт уже верифицирован в Sourcify — Blockscout автоматически подтянет данные.
Прямая верификация через API:
curl -X POST https://your-blockscout.com/api \
-H "Content-Type: application/json" \
-d '{
"module": "contract",
"action": "verifysourcecode",
"contractaddress": "0x...",
"sourceCode": "pragma solidity...",
"codeformat": "solidity-single-file",
"contractname": "MyContract",
"compilerversion": "v0.8.20+commit.a1b79de6",
"optimizationUsed": 1,
"runs": 200
}'
Кастомные метрики и branded UI
Если нужен branded эксплорер с логотипом проекта и кастомными метриками:
- Blockscout поддерживает кастомные токены и нативную монету через env переменные
- Frontend (Next.js) можно форкнуть и кастомизировать
- Дополнительные страницы (например, метрики протокола) — добавляются как отдельные React компоненты
Что входит в работу
- Выбор платформы под конкретные требования
- Развёртывание archive node с необходимыми debug методами
- Развёртывание Blockscout через Docker Compose или Kubernetes
- Настройка начального индексирования
- Конфигурация верификации контрактов
- Nginx reverse proxy с SSL, доменное имя
- Мониторинг индексатора и алерты на отставание







