Атаки подвійної витрати: чому не можна просто дивитися на «Надіслано» для транзакцій у блокчейні
Середній

Багато користувачів вважають, що після того, як транзакція блокчейну відправлена, кошти безпечно досягли отримувача. Але реальність не така проста. Для бірж, мерчантів та звичайних користувачів важливо не лише те, чи була транзакція розіслана, а чи була вона підтверджена блоком, чи кількість підтверджень достатня, і чи не несе основна ланцюжок ризик перебудови. Розуміння цих концепцій — основа для запобігання атакам подвійної витрати.
Ця стаття зосереджена переважно на мережах доведення роботи, де глибина підтвердження та кумулятивне доведення роботи є ключовими для ризику переорганізації. Інші консенсусні системи використовують інші механізми фінальності.
Що таке атака подвійної витрати?
Атака подвійної витрати — це спроба зловмисника витратити один і той самий цифровий актив двічі.
Щоб використати найбільш інтуїтивний приклад: атакуючий має лише 1 BTC і одночасно ініціює дві суперечливі транзакції. Одна з них сплачує мерчанту чи платформі депозит, покупку чи послугу; інша відправляє ті самі 1 BTC назад на адресу гаманця, яку контролює атакуючий. Оскільки обидві транзакції використовують одні й ті самі кошти, лише одна з них може бути в кінцевому підсумку дійсною в ланцюжку. Якщо мерчант чи платформа довіряють транзакції, яка «ще не стабільно підтверджена», занадто рано, атакуючий згодом може використати перебудову ланцюжка або перевагу довшого ланцюжка, щоб зробити попередньо побачений запис депозиту недійсним — тоді як активи вже були виведені атакуючому.
Тому атака подвійної витрати не полягає у «дублюванні активів» — вона експлуатує недостатню підтвердження транзакцій, конкуруючу генерацію блоків або переорганізацію ланцюга, щоб використати один і той самий актив двічі в рамках бізнес-процесу.
Чому відбуваються атаки подвійної витрати?
Хоча блокчейн підкреслює, що транзакції є незворотними, ця «незворотність» зазвичай не виконується одразу після відправлення транзакції. Вона поступово наближається до незворотності після упакування, поширення та підтвердження.
Он-чейн транзакція зазвичай проходить кілька станів:
| Стан | Опис |
| Створено | Гаманець створює транзакцію |
| Трансляція | Транзакція розсилається в мережу блокчейн |
| В очікуванні | Очікування майнерів чи валідаторів на упаковку та підтвердження |
| Підтверджено | Транзакція увійшла до блоку і починає накопичувати підтвердження |
| Не вдалося / Відхилено / Замінено | Транзакція не вдалася, або була замінена або відкинута |
Ризик часто виникає на етапі «Очікування» та на етапі «Підтверджено, але з надто малою кількістю підтверджень». На цих етапах транзакція «виглядає як існуюча», але ще не є достатньо стабільною. Якщо мережа зазнає форку або атакуючий контролює значну хеш-потужність і будує довший ланцюг, блок, що містить початкову транзакцію, може бути відкинутий — і запис транзакції може «зникнути».
Це те, що називається «переорганізацією ланцюга». Переорганізація ланцюга — це не просто видалення запису; це означає, що вся мережа в кінцевому підсумку визнає інший ланцюг, що призводить до того, що деякі блоки початкового ланцюга стають недійсними. Якщо транзакція депозиту існує лише на відкинутій гілці, запис депозиту, який раніше бачила платформа, може втратити свою дійсність.
Чому підтвердження так важливі?
Кількість підтверджень визначає, наскільки складно відмінити транзакцію.
Коли транзакція вперше потрапляє до блоку, вона зазвичай має лише 1 підтвердження. З кожним новим блоком кількість підтверджень збільшується — 2 підтвердження, 3 підтвердження, 6 підтверджень, навіть 12 підтверджень. Чим вища кількість підтверджень, тим більше блоків потрібно відкатити, щоб скасувати транзакцію, і тим вищою є вартість атаки.
Саме тому біржі зазвичай не зараховують кошти користувачам одразу при 0–1 підтвердженнях. Ризик вищий на цьому етапі, особливо для блокчейнів із слабкою хеш-потужністю або історією атак 51% або переорганізацій ланцюга, де потрібні вищі пороги підтвердження.
📌 Відомий випадок: Атака з використанням 51% хеш-потужності ETC у 2019 році та інцидент подвійної витрати
Атаки подвійної витрати — це не теоретична загроза. У січні 2019 року Ethereum Classic (ETC) став жертвою великої атаки з використанням 51% потужності, що включала транзакції з подвійною витратою.
Типовий процес атаки:
| Крок | Дія |
| 1 | Зловмисник спочатку отримав значну домінуючу потужність хешування в мережі ETC, що дозволило їм приватно майнити довшу ланцюжок |
| 2 | Зловмисник внес ETC на біржу |
| 3 | Після того як біржа побачила, що транзакція депозиту досягла необхідної кількості підтверджень, вона зарахувала кошти на акаунт нападника |
| 4 | Зловмисник швидко продав ETC на біржі, перетворив його на USDT, BTC або інші активи та вивів кошти |
| 5 | Тим часом атакуючий продовжував приватно майнити довшу ланцюг, який не містив транзакцію депозиту |
| 6 | Коли цю довшу ланцюжок було опубліковано в мережі, мережа прийняла нову основну ланцюжок, а ланцюжок депозиту, який бачила біржа, було відкликано |
Результат цієї атаки: депозит, який був «підтверджений» у записах біржі, зник, але атакуючий вже вивів перетворені активи, завершивши подвійну витрату.
Цей випадок ілюструє ключовий факт: навіть якщо транзакція вже знаходиться на блокчейні, якщо безпека базової мережі недостатня або атакувач має здатність переструктуровувати блоки, транзакцію все ще можна відмінити. «Фінальність» транзакції блокчейну не є абсолютно миттєвою — вона поступово зміцнюється зі збільшенням кількості підтверджень.
🛡️ Як уникнути атак подвійного витрачання під час транзакцій
Запобігання атакам подвійної витрати полягає не у покладанні на «скріншот іншої сторони» чи «наявність хеша транзакції» — а у створенні відповідних механізмів підтвердження та контролю ризиків.
Спочатку не сприймайте «Трансляцію» як «Отримано»
Користувач, який бачить «відправлено» у своєму гаманці, або інша сторона, яка надає хеш транзакції, не означає, що кошти безпечні. Розсилання означає лише те, що транзакція увійшла в етап поширення в мережі — це не означає, що вона була підтверджена блоком. Дії, такі як нарахування депозитів, вивід монет, відправлення товарів або надання послуг, не можуть базуватися на статусі «Очікується».
Друге, ви повинні підтвердити статус підтвердження в ланцюзі
Щоб визначити, чи є транзакція надійною, мінімум перевірте:
-
Чи було транзакцію упаковано в блок
-
Яка поточна кількість підтверджень
-
Чи містить транзакція ризики незвичайної заміни, конфліктних транзакцій або вилучення
Для високоризикованих сценаріїв не просто перевіряйте «чи існує транзакція» — перевіряйте «чи стабільна підтвердження».
Третє, встановіть розумні кількості підтверджень залежно від рівня ризику ланцюга
Різні блокчейни мають різний рівень безпеки. Мейнстрімні блокчейни з високою хеш-потужністю значно відрізняються від малих за капіталізацією, низького хеш-потужності блокчейнів щодо вартості зазнання атаки 51% або переорганізації ланцюга. Для блокчейнів з вищим ризиком платформи повинні підвищувати пороги підтвердження депозитів; для великих транзакцій також слід встановлювати вищі вимоги до підтверджень — не підхід «один розмір підходить усім».
Четверте, застосуйте моніторинг контролю ризиків до незвичайної поведінки депозитів
Наступні дії повинні спричинити додатковий огляд:
| Незвична поведінка | Пояснення ризику |
| Кілька великих депозитів, за якими швидко слідують продаж та виведення коштів протягом короткого періоду | Типовий шлях атаки подвійної витрати |
| Часті депозити за допомогою монет із історично слабкою безпекою | Ланцюги з низькою хеш-потужністю мають низькі витрати на атаку |
| Запит на негайне виведення активів одразу після досягнення мінімальної кількості підтверджень | Може використовувати вразливості, пов’язані з недостатнім підтвердженням |
| Транзакції з незвичайними затримками, ознаками конфлікту або нестабільним статусом на Досліднику блокчейну | Можлива тривала реорганізація ланцюга |
Ці поведінки часто дуже добре відповідають операційним шаблонам атак з подвійним витрачанням.
П’яте: не довіряйте знімкам екранів платежів чи статусам на одній сторінці
Знімки екрана найлегше підробити й найлегше ввести в оману. Незалежно від того, чи йдеться про платежі мерчанту, позабірсові угоди чи перевірку депозитів, завжди покладайтеся на блокчейн-дослідники та верифікацію системного контролю ризиків — не на чат-записи, знімки платіжних інструкцій чи усні заявки.
Шосте: розумійте, що «незворотність» не означає «миттєвість»
Після того як транзакція в блокчейні досягає достатньої кількості підтверджень, її дійсно зазвичай дуже важко скасувати. Але коли підтверджень недостатньо, транзакції все ще можуть змінюватися через форки, перевантаження, заміну або переорганізацію ланцюга. Найпоширенішим міфом у навчанні безпеки є інтерпретація фрази «транзакції в блокчейні незворотні» як «після відправлення вони абсолютно безпечні». Саме цей когнітивний розрив дозволяє успішно проводити атаки подвійного витрачання.
💎 Рекомендації з безпеки для звичайних користувачів та платформ
Для звичайних користувачів найважливіше — не надавати товари, цифрові активи чи послуги до підтвердження. Особливо при позабіржових угодам, peer-to-peer переказах та платежах з незнайомцями — залежність лише від скріншотів без перевірки підтверджень супроводжується надзвичайно високим ризиком.
Для мерчантів і платформ справді ефективна захист — це не «ручний досвід», а стандартизовані механізми:
-
Чіткі пороги підтвердження
-
Різні рівні ризику за ланцюгом
-
Виявлення незвичайних шляхів виведення
-
Подовжений термін перевірки депозитів високоризикованих активів
-
Підвищена увага до монет із історією переорганізацій або атак 51%
Висновок
Суть атаки подвійної витрати — не «хакер, що дублює монету», а атакуючий, який експлуатує транзакції з нестабільним підтвердженням, щоб створити ілюзію «вже сплачено» в бізнес-процесі. Інцидент з ETC у 2019 році вже продемонстрував, що доки базова ланцюжкова структура має можливість перебудови, транзакції з недостатнім підтвердженням не слід вважати остаточно отриманими.
Основний принцип безпечних транзакцій зводиться до одного речення:
Дивіться на підтвердження, а не на скріншоти; дивіться на фінальність, а не на поверхневий статус.
Чим більше підтверджень, тим менше вікно для успішної атаки подвійної витрати.
Disclaimer: The information on this page may come from third parties and does not necessarily reflect KuCoin’s views. It is provided for general reference only and should not be interpreted as financial or investment advice.
Virtual asset investments may involve risk. Please carefully assess the product risks and your own risk tolerance. For more information, please refer to our Terms of Use and Risk Disclosure.