Захватывающая история The DAO: работа над ошибками. Распределенное автономное ограбление

Проект theDAO был основан на блокчейне криптовалюты Ethereum, поэтому каждый владелец жетонов DAO купившим их за эфир, имеет возможность проголосовать за проект, который будет привлекать к себе инвесторов. Все средства, которые привлекаются в данном проекте, располагаются в криптовалюте Эфир. За всю историю работы данного проекта, было привлечено около 150 миллионов долларов в эквиваленте эфир.

Что случилось с the DAO?

С первого дня своей работы, проект the DAO стал очень популярным как среди инвесторов, так и среди людей, которые хотели реализовать свои идеи, но на это у них не было средств. За первые месяцы работы, проект привлек 50 миллионов долларов, но но но…. Но злоумышленники сумели найти ошибку в коде и сломали его, посредством чего украли эфира на 50 миллионов долларов. Данное событие помешало the DAO раскрыть свой потенциал, и разделило сообщество Эфира на две части. Ведь для того, чтобы вернуть средства вкладчикам, разработчикам проекта the DAO пришлось пойти на беспрецедентный шаг – сделать хард форк. После чего, начался процесс возврата всех средств обратно, а проект так и не смог развиться, хотя перспективы ему рисовали ойойой какие. Кстати, именно из-за хардфорка, мир получил две криптовалюты с похожими названиями Ethereum и Ethereum Classic, более подробно об этом читайте здесь.

Что такое Charity DAO?

После запуска и взлома the DAO, разработчики поняли, что мир нуждается в подобном проекте, и решили сделать схожий с the DAO проект, под названием Charity DAO. Charity DAO – это более узкопрофильный проект, ведь направлен он, исключительно на благотворительность. В наше время, большинство людей не делают пожертвования в благотворительные, так как не доверяют им. Charity DAO может в этом помочь, ведь, как и в the DAO, люди не будут распределять средства вручную, это будет доверено программному коду Charity DAO. Мы надеемся, что разработчики смогут устранить возможность взлома этой сети, и она поможет многим людям.

Редакция нашего блога с нетерпением ждет запуска нового проекта ДАО, ведь в мире, очень много людей, которые попросту нуждаются в нашей с вами поддержке. Если в мире криптовалют, еще существуют понятия, в которых вы не можете разобраться, то пишите их в комментарии, и мы сделаем их описание, простыми словами. С вами был Bitbetnews, до встречи на наших страницах.

17 июня 2016 года произошла, пожалуй, самая масштабная атака за всю историю криптоиндустрии — из-за ошибки в коде перспективный и очень популярный в то время проект The DAO лишился более 60 миллионов долларов.

Журнал ForkLog решил вспомнить эту дату и попытаться проанализировать, к чему привело это событие.

Немного предыстории

На заре ICO, то есть всего-то около года назад — 28 мая 2016, закончилась распродажа токенов проекта по децентрализованному управлению инвестициями The DAO, который основала команда стартапа Slock.it.

До поры до времени у The DAO дела шли очень хорошо: и сообщество проект полюбило, и Виталик Бутерин стоял за него горой, и краудсейл прошел, мягко говоря, успешно — собрали более 12 миллионов ETH, что на тот момент составляло около 165 миллионов долларов (сегодня — более 4,3 миллиарда долларов!).

«за последние сутки The DAO вырос в стоимости почти на 16% по отношению к доллару ($ 0,158) и более чем на 5% по отношению к ETH (0.000228)». (Для справки: биткоин тогда стоил 695 долларов).

Что-то пошло не так…

Однако буквально за неделю до краха The DAO редакция нашего журнала опубликовала несколько занимательных материалов, которые напрямую рассказывали о возможных уязвимостях проекта. Это и , сооснователем и операционным директором стартапа Slock.it, который как раз занимался созданием инвестиционного фонда The DAO.

В разговоре с Туалем годичной давности ForkLog интересовался тем, насколько оправданы опасения сообщества насчет возможных атак на проект. Оценивая содержание этого текста сейчас, можно сказать, что команда Slock.it отнеслась несерьезно и к возможным уязвимостям, и даже к честному разговору о них.

«Я спокоен по поводу будущего The DAO. Все произошедшие события сделали его самым большим проектом в истории, финансируемым за счет краудфандинга, и по сути самым крупным венчурным проектом. The DAO позволит появиться компаниям, которые в ином случае никогда бы не существовали», — заявил 10 июля 2016 года Стефан Туаль.

В это же время пользователи GitHub и участники проекта забили тревогу по поводу . К решению этой проблемы и сам Стефан Туаль, который уже на следующий день опубликовал ссылку на фикс и анонсировал серию апгрейдов ПО. Эту уязвимость Туаль назвал «рекурсивным вызовом» — именно она и привела проект The DAO к краху.

Рекурсивный вызов и крах The DAO

А примерно в полдень стало известно, в чем причина резкого падения цены токена: , украдено $50 миллионов.

На рынке началась паника. Под горячую руку попали и основатели The DAO, и Виталик Бутерин, и Ethereum. Многие криптоэксперты и члены сообщества хоронили эти проекты прямо в одной могиле. Кульминацией обширной дискуссии вокруг произошедшего стало эпичное появление непосредственно атаковавшего The DAO.

Представим, что после ограбления банка во время разбирательств между полицией и плачущими вкладчиками внезапно появляется человек в маске и говорит: «Спокойно, ребята! Это моих рук дело, но все законно». Вот примерно это и произошло, правда, в онлайн-пространстве: атаковавший , в котором не то что не признавал вины, но и грозил судом в случае, если его лишат «награбленного».

«Я внимательно изучил код the DAO и решил поучаствовать после того, как нашел функцию, при запуске которой разделение вознаграждается дополнительными эфирами. Я задействовал данную функцию и законно получил 3 641 694 эфира. Хочу поблагодарить the DAO за эту награду. (…) Я оставляю за собой право принять любые и все возможные легальные действия против любых соучастников незаконных краж, заморозок или изъятия моих законно полученных токенов ETH, и я продолжаю активно работать с моей юридической фирмой. Все эти соучастники в ближайшее время получат соответствующие уведомления на свои почтовые адреса. Я надеюсь, что это событие станет ценным опытом для сообщества Ethereum, которому я желаю всего наилучшего», - говорилось в письме.

Однако позже эксперты признали это письмо, достойное того, чтобы войти в историю криптовалют, . И тем не менее точка в этом вопросе пока не поставлена. Возможно, в будущем мы узнаем удивительные и никому не известные подробности произошедшего 17 июня 2016 года.

Возвращаясь к атаке, нужно напомнить, что кража была совершена как раз из-за уязвимости под названием » — она позволяла бесконечно снимать средства The DAO и переводить их в дочернее ДАО посредством многократного разделения ДАО, повторно собирая ETH в рамках одной транзакции.

Однако окно для создания дочернего ДАО составляло ровно 27 дней, и средства с кошелька все это время нельзя было вывести. Сообщество начало искать пути «восстановления справедливости» и в конце концов остановилось на во всех смыслах Виталика Бутерина.

Утешительные итоги

Год спустя можно с уверенностью сказать, что атака на The DAO не погубила ничего, кроме непосредственно The DAO, и подарила сообществу , вокруг которого собралось пусть и небольшое, но влиятельное сообщество. Взлом The DAO наоборот показал, что криптовалютный мир весьма устойчив к подобным потрясениям, даже в том зачаточном состоянии, которое было год назад.

Хотелось бы отметить, что в самом начале огромного бума , начавшегося после провала The DAO, на Forklog вышел материал под названием . Сейчас эти уроки можно назвать основами успешного выбора ICO в качестве инвестиций. Они не потеряли своей актуальности и сейчас, поэтому их можно процитировать целиком.

  1. Внимательно анализируйте ICO. Важно понимать, что вы покупаете и с какой целью. Жадность и погоня за быстрой наживой рано или поздно приводят к финансовым потерям. Безусловно, даже самые провальные в своей сути криптовалютные проекты в среднесрочной перспективе могут иметь колоссальный спекулятивный потенциал. И если как инвестор вы рассчитываете именно на это, не стоит вкладывать больше денег, чем вы готовы потерять.
  2. Отложенный релиз лучше небезопасного кода. Разработчики The DAO, по всей видимости, не ожидали такого финансового успеха, и это сделало проект привлекательным не только для инвесторов, но и для злоумышленников. Тем не менее, ничто не мешало на некоторое время заморозить проект, ограничив возможность работы с основным контрактом. И только после проведения тщательного тестирования при поддержке сообщества и специалистов по блокчейну и безопасности - запускать основной функционал проекта. То, с чем мы столкнулись в реальности, - непозволительная халатность программистов. В результате репутация отдельных разработчиков пострадала если не окончательно, то очень сильно.
  3. Здесь львы. Идеализм и благие намерения, которыми переполнено криптовалютное сообщество, опьяняют и отвлекают от реального положения дел. В то время как количество новых криптовалют и проектов растет почти экспоненциально, пора обратиться к истории фондовых рынков, чтобы не повторять ошибок прошлого.
  4. Эмоции и паника никогда не приводят к конструктивному решению проблемы.

О том, что произошло после атаки на The DAO, читайте в материале ForkLog, который будет опубликован 20 июля — в день годовщины хардфорка Ethereum.

(англ. Crowd — толпа, Funding — финансирование) — метод привлечения инвестиций под проект.

Самый известный прародитель краудфандинга — американский . Больше 10 миллионов людей поддержало проекты на Кикстартере. Также в мире популярен сервис Indiegogo . В России существует несколько аналогов: Планета и Бумстартер.

Вот ссылка на мой Boomstarter-проект: Бизнес реалити-шоу из Японии . За 40 дней я смог собрать 202 034 рубля. Это было непросто. Ниже привожу советы, которые помогут вам с вашей кампанией.

1) Создайте ценность

Ваш проект должен быть полезен вам, вашему окружению и другим людям. Задумайтесь, как ваш продукт изменит нашу жизнь в лучшую сторону? Одна из самых популярных областей краудфандинга — Технологии. Ребята создают держатели для флешек, настольные кондиционеры, ключи c GPS-трекером. Абсолютно все, что появится в светлой голове.

В моем случае с японской поездкой было сложнее донести ценность до окружающих. Я должен был доказать, что это не просто отдых.

2) Снимите честное видео

Видеоролик в заголовке вашего проекта — один из решающих факторов. Многим спонсорам вашего проекта хватит короткой видеопрезентации, где вы честно расскажете, что задумали.

Вот мое видео:

3) Выставляйте разумные цифры

Как только в вашей голове появится гениальная идея, вы захотите поставить достойную сумму для сбора. Только вот больше 90% проектов не собирают нужной суммы.

Я рекомендую четко расписать минимальный бюджет: на что вам нужны деньги и в каком количестве. Сообщите аудитории, что в случае успеха, вы продолжите сбор денег и добавите дополнительные бонусы. Например, при производстве одежды, таким бонусом может быть новый цвет или дополнительная модель.

Помните простую вещь: если вы не соберете всю сумму, вы не получите НИЧЕГО. Все деньги вернутся обратно к вашим спонсорам на карты.

4) Выберете разумные поощрения

В качестве поощрений спонсорам вы можете давать продукт, который создадите на собранные деньги. Обычно производство занимает 1-5 месяцев после завершения кампании.

Если у вас нематериальный продукт, как в моем случае, вы можете дарить символичные подарки. Я отправлял толстовки UniFashion , открытки из Японии. Также я дарил видео обращение японцев и возможность поучаствовать в моей пресс-конференции.

Не останавливайтесь на банальных футболках — придумывайте самые смелые штуки!

5) Не ждите чудо-поддержки

Когда я только начинал свой проект, менеджер Boomstarter сказал, что запостит анонс в группе компании и подскажет контакты СМИ. Я расслабился и подумал, что деньги польются рекой. Проект-то невероятно значимый! 🙂

Не потекли. Репост не дал ровным счетом ничего. 0 рублей. СМИ не был интересен нулевой проект. Нужно было работать. Каждый день я рассылал сообщения в газеты и интернет-издания. Каждый день я получал отказы. Это реальность краудфандинга.

Будьте готовы к тому, что все будут посылать вас в жопу

Продолжайте общаться — это ключ!


6) Составьте план по сбору средств

А вот план работает! Ведь это математика. Делите вашу сумму на количество дней и получаете количество, которое должны собирать ежедневно. В моем случае 200 000 рублей/40 дней = 5 000 рублей ежедневно.

Помимо денежного плана, ставьте количество успешных инфопартнерств. В 10 газет написали — 1 опубликовала. Конверсия 0,1 — это просто шикарно!

17 июня 2016 года неизвестный злоумышленник перекачал на свои счета около трети фондов проекта DAO. Атака продолжалась несколько часов. За это время он успел захватить более 3,6 миллиона эфиров - сумму, эквивалентную примерно 50 миллионам долларов.

Что такое DAO

Когда речь идет о DAO, путаница неизбежна. Помимо проекта DAO (The DAO), который стал жертвой атаки, есть еще и просто DAO - термин, которым обозначают распределенные автономные организации (Distributed Autonomous Organization). Такие организации отличаются от обычных примерно тем же, чем умные контракты от традиционных: и в том и в другом случае люди остаются за кадром. Структуру, цели и внутренние процессы такой организации определяют не ее менеджеры и сотрудники, а программный код.

Самый очевидный пример распределенных автономных организаций - это сами криптовалюты. Они никому не принадлежат и никому не подчиняются. В их деятельности участвуют тысячи человек, но они не контролируют Bitcoin или Ethereum. Никто не контролирует. Устройство и принцип действия криптовалюты зависят не от людей, а от ее протокола. Люди лишь следуют ему.

Все эти качества в полной мере описывают и злополучный проект DAO. Он должен был стать чем-то вроде криптовалютного «Кикстартера» - прозрачного, децентрализованного и свято чтущего волю каждого участника. Проект придумали и реализовали в немецком стартапе Slock.it, который разрабатывает электронные дверные замки. Его основатели надеялись с помощью DAO найти инвестиции под свои идеи.

С технической точки зрения проект DAO представляет собой умный контракт Ethereum. И это очень непростой контракт. Он описывает все аспекты функционирования этой организации. После создания DAO следует стадия первоначального накопления капитала - 27 дней, в течение которых любой желающий может купить токены организации и стать его полноправным участником. Затем начинается работа: желающие выставляют свои идеи на суд публики, а обладатели токенов голосуют. Победители получают финансирование. И голосование, и финансирование, и распределение прибыли происходит автоматически.

Распродажа токенов проекта DAO началась 30 апреля 2016 года. Спустя 27 дней их приобрели более 11 тысяч человек. В результате под управлением единственного умного контракта оказалась сконцентрирована огромная сумма - больше 150 миллионов долларов. Таких денег при помощи краудфандинга не собирал никто и никогда.

В Slock.it определенно не ждали подобного развития событий, но к тому моменту их ожидания и планы уже не играли роли. Судьба 150 миллионов долларов теперь зависела не от них, а от кода контракта.

Распределенное автономное ограбление

Спустя всего три недели после открытия DAO участники сообщества Ethereum растерянно смотрели на уплывающие от них миллионы долларов и ничего не могли поделать. На счет организации одного из участников проекта уходили деньги, которые никак не могли ему принадлежать. При этом придраться было не к чему. Ethereum работал именно так, как должен. Код проекта DAO делал именно то, что в него заложено. Все было правильно, кроме результата.

Причину утечки нашли почти сразу. Организатор атаки заметил интересную особенность функции splitDAO, предназначенной для выхода из состава проекта DAO. Она создает дочернюю организацию, отправляет на ее счет долю основателя и только затем, в самом конце, обновляет баланс. Если рекурсивно вызвать ту же функцию еще раз, пока баланс не пересчитан, ничто не помешает ей повторно отправить дочернему DAO уже потраченные деньги.

Рекурсивный процесс разделения продолжается до тех пор, пока не упрется в технические ограничения Ethereum. В результате оказывается переведено в 20–30 раз больше средств, чем положено. Другая ошибка в функции withdrawRewardFor позволяет повторять такой трюк столько, сколько потребуется. Организатор атаки проделал его сотни раз.

Тут нужно осознавать все безумие происходящего. Это вовсе не обыкновенное ограбление. Строго говоря, это вообще не ограбление. И это не повторение истории Mt. Gox. Тогда пропало еще больше денег, но в данном случае интерес не в деньгах. Организация, которую затронул этот инцидент, настолько необычна, что и проблема, и ее решения имеют совершенно фантастическую окраску.

У проекта DAO нет серверов, которые можно выключить. У него нет банковских счетов, которые можно заморозить. У него нет даже владельца, который будет нести ответственность. На балансе - 150 миллионов долларов, которыми управляет обезумевшая программа на языке, похожем на JavaScript. Она убеждена, что эти деньги следует отправить злоумышленнику, - и отправляет, отправляет, отправляет.

Машинерия Ethereum гарантирует, что умные контракты не будут нарушены. Она не дает гарантии, что в них нет ошибок. Более того, само понятие «ошибка» чуждо его логике. Для Ethereum важнее, что разрешено и что запрещено. А это целиком и полностью определяет код контракта. Код контракта DAO пусть непреднамеренно, но разрешает выкачивать чужие миллионы. Следовательно, с точки зрения Ethereum, действия организатора атаки совершенно законны.

Тысячи майнерских узлов, исполняющих ошибочный контракт, автоматически проверяют каждую транзакцию, которую он инициирует. Они видят, что все верно, все законно, все условия соблюдены. В результате чужие деньги уходят организатору атаки, а информация об этом необратимо сохраняется в блокчейне. Вернуть их без согласия нового владельца невозможно.

Это первое автономное распределенное преступление. Одна неконтролируемая программа обманывает другую, а третья проверяет законность, следуя своей, совсем не человеческой логике, и считает деньги. Люди и хотели бы вмешаться, но для них тут места нет.

Выхода нет

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

Но умный контракт - это не простая программа. Умный контракт - это контракт, а контракты нельзя просто так взять и поменять. Их заключают для того, чтобы раз и навсегда закрепить условия сделки и обязательства сторон. Они неизменны - в этом весь смысл. Исправления или отмены ошибочного контракта можно добиться через суд, но в Ethereum это по понятной причине невозможно.

Ни Ethereum, ни сам контракт DAO не предусматривают механизма, который позволил бы обновить код контракта. Перевести проект с одной версии программы на другую и сохранить его внутреннее состояние невозможно. Это, среди прочего, означает неизбежную утрату содержимого переменной extraBalance. У проекта DAO на ней записано несколько миллионов долларов.

Участники DAO могут в любой момент покинуть проект и забрать свою долю с собой. В разгар атаки многие пытались воспользоваться этой возможностью и обнаружили, что в сложившейся ситуации она ни на что не годится. Дело в том, что деньги со счета DAO нельзя конвертировать в эфир напрямую. Сначала они будут переданы дочерней организации при помощи той самой функции splitDAO, которая использована в атаке. Это долго и к тому же бессмысленно, потому что новорожденными DAO управляет тот же самый уязвимый код. Увели деньги из родительского DAO - уведут и с них.

Чем меньше денег оставалось на счетах DAO, тем очевиднее становилось, что простого выхода нет. Ошибку в контракте нельзя исправить - во всяком случае, быстро и без потерь. Деньги тоже не спасти - во всяком случае, быстро и без потерь. Созданная система не приспособлена ни для того ни для другого.

Что делать дальше? Основатели проекта DAO призвали своих сторонников ломать систему. Они опубликовали код, массовое исполнение которого перегрузит сеть Ethereum. DDoS не остановит атаку на DAO, но замедлит ее и даст время на поиск решения.

Экстраординарные меры

Спустя несколько часов в события вмешался создатель Ethereum Виталик Бутерин. Через официальный блог криптовалюты Бутерин предложил провести так называемое мягкое ветвление (soft fork) программного обеспечения Ethereum и заблокировать похищенные деньги.

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «сайт», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score!

Поделиться