Эта неделя в сети Monero прошла в условиях атаки 51%. Компания Qubic заявила, что получила контроль над большей частью майнинговой мощности Monero, и доказала это, переписав несколько блоков в блокчейне. Это звучит пугающе, ведь многие считают, что атака 51% означает конец для криптовалюты. Однако реальность не так ужасна, как кажется на первый взгляд. И ситуация с Monero это подтверждает: даже захватив более 50% хешрейта, злоумышленники не уничтожили сеть, курс Monero просел совсем незначительно, и жизнь продолжилась. Давайте разберёмся, что такое атака 51%, почему она не столь страшна, и какие уроки дают нам предыдущие случаи.
Простыми словами, атака 51% – это ситуация, когда скоординированная группа майнеров контролирует более половины вычислительной мощности блокчейна. В таком случае они могут майнить больше блоков, чем все остальные майнеры, вместе взятые.
В обычной ситуации (когда мощности распределены между разными майнерами), каждый майнер, добывший блок, заинтересован в том, чтобы как можно скорее сообщить об этом всей сети. Если он не успеет это сделать, другой майнер присвоит новому блоку тот же номер (выражаясь правильно - ту же высоту). И ещё неизвестно, какой из двух блоков с одним и тем же номером закрепится в блокчейне, а какой будет отвергнут.

Но майнер, который добывает больше блоков, чем все остальные, может скрывать свою цепочку блоков, а потом распространить по сети её всю сразу. И эта цепочка по правилам PoW будет принята сетью, потому что такая цепочка подтверждена более крупным объёмом работы, чем тот вариант, которого сеть придерживалась ранее.

А это означает, что атакующий может отменять ранее подтверждённые блоки. Представьте себе: вы получили от кого-то криптовалюту, а потом выяснилось, что этот блок отменён, и криптовалюта больше не ваша; она опять принадлежит тому, кто её вам должен был отправить.
Таким образом, у атаки 51% могут быть два основных последствия:
Важно подчеркнуть, чего не может сделать атака 51%.
Но всё же “большинство хешрейта” – это не всемогущее оружие: оно годится лишь для переписывания последних страниц блокчейна и ни для чего больше.
Теперь вернёмся к драме с Monero. Проект Qubic сумел захватить более 51% хешрейта сети Monero благодаря необычной схеме: Qubic привлёк массу CPU-майнеров, поощряя их майнить Monero через свой пул в обмен на токены QUBIC. Доля Qubic в майнинге Monero резко выросла: с 1,5% в мае до более 25% к концу июля. А 12 августа они объявили о достижении контроля над большинством мощностей. За 4 часа Qubic добыл 63 из 122 блоков Monero – чуть больше половины блоков за тот период.
Что сделали атакующие? Они провели реорганизацию цепочки на глубину 6 блоков. Двойных трат или попыток цензуры обнаружено не было, Qubic просто продемонстрировал уязвимость сети, не пытаясь нажиться на ней.
Сообщество Monero не сидело сложа руки. В ответ была организована DDoS-атака на инфраструктуру Qubic. Мощность ресурсов майнинг-пула Qubic, имеющих доступ к сети, рухнула более чем в три раза, что на несколько часов отбросило Qubic с первого места среди пулов на седьмое. Qubic позже восстановился и вновь заявил о контроле над хешрейтом, но страх уже прошёл: комьюнити увидело, что ничего страшного за время атаки не случилось.
А что же курс Monero? Многие ожидали обвала, ведь атака на сеть подрывает доверие к ней. Но курс XMR почти не пострадал. В разгар событий Monero просел примерно на 7–8% – не больше обычной дневной волатильности альткоинов. А уже через день курс восстановился, подскочив на 11% от локального дна. Получается, держатели монеты не в панике: они понимали, что атака носит локальный характер и ничего не “сломала” в Monero.

График курса XMR во время атаки. Источник - Coingecko
Мы в Rabbit Swap тоже не наблюдали ничего особенного: не было ни ажиотажа по обмену Monero, ни массового отказа от таких обменов. Monero как была одной из самых популярных криптовалют для обмена на сайте rabbit.io, так и осталась ею. Реорганизации блоков даже не оказали заметного влияния на время проведения обменов: как правило, обмен проводится после получения 12-15 подтверждений транзакции, а такое количество блоков Qubic ни разу не отменил.
Комьюнити получило прививку: теперь ясно, что даже “успешная” атака не так страшна, а на будущее можно усилить децентрализацию майнинга (например, отказываться от участия в пулах, набирающих слишком большую долю мощности).
Атаки на блокчейн большинством хешрейта случались и раньше: как правило, с небольшими сетями, где собрать 51% мощности проще. Можно вспомнить атаки на Verge, MonaCoin, Vertcoin, Litecoin Cash в 2018-2019 годах. Или атаки на Bitcoin Gold в 2018 и 2020 годах, ущерб от которых превысил $18 млн. А более подробно я хочу остановиться на двух случаях.
Ethereum Classic (ETC), 2020. Эта сеть пережила несколько масштабных атак 51%. Например, в августе 2020 года злоумышленники смогли перестроить более 7000 блоков – это примерно два дня транзакций. Атакующие действительно провели двойные траты, нанеся своим получателям ущерб в 807 тыс. ETC (эквивалент $5 млн на тот момент). Казалось бы, такой удар должен уничтожить доверие к сети. Однако ETC выжил и даже почти не потерял в цене. После самой крупной атаки монета торговалась около $6,86, что было лишь на 4% ниже, чем до неё. То есть участники рынка игнорировали шумиху. Реакция была больше со стороны инфраструктуры: биржа OKEx пригрозила делистингом ETC из-за повторяющихся атак, Coinbase увеличил время депозитов ETC до 2 недель, чтобы предотвратить возможные повторные траты. Разработчики Ethereum Classic внедрили некоторые обновления и позвали на помощь сети дружественных майнеров. В итоге Ethereum Classic продолжил работу. Да, его считают уязвимым, но он по сей день функционирует и входит в топ-50 криптовалют.

График курса ETC во время атаки. Источник - Coingecko
Bitcoin SV (BSV), 2021. Форк биткоина Bitcoin SV в 2021 году пережил несколько параллельных атак 51%. Сразу хочется спросить: как такое возможно? Ведь не может же у каждого из атакующих быть более 51% хешрейта! А суть была в том, что в начале августа 2021 года неизвестный майнер начал одновременно добывать несколько альтернативных цепочек, публикуя то одну из них, то другую. Фактически сеть BSV была в хаосе: разные узлы видели разные “правильные” цепочки. Ассоциация Bitcoin SV даже рекомендовала вручную установить на всех узлах правило отказа от приёма блоков злоумышленника. Таким образом, с атакой получилось справиться только путём включения цензуры блоков. Для этого потребовалось игнорировать установленный в коде узлов консенсус. Не все пошли на это: такие действия временно раздвоили сеть, часть узлов следовала одному варианту цепочки, а часть - другому. Но когда атака прекратилась, вновь было включено правило длиннейшей цепи (истинной считается та версия блокчейна, на производство которой потрачено больше работы, - то есть наиболее длинная). Узлы синхронизировались на одной ветке, и BSV продолжил работу. BSV оказался уязвим из-за использования общего с биткоином алгоритма майнинга. Bitcoin SV использует SHA-256 как и BTC, но его мощность ничтожна по сравнению с сетью биткоина. Злоумышленнику было относительно дешево перенаправить часть SHA-256 майнеров (или арендовать их) на BSV. Однако, даже несмотря на такую издевательскую атаку, BSV тоже не умер. Да, его репутация пострадала, но в целом монета продолжает существовать, и её до сих пор можно обменять на сайте rabbit.io. Во время атаки курс BSV падал, но без краха: держатели проявили стойкость, ожидая решения проблем.

График курса BSV во время атаки. Источник - Coingecko
С одной стороны, трудно понять, почему кто-то продолжает пользоваться криптовалютами, которые уже доказали свою уязвимость. Как можно соглашаться получать транзакцию в сети, где она может быть неожиданно отменена?
Но с другой стороны, чаще всего мишенью атак 51% становились небольшие сети, где суммарный хешрейт невысок. Никто всерьёз не рассматривал их как место безопасного хранения своих средств. Поэтому к таким атакам рынок относился безразлично. Другое дело - если бы кто-то захватил 51% мощности Биткоина. Но это практически невозможно: слишком дорого и неокупаемо. А для атаки на сети поменьше - вполне реально арендовать мощности на биржах майнинга и с их помощью провести атаку.
События этой недели в Monero - уникальный пример успешной атаки на достаточно популярную сеть, которую многие используют для анонимного хранения и приватных транзакций. И сам механизм проведённой атаки показывает, что арендовать или покупать огромные вычислительные мощности необязательно: можно привлечь их, предлагая взамен в общем-то бесполезные токены. А если так, то от атак не застрахована ни одна сеть: даже Биткоин.
Строго говоря, в Биткоине атака 51% тоже имела место. Только она исходила от самих разработчиков, стремившихся спасти сеть.
В августе 2010 в биткоине обнаружилась критическая уязвимость, позволившая создать в одной транзакции два выхода по 92 миллиарда BTC каждый. Да-да, один из блоков (№74638) содержал транзакцию, которая из-за бага суммарно отправила 184 467 440 737 BTC на три адреса. Это нарушало все возможные правила (лимит в 21 млн и т.д.) и грозило смертью биткоина в зародыше, если бы эта запись сохранилась в блокчейне.
Но Сатоши Накамото и соразработчики молниеносно отреагировали. Уже через 5 часов вышел патч, который исправил ошибку, позволившую создать некорректную транзакцию. После этого разработчики призвали всех майнеров вести добычу блоков начиная с высоты 74637, чтобы перезаписать блок 74638, исключив из него транзакцию на миллиарды BTC.
Выше я писал о том, что атака 51% не позволяет отменить блоки, вписанные до её начала. Но в данном случае удалось это сделать благодаря тому, что у майнеров, начавших “атаку”, в совокупности было гораздо больше, чем 50% мощности сети. Они смогли догнать цепочку, которая изначально опережала их на 5 часов, то есть добыть больше блоков, чем в этой некорректной цепи было добыто за время подготовки патча и за время, прошедшее после него. Затем более длинная цепь была предъявлена остальной сети, и все ноды приняли её как основную. Лишние монеты были аннулированы, Биткоин спасён.
Тогда общая вычислительная мощность сети Биткоина была очень маленькой, да и сообщество было тесным и сплочённым. Поэтому уговорить большинство майнеров на участие в “атаке” было легко. К тому же сам Сатоши майнил и контролировал многое. Но прецедент важен: никто сейчас не вспоминает эту “атаку” с ужасом. Биткоин выжил и успешно работает
Атака 51% - это инструмент, который нейтрально относится к морали. Всё зависит от того, в чьих руках он оказывается. Злоумышленники могут попытаться им воспользоваться для наживы, но и честные участники порой берут его на вооружение, чтобы защитить сеть или пользователей. В конечном итоге, любая блокчечейн-система – это сообщество. Если сообщество достаточно активно и сплоченно, оно может противостоять атакам, а при необходимости и применять их.
В “Белой книге” Биткоина атака 51% была обозначена как проблема, о наличии которой автору известно, но решение он предложить не может. С тех пор принято относиться к такой атаке как к чему-то непреодолимому и оттого страшному.
Да и прочитав мою статью, можно задуматься: а что если спецслужбы давным-давно создают секретные параллельные цепи всех криптовалют, а потом когда-нибудь предъявят их миру, и это отменит все транзакции за много лет на радость государствам и финансовым регуляторам?
Но это практически невозможно. Провести длительную атаку 51% очень дорого. Требуется либо колоссальная вычислительная мощность, либо огромная сумма (в случае PoS-сетей – скупить более 2/3 всех монет стейкинга). Например, чтобы удерживать 51% биткоина, нужны десятки миллиардов долларов на оборудование и электричество. Но это оборудование и это потребление электричества спецслужбы хотя бы могут скрыть. А в случае с сетями наподобие Эфириума - скрыть владение 2/3 монет стейкинга не сможет никакая спецслужба: в блокчейне всё на виду.
Атака на Monero оценивалась в $75 млн за день работы. Это не значит, что Qubic каждый день терял такую сумму. На самом деле, в аспекте суммы доходов и расходов нет никакой разницы: опубликуешь ты каждый блок сразу же или придержишь их все на день. Разница лишь в том, что за этот день сообщество может принять контрмеры (подключить дополнительных майнеров или перекрыть тебе доступ к сети), и в таком случае ты рискуешь вообще не собрать цепочку длиннее конкурентов, не отправить её в сеть и провести всю работу зря. То есть $75 млн - это не прямые убытки, а, скорее, предел риска. Тем не менее, далеко не каждый может себе его позволить. Особенно если удерживать секретную цепочку месяцами и годами.
Именно поэтому даже успешные атаки 51%, вроде той, которую мы наблюдали на этой неделе, как правило, оказываются краткосрочными и по большому счёту ни на что не влияют.