Зміст
Одна з особливостей протоколу Bitcoin – обмежена пропускна спроможність. У зв’язку зі зростанням кількості транзакцій система все гірше справляється з їх відправкою, і користувачі часто стикаються з проблемою непідтверджених переказів. У цій статті ми докладно розповімо про те, що робити, якщо зависла транзакція в блокчейн і як убезпечити себе від подібних ситуацій.
Чому транзакція не підтверджується
Кожен переклад у мережі Bitcoin перевіряють майнери. Якщо транзакція легітимна, вона входить у новий блок: у разі кажуть, що транзакція отримала підтвердження. Увімкнення кожного наступного блоку збільшує кількість підтверджень, що підвищує довіру до транзакції серед усіх учасників мережі.
В ідеальному випадку кожна транзакція в Bitcoin повинна отримати як мінімум 6 підтверджень, хоча на практиці часто використовується менша кількість. Однак, жоден сервіс не прийме непідтверджену транзакцію, тобто таку, яка не включена до жодного нового блоку. Саме в таких випадках прийнято говорити, що переклад завис у блокчейні.
Проблема транзакцій, що зависли, виникає з єдиної причини: недостатній розмір комісії. Справа в тому, що майнери перевіряють транзакції на конкурентній основі: чим вища комісія, тим більша ймовірність влучення перекладу в черговий блок. Якщо комісія надто мала, майнери можуть довго ігнорувати переклад, віддаючи перевагу транзакціям із високою комісією.
Сучасні гаманці, такі як Bitcoin Core або blockchain.info автоматично пропонують оптимальний розмір комісії. Проблема в тому, що алгоритм розрахунку не є ідеальним, і може не враховувати потужні сплески активності в мережі. Навіть якщо користувач вказав комісію, що рекомендується, для своєї транзакції, існує ризик її зависання в блокчейні.
Зависла транзакція у блокчейн: що робити
По-перше, не панікувати: транзакція не може зникнути у блокчейні назавжди. Залежно від завантаженості мережі, можливі три варіанти розвитку подій:
- транзакція увійде до нового блоку (отримає підтвердження) протягом декількох хвилин або годин;
- процес підтвердження вдасться прискорити одним із доступних способів;
- при високій завантаженості мережі та відсутності можливості прискорення транзакції переказ просто повернеться на рахунок відправника протягом декількох днів.
Перше, що необхідно зробити, — отримати інформацію про статус транзакції. Для цього зайдіть на сайт blockchain.info та введіть id транзакції (зазвичай позначається як tx або txid) у текстове поле, розташоване у правому верхньому кутку. Запит виконується натисканням кнопки <Enter> на клавіатурі (натискати кнопку не потрібно!).
Перевірте кількість підтверджень. На скріншоті показано випадок, коли транзакція висить у списку непідтверджених. Якщо ж на місці червоного поля стоїть конкретне число, турбуватися нема про що: переклад уже включений у ланцюг, і досить просто почекати ще кілька десятків хвилин.
У графі «Плата за байт» вказано розмір комісії. Це число стане в нагоді для подальшої оцінки ситуації.
Далі потрібно порівняти цю комісію із поточною статистикою мережі Bitcoin. Зробити це можна, переглянувши рекомендовані комісії на сайті bitaps.com . Якщо плата за байт приблизно дорівнює або перевищує останнє число в полі Recommended fee, можна сподіватися на підтвердження транзакції протягом 1 – 2 годин.
Для підтвердження інформації можна скористатися сервісом Bitcoinfees , який показує кількість непідтверджених переказів, розділяючи їх за розміром комісії.
У тому випадку, якщо комісія за переклад значно нижча за рекомендовану, доцільно скористатися одним із методів прискорення перекладів.
Способи прискорення транзакцій
Якщо у вас виникла непідтверджена транзакція в блокчейн, що робити далі і як її швидше проштовхнути? Існує кілька способів прискорення транзакцій, які можуть допомогти у різних ситуаціях. Перерахуємо основні методи порядку збільшення складності.
Використання прискорювачів майнінгових пулів
Майнінгові пули, що контролюють велику частку потужності у системі Bitcoin, можуть сприяти користувачам у прискоренні транзакцій. На даний момент інтерес представляють сервіси двох великих пулів:
- ViaBTC
- Antpool
Насамперед варто використовувати прискорювач ViaBTC: він не вимагає реєстрації, і все, що потрібно зробити користувачеві – ввести id транзакції та капчу.
Якщо після кількох спроб транзакція не підтвердилася, слід переходити до використання прискорювача Antpool. Для реєстрації на сайті потрібно вказати E-mail та пароль.
Бот-прискорювач у Telegram
Telegram бот @FastTXbot створено для автоматичного прискорення перекладів у мережі Bitcoin. Для його використання необхідно відправити номер транзакції, що зависла, і чекати результату. Насправді бот використовує один із попередніх способів – прискорення через Antpool. При цьому робот автоматично робить всю роботу за користувача: досить просто дочекатися повідомлення про результат процедури, що зазвичай надходить протягом 10 хвилин.
Цей спосіб не завжди спрацьовує для перекладів, які використовують дуже низьку комісію.
replace-by-fee
Дана можливість дозволяє створити копію транзакції, що зависла, з підвищеною комісією. Сьогодні replace-by-fee підтримується популярними десктопними гаманцями Bitcoin Core і Electrum, а також онлайн-гаманцем GreenAddress. Для використання функції потрібно створити переказ, що містить таку саму суму, при цьому збільшивши комісію до прийнятного рівня. Крім того, при відправленні транзакції потрібно обов’язково вибрати пункт replace-by-fee: інакше кошти вирушать двічі. У Bitcoin Core потрібна галочка схована у нижній частині вікна відправки.
CPFP (Child pays for parent)
Даний спосіб призначений в першу чергу для одержувача транзакції, що зависла, проте в більшості випадків може бути використаний і відправником.
Не вдаючись у складні технічні деталі, можна сказати, що спосіб побудований на використанні коштів, отримання яких ще не було підтверджено блокчейне. Багато майнінгових пулів здатні побачити зв’язок між непідтвердженим перекладом і новою транзакцією, пов’язаною з попередньою адресою.
Для використання CPFP у Bitcoin Core потрібно перейти в меню “Налаштування” – “Опції”, вибрати вкладку “Гаманець” і відзначити галочки
Після цього залишиться створити нову транзакцію на вкладці Надіслати. Клацніть на кнопку «Входи» потрібно вибрати суму, яка спочатку була відправлена на рахунок одержувача. Якщо прискорення виробляє відправник, як вход потрібно вибирати «здачу», яка залишилася після відправки транзакції. Побачити розмір здачі можна під час перегляду транзакції на сайті blockchain.info.
При використанні CPFP слід встановлювати комісію, достатню для проведення одразу двох транзакцій. Наприклад, при рекомендованій платі 150 sat/B слід встановлювати комісію 300 sat/B або вище.
Подвійне витрачання
Найбільш складний спосіб доступний тільки для користувачів Bitcoin Core. Рекомендується для досвідчених користувачів, оскільки вимагає навичок використання командного рядка та дуже акуратного поводження з входами транзакцій.
Для початку необхідно запустити гаманець із командного рядка з параметром -zapwallettxes. Крім того, для сучасних версій Bitcoin Core потрібно видалити файл mempool.dat з папки з програмою. Після цього можна створювати нову транзакцію, яка точно повторить стару, за винятком збільшеної комісії.
При подвійному витрачанні виникає важливий нюанс: старий переклад у якийсь момент також може бути підтвердженим, через що кошти з гаманця спишуться двічі. Уникнути цієї ситуації можна, вказавши у списку входів для нової транзакції хоча б один вхід, який використовувався у попередній транзакції.
Висновок: як захиститись від непідтверджених транзакцій
Практика показує, що непідтверджена транзакція, що пішла в блокчейн, — не таке вже й страшне явище. Найчастіше ситуацію можна виправити з допомогою однієї з методів прискорення перевірки. Однак, якщо швидкість і надійність проходження транзакції є критично важливими, слід встановлювати високу комісію. Тільки так можна убезпечити себе від ризиків, пов’язаних із зависанням перекладів.