Ви напевно помічали, що під час проведення транзакції, вона не проходить одразу: відбувається невелика затримка. Коли транзакція підтверджена, але ще не проведена, вона перебуває в мемпулі. І ні, це ніяк не пов’язано з мемами. Мемпул (скорочено від “пул пам’яті” або “пул транзакцій”) – це непомітна, але надзвичайно важлива частина блокчейн-технології, яка керує транзакціями, забезпечуючи їхнє надсилання та підтвердження в мережі. У цій статті ми познайомимося з цим механізмом і розберемося, як він працює.
Оскільки пул пам’яті визначає, як кожна транзакція записується і підтверджується в блокчейні, розуміння пулу пам’яті може допомогти вам зрозуміти, що відбувається з вашими транзакціями “в польоті”, і відкрити глибоке розуміння того, як працюють блокчейни. Аналізуючи пул пам’яті, ми можемо отримати більш глибоке розуміння роботи блокчейну і статусу транзакцій, що знаходяться в процесі виконання.
Що таке мемпул (Mempool)?
Мемпул (Mempool), або пул пам’яті, – це фундаментальний механізм технології блокчейн, який на початку був популяризований біткойном, а згодом перейнятий Ethereum та іншими блокчейн-мережами. По суті це тимчасове сховище для всіх непідтверджених транзакцій у блокчейні. Його також можна назвати “кімнатою очікування”, розташованою на вузлі блокчейна (нода).
Цей термін походить від англійських слів “memory” (пам’ять) і “pool” (загальний фонд).
Наприклад, коли хтось відправляє Ефіріум, транзакція спочатку потрапляє в мемпул. Там вона чекає, поки майнери приймуть її, включать у новий блок і додадуть у блокчейн.
Дійсні транзакції, відправлені на вузол Ethereum, повинні потрапляти в пул пам’яті. Але насправді не існує єдиного пулу пам’яті. Скоріше, кожна нода має свій власний пул пам’яті, який намагається залишатися синхронізованим з іншими нодами (одноранговими) через мережу Ethereum. Оскільки мережевий зв’язок не завжди надійний або своєчасний, кожна нода має дещо (а іноді і значно) відмінний пул пам’яті. Крім того, ноди мають різні правила щодо того, які транзакції вони приймають (наприклад, мінімальна ціна на газ і обмеження на розмір пулу).
В ідеалі, транзакції залишають пул пам’яті ноди, тому що вони включені в блок. Але вони також можуть залишати пул через те, що їх замінюють через прискорення/скасування, або через конфігурацію пулу пам’яті ноди.
Як працює мемпул в блокчейні?
Мемпул функціонує за принципом “першим прийшов, першим пішов” (First-In-First-Out, FIFO). Транзакції, що надійшли в мемпул раніше, мають вищий пріоритет на підтвердження, ніж ті, що надійшли пізніше.
Ноди оцінюють ці транзакції за декількома параметрами, включно з перевіркою підпису, перевіркою наявності монет в гаманці та суми введення, перевіркою встановлення газу і т.д.. Після проходження перевірок транзакція потрапляє в mempool, очікуючи, поки майнер не вибере її для включення в блок. Майнери зазвичай вибирають транзакції з вищими комісіями, щоб включити їх у наступний блок першими. Тому, якщо ви хочете, щоб ваша транзакція була оброблена швидко, ви можете збільшити комісію.
Варто уточнити, що в одній блокчейн-мережі може існувати безліч мемпулів. Кожен вузол мережі має свій власний цифровий простір, виділений для зберігання транзакцій, які очікують на перевірку і включення в блокчейн. Усі ці мемпули блокчейна, розкидані по різних вузлах, об’єднуються в один загальний колективний мемпул.
Розглянемо принцип роботи мемпула на прикладі однієї транзакції:
- Створення транзакції. Уявімо, що Юрій хоче відправити ефіри Олегу. Він створює транзакцію, вказуючи адресу одержувача (Олега), суму, яку він хоче відправити. Далі Юрій оплачує комісію. Після цього, транзакція відправляється в мережу блокчейна.
- Потрапляння в мемпул. Транзакція Аліси спочатку потрапляє в мемпул однієї з нод мережі. Транзакція очікує в цьому мемпулі своєї черги на обробку.
- Валідація. Мережева нода, що володіє мемпулом, починає валідацію транзакції. Вона перевіряє, чи достатньо коштів на рахунку Юрія для здійснення цієї операції, і переконується, що транзакція відповідає правилам блокчейна.
- Очікування в мемпулі. Після успішної валідації транзакція переходить у режим очікування в мемпулі ноди. Тепер вона готова до включення в наступний блок, який буде додано в блокчейн.
- Вибір майнером. Майнери обирають транзакції з мемпула для включення в новий блок. Зазвичай вони обирають транзакції з вищими комісіями, оскільки це для них вигідніше.
- Включення в блок. Транзакція Юрія обрана майнером і включена в новий блок. Цей блок потім додається в ланцюг блоків. Транзакція Юрія стає видимою всім учасникам мережі.
- Поширення інформації. Інформація про новий блок і транзакцію Юрія поширюється всією мережею блокчейна.
Завантаженість мемпула
Завантаженість мемпула може варіюватися залежно від активності в мережі. Перевантаження мережі відбувається, коли збільшення кількості транзакцій викликає нестачу місця в блоках, що стає причиною переповнення мемпула.
Наприклад, середня кількість транзакцій, які можуть поміститися в одному блоці блокчейна біткоїна, становить близько 3150. Якщо кількість транзакцій, що очікують, значно перевищує це число протягом декількох годин, це призводить до перевантаження мережі.
Висновок
Перш ніж будь-яка транзакція стане частиною блокчейну, вона повинна пройти через пул пам’яті. Цю частину інфраструктури Web3 часто не помічають і неправильно розуміють. Подумайте про пул пам’яті як про зону очікування для вашої транзакції. Ноди бачать вхідні транзакції, переконуються, що вони відповідають основним вимогам, а потім транслюють їх одноранговим групам. Зрештою, майнери забирають транзакції, що очікують на обробку, з нод і включають їх у блок, отримуючи плату за свою послугу. Лише коли транзакція буде завершена в блоці, вона назавжди покине пул пам’яті.
Отже Мемпул – це дуже важлива частина інфраструктури блокчейна, яка забезпечує роботу мережі та обробку транзакцій. Розуміння того, як він функціонує, і як комісії впливають на його роботу, допомагає користувачам ухвалювати зважені рішення про те, як вигідно здійснювати транзакції.
Список використаних джерел:
- blocknative.com
- alchemy.com