Разработка gas tracker под ключ: система мониторинга газа для EVM-сетей

Разработка gas tracker: система отслеживания газа для блокчейна Разработка gas tracker — задача, которая на первый взгляд кажется простой: взять `eth_gasPrice` и показать. На практике же DeFi-протоколы теряют до 30% на комиссиях из-за неправильного выбора момента или неучёта компонентов EIP-1559.

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

Часто задаваемые вопросы

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

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

Разработка gas tracker: система отслеживания газа для блокчейна

Разработка gas tracker — задача, которая на первый взгляд кажется простой: взять eth_gasPrice и показать. На практике же DeFi-протоколы теряют до 30% на комиссиях из-за неправильного выбора момента или неучёта компонентов EIP-1559. Мы строим не дашборд, а инженерную систему: собираем baseFee и priorityFee по каждому блоку, сохраняем в TimescaleDB, предсказываем на 5–10 блоков и отдаём через API с WebSocket. За 5 лет работы мы сделали gas трекеры для 30+ проектов, включая крупные DEX и исследовательские группы. Ниже — как это устроено изнутри и что вы получите под ключ.

Как устроен gas tracker под капотом?

EIP-1559: основная формула

После EIP-1559 (лондонский хардфорк) цена газа состоит из двух частей:

baseFeePerGas — базовая комиссия, сжигается. Определяется протоколом: если блок > 50% заполненности, base fee растёт на 12.5%, если < 50% — падает. Предсказуема на 1-2 блока вперёд.

maxPriorityFeePerGas (tip) — чаевые майнеру/валидатору. Рыночная часть — конкурируете за включение в блок.

Реальная стоимость транзакции: min(maxFeePerGas, baseFeePerGas + priorityFee) * gasUsed. Для gas tracker важно отслеживать оба компонента отдельно, не только итоговую цену.

Сбор данных: коллектор и хранение

Основной источник — eth_feeHistory. Возвращает baseFee, gasUsedRatio и percentile-статистику priorityFee за диапазон блоков. Используем viem:

import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(RPC_URL) }) const feeHistory = await client.getFeeHistory({ blockCount: 100, rewardPercentiles: [25, 50, 75, 95], }) // feeHistory.baseFeePerGas: BigInt[] // feeHistory.reward: BigInt[][] // feeHistory.gasUsedRatio: number[] (0..1) 

eth_gasPrice — актуальная цена на момент запроса. Mempool данные (pending транзакции) — для real-time анализа конкуренции.

Храним данные в TimescaleDB — оптимально для time-series:

CREATE TABLE gas_stats ( time TIMESTAMPTZ NOT NULL, block_number BIGINT NOT NULL, base_fee_gwei NUMERIC(20, 9) NOT NULL, tip_slow NUMERIC(20, 9), tip_standard NUMERIC(20, 9), tip_fast NUMERIC(20, 9), tip_instant NUMERIC(20, 9), gas_used_ratio NUMERIC(5, 4), network VARCHAR(50) NOT NULL DEFAULT 'ethereum' ); SELECT create_hypertable('gas_stats', 'time'); 

Retention policy: детальные данные по блокам — 7 дней, часовые агрегаты — 1 год, дневные — бессрочно.

Что входит в разработку gas tracker под ключ?

Компонент Описание
Коллектор TypeScript + viem, подписка на блоки, обработка ошибок
База данных TimescaleDB, индексы, агрегаты
API Fastify, REST + WebSocket
Прогнозирование EMA priorityFee, предсказание baseFee, временные паттерны
Фронтенд React + Recharts, графики и рекомендации
Мультичейн Отдельные коллекторы, L2 data fee
Документация Swagger, README, инструкция по деплою
Обучение Сопровождение команды в течение 2 недель

Также гарантируем точность данных: пишем тесты для коллектора, мониторинг через Tenderly, используем Slither для проверки смарт-контрактов (если они часть системы).

Какие типы данных собирает gas tracker?

Помимо базовых компонентов, мы собираем метрики для каждого блока: количество транзакций, средняя и медианная priorityFee по процентилям, заполненность блока (gasUsedRatio). Это позволяет строить не только текущие рекомендации, но и исторические распределения — например, шанс попасть в блок с заданным tip. Для мультичейн-систем дополнительно логируется L1 data fee (для L2) и стоимость моста. Все данные попадают в TimescaleDB с автоматической агрегацией.

Как мы прогнозируем газ?

Простой вывод текущего baseFee недостаточен. Нужна оценка: "сколько поставить, чтобы попасть в следующий блок с вероятностью X%?".

Следующий baseFee предсказуем точно:

function predictNextBaseFee(currentBaseFee: bigint, gasUsedRatio: number): bigint { const targetRatio = 0.5 const maxChangeDenominator = 8n const delta = gasUsedRatio - targetRatio const change = (currentBaseFee * BigInt(Math.round(delta * 1000))) / (maxChangeDenominator * 1000n) return currentBaseFee + change } 

Priority fee — рыночная, предсказать сложнее. Используем EMA последних N блоков:

def calculate_priority_fee_estimate( recent_tips: list[float], alpha: float = 0.3, ) -> float: ema = recent_tips[0] for tip in recent_tips[1:]: ema = alpha * tip + (1 - alpha) * ema return ema 

Также учитываем временные паттерны: газ дешевле в UTC 02:00-08:00. Показываем "оптимальное окно" для несрочных транзакций.

Почему стоит выбрать TimescaleDB для хранения?

TimescaleDB — PostgreSQL extension для time-series. Позволяет автоматически партиционировать по времени, создавать непрерывные агрегаты и быстро выполнять оконные запросы. Альтернативы (InfluxDB, ClickHouse) требуют отдельного стека, а TimescaleDB встраивается в привычную реляционную БД — меньше overhead.

Сравнение вариантов хранения

База Тип Нагрузка на чтение Нагрузка на запись Примечание
TimescaleDB Реляционная + time-series Высокая (агрегаты) Низкая (авто-гипертаблица) Единый стек с PostgreSQL
InfluxDB NoSQL time-series Средняя (плоская модель) Высокая (денормализован) Отдельный BI-стек
ClickHouse Column-store Высокая (аналитика) Средняя (пакетная) Оптимален для OLAP, но избыточен для трекера

API и интеграция

REST endpoints:

  • GET /api/gas/current — текущие рекомендации {slow, standard, fast, instant}
  • GET /api/gas/history?period=24h — история с агрегацией
  • GET /api/gas/predict?blocks=5 — прогноз на N блоков
  • GET /api/gas/networks — данные по сетям

WebSocket — клиент получает обновления на каждый новый блок без polling. Мультичейн поддержка: отдельный коллектор на каждую сеть, для L2 (Arbitrum, Optimism, Base) учитываем двухкомпонентный газ.

Процесс интеграции:

  1. Аудит — анализируем нагрузку и требуемые сети.
  2. Архитектура — подбираем RPC-провайдеров, схему базы.
  3. Коллектор — разворачиваем в Docker, настраиваем мониторинг.
  4. API — генерируем OpenAPI-документацию.
  5. Тестирование — сверяем данные с Etherscan за неделю.
  6. Деплой — на ваш кластер Kubernetes или bare-metal.

Сроки и стоимость

Разработка базовой версии (Ethereum mainnet, история + текущие рекомендации) — 5-8 дней. Мультичейн с предсказаниями и детальной аналитикой — 2-3 недели. Стоимость рассчитывается индивидуально под задачи — свяжитесь с нами, оценим ваш проект. Обратившись сейчас, вы получите консультацию инженера по архитектуре gas tracker. Закажите разработку — начнём с анализа ваших данных.