«Двойная трата» (Double Spending) — известная проблема всех криптовалют. Если наличные деньги дважды потратить невозможно, то одновременно пообещать одну и ту же сумму сразу нескольким продавцам, торгующим в кредит, вполне реально. Информация может быть скопирована. Если подобное возможно и с криптовалютой, это значительно снизит доверие к такой системе расчетов.
«Двойная трата» в блокчейне с консенсусом Proof-of-Work
Сама структура такого блокчейна препятствует тому, чтобы из него можно было брать данные и использовать повторно. Любой блок и любая транзакция в блоке имеют метку времени и то, что уже засчитано как изменение баланса транзакций в сети криптовалюты, не должно быть засчитано повторно.
Вместе с тем «Двойная трата» может существовать в момент времени, когда в сети начинает формироваться новый блок: часть майнеров не получила информации об осуществленной трате средств и рассматривает эти средства как доступные. В этом случае может возникнуть ситуация, когда часть майнеров будут формировать для одной и той же суммы токенов цепочку блоков с одной транзакцией, а часть — с другой. Так выстроится две цепочки блоков. В реальности правильная цепочка будет иметь больше подтверждений от майнеров (которые корректно проведут проверку) и ложная цепочка будет отброшена, корректные транзакции из нее соберутся в следующий блок блокчейна, а транзакция, включающая уже потраченные средства, будет отброшена.
Целью злоумышленников является через контроль майнеров достаточно долгое поддержание цепочки блоков, содержащих ложную транзакцию с использованием уже потраченных средств, скажем, чтобы успеть вывести средства из блокчейна через обменник. Однако для этого у злоумышленника под контролем должно находится достаточно много майнеров. При контроле злоумышленником более половины мощности майнеров, он может в любой момент делать двойную трату своих средств. Такая ситуация называется «атакой 51%».
Случаи «двойных трат»
В 2013 году произошло сильное раздвоение блокчейна Биткоин и пока майнеры не могли определиться с правильной цепочкой блоков, не работали сайты криптовалютных бирж и обменников. Но это раздвоение не привело к «двойной трате».
Так происходили ли «двойные траты» в сети Биткоин? Есть один факт такой траты, но на ничтожную сумму (0,00034801 ВТС — 3$ на момент совершения транзакции), к тому же он не был связан со злым умыслом.
Успешной оказалась атака 51% на сеть малоизвестной криптовалюты Pigeon Coin, основанной на программном коде Bitcoin Core 0.14.0, содержащем уязвимость. Злоумышленнику удалось сгенерировать 235 миллионов PGN на сумму в 15 тысяч долларов.
Есть и примеры атак на более значительные суммы. В мае 2018 года произошла атака 51% на сеть криптовалюты Bitcoin Gold. Она принесла нападавшим прибыль в эквиваленте $17.5 миллионов, украденных у криптовалютных бирж Bittrex, Binance, Bitinka, Bithumb и Bitfinex. Такие случаи заметно подорвали уверенность обладателей криптовалюты Bitcoin Gold.
Позже, в начале 2020 года, в сети Bitcoin Gold злоумышленникам удалось повторно совершить двойную атаку 51% и получить прибыль в размере 1900 и 5267 BTG (около $84 000 на момент взлома). Для этого они арендовали майнинговые мощности на NiceHash, что обошлось в 1700 долларов для каждого взлома (расчетная стоимость подобной атаки на Bitcoin превысила бы 700 000 долларов).
В сети Bitcoin Cash (BCH) после неудачного хардфорка (обновления программного обеспечения) возникла уязвимость, позволившая неизвестному хакеру осуществить двойную трату на 3392 BCH ($1.35 миллиона).
Атака 51% стала сильным ударом и по сети Ethereum Classiс. Нападавшему удалось присвоить $5.6 миллиона в эквиваленте криптовалюты ETC. Принцип взлома был таким же, как и в случае с атакой на сеть Bitcoin Gold (хакеры арендовали майнинговые мощности на NiceHash). Аренда обошлась им в $192 000.
С помощью атаки 51% были взломаны сети криптовалют Krypton и Shift, Monacoin, Zencash, Verge, Aurum Coin и Litecoin Cash. Добычей нападавших становилось от нескольких десятков тысяч долларов до нескольких миллионов долларов в эквиваленте криптовалют. Сеть Vertcoin таким образом атаковали несколько десятков раз за неделю, поскольку стоимость атаки через NiceHash, немногим более $100 за час, оказалась доступной и для начинающих хакеров.
Иван Котельников: “Двойная трата во Free TON невозможна”
Мы узнали у Ивана Котельникова, одного из активных членов Dev Ex SubGovernance Free TON и специалиста по информационной безопасности по образованию, возможна ли «двойная трата» во Free TON?
— Нет, во Free TON не может быть форков, это следует из самой архитектуры сети. Если транзакция, реализующая двойную трату будет записана в блок, такой блок скорее всего не будет подписан валидатором, но даже если это произойдет (злонамеренный валидатор), после обнаружения ошибки Рыбаком, ошибочный блок будет скорректирован и эти изменения будут зафиксированы коррекцией всех блоков сети, которые ссылались на ошибочный блок. Следовательно в сети Free TON не может быть альтернативных цепочек блоков, что исключает «двойные траты».
Атака 51% (совокупной мощностью) в сетях Proof-Of-Stake невозможна, так как блоки формируются валидаторами. Во Free TON для формирования блоков валидаторами используется консенсус BFT, который устойчиво работает в случае, если более 2/3 валидаторов корректно выполняют свои функции. При наличии более 1/3 “злонамеренных” валидаторов сеть будет остановлена и такая атака потеряет экономический смысл внутри сети, так как сеть лишится своей ценности.