Двойная трата — что это простыми словами | IceAI

Двойная трата

Двойная трата — попытка отправить одни и те же монеты дважды. Разбираю, как это работает, почему сеть её отклоняет и когда вы рискуете.

Обновлено: 2026-10-09

Я переводила USDT с биржи на кошелёк и в истории увидела две транзакции с одинаковой суммой, но разными статусами: одна confirmed, вторая failed. Я решила разобраться, почему сеть не позволяет списать одни и те же монеты дважды и что вообще такое двойная трата.

Двойная трата Одна транзакция 0.5 BTC Узел A принял в блок оплата магазину Узел B принял в блок возврат себе Остаётся одна цепочка Сеть принимает только одну ветку, вторую транзакцию отменяют

Почему монету нельзя потратить дважды

В блокчейне монета существует как неистраченный выход (UTXO) или как запись на балансе смарт-контракта. Пока транзакция №1 не подтверждена, монета формально «свободна», и кто-то может попробовать отправить тот же выход второй раз, уже другому получателю. Это и есть двойная трата.

Секрет в том, что полноценный узел помечает вход как потраченный, как только включил его в цепочку. Вторая транзакция с тем же входом становится недействительной: у неё нет монет, которые можно списать.

Сеть оставляет одну цепочку

Когда две конфликтующие транзакции уходят в сеть одновременно, майнеры (или валидаторы) могут включить каждую в свой блок. На короткое время появляются две ветки. Дальше работает консенсус: сеть оставляет цепочку с большей накопленной работой, а вторую ветку отбрасывает вместе с транзакцией внутри. Монеты «возвращаются» — как раз такую отменённую транзакцию я и увидела в истории со статусом failed.

Именно поэтому продавцы ждут подтверждений: транзакция тем безопаснее, чем глубже она лежит в блоке.

Атака 51% и риск zero-conf

Чтобы гарантированно оплатить и потом отменить платёж, злоумышленнику нужно контролировать большую часть хешрейта или стейка — это атака 51%. Сценарий простой: он платит за товар, получает его при нуле подтверждений (zero-conf), а затем публикует альтернативную цепочку, где его монеты остались у него.

RBF (Replace-by-Fee) — отдельный механизм: вы можете заменить свою ещё не подтверждённую транзакцию на версию с большей комиссией. Это штатная функция, но именно из-за неё продавец, отдающий товар при zero-conf, теряет деньги при реорганизации сети.

Как я себя защищаю

  • Ждать подтверждений: для биткоина лично я ориентируюсь на 1–3, для крупных сумм — на 6.
  • Принимать плату в USDT только после входа транзакции в блок, а не по факту broadcast.
  • Для сделок «здесь и сейчас» использовать эскроу или мультиподпись, где деньги освобождаются обеими сторонами.
  • Сверять хеш транзакции в мемпуле и на эксплорере, чтобы убедиться, что это тот же перевод, а не двойник.

Коротко

  • Двойная трата — попытка списать одни и те же монеты дважды.
  • Сеть принимает только одну цепочку, вторую транзакцию отменяют.
  • Zero-conf небезопасен: эскроу или ожидание подтверждений решают проблему.
  • Массовая двойная трата требует контроля над большинством хешрейта (51%).
  • Для крупных сумм достаточно 6 подтверждений, чтобы атака стала нерентабельной.

Остались вопросы? Спросите ИИ-ассистента — объяснит другими словами.

Спросить