Что такое двойная трата (double spending)?

    Что такое двойная трата (double spending)?
    0

    Двойная трата – основная проблема, которую решает алгоритм 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 млн. $ на тот момент.

    хешрейт-сети-ethereum-classic-2020

    Затраты на аренду хешрейта были немалыми, и исчислялись сотнями тыс. $.

    Итоговая прибыль точно неизвестна, ведь многие биржи поместили адреса в чёрные списки, и хакер должен был быстро продавать клонированные ETC.

    Zen

    3 июня 2018, обладая вычислительной мощностью, которая превосходила средний уровень в сети, атакующий создал несколько блоков и заполучил путём двойной траты 23 тыс. ZEN, обманув депозитную систему биржи (примерно 600 тыс. $ в тот момент).

    Как защититься от атаки двойной траты

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

    Если вы отправляете или получаете крупную сумму, обязательно подождите 3-7 подтверждений в сети Bitcoin или 250 в сети Ethereum (около 1 часа с момента первого подтверждения).

    Помните, что двойная трата – это кратковременное событие, и невозможно с его помощью серьезно повредить блокчейн или получить доступ к чужим средствам. Даже имея мощность 100% всех майнинг устройств в мире, ваши приватные ключи никак не разгадать. Взломщик делает «double spend», используя собственные монеты.

    от РЕДАКЦИЯ