Розробка системи прогнозування газу

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

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

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

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1309
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1222
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    922
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1151
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    614
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    887

Розробка системи прогнозування газу

Реальна задача звучить так: користувач хоче виконати транзакцію, йому потрібно знати, скільки це буде коштувати через 30 хвилин, через 2 години і через 12 годин. Простий ответ "дивись на поточний baseFee" не працює — він змінюється кожні 12 секунд і на довгих горизонтах непотрібний. Потрібна система, яка прогнозує майбутні gas prices з розумною точністю для практичних рішень.

Як влаштований gas pricing на Ethereum (EIP-1559)

Після EIP-1559 в August 2021 механізм газу став двокомпонентним:

  • baseFee — алгоритмічно визначена базова комісія, спалюється назавжди. Змінюється максимум ±12.5% від блоку до блоку залежно від того, був ли попередній блок заповнений більше або менше ніж на 50% (target_gas_used = block_gas_limit / 2).
  • maxPriorityFee (tip) — чайові майнеру/валідатору. Користувач встановлює сам, ринок визначає мінімально приемлемий рівень.
  • maxFeePerGas — максимум, який користувач готів заплатити. Фактично уплачується baseFee + min(tip, maxFeePerGas - baseFee).

Формула зміни baseFee:

baseFee_new = baseFee_old * (1 + 0.125 * (gas_used - target_gas) / target_gas)

Це ключове: baseFee детерміністично вичисляється з on-chain даних. Якщо знаєш gas utilization кожного блоку, можна точно реконструювати історичну baseFee й будувати модель.

Збирання даних

Мінімальний набір даних для кожного блоку:

interface BlockGasData {
  blockNumber: bigint;
  timestamp: number;
  baseFeePerGas: bigint;
  gasUsed: bigint;
  gasLimit: bigint;
  utilizationRate: number; // gasUsed / gasLimit
  // з транзакцій у блоці:
  medianPriorityFee: bigint;
  p25PriorityFee: bigint;
  p75PriorityFee: bigint;
  p95PriorityFee: bigint;
  txCount: number;
  mempoolSizeAtBlock?: number; // якщо є доступ до mempool даних
}

Історичні дані: для навчання моделі потрібні дані як мінімум за 3–6 місяців (різні ринкові умови, bull/bear періоди, события типу NFT mints і token launches які створювали gas spikes). Швидше отримати через Alchemy/QuickNode Archive API або публічні датасети (Dune Analytics, Google BigQuery Ethereum dataset).

Real-time дані: WebSocket підписка на newHeads, для кожного блоку додатково запитуємо eth_getBlockByNumber з true для отримання транзакцій (потрібні priority fees). На завантажених мережах — суттєвий обсяг даних, потребує rate-limit-aware polling.

Mempool дані — опціональні, але цінний сигнал. Pending транзакції показують "тиск спроса" до конфірмації. Доступні через eth_getFilterChanges або Mempool.space API, Blocknative streaming.

Часові паттерни

Gas prices мають виразну сезонність:

Внутрішньодобова: активність UTC 13:00–21:00 (перетин EU + US business hours) стабільно вище ніж UTC 02:00–10:00 (Asia ніч + US ніч). Різниця може бути 3–5x на baseFee.

День тижня: пятниця й вихідні — піки NFT і gaming активності. Понеділок–середа — DeFi й institutional операції.

События-піки: major NFT mint, token airdrop claim, protocol launch — газ може виросту в 10–50x за кілька хвилин. Не можна прогнозувати конкретний spike, але можна детектувати його початок і швидко оновити прогноз.

Моделі прогнозування

Краткостроковий прогноз (1–10 блоків, ~12–120 секунд)

Детерміністична модель: наступна baseFee вичисляється точно з поточної + поточного utilization. На 5–10 блоків можна застосовувати Markov chain на основі історичних паттернів utilization.

def predict_next_basefee(current_basefee: int, utilization: float) -> int:
    change = 0.125 * (utilization - 0.5)  # -0.0625 to +0.0625
    return int(current_basefee * (1 + change))

Це детерміністично для наступного блоку. Для горизонту 5–10 блоків використовуємо Monte Carlo симуляцію з розподілом utilization із історичних даних.

Середньостроковий прогноз (10 хв – 2 години)

Тут детермінізм закінчується, починається ML.

XGBoost / LightGBM добре працюють з tabular даними:

  • Фічи: поточна baseFee, rolling average за 10/30/60 блоків, час дня (sin/cos encoding), день тижня, pending tx count у mempool, recent utilization trend
  • Target: baseFee через N блоків

LSTM / Transformer — краще ловлять довгостроковими паттерни, але складніше в обслуговуванні. Для практичної системи часто хватає gradient boosting.

Метрика якості: не RMSE, а практична — який % часу користувач з recommended газом потрапляє в наступний блок vs. переплачує vs. застрягає.

Довгостроковий прогноз (2–48 годин)

На таких горизонтах домінує часова сезонність. Prophet (Facebook) добре справляється з добовими й тижневими паттернами:

from prophet import Prophet
model = Prophet(
    daily_seasonality=True,
    weekly_seasonality=True,
    changepoint_prior_scale=0.05
)
model.fit(df[["ds", "y"]])  # ds=timestamp, y=basefee_gwei
forecast = model.predict(future_df)

Практична точність на 24h горизонте: ±30–50% від медіанної значення. Достатньо щоб порадити "завтра вранці UTC газ буде значно нижче ніж зараз".

Рекомендації для конкретних сценаріїв

Система повинна конвертувати прогноз в actionable рекомендації:

interface GasRecommendation {
  scenario: "fast" | "standard" | "economy";
  maxFeePerGas: bigint;      // у wei
  maxPriorityFee: bigint;    // у wei
  estimatedInclusionTime: number; // секунди
  confidence: number;         // 0–1
  usdCostFor21000Gas: number; // для простого transfer
}

"Economy" сценарій: "якщо не поспішаєте — чекайте до UTC 04:00, gasWei буде ~40% від поточного". Використовуємо історичні перцентилі для часових сегментів.

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

Результати прогнозування відаємо через REST API:

GET /v1/gas/current          — поточні ціни + краткостроковий прогноз
GET /v1/gas/forecast?hours=24 — прогноз на період
GET /v1/gas/recommend?speed=economy — рекомендація для сценарію
WS  /v1/gas/stream            — оновлення кожний блок

Кешуємо результати: поточні дані — TTL 12 сек (один блок), краткостроковий прогноз — TTL 1 хв, довгостроковий — TTL 15 хв. Redis.

Реалістичний срок розробки системи з ML прогнозуванням і API: 8–12 тижнів.