Книга На шифре. Инсайдерская история криптовалютного бума - Лора Шин
Шрифт:
Интервал:
Закладка:
Разработчики понимали, что софтфорк только поможет выиграть время, а не решит проблему, – ведь он всего лишь не позволял вывести деньги, причем не только хакеру, но и всем остальным вкладчикам The DAO. Это привело Виталика, Slock.it и других участников сообщества к выводу, что лучшим способом вернуть деньги The DAO станет хардфорк. (Виталик говорил об этом на созвонах уже в первые часы после обнаружения взлома.) Без хардфорка уязвимым для новых атак будет не только контракт The DAO, но и любая дочерняя DAO – то есть любой, кто соберется вывести эфир через дочернюю DAO, рискует столкнуться с хакером, который зайдет в нее и не даст снять деньги.
Для хардфорка придумали решение, которое позже назовут «нестандартным изменением состояний» (irregular state change). Это значит, в момент хардфорка все средства The DAO и дочерних DAO просто перенесут в новый контракт, возвращающий эфир на адреса пропорционально числу присланных токенов по курсу 1:100. (Позже разработают план для тех, кто платил по курсу 1,05:100, 1,10:100 и так далее.)
Но Slock.it и Виталик не могли принять это решение сами. Это уже был бы не децентрализованный подход (к тому же тогда бы они отвечали всем четырем критериям теста Хауи и показали бы, что The DAO находится под управлением EF или Slock.it, а значит, токены DAO – это ценные бумаги). В субботнем посте с описанием вариантов софт- и хардфорка Кристоф закончил словами: «По приведенным причинам мы считаем, что нужен хардфорк». Но, уточнил он, «в протокол Ethereum вписано, что обновления/сплиты может делать большинство майнеров/сообществ, если считает, что протокол работает, не так, как задумано. Это не противоречит децентрализации, поскольку решиться на форк могут только сами майнеры и сообщество – и *больше никто*. Мы как разработчики можем только предложить вам форки, предоставив листинги кода». Это как если бы врач предложил варианты лечения, объявил, какой считает лучшим, и закончил словами: «Решение за вами».
Когда Грифф разослал первые панические сообщения на форуме DAOhub и в Slack, он, Кристоф, Лефтерис и остальные из сообщества DAO, кто разбирался в смарт-контрактах, стали изучать, как защитить остальной эфир, чтобы не подпустить к нему хакера. Курс Гриффа для DAO-ниндзя подготовил программистов, идеально подходящих для отражения таких атак.
Они решили найти открытые дочерние DAO, получить к ним частные ключи (чтобы иметь право на отправку транзакций) и провести такую же атаку рекурсивного вызова на The DAO. По сути, они бы вывели оставшиеся 69 % эфира в дочернюю DAO тем же способом, что и хакер, но не чтобы похитить их у держателей токенов, а чтобы их не похитил хакер. Как вернуть средства держателям, они бы придумали уже потом.
Чтобы провести атаку, первым делом нужно было иметь много токенов DAO. Чем больше токенов, тем больше эфира они бы выводили с каждым рекурсивным вызовом. Поэтому начальным шагом было попросить токены DAO у китов.
В пятницу вечером они планировали запустить атаку с токенами Авсы, но, когда он приступил к делу, у него упал интернет. В субботу вечером созвонились несколько кураторов и членов сообщества DAO – Лефтерис и Фабиан из Берлина, Стефан из Великобритании, Авса из Рио и скрытный ирландец по имени Колм (фамилия неизвестна), не раскрывший свое местоположение. Чтобы провести контратаку, они изучили правила контракта, но опасались, что за ними в дочернюю DAO последуют злоумышленники и украдут выведенный эфир. И все-таки решили, что даже если в дочерней DAO к ним присоединятся четыре человека, это уже сократит число потенциальных похитителей с двадцати тысяч до четырех.
Но операция по спасению означала новый риск для них самих.
– Это очень запутанно с юридической точки зрения, потому что формально мы теперь тоже хакеры, так? – сказал Фабиан.
– Да, но мы сразу заявим, что это атака «белых шляп»[16] и что мы пошли на нее по причинам, которые только что описали: эксплойт существует, он известен всем, – ответил Лефтерис. – Каждый может им воспользоваться. Тогда уж лучше сделать это самим и сократить векторы атаки до четырех.
Какое-то время они размышляли, не получится ли так, что, когда они попросят у китов большие суммы в токенах DAO, киты распрощаются с ними навсегда. Но, поскольку контракт DAO перевел бы деньги, не обновляя баланс, токены, скорее всего, еще можно было бы вернуть.
Время поджимало. У Авсы, Фабиана и Лефтериса было около сотни тысяч токенов на троих – достаточно, чтобы опустошить The DAO за полторы тысячи транзакций и тем самым защитить деньги от других хакеров. Если бы им подкинули побольше токенов, они бы управились куда быстрее. Например, на средства одного знакомого кита они опустошили бы The DAO всего за двадцать одну транзакцию. Но для этого надо было обращаться к уже крупным инвесторам и просить большие суммы, чтобы те помогли защитить свои и чужие деньги. И все же из-за уязвимости The DAO новые рекурсивные вызовы могли посыпаться в любой момент. Принимать решение нужно было быстро.
В ту ночь чувствовалось напряжение, дискуссия затянулась. Под конец они заметили, что кто-то уже начал делать рекурсивные вызовы на небольшие суммы. Лефтерис вздохнул.
– Да уж, поэтому я и говорю, что к следующей неделе The DAO просто опустеет.
Они запланировали операцию по спасению на следующий день.
В воскресенье 19 июня они снова созвонились. Некоторые все еще колебались из-за атаки на The DAO, опасаясь юридических последствий. Они предпочитали дождаться хардфорка Ethereum, после чего необходимость спасать эфир из главной DAO отпала бы сама собой. Авса, напротив, настаивал, что после атаки не понадобится хардфорк, но остался в меньшинстве. Вместо этого они подготовились спасать оставшийся эфир на случай, если его попытается украсть кто-нибудь еще. Поскольку они еще не определились, какой дочерней DAO (шлюпкой) будут пользоваться, решили войти в как можно больше дочерних DAO – с обычным аккаунтом Ethereum и с вредоносным контрактом для