DAO теряет миллионы долларов в час из-за ошибки в своём коде и тянет ETHEREUM за собой
Проект DAO, уникальный инвестиционный проект, построенный на базе блокчейна Ethereum, подвергся крупномасштабной атаке. В результате эксплуатации ошибки в коде DAO со счетов проекта утекли (и продолжают утекать) десятки миллионов долларов. Стоимость валюты Ethereum стремительно падает, пользователи бегут, и никто не понимает, что делать.
Проект DAO открылся в конце мая и представляет собой полностью автоматический инвестиционный фонд — что-то вроде криптовалютной версии Kickstarter. Желающие могут выставлять свои предложения на суд публики. Те из них, которым удалось найи поддержку сообщества, получат финансирование, а часть их прибыли поделят все «инвесторы». И голосование, и финансирование, и распределение прибыли происходит автоматически. Сотрудники или менеджеры DAO не могут повлиять на эти процессы.
DAO построен на базе Ethereum — технологии, использующей те же принципы, что и Bitcoin, но лучше поддерживающей так называемые умные контракты — компьютерные программы, которые описывают условия и исход сделки. И проверка условий, и исполнение обязательств происходит без участия человека. В Ethereum встроен полноценный язык программирования, предназначенный специально для создания умных контрактов. Правила DAO описаны именно на нём.
Неизвестный злоумышленник использовал уязвимость в функции splitDAO, предназначенной для создания дочерних версий проекта. Эта функция является частью кода DAO. Уязвимость позволяет вызывать splitDAO рекурсивно в процессе каждого отделения и таким образом многократно получать «эфиры» (валюту Ethereum) в течение единственной транзакции.
В течение нескольких часов на адрес https://etherchain.org/account/0x304a554a310c7e546dfe434669c62820b7d83490 утекли средства, эквивалентные десяткам миллионов долларов. В 15:00 по московскому времени сообщали о пропаже примерно 53 миллионов долларов, но поскольку атака продолжается, а курс «эфира» падает, итоговая цифра, скорее всего, окажется иной.
Строго говоря, по той логике, в которой оперирует Ethereum, атака не является преступлением. Правила DAO — это код, и непреднамеренные уязвимости в них — это такая же часть контракта, как и сознательно описанные условия. Действия, которые выполняет злоумышленник, предусмотрены правилами DAO. В противном случае, они были бы невозможны.
Проблема заключается в той самой неумолимости умных контрактов, которую обычно считают их плюсом. Обычные контракты, содержащие ошибки или лазейки, можно оспорить, изменить или исправить — на этом кормятся десятки тысяч юристов. Вмешаться в исполнение умного контракта невозможно, равно как и повернуть вспять уже проведённые транзакции — это гарантирует блокчейн Ethereum.
Атака повергла сообщество DAO и Ethereum в замешательство. Многие спешно избавляются от токенов проекта и накопленного «эфира». Курс криптовалюты стремительно падает. За считанные часы «эфир» утратил треть своего веса.
Основатели DAO призвали сторонников начать DDOS-атаку на Ethereum, чтобы дать им время на поиск решения, и опубликовали код, который поможет перегрузить сеть криптовалюты. Создатель Ethereum Виталик Бутерин через Reddit попросил обменные сервисы приостановить любую деятельность, связанную с Ethereum и DAO.
Спустя пару часов Бутерин опубликовал в блоге Ethereum предложение провести «мягкое ветвление» (soft fork) криптовалюты, в результате которого будут отменены любые транзакции, которые привели к утечке средств DAO после блока 1760000. Одновременно будет предотвращён вывод средств, полученных устроителем атаки в течение 27 дней, необходимых для завершения процесса создания дочернего DAO. Затем последует «жёсткое ветвление» (hard fork), которое вернёт пострадавшим утекшие средства.
Бутерин рекомендовал майнерам Ethereum возобновить работу в обычном режиме и дожидаться кода «мягкого ветвления», после чего, если они поддерживают это предложение, исполнить его. Обладателям токенов DAO и «эфира» создатель Ethereum советует сохранять спокойствие и не делать резких движений.
Наблюдатели отмечают, что атака уже нанесла непоправимый ущерб репутации DAO. Даже в том случае, если утечку удастся остановить, а то и повернуть вспять, вряд ли проекту снова доверят десятки миллионов долларов. Инцидент может остудить интерес и к идее умных контрактов. Кроме того, нельзя недооценивать угрозу для самого Ethereum. Масштабы и важность DAO для экосистемы этой криптовалюты слишком значительны, чтобы гибель этого проекта прошла бесследно.
Даже удачный исход ветвления, в пользу которого выступил Бутерин, может оказаться пирровой победой. Он заронит сомнение в том, что криптовалюта не настолько децентрализована и неконтролируема, как считается. В её работу можно вмешаться и повернуть законные сделки вспять. Возможно, это ещё хуже, чем потеря 50 миллионов.