Техническая поддержка блокчейн-проекта
Блокчейн-инфраструктура ломается по-другому, чем обычные веб-сервисы. Нода может зависнуть на конкретном блоке из-за edge case в consensus клиенте. Смарт-контракт может вести себя корректно при тестировании, но непредсказуемо при взаимодействии с другим протоколом через flash loan. RPC-провайдер может начать возвращать устаревшие данные без явных ошибок. Поддержка таких систем требует специфических знаний, которых нет у обычной DevOps команды.
Что входит в постоянную поддержку
Мониторинг инфраструктуры:
- On-chain мониторинг смарт-контрактов (необычные вызовы, изменения state)
- Состояние нод (sync lag, peer count, версия клиента)
- Состояние валидаторов / sequencer
- Работоспособность bridge контрактов
- Баланс service аккаунтов (relayer, deployer, keeper)
Реагирование на инциденты:
- Дежурство по расписанию с SLA на первый ответ
- Диагностика и исправление проблем с нодами
- Emergency pause контрактов при обнаружении эксплойта
- Координация с аудиторами при security-инцидентах
Обслуживание:
- Обновление клиентов (Geth, Lighthouse и др.) при выходе новых версий
- Применение hotfix в смарт-контрактах через upgrade mechanism
- Ротация ключей сервисных аккаунтов
- Обновление RPC endpoints при деградации провайдеров
Мониторинговый стек
# docker-compose monitoring stack
services:
prometheus:
image: prom/prometheus:latest
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
grafana:
image: grafana/grafana:latest
ports: ["3000:3000"]
alertmanager:
image: prom/alertmanager:latest
volumes:
- ./alertmanager.yml:/etc/alertmanager/alertmanager.yml
Prometheus правила алертов для типичного EVM проекта:
groups:
- name: blockchain
rules:
- alert: NodeSyncLag
expr: eth_syncing_current_block - eth_syncing_highest_block > 50
for: 5m
labels: { severity: warning }
annotations:
summary: "Node is {{ $value }} blocks behind head"
- alert: ServiceWalletLowBalance
expr: eth_balance{account="relayer"} < 0.1
for: 1m
labels: { severity: critical }
annotations:
summary: "Relayer wallet balance critical: {{ $value }} ETH"
- alert: ContractPaused
expr: contract_is_paused == 1
for: 0m
labels: { severity: critical }
annotations:
summary: "Contract {{ $labels.contract }} is paused"
On-chain мониторинг через OpenZeppelin Defender
Defender Sentinel — мониторинг конкретных событий и вызовов на контракте:
// Sentinel конфигурация (через Defender UI или API)
{
"type": "BLOCK",
"network": "mainnet",
"addresses": ["0xYOUR_CONTRACT"],
"abi": [...],
"eventConditions": [
{ "eventSignature": "RoleGranted(bytes32,address,address)" },
{ "eventSignature": "Upgraded(address)" } // proxy upgrade event
],
"functionConditions": [
{ "functionSignature": "pause()" }
]
}
При срабатывании — webhook в ваш сервис или прямое уведомление в Telegram/PagerDuty.
Реагирование на security инцидент
У каждого протокола с TVL должен быть runbook для security-инцидентов. Типичный сценарий:
- Обнаружение (автоматический алерт или внешний репорт)
- Оценка (5–15 минут): размер ущерба, активен ли exploit, можно ли pauseить
- Пауза (если контракт pausable): немедленно, не ждать полного анализа
- Уведомление (15–30 минут): команда, держатели токенов, аудиторы
- Расследование: анализ транзакций в Tenderly, trace exploit
- Исправление: hotfix контракта, аудит исправления
- Post-mortem: публичный отчёт о произошедшем
Для шага "пауза" — pauser role должна быть настроена на Gnosis Safe с 1/N threshold (быстрое реагирование), а upgrade role — на Safe с N/M threshold (медленное, безопасное изменение).
Поддержка нод: частые проблемы
Geth stuck на блоке:
# Диагностика
curl -s -X POST localhost:8545 \
-d '{"jsonrpc":"2.0","method":"debug_traceBlockByNumber","params":["latest",{}],"id":1}'
# Если нода завила — restart с --gcmode archive и --syncmode full
# Если проблема с state corruption — resync от checkpoint
geth snapshot prune-state # освобождает место, иногда помогает
Consensus клиент не видит peers:
lighthouse bn --libp2p-addresses /ip4/0.0.0.0/tcp/9000 # проверить что порт открыт
# Проверить firewall:
iptables -L INPUT | grep 9000
op-batcher не публикует батчи:
- Проверить баланс batcher wallet (нужен ETH для L1 транзакций)
- Проверить L1 RPC доступность
-
op-batcherlogs наchannel_fullилиtx_failed
SLA и модели поддержки
| Уровень | Время реакции | Охват | Подходит для |
|---|---|---|---|
| Basic monitoring | — / нет дежурства | 9×5 рабочие часы | Тестнет, pre-launch |
| Standard | 4 ч критикал, 24 ч прочее | 5×12 | Mainnet с малым TVL |
| Production | 30 мин критикал, 4 ч прочее | 7×24 | Mainnet с активными пользователями |
| Enterprise | 15 мин критикал, 1 ч прочее | 7×24 + dedicated | DeFi протоколы, инфраструктура |
Для проектов с TVL > $1M и живыми пользователями минимальный разумный уровень — Production.







