Атака типа «гонки»

Продвинутый
Обновлено Aug 26, 2026

Что такое атака типа «гонки»?

Атака типа «гонки» — это разновидность двойной траты при которой злоумышленник одновременно создает две конфликтующие транзакции, расходующие одни и те же средства, а затем распространяет их таким образом, чтобы ввести получателя в заблуждение. 

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

Атаки типа «гонки» нацелены на получателей, которые считают окончательной неподтвержденную транзакцию — такой платеж часто называют платежом с нулевым числом подтверждений. 

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

Как работает атака типа «гонки»?

В типичном сценарии злоумышленник отправляет одну транзакцию продавцу и почти одновременно распространяет конкурирующую транзакцию, которая переводит те же монеты ему самому. Обе транзакции попадают в пул памяти (mempool) разных нод по всей сети. 

Поскольку ноды могут получить эти две транзакции в разном порядке, они временно расходятся во мнениях о том, какая из них является легитимной.

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

Злоумышленник может повысить свои шансы, подключившись напрямую к ноде продавца, чтобы доставить «платежную» транзакцию, и при этом более широко распространить конфликтующую транзакцию по остальной сети. Если продавец принял платеж до получения какого-либо подтверждения, он может остаться ни с чем.

Как снизить риск атаки типа «гонки»

Самый эффективный способ снизить подверженность атаке типа «гонки» — дождаться одного или нескольких подтверждений блока, прежде чем считать платеж окончательным. Когда транзакция включена в блок и поверх него построены дополнительные блоки, отменить ее становится все сложнее и дороже.
Продавцы, работающие с более крупными суммами, часто ждут нескольких подтверждений, чтобы снизить вероятность отката. Стоит отметить, что атака типа «гонки» отличается от атаки 51%, которая требует контроля над большей частью вычислительной мощности майнинга сети и позволяет переписывать уже подтвержденные транзакции. Для атаки типа «гонки» такой уровень ресурсов не нужен, но, как правило, она успешна только против приема платежей без подтверждений.

На практике ожидание подтверждений, отслеживание конфликтующих транзакций и отказ от мгновенного принятия неподтвержденных платежей могут существенно снизить вероятность успешной атаки типа «гонки».