Атаки повторной траты: почему нельзя просто смотреть на «Отправлено» для транзакций блокчейна

Средний
Double-Spend Attacks: Why You Can't Just Look at "Sent" for Blockchain Transactions
Многие пользователи считают, что как только транзакция в блокчейне «отправлена», средства безопасно抵达. Но реальность не так проста. Для бирж, мерчантов и обычных пользователей важно не только то, была ли транзакция передана, но и подтверждена ли она блоком, достаточно ли количество подтверждений и не несет ли базовая цепь риска перестройки. Понимание этих концепций — основа для предотвращения атак «двойного расходования».
 
Эта статья в первую очередь посвящена сетям с доказательством выполнения работы, где глубина подтверждения и совокупное доказательство выполнения работы играют ключевую роль в риске переорганизации. Другие консенсусные системы используют другие механизмы финализации.

Что такое атака двойной траты?

Атака «двойной траты» — это попытка злоумышленника потратить один и тот же цифровой актив дважды.
 
Чтобы привести самый интуитивно понятный пример: атакующий владеет только 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% или переорганизации цепочки. Для блокчейнов с более высоким риском платформы должны повышать порог подтверждения депозитов; для крупных транзакций также следует устанавливать более высокие требования к подтверждениям — подход, не подходящий для всех одинаково.

Четвертое: примените мониторинг контроля рисков к аномальному поведению при депозите

Следующие действия должны вызывать дополнительный обзор:
 
Подозрительное поведение Объяснение риска
Несколько крупных депозитов, за которыми следуют быстрая продажа и вывод в течение короткого периода времени Типичный путь атаки двойной траты
Частые депозиты с использованием монет с исторически слабой безопасностью Цепочки с низкой хеш-мощностью имеют низкую стоимость атаки
Запрос немедленного вывода активов сразу после достижения минимального количества подтверждений Может эксплуатировать уязвимости, связанные с недостаточной подтверждённостью
Транзакции с аномальными задержками, признаками конфликта или нестабильным статусом в Проводнике Возможная текущая реорганизация цепочки
Эти действия часто точно соответствуют операционным шаблонам атак с двойной тратой.

Пятый: не доверяйте скриншотам платежей или статусу на одной странице

Скриншоты легче всего подделать и最容易 ввести в заблуждение. Независимо от того, идет ли речь о платежах мерчанту, внебиржевых сделках или проверке депозитов, всегда полагайтесь на Проводник блокчейна и верификацию системного контроля рисков — не на переписки в чате, скриншоты платежей или устные заявления.

Шестое: поймите, что «необратимость» не означает «мгновенность»

После того как транзакция в блокчейне достигает достаточного количества подтверждений, она действительно обычно очень труднообратима. Однако при недостаточном количестве подтверждений транзакции всё ещё могут измениться из-за форков, перегрузки, замены или переорганизации цепочки. Самым распространённым заблуждением в образовании по безопасности является интерпретация фразы «транзакции в блокчейне необратимы» как «после отправки они абсолютно безопасны». Именно этот когнитивный разрыв позволяет успешным атакам типа double-spend.

💎 Советы по безопасности для обычных пользователей и платформ

Для обычных пользователей самое важное — не передавать товары, цифровые активы или услуги до подтверждения. Особенно при овер-контр-сделках, одноранговых переводах и платежах с незнакомцами — полагаться только на скриншоты без проверки подтверждений чрезвычайно рискованно.
 
Для мерчантов и платформ по-настоящему эффективная защита — это не «ручной опыт», а стандартизированные механизмы:
  • Четкие пороги подтверждения
  • Различные уровни риска по цепочкам
  • Выявление аномальных путей вывода
  • Увеличенный срок проверки для депозитов высокорисковых активов
  • Повышенная бдительность для монет с историей переорганизаций или атак 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.