Як ефективно скасувати криптовалютну транзакцію?
Блокчейн характеризується незмінністю та прозорістю. Це означає, що доступну в мережі інформацію практично неможливо відредагувати або підробити. Тому вкрай важливо перевіряти дані перед підписанням транзакції, адже щойно операцію буде підтверджено та внесено в блок, скасувати дію стане неможливим.
Однак в окремих випадках у користувача є можливість вплинути на процес. У цьому матеріалі розберемо, як це можна зробити.
Чи можна скасувати криптовалютну транзакцію?
Як правило, криптовалютну транзакцію не можна відредагувати або вплинути на неї будь-яким чином. Але є момент, коли операцію все ж можна скасувати, — доти, доки вона не включена в блок і перебуває в мемпулі, чекаючи своєї черги.
Залежно від можливостей конкретного блокчейна і завантаження мережі, варіюється і час підтвердження транзакції. Наприклад, для мережі біткоїна це може зайняти від 20 хвилин.
Також транзакція може «зависнути» в мережі з таких причин:
- недостатня комісія для здійснення операції;
- перевантажена мережа;
- спроба використовувати нещодавно переведені цифрові активи;
- технічні проблеми.
Отже, єдиний варіант скасувати транзакцію в публічному блокчейні на кшталт біткойна чи Ethereum — встигнути зробити це в проміжок між її підписанням і підтвердженням у мережі.
Що робити, щоб скасувати транзакцію в блокчейні?
Скасування транзакції може викликати деякі складнощі, оскільки часто необхідно володіти спеціальними знаннями й розуміти алгоритм дій для розв’язання проблеми.
Деякі блокчейни можуть мати вбудовані механізми для внесення змін до транзакції. Однак успіх у цьому разі залежить від багатьох чинників на кшталт статусу операції й типу мережі. У приватних блокчейнах скасувати транзакцію може бути легше, оскільки мережа контролюється централізовано і в адміністратора теоретично є можливість анулювати операцію.
Скасувати транзакцію можна такими способами:
- скористатися вбудованими механізмами;
- надіслати нову транзакцію з такими самими даними, але вказати більшу комісію, щоб «проштовхнути» операцію;
- звернутися до адміністратора мережі (якщо приватний блокчейн) або фахівців.
Що оперативніше користувач зробить дії, спрямовані на скасування транзакції, то вищі шанси її анулювати. Якщо ж з певних причин вчасно скасувати операцію не вийшло, не варто відкидати можливість зв’язатися з одержувачем безпосередньо і попросити повернути активи.
Якщо ж користувач перевів криптовалюту на недійсну адресу, тоді залежно від протоколу кошти можуть бути автоматично повернуті або вже загублені назавжди.
Розглянемо, як скасовувати транзакції в різних ситуаціях.
Скасування транзакції в MetaMask
У криптогаманці MetaMask є два варіанти скасування транзакції. Перший і найпростіший — скористатися вбудованою функцією. Для цього у вікні операції потрібно натиснути на кнопку Cancel, як зазначено на скріншоті нижче.
Важливо: ця дія підходить тільки для тих транзакцій, які ще не включені в блок і перебувають у статусі Pending. Стан ініційованої операції можна перевірити у відповідному оглядачі блокчейна.
Існує також альтернативний спосіб скасування непідтвердженої операції — для цього потрібно відправити «порожню» транзакцію на свою адресу. Цей процес набагато складніший.
Для початку слід звернути увагу, що у кожної транзакції є свій унікальний ідентифікатор — nonce. Щоб скасувати завислу транзакцію, потрібно надіслати іншу на свою ж адресу. При цьому як nonce необхідно вказати ідентифікатор операції, яку потрібно анулювати.
Однак це вважається просунутою функцією, тому для управління ідентифікатором її потрібно активувати в додаткових налаштуваннях.
При цьому переказ коштів може і не відбуватися, оскільки тут важливо вказати більшу вартість газу, щоб «проштовхнути» потрібну операцію. Команда MetaMask радить збільшити розмір комісії щонайменше на 30% порівняно з попередньою транзакцією.
Скасування транзакції в мережі біткоїна
Щоб почати процес скасування транзакції в мережі біткоїна, насамперед потрібно перевірити статус операції. Це можна зробити в оглядачі блоків на кшталт Blockchain.com, ввівши в рядок пошуку ідентифікатор транзакції (TxID).
Якщо в операції є вже хоча б одне підтвердження, то робити будь-які кроки щодо анулювання транзакції вже не має сенсу. У разі, якщо кількість перевірок дорівнює нулю, то можна спробувати здійснити скасування.
Користувач може вибрати відповідну для себе стратегію:
- протокол Replace-By-Fee (RBF) — передбачає можливість заміни початкової транзакції новою шляхом підвищення розміру комісії за переказ. Однак не всі гаманці підтримують RBF, тому для початку варто перевірити параметри;
- Double Spend — у цьому випадку є шанс скасувати транзакцію, спробувавши перевести на свою адресу аналогічну кількість BTC. У найкращому разі майнери візьмуть в обробку останню транзакцію. Але варто пам’ятати, що більшість нод і криптогаманців мають вбудований захист від подібних операцій.
Скасування транзакції в Ethereum
Щоб скасувати транзакцію в Ethereum, можна спробувати створити іншу операцію з такими ж вихідними даними, але підвищити комісію. Такий підхід може прискорити обробку нової транзакції, при цьому попередня не буде включена в блокчейн.
Також можна перезаписати транзакцію, використовуючи nonce. У цьому випадку користувач ініціює нову операцію на свою адресу, поставивши номер ідентифікатора попередньої транзакції.
В особливих випадках скасувати транзакцію можна за допомогою смартконтрактів. У деяких із них передбачено функцію анулювання операції, якщо не було дотримано умов угоди.
Крім цього, існують смартконтракти з реалізованим механізмом голосування. Це означає, що рішення про скасування або зміну транзакції ухвалюється більшістю учасників.
Смартконтракти використовують і для роботи мультисиг-гаманців, які контролюються відразу декількома сторонами. Це своєрідне підвищення рівня безпеки коштів, адже активи можуть переміщатися з адреси такого гаманця тільки за згодою всіх учасників.
Відповідно, якщо транзакція була відправлена помилково, її легко скасувати. Іншим сторонам, які беруть участь у мультипідписі, достатньо просто відхилити операцію.
Висновки
Незмінний характер блокчейна створює деякі складнощі для скасування транзакції. Насамперед такий підхід спрямований на підтримку і підвищення безпеки децентралізованої мережі.
Утім, розробники передбачили той факт, що деяким користувачам знадобиться скасувати або внести зміни в ініційовану операцію без злих намірів. Так зване вікно можливостей для цього процесу насправді невелике, але за умови знання алгоритму дій анулювати транзакцію все ж можна.
Важливо пам’ятати про те, що спробувати скасувати операцію можна до моменту включення транзакції в блок.