Налаштування приватного мемпулу

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

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

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

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

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1311
  • 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

Настройка приватного мемпула

Публічний mempool Ethereum — це broadcasting система, у якій ваша неопалювана транзакція видна будь-якому вузлу в мережі за секунди після відправки. MEV-ботам, front-runner'ам та sandwich-атакуючим не потрібно нічого взламувати — вони просто підписані на pending транзакції та автоматично реагують. Якщо ваш протокол виконує великі своп-операції, ліквідації або арбітраж — публічний mempool це пряма втрата грошей.

Приватний mempool розв'язує цю проблему: транзакція йде напрямки до block builder'а, минаючи публічне broadcasting, та потрапляє в блок без попередньої огласки.

MEV та чому це реальні гроші

Перед тим як говорити про рішення — потрібно зрозуміти масштаб проблеми. MEV (Maximal Extractable Value) на Ethereum з переходу на PoS складає сотні мільйонів на рік. Механіки:

Sandwich attack — класика проти DEX-трейдерів. Бот бачить вашу pending транзакцію на Uniswap, вставляє buy до неї (front-run) та sell після (back-run). Ваш своп виконується за гіршою ціною, різниця йде боту. При slippage tolerance 1% на $100k свопі — потенційний убиток $1000 на користь атакуючого.

Liquidation front-running — в lending протоколах (Aave, Compound) ліквідація позицій вигідна: ліквідатор отримує discount. Якщо ви намагаєтесь ліквідувати позицію публічно — конкуруючий бот може перехопити транзакцію з більш високим gas price.

Arbitrage — менш вредоносний для вас, але показує наскільки мемпул прозорий. Арбітражники реагують на ваші транзакції в межах одного блока.

Архітектура приватної доставки транзакцій

Flashbots: базова інфраструктура

Flashbots — це дослідницька організація, яка створила MEV-Boost та Flashbots Protect. З переходу на PoS більшість Ethereum блоків будуються через PBS (Proposer-Builder Separation): validator пропонує блок, але сам його не будує — вибирає найкращий bid від block builder'ів.

Flashbots Protect RPC — найпростіший варіант. Змініть RPC endpoint у кошельку або коді на https://rpc.flashbots.net. Транзакції йдуть у Flashbots bundle pool, не у публічний mempool. Protect працює через eth_sendPrivateTransaction під капотом.

const provider = new ethers.JsonRpcProvider("https://rpc.flashbots.net");
// Транзакції тепер йдуть через Flashbots, не у публічний mempool
const tx = await signer.sendTransaction({ to, value, data });

Обмеження: немає гарантії включення в конкретний блок, немає можливості bundle кілька транзакцій атомарно.

Flashbots Bundles: атомарне виконання

Для складних операцій — bundles. Bundle = набір транзакцій, які повинні виконатися атомарно в одному блоку у заданому порядку. Якщо хоча б одна транзакція ревертить — весь bundle не включається.

import { FlashbotsBundleProvider } from "@flashbots/ethers-provider-bundle";

const flashbotsProvider = await FlashbotsBundleProvider.create(
  provider,
  authSigner,  // ключ для підпису запитів до Flashbots relay
  "https://relay.flashbots.net"
);

const bundle = [
  { signer: wallet, transaction: approveTx },
  { signer: wallet, transaction: swapTx },
];

const targetBlock = (await provider.getBlockNumber()) + 2;

const simulation = await flashbotsProvider.simulate(bundle, targetBlock);
if ("error" in simulation) throw new Error(simulation.error.message);

// Відправляємо bundle на кілька блоків вперед для надійності
for (const blockNumber of [targetBlock, targetBlock + 1, targetBlock + 2]) {
  await flashbotsProvider.sendBundle(bundle, blockNumber);
}

Bid механізм: bundle повинен бути привабливим для builder'а. Builder вибирає bundle'ы, які максимізують його прибуток. Потрібно включити coinbase payment — ETH transfer напрямки до block builder'а:

// У останній транзакції bundle
block.coinbase.transfer(minerTip);

Розмір tipа визначає пріоритет вашого bundle. Для арбітражних стратегій зазвичай відсоток від прибутку арбітража.

MEV Blocker та альтернативні relay

Flashbots — не єдиний варіант. Екосистема MEV relay:

MEV Blocker (https://rpc.mevblocker.io) — агрегує приватні транзакції через мережу searcher'ів, які підписалися на non-front-running правила. Searcher'и можуть back-run ваші транзакції (арбітраж після вас), але не front-run або sandwich. Частина прибутку від back-running повертається відправнику транзакції.

Beaver Build — block builder з приватним RPC, пропонує bundle API сумісний з Flashbots.

bloXroute — enterprise рішення, швидка доставка bundle через власну мережу p2p нод.

Для максимальної надійності включення — відправляйте bundle паралельно у кілька relay:

const RELAYS = [
  "https://relay.flashbots.net",
  "https://relay.ultrasound.money",
  "https://agnostic-relay.net",
];

await Promise.all(
  RELAYS.map(relayUrl =>
    sendBundle(bundle, targetBlock, relayUrl)
  )
);

Настройка власного private relay

Для протоколів з постійним потоком транзакцій (протоколи ліквідацій, treasury management) има сенс розгорнути власний MEV relay.

Компоненти

MEV-Boost — middleware між Ethereum validator'ом та block builder'ами. Validator встановлює MEV-Boost як sidecar процес, він приймає bid від builder'ів та вибирає найкращий.

mev-relay (Flashbots open source) — relay сервер, приймає bundles від searcher'ів та відає їх builder'ам. Потребує whitelisted builder партнерів для включення bundle в блоки.

Вимоги до інфраструктури:

  • Ethereum archive node (Erigon або Geth з --gcmode=archive) — мінімум 3 TB NVMe, 64GB RAM
  • Низька latency до основних block builder'ів: ймовірність включення bundle критично залежить від швидкості доставки. Використовуйте сервери в дата-центрах поряд з крупними builder'ами (Equinix NY4, Interxion AMS)
  • Моніторинг inclusion rate: який відсоток bundle'ів реально попав у блок, у якому блоці, який був actual gas price

Операційні нюанси

Simulation перед відправкою обов'язкова. Відправити bundle з ревертящою транзакцією — втрата gas та часу. Tenderly або власний fork (Anvil / Hardhat) для симуляції:

anvil --fork-url $ETH_RPC --fork-block-number latest
# Симулюємо bundle локально перед відправкою

Nonce management — критична точка. Якщо ви відправляєте кілька bundle в паралельних блоках, всі вони використовують одинакові nonce. При включенні одного bundle інші автоматично стають невалідними — це очікуване поведінка, не помилка. Але при повторній відправці потрібно інкрементувати nonce.

Cancellation: eth_cancelPrivateTransaction в Flashbots дозволяє відозвати неопалювану транзакцію. Працює лише якщо транзакція ще не включена в блок. Для bundle — немає прямої відмени, лише закінчення блока призначення.

L2 та альтернативні мережі

На L2 (Arbitrum, Optimism, Base) ситуація інша: централізований sequencer сам визначає порядок транзакцій, публічний mempool практично відсутствує. Це захищає від front-running зі сторони зовнішніх MEV-ботів, але не від самого sequencer'а.

Arbitrum має fair ordering: транзакції упорядковуються за часом отримання sequencer'ом. Sandwich атаки через газові аукціони технічно неможливі. Однак sequencer централізований — Offchain Labs оперує ним.

Для Solana MEV-захист будується інакше: Jito Labs надає аналог Flashbots для Solana — jito-solana клієнт та bundle API для атомарних транзакцій.

Метрики успіху

Після настройки приватного mempool потрібно вимірювати:

  • Inclusion rate: % bundle'ів, які потрапили в блок у target block ± 2
  • MEV savings: порівняння фактичних цін виконання зі spot price у момент відправки
  • Gas efficiency: при bundles часто удається зменшити effective gas через оптимізацію порядку
  • P&L impact: для арбітражних стратегій — прямий comparison до/після