Развертывание Blockscout

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1Все 1306 услуг
Развертывание Blockscout
Средний
~3-5 дней
Часто задаваемые вопросы

Направления блокчейн-разработки

Этапы блокчейн-разработки

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1308
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1221
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    921
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1149
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    612
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    886

Развёртывание Blockscout

Blockscout — open-source block explorer, написан на Elixir/Phoenix. Поддерживает любую EVM-совместимую сеть: Ethereum, Polygon, Arbitrum, Optimism, а также кастомные сети (Hyperledger Besu, Hardhat, Anvil). Де-факто стандарт для appchain'ов и L2 проектов, которые хотят собственный explorer без vendor зависимости от Etherscan.

Три компонента системы: indexer (Elixir, пишет данные в БД), API (Elixir/Phoenix REST + GraphQL), frontend (Next.js, отдельный репозиторий).

Требования к инфраструктуре

Минимальные требования сильно зависят от нагрузки сети:

Профиль CPU RAM Диск Применение
Dev/staging 2 vCPU 8 ГБ 50 ГБ SSD Тестовая сеть, малый объём
Production (small chain) 4 vCPU 16 ГБ 500 ГБ SSD < 1000 транзакций/день
Production (active chain) 8+ vCPU 32 ГБ 2+ ТБ NVMe > 10000 транзакций/день

PostgreSQL и сам Blockscout могут быть на одном сервере для small chain. Для активных сетей — разделяйте: отдельный managed PostgreSQL (RDS, Cloud SQL) + Blockscout инстансы.

RPC нода: Blockscout требует archive node с поддержкой trace_ namespace (Erigon, Besu с --rpc-http-api=TRACE, или Geth с --gcmode=archive). Без трейсов теряется информация о внутренних транзакциях и token transfers через internal calls.

Docker Compose деплой

Официальный путь для большинства деплоев:

git clone https://github.com/blockscout/blockscout.git
cd blockscout/docker-compose

Основной файл конфигурации — переменные окружения:

# docker-compose/envs/common-blockscout.env

ETHEREUM_JSONRPC_VARIANT=geth            # или besu, erigon
ETHEREUM_JSONRPC_HTTP_URL=http://your-node:8545
ETHEREUM_JSONRPC_TRACE_URL=http://your-node:8545
ETHEREUM_JSONRPC_WS_URL=ws://your-node:8546

DATABASE_URL=postgresql://blockscout:password@db:5432/blockscout

NETWORK=My Network Name
SUBNETWORK=Mainnet
COIN=ETH
COIN_NAME=Ether

# Chain ID
CHAIN_ID=12345

# Block Explorer URL
BLOCKSCOUT_HOST=explorer.yournetwork.com

# API ключи (опционально, для rate limiting)
API_RATE_LIMIT=10
API_RATE_LIMIT_HAMMER_REDIS_URL=redis://redis:6379

# Верификация контрактов
ENABLE_SOURCIFY_INTEGRATION=true
SOURCIFY_SERVER_URL=https://sourcify.dev/server
# Запуск
docker-compose -f docker-compose.yml up -d

# Мониторинг индексации
docker-compose logs -f blockscout | grep "blocks"

Первый запуск начинает индексацию с genesis (или с блока указанного в FIRST_BLOCK). Для сетей с историей в миллионы блоков индексация занимает дни — планируйте это заранее.

Конфигурация для кастомной сети

Если разворачиваете для своей appchain или тестовой сети, нужно настроить несколько дополнительных параметров:

# Отключить external price fetching если токен не торгуется
DISABLE_EXCHANGE_RATES=true

# Интервал обновления блоков (мс)
BLOCKSCOUT_ECTO_USE_SSL=false

# Лимиты если сеть имеет нестандартные блоки
BLOCK_TRANSFORMER=base

# Если нужно индексировать с определённого блока (не с genesis)
FIRST_BLOCK=0
LAST_BLOCK=

Для Hyperledger Besu с QBFT:

ETHEREUM_JSONRPC_VARIANT=besu
# Besu требует включённых API модулей: --rpc-http-api=ETH,NET,TRACE,DEBUG,ADMIN

Верификация смарт-контрактов

Blockscout поддерживает несколько методов верификации:

Через Sourcify — децентрализованный реестр metadata. Пользователь загружает исходники + metadata.json, Sourcify верифицирует и сохраняет. Blockscout подтягивает автоматически.

Прямая верификация через API:

curl -X POST "https://explorer.yournetwork.com/api/v2/smart-contracts/verify/via/flattened-code" \
  -H "Content-Type: application/json" \
  -d '{
    "address": "0xCONTRACT_ADDRESS",
    "compiler_version": "v0.8.20+commit.a1b79de6",
    "source_code": "pragma solidity ^0.8.20;\n...",
    "is_optimization_enabled": true,
    "optimization_runs": 200,
    "contract_name": "MyContract",
    "evm_version": "london"
  }'

Hardhat Verify плагин — автоматическая верификация после деплоя:

// hardhat.config.ts
import "@nomicfoundation/hardhat-verify";

const config: HardhatUserConfig = {
  networks: {
    myChain: {
      url: "https://rpc.yournetwork.com",
      chainId: 12345,
    }
  },
  etherscan: {
    apiKey: { myChain: "any-string" },  // Blockscout не требует реального ключа
    customChains: [{
      network: "myChain",
      chainId: 12345,
      urls: {
        apiURL: "https://explorer.yournetwork.com/api",
        browserURL: "https://explorer.yournetwork.com",
      }
    }]
  }
};
npx hardhat verify --network myChain 0xCONTRACT_ADDRESS "Constructor Arg1"

Production конфигурация

Nginx reverse proxy

server {
    listen 443 ssl http2;
    server_name explorer.yournetwork.com;

    ssl_certificate /etc/letsencrypt/live/explorer.yournetwork.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/explorer.yournetwork.com/privkey.pem;

    # Frontend (Next.js)
    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

    # Backend API
    location /api {
        proxy_pass http://localhost:4000;
        proxy_set_header Host $host;
        # WebSocket для real-time обновлений
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

PostgreSQL оптимизация

Blockscout активно читает и пишет. Ключевые настройки postgresql.conf:

max_connections = 200
shared_buffers = 4GB              # 25% от RAM
effective_cache_size = 12GB       # 75% от RAM
maintenance_work_mem = 1GB
checkpoint_completion_target = 0.9
wal_buffers = 64MB
default_statistics_target = 100
random_page_cost = 1.1            # для SSD
work_mem = 50MB

Регулярный VACUUM ANALYZE — Blockscout создаёт много dead tuples при re-indexing. Настройте autovacuum агрессивнее чем по умолчанию.

Мониторинг индексации

# Текущий статус через API
curl https://explorer.yournetwork.com/api/v1/stats | jq

# Проверка отставания индексатора
curl https://explorer.yournetwork.com/api/v2/main-page/indexing-status
# Ответ: {"finished_indexing": true, "indexed_blocks_ratio": "1.00"}

Prometheus метрики: Blockscout экспортирует через /metrics endpoint (Elixir VM метрики + кастомные).

Обновление Blockscout

# Pull новой версии
git pull origin master

# Остановка
docker-compose down

# Миграции БД (важно — перед запуском новой версии)
docker-compose run --rm blockscout /app/bin/blockscout eval "Blockscout.ReleaseTasks.create_and_migrate()"

# Запуск новой версии
docker-compose up -d

Всегда читайте CHANGELOG перед обновлением — некоторые версии требуют миграции с полным ре-индексингом.

Процесс работы

День 1: настройка сервера, Docker, PostgreSQL, первый запуск Blockscout на тестовых данных.

День 2: конфигурация под вашу сеть, настройка Nginx + SSL, тест верификации контрактов.

День 3: мониторинг индексации на production данных, настройка Prometheus, тест backup процедур.

День 4-5: оптимизация производительности по результатам нагрузочного тестирования, документация для команды.

Итого 3-5 дней включая индексацию истории сети и настройку мониторинга.