Якщо ви хоч раз проводили криптотранзакцію, ви могли помітити, що система здійснює операцію із затримкою. Коли транзакцію вже ініційовано, але ще не проведено, вона знаходиться в так званому мемпулі.

Що таке мемпул

Мемпул - це «кімната очікування», що знаходиться на ноді (мережевому вузлі) блокчейна. У цьому цифровому просторі зберігаються транзакції, які вже ініціювали, але не встигли опрацювати. Термін – похідне від англійських «memory» (пам'ять) та «pool» (пул, загальний фонд). Поєднання слів — посилання на призначення цифрового простору, що використовується для зберігання черги транзакцій, які потрібно додати до блокчейну.

Як визначити розмір мемпулу

Кожна транзакція, додана в мемпул, є частиною даних розміром не більше кількох кілобайт (КБ). Сума всіх КБ, що становлять транзакції, визначає розмір мемпулу.

Великий розмір мемпулу говорить про наявність безлічі транзакцій, що очікують на підтвердження.

Ось, наприклад, як змінювався мемпул біткоїн:

mempul

На графіці видно, що розмір мемпула біткоїну часто зростає на тлі активного руху курсу криптовалюти – зростання чи падіння.

Роль мемпулу в блокчейн-транзкціях

Мемпули відіграють важливу роль у схемі роботи нод блокчейну. Для запису транзакції в блокчейн потрібно, щоб її спочатку додали в блок (що складає блокчейна). Не всі ноди блокчейна можуть створювати блоки. Наприклад, у блокчейн-системах, які працюють на базі алгоритму Proof-of-Work (PoW) — таких, як біткоїн, лише майнери мають право додавати транзакції до блоку. У блокчейн-системах на базі Proof-of-Stake (PoS) - таких, як Ethereum, додаванням транзакцій до блоку зайняті валідатори.

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

Як працює мемпул

В одного блокчейну може бути безліч мемпулів. Кожна нода має цифровий простір, відведений під зберігання транзакцій, які очікують перевірки та додавання в блокчейн. Усі мемпули блокчейна, розподілені за приватними нодами, разом становлять один великий колективний мемпул.

Коли користувач створює транзакцію, він відправляють її на ноду. Мережевий вузол додає операцію до свого мемпула і ставить її в чергу на валідацію (перевірку на коректність даних). Після того, як транзакція проходить валідацію, її переводять у статус очікування. Саме такі операції майнери та валідатори можуть додавати до нових блоків, щоб надалі приєднати їх до блокчейну.

У момент, коли транзакція приєднана до блокчейну, ноди одержують інформацію про це. Тепер мережні вузли можуть стерти непотрібну інформацію про операцію зі своєї «кімнати очікування». Так відбувається синхронізація мемпулів.

Життєвий цикл криптовалютної транзакції та роль мемпулу

Щоб проілюструвати роботу мемпула та життєвий цикл транзакції уявімо, що ви хочете відправити 0.01BTC своєму другові.

  • Для початку потрібно дізнатися адресу гаманця для криптовалюту, яким користується ваш друг. Його потрібно вказати, як адресу одержувача під час ініціювання транзакції. Також може бути потрібна згода на зазначену системою комісію за переказ. Фінальний етап – натиснути клавішу «надіслати».
  • Транзакція буде додана до найближчого мемпулу і позначена як операція у черзі на проведення.
  • Тепер транзакцію транслюватимуть іншим нодам мережі, щоб мережні вузли змогли перевірити її та переконатися, що переклад не порушує правил.
  • У випадку, якщо транзакція пройде перевірку нодами, її переведуть із загальної черги до групи очікування (на додавання до блоку, з наступним записом до блокчейну). Якщо з операцією щось не так, користувач отримає повідомлення про те, що ця транзакція не підтверджена.
  • Один із майнерів або валідаторів додасть транзакцію до нового блоку та запише його до блокчейну.
  • Тепер майнер або валідатор, який додав транзакцію до блоку та записав її до блокчейну, почне транслювати інформацію про блок нодам. Як результат, мережеві вузли отримають доступ до інформації про транзакції, які включили до блоку.
  • На цьому етапі ноди можуть стерти інформацію про вашу транзакцію, яка весь цей час зберігалася у мемпулі.
  • Готово! Переклад завершено - ваш друг отримав належні йому 0.01 BTC.

Перевантаження мемпулу

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

  • Навантаження мережі. Збільшення кількості транзакцій призводить до нестачі місця в блоках, що стає причиною навантаження мемпула. Наприклад, середня кількість транзакцій в одному блоці блокчейна біткоїну становить близько 3150. Якщо кількість очікуваних транзакцій значно перевищить це число протягом кількох годин, мережа, а за нею і мемпули, будуть перевантажені.
  • Події чи новини. Події та новини, що безпосередньо впливають на блокчейн-індустрію, такі як запуск токенів, аірдропи або підтримка криптоіндустрії знаменитостями, можуть викликати раптові сплески попиту на транзакції. Стрибки активності здатні призводити до перевантажень мемпулу.
  • Форки або оновлення мережі. Зміни мережі, такі як форки або оновлення блокчейна, можуть викликати миттєве навантаження мемпула. Причина в тому, що ноди будуть зайняті поновленнями.

Знаючи про причини перевантаження мемпулу, розробники можуть вносити в проекти необхідні корективи, щоб мінімалізувати наслідки.

Пріоритет транзакцій

Одним із основних факторів, що визначають порядок виконання транзакцій у мемпулі, є комісії. Майнери та валідатори можуть вибирати, які транзакції вони хочуть додати до нового блоку, керуючись обсягом потенційного прибутку. Простіше кажучи, що більше комісії користувач готовий заплатити за проведення операції, то швидше її проведуть.

Тому відповідь на питання про те, скільки чекати на підтвердження транзакції біткоїну залежить від рівня навантаження мемпулу та щедрості комісій. Чим нижча навантаження і вища плата - тим швидше пройде операція. Перевантаження мемпулу і низька комісія — навпаки можуть спричинити уповільнення підтвердження транзакції біткоїну або будь-якої іншої криптовалюти.