Двойная трата – основная проблема, которую решает алгоритм Proof-of-Work. Благодаря тому, что удалось исключить двойную трату, появился Bitcoin.
У вас есть BTC, а в сети – 10000 майнеров. Вы отправляете BTC и майнеры начинают постепенно обновлять состояние сети, фиксировать факт транзакции. В итоге они все приходят к согласию, что вы отправили, и записывают это в блок. Их не обмануть.
Сеть Биткоин защищена от двойной траты
Блокчейн – непрерывная цепочка. В неё невозможно подсунуть ложные данные, или перезаписать прошлые события.
Применяя хеширование, сеть Биткоина гарантирует, что новый блок произведён из предыдущего (подобно ДНК у родственника и потомка).
Если какой-то майнер захочет утвердить свою версию блока, при том что все остальные сошлись на другой версии, он это может сделать, но его ждут 2 разочарования:
- Майнер лишится BTC из награды за блок, электричество будет потрачено впустую (полученная им награда останется, но в заброшенной ветке, с которой никто не согласен; а в реальной ветке будет утверждён другой блок, и награда уйдёт честному майнеру).
- Ему всё равно не удастся увековечить отдельную транзакцию и рассинхронизировать блокчейн таким образом, ведь существует только 1 оригинальная ветка сети Биткоин, с которой все сходятся.
Почему атака всё же возможна
Атаковать блокчейн можно только в коротком промежутке времени (менее 1 часа зачастую). И это никак не затронет тех, кто не совершал транзакции в период потери консенсуса.
Это проверено на практике путём так называемой атаки 51%.
Навсегда захватить блокчейн Биткоина и делать там всё, что захочется – невозможно. Для этого вам потребуется вычислительная мощность стоимостью в миллиарды долларов. Благодаря открытости сети подделку обнаружат и курс упадёт настолько, что закупка оборудования не покроет потенциальную выгоду от взлома.
На теоретическом примере с данной картинки мы видим, как группа зловредных майнеров на протяжении 5 блоков смогла утверждать ложные блоки (что в случае с сетью Биткоин требует невероятной удачи и просто невозможно, либо умопомрачительно дорого).

В течение этого периода можно было например отправить свои Биткоины на биржу, которая требует от 1 до 5 подтверждений сети, продать их и получить другие монеты или фиатные деньги.
Затем, когда окно атаки закроется, серия блоков будет отмечена как заброшенная, и большинство майнеров продолжат майнить оригинальную, честную ветку.
Для взломщика всё выйдет так, что он имел 1 BTC, завёл их на биржу, продал, а затем, когда сеть восстановила консенсус, у него остались 1 BTC в оригинальной сети, но он успел продать поддельные 1 BTC. Отсюда и название атаки – двойное расходование.
Исторические примеры двойного расходования
Bitcoin
Хотя многие источники утверждают, что в сети Bitcoin не было успешных атак двойной траты, они всё же были.
12 марта 2013 года пользователь Bitcointalk форума macbook-air отправил около 211 BTC → в качестве депозита на адрес платёжной системы OKPAY. Затем он обнаружил, что в старой версии Bitcoin клиента (до 0.8) данная транзакция не подтверждалась, и повторил её командой через API. В итоге она также была включена в блок 225446.

Со временем сеть разумеется остановилась на истинной ветке: одна из транзакций была отвергнута, и попала в заброшенный блок. Но этого времени хватило, чтобы система OKPAY ошибочно зачислила пользователю macbook-air оба депозита.
Проблема была в том, что часть клиентов обновились на 0.8, другие же оставались на устаревшей. В итоге майнеры и сам пользователь, даже не будучи злоумышленниками, реализовали атаку двойной траты на сервис. Разработчики учли это и дополнительно предупредили сервисы, что нельзя принимать транзакции сразу же после 1 подтверждения, и тем более когда подтверждений и вовсе не было.
Ethereum Classic
Была атакована трижды в 2020 году с помощью аренды вычислительных мощностей в сервисе NiceHash.
В июле-августе хешрейт ETC значительно снизился и атакующий воспользовался этим. Арендовав GPU с хешрейтом более 51% от всей сети Ethereum Classic удалось создать двойных трат на сумму более 1 млн. ETC или 9 млн. $ на тот момент.

Затраты на аренду хешрейта были немалыми, и исчислялись сотнями тыс. $.
Итоговая прибыль точно неизвестна, ведь многие биржи поместили адреса в чёрные списки, и хакер должен был быстро продавать клонированные ETC.
Zen
3 июня 2018, обладая вычислительной мощностью, которая превосходила средний уровень в сети, атакующий создал несколько блоков и заполучил путём двойной траты 23 тыс. ZEN, обманув депозитную систему биржи (примерно 600 тыс. $ в тот момент).
Как защититься от атаки двойной траты
Даже если вы не задумали ничего плохого, блок с двойной тратой будет отменён сетью, а в нём может оказаться и ваша транзакция. Потому необходимость ждать как можно больше подтверждений касается всех участников сети.
Если вы отправляете или получаете крупную сумму, обязательно подождите 3-7 подтверждений в сети Bitcoin или 250 в сети Ethereum (около 1 часа с момента первого подтверждения).
Помните, что двойная трата – это кратковременное событие, и невозможно с его помощью серьезно повредить блокчейн или получить доступ к чужим средствам. Даже имея мощность 100% всех майнинг устройств в мире, ваши приватные ключи никак не разгадать. Взломщик делает «double spend», используя собственные монеты.