Настройка блокчейн-експлорера
Публічні експлорери типу Etherscan або Solscan — зручні, поки ваша сіть публічна і поки їх API достатні. Власний експлорер потрібен в трьох випадках: private/consortium blockchain (немає публічного експлорера), кастомна логіка відображення (branded UI, специфічні метрики протоколу), або вимоги до приватності (не хочете розкривати паттерни запитів сторонам).
Вибір платформи
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. Без окремої бази даних — вся історія зберігається в самій ноді.
Плюси: мінімальний 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— для внутрішніх транзакцій -
trace_block,trace_transaction— для Parity-сумісних трейсів -
eth_getBalanceв архівному режимі — для історичних балансів
Звичайна повна нода не хватить. Потребує 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, доменне ім'я
- Моніторинг індексатора і алерти на відставання







